Bonjour,
Je souhaite tout d’abord vous souhaiter une excellente année 2025.
J’aimerais créer un graphique qui montre la moyenne quotidienne de température extérieure (j’ai un sensor pour ça) et la consommation quotidienne de ma PAC (j’ai aussi le sensor).
Comment me conseillez-vous de le faire ?
J’arrive à afficher un graphique, j’obtiens une température moyenne (par jour, par mois ou par an), mais la consommation de la Pac est calculée sur un mois avec donc une valeur proche parfois de 2000 kw/h.
Je ne peux afficher 2000 et 10° sur le même graphique, on ne verrait rien.
Mon objectif est d’avoir un graphique quotidien avec la conso de la pac quotidienne et la température moyenne quotidienne.
Désolé mais @Cloom à répondu en meme temps que moi ! tu auras deux réponses !!
Bonjour
ca dépend du composant que tu utilises pour ecrire tes courbes.
Moi j’utilise APEX CHART et tu peux mettre une unité secondaire sur la droite.
Je te donne un exemple , mais moi mon unité secondaire est binaire, pour afficher HP et HC ; mais tu peux mettre ce que tu veux
Oui pour l’unité" secondaire, mais est-ce que chaque courbe à son échelle ?
Car je vais afficher aux alentours de 0 à 100 kwh/ jours pour la PAC et entre 0 et 25° pour la température
Il y a je pense de nombreuses solutions pour avoir 2 courbes avec une échelle différente.
Par exemple, tu trouveras de nombreux exemples de « mini-graph » card, comme ceci par exemple:
Merci pour vos aides.
Le problème que j’ai c’est que le graphique affiche la plus petite intervale de valeur (la mesure instantanée).
J’aimerai afficher la moyenne de température de la journée et le total de kw/h de la pac.
Voici ce que j’ai fait :
type: custom:apexcharts-card
update_interval: 1min
graph_span: 3d
yaxis:
- id: first # identification name of the second y-axis
decimals: 0
apex_config:
tickAmount: 6
- id: second # identification name of the second y-axis
opposite: true # make it show on the right side
decimals: 0
apex_config:
tickAmount: 6
all_series_config:
stroke_width: 2
series:
- entity: sensor.pompe_a_chaleur
yaxis_id: first # this serie will be associated to the 'id: first' axis.
- entity: sensor.andlau_temperature
yaxis_id: second # this serie will be associated to the 'id: second' axis.
J’ai compris que tu avais mis la moyenne dans un sensor deja !
Je pense que tu peux faire comme ça (j’ai mis un exemple avec bar et courbe):
type: custom:apexcharts-card
graph_span: 7d
yaxis:
- id: first # identification name of the second y-axis
decimals: 0
- id: second # identification name of the second y-axis
opposite: true # make it show on the right side
decimals: 0
all_series_config:
stroke_width: 2
series:
- entity: sensor.netatmo_living_room_humidity
yaxis_id: first # this serie will be associated to the 'id: first' axis.
group_by:
func: avg
duration: 24h
- entity: sensor.netatmo_living_room_temperature
type: column
yaxis_id: second # this serie will be associated to the 'id: second' axis.
group_by:
func: avg
duration: 24h
Mon préféré ! Avec des zooms, des slides, … Très configurable.
On peut faire des trucs de malade mais des simples graphes très simples et fonctionnels (C’est le seul qui permet de faire des zoom simplement à ma connaissance).
@Limonade67 as-tu réussi à faire ce que tu voulais?
J’adore Plotly Graph Card pour les zooms mais je le trouve pas très sexy. Je lui préfère Apex ou Mini graph card pour le style et j’ai des plotly dans des dashboards différents qui sont plus là pour le coté technique et chercher des informations précises. Ça a été très utile pour optimiser la chaufferie de mon immeuble Celui qui gère les chaudières a adoré d’avoir les données sans passer des heures la nuit dans la chaufferie connecté directement au PLC
Il y a désormais le zoom dans l’historique d’HA, donc c’est peut-être moins utile pour moi aujourd’hui.
Merci pour ton intervention.
Non, je n’ai pas réussi car comme souvent, une réponse implique d’autres questionnements de ma part.
Quel est le langage utilisé par cette custom carte ?
Quel langage est utilisé pour les cartes classiques ?
J’ai essayé d’utiliser des instructions d’une carte pour les mettre dans une autre avec l’éditeur de code, mais j’ai systématiquement des messages d’erreur ?
Mon objectif est maintenant d’afficher une valeur modifiée avec un calcul préalable.
J’aimerais afficher ma consommation quotidienne en kw/h divisée par la différence de température entre intérieur et extérieur.
Ratio = Pu consommée par jour / (T° int - T° ext).
Oui, mais en divisant la puissance/jours par la température chauffée.
Whaou, j’ai du mal à lire et comprendre ton graphique.
Que sont les histogrammes bleus en haut ?
Le nombre de jours à X°
La courbe verte est une moyenne ?
L’abscisse est notée température ext ,mais quant la température ext augmente, l’Elec en kwh/j augmente aussi ?
Les histogrammes situés en haut et à gauche de la carte comptabilisent les jours où la température moyenne (arrondie) était de 1°C, 2°C, 3°C, etc., ainsi que le nombre de jours où la consommation électrique correspondante a été enregistrée. Ces histogrammes couvrent les 365 derniers jours.
Chaque point sur le graphique représente une journée. L’axe horizontal (X) indique la température moyenne de cette journée, et l’axe vertical (Y) correspond à la consommation électrique enregistrée le même jour.
La ligne droite tracée sur le graphique représente la relation théorique entre la température moyenne et la consommation électrique, basée sur des calculs statistiques.
Le code de cette carte est plus haut dans la conversation.
pour l’axe verticale correspondant à la conso, c’est quelle type de sensor? une valeure journaliere, le total kwh sur une année…? De type total_increasing…?
Si tu pouvais partager ton code, car celui cité en exemple est issu pour pas de valeur en anglais ou hollandais.
J’utilise un Compteur de services publics qui ce réinitialise tous les jours qui prend comme entrée mon lixee.
Ainsi, je garde le max par jour.
voici le code :
type: custom:plotly-graph
entities:
- entity: sensor.interieur_exterieur_temperature
statistic: mean
period: day
time_offset: "-1d"
fn: $fn ({ ys, vars }) => vars.temperature = ys
- entity: sensor.conso_jour
statistic: state
period: day
unit_of_measurement: kWh
name: Elec
internal: true
filters:
- map_x: x > 10
- filter: i>0
- map_y_numbers: y * 1
fn: $fn ({ ys, vars }) => vars.oil = ys
- entity: ""
x: $fn ({ vars }) => vars.temperature
"y": $fn ({ vars }) => vars.oil
mode: markers
name: points
marker:
color: rgb(102,0,0)
size: 3
opacity: 0.4
type: scatter
- entity: ""
line:
shape: linear
color: blue
filters:
- fn: |
({ys, xs, vars}) => {
return {xs: vars.temperature, ys: vars.oil};
}
- trendline
- entity: ""
line:
color: green
filters:
- fn: |
({vars}) => {
const xs = vars.temperature;
const ys = vars.oil;
const pairs = xs.map((x, i) => [x,ys[i]])
.filter( ([x,y]) => Number.isFinite(x) && Number.isFinite(y)) // unavailables in the x axis break trendlines
.sort((a,b)=>a[0]-b[0]); // the trendline filter expects the x axis to be sorted
const r = {
xs: pairs.map(([x,y])=>x),
ys: pairs.map(([x,y])=>y),
};
console.log(r);
return r;
}
- trendline
- store_var: trend
x: >-
$fn ({ vars }) => vars.trend.xs.map(x=>+x) // the trendline made dates out
of the x axis
"y": >-
$fn ({ vars }) => vars.trend.ys // and since this is a raw_plotly_config,
we need to set x and y ourselves
- entity: ""
x: $fn ({ vars }) => vars.temperature
"y": $fn ({ vars }) => vars.oil
name: density
ncontours: 40
colorscale: YlGnBu
nbinsx: 40
nbinsy: 40
reversescale: true
showscale: false
line:
color: lightgray
type: histogram2dcontour
- entity: ""
x: $fn ({ vars }) => vars.temperature
name: x density
texttemplate: "%{x:0.0f}°C"
marker:
color: "rgb(40\t57\t143\t)"
yaxis: y2
opacity: 1
type: histogram
- entity: ""
x: undefined
"y": $fn ({ vars }) => vars.oil
name: y density
texttemplate: "%{y:0.0f}kWh"
marker:
color: "rgb(40\t57\t143\t)"
xaxis: x2
type: histogram
hours_to_show: 8760
title: >-
$fn({getFromConfig})=>`Conso - Last ${getFromConfig('hours_to_show')/24}
jours`
raw_plotly_config: true
layout:
margin:
t: 20
l: 70
r: 20
b: 70
height: 600
bargap: 0.1
showlegend: false
xaxis:
title:
text: Temperature ext (°C)
autorange: true
domain:
- 0
- 0.85
showgrid: false
zeroline: false
yaxis:
title:
text: Elec (kWh / Jour)
domain:
- 0
- 0.85
showgrid: false
zeroline: false
xaxis2:
domain:
- 0.85
- 1
showgrid: false
zeroline: false
yaxis2:
domain:
- 0.85
- 1
showgrid: false
zeroline: false
Merci pour tes explications.
Je suis très intéressé par le source, je vais essayer.
« Chaque point sur le graphique représente une journée. L’axe horizontal (X) indique la température moyenne de cette journée, et l’axe vertical (Y) correspond à la consommation électrique enregistrée le même jour. »
Je ne comprends pas bien cette partie.
Prenons 2 exemples :
à 2.5° la coànso est de 0 kw/h/J
à 18°, la conso est de 60 kw/h/J sur la courbe de moyennes vertes.
Il me semble qu’il y ai une erreur, l’axe Y devrait etre inversé, car un utilise + dekw/h pour chauffer quand il fait froid.
Oui, le problème est que lorsque j’ai changé de fournisseur d’énergie, j’ai perdu l’historique de ma conso… J’ai plus de point en température que de point conso. Cela reviendra d’ici 6 mois lorsque j’aurai 365 jours d’historique de nouveau pour la conso.
C’est pour cela que je passe par un compteur externe maintenant…
Si je prends la courbe des 3 mois, elle est dans le bon sens.
J’ai avancé sur mon graphe. À présent, j’ai 2 courbes (temp ext et puissance pac) qui se superposent quand il n’y a pas de soleil.
Les jours de soleils, ma pac consomme 1 kw / h (toutes les heures) de moins.
J’essaie donc de trouver un capteur public (type weather.ma_ville).
Quelqu’un sait si ça existe ?
Par avance merci.