La prevision affichee cesse d etre de l histoire
Le graphe « production prevue et realisee heure par heure » du troisieme onglet du bilan energetique ne montrait que du passe : sa courbe « prevue » etait la prevision publiee le matin de chaque jour ECOULE, et la fenetre s arretait a l heure en cours. C est un instrument de mesure du biais, pas une prevision. Deux courbes desormais, et elles n ont ni la meme provenance ni le meme usage. Pour un jour ecoule, ce qui avait ete annonce LE MATIN MEME reste la seule reference honnete : une prevision revisee a 18 h connait deja la journee, la comparer au reel ne mesure plus rien. Pour les heures a venir, c est la DERNIERE publication qui fait foi — aujourd hui jusqu au soir, demain en entier. Les deux se touchent sur l heure en cours au lieu de laisser un trou, et la seconde est tracee en pointilles. Au-dela de l heure en cours, « reel » et « bridage » valent NULL et non zero : un zero dessinerait une chute de production qui n a pas eu lieu. Defaut trouve en chemin : l ecart moyen comptait l heure EN COURS, mesuree sur ses seules minutes ecoulees. A 14h05 son reel vaut cinq minutes de production contre une prevision d heure pleine, soit -92 % qui n existent pas. La colonne `clos` l exclut. Et la serie mesuree s arrete desormais a la minute courante et non au debut de l heure, si bien que l heure en cours est reellement tracee au lieu de valoir zero. Le partage aujourd hui / demain se fait en SQL, dans le fuseau deja utilise par le reste de la requete : le conteneur repond en UTC a `date`, il ne doit pas servir d arbitre. Fenetre de la carte portee a hier / aujourd hui / demain (graph_span 3d, span end day offset +1d) : sans cela la prevision, qui est justement ce qu on veut voir, tombe hors du cadre. Verifie dans le paquet installe : `span.offset` exige bien un signe, et l offset decale les deux bornes. Verification en production : 47 points de prevision publies, du 17/09 01 h au 18/09 23 h, 33,3 kWh encore attendus aujourd hui et 34,5 annonces pour demain. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
This commit is contained in:
@@ -320,7 +320,15 @@ views:
|
||||
|
||||
- type: markdown
|
||||
content: >
|
||||
## Comment lire cette courbe
|
||||
## Comment lire ces courbes
|
||||
|
||||
|
||||
**La courbe pleine orange est de l'histoire, la pointillée est la
|
||||
prévision.** Pour un jour écoulé on affiche ce qui avait été annoncé
|
||||
*le matin même* — c'est la seule référence qui mesure vraiment la
|
||||
qualité de la prévision, une version révisée à 18 h connaissant déjà
|
||||
la journée. Pour les heures à venir on affiche la **dernière**
|
||||
publication : aujourd'hui jusqu'à ce soir, et demain en entier.
|
||||
|
||||
|
||||
⚠️ **Une heure bridée n'est pas comparable.** Quand la batterie est
|
||||
@@ -329,8 +337,9 @@ views:
|
||||
soit fausse. La bande grise du bas dit quand c'est le cas.
|
||||
|
||||
|
||||
Le chiffre en tête — l'écart moyen — ne compte **que les heures non
|
||||
bridées**. C'est le seul qui juge vraiment la prévision.
|
||||
Le chiffre en tête — l'écart moyen sur sept jours — ne compte **que
|
||||
les heures non bridées et déjà terminées**. C'est le seul qui juge
|
||||
vraiment la prévision.
|
||||
|
||||
|
||||
Deux exemples mesurés : le 13/09 à 15 h, prévu 5,32 kWh et réalisé
|
||||
@@ -340,8 +349,21 @@ views:
|
||||
|
||||
- type: entities
|
||||
entities:
|
||||
- type: attribute
|
||||
entity: sensor.evcs_prevision_contre_reel
|
||||
attribute: reste_aujourdhui_kwh
|
||||
name: Encore attendu aujourd'hui
|
||||
suffix: " kWh"
|
||||
icon: mdi:weather-sunny
|
||||
- type: attribute
|
||||
entity: sensor.evcs_prevision_contre_reel
|
||||
attribute: annonce_demain_kwh
|
||||
name: Annoncé pour demain
|
||||
suffix: " kWh"
|
||||
icon: mdi:weather-sunset-up
|
||||
- type: divider
|
||||
- entity: sensor.evcs_prevision_contre_reel
|
||||
name: Écart moyen (heures comparables)
|
||||
name: Écart moyen (heures comparables, 7 j)
|
||||
- type: attribute
|
||||
entity: sensor.evcs_prevision_contre_reel
|
||||
attribute: heures_comparables
|
||||
@@ -349,49 +371,65 @@ views:
|
||||
- type: attribute
|
||||
entity: sensor.evcs_prevision_contre_reel
|
||||
attribute: heures_total
|
||||
name: Heures dans la fenêtre
|
||||
name: Heures terminées dans la fenêtre
|
||||
|
||||
- type: custom:apexcharts-card
|
||||
header:
|
||||
show: true
|
||||
title: Production prévue et réalisée, heure par heure
|
||||
title: Production réalisée, et ce qui est annoncé jusqu'à demain soir
|
||||
show_states: false
|
||||
graph_span: 7d
|
||||
# Hier, aujourd'hui, demain. La fenêtre s'arrête a la fin de DEMAIN et
|
||||
# non a l'heure en cours : sans cela la prevision, qui est justement ce
|
||||
# qu'on veut voir, tombe hors du cadre.
|
||||
graph_span: 3d
|
||||
span:
|
||||
end: hour
|
||||
end: day
|
||||
offset: '+1d'
|
||||
apex_config:
|
||||
chart:
|
||||
height: 340
|
||||
stroke:
|
||||
width: [2, 2]
|
||||
width: [1, 2, 2]
|
||||
dashArray: [0, 0, 5]
|
||||
legend:
|
||||
position: top
|
||||
yaxis:
|
||||
- title: {text: kWh par heure}
|
||||
decimals: 1
|
||||
min: 0
|
||||
series:
|
||||
- entity: sensor.evcs_prevision_contre_reel
|
||||
name: Prévue
|
||||
type: line
|
||||
color: '#f0a202'
|
||||
data_generator: |
|
||||
return (entity.attributes.predite || []);
|
||||
- entity: sensor.evcs_prevision_contre_reel
|
||||
name: Réalisée
|
||||
type: area
|
||||
opacity: 0.25
|
||||
color: '#2d8cf0'
|
||||
data_generator: |
|
||||
return (entity.attributes.reelle || []);
|
||||
return (entity.attributes.reelle || [])
|
||||
.filter(p => p[1] !== null && p[1] !== undefined);
|
||||
- entity: sensor.evcs_prevision_contre_reel
|
||||
name: Prévue le matin même
|
||||
type: line
|
||||
color: '#f0a202'
|
||||
data_generator: |
|
||||
return (entity.attributes.predite || [])
|
||||
.filter(p => p[1] !== null && p[1] !== undefined);
|
||||
- entity: sensor.evcs_prevision_contre_reel
|
||||
name: Prévision en cours
|
||||
type: line
|
||||
color: '#f05a02'
|
||||
data_generator: |
|
||||
return (entity.attributes.attendue || [])
|
||||
.filter(p => p[1] !== null && p[1] !== undefined);
|
||||
|
||||
- type: custom:apexcharts-card
|
||||
header:
|
||||
show: true
|
||||
title: Part de l'heure où la production était bridée
|
||||
show_states: false
|
||||
graph_span: 7d
|
||||
graph_span: 3d
|
||||
span:
|
||||
end: hour
|
||||
end: day
|
||||
offset: '+1d'
|
||||
apex_config:
|
||||
chart:
|
||||
height: 150
|
||||
@@ -408,4 +446,5 @@ views:
|
||||
opacity: 0.4
|
||||
color: '#9e9e9e'
|
||||
data_generator: |
|
||||
return (entity.attributes.bridage || []);
|
||||
return (entity.attributes.bridage || [])
|
||||
.filter(p => p[1] !== null && p[1] !== undefined);
|
||||
|
||||
Reference in New Issue
Block a user