La fenetre de lecture depend du comportement de l'entite au repos

« No data » sur le panneau Chargeur PV a 03:20 : la production avait ete ecrite
pour la derniere fois au coucher du soleil, 370 minutes plus tot, et ma fenetre
etait de 6 h. La valeur zero etait pourtant exacte et connue.

C'est la seconde erreur sur ce meme reglage, en sens inverse de la premiere :
- trop LARGE partout (7 jours), le panneau Reseau affichait un courant vieux de
  quatorze heures, parce que ces capteurs passent en `unavailable` quand AC-IN
  s'ouvre au lieu de tomber a zero ;
- trop ETROITE partout (6 heures), les entites qui publient un vrai zero au
  repos disparaissent de l'ecran alors que leur derniere valeur reste juste.

Il n'y a donc pas de bonne valeur unique. Regle inscrite dans le generateur :
fenetre LARGE (24 h) pour ce qui publie un vrai zero — production PV, borne a
l'arret, trackers ; fenetre COURTE (6 h) pour ce qui disparait, c'est-a-dire
les seules grandeurs du reseau.

Consigne au passage dans le manuel : le proprietaire possede une troisieme
monture, une moto electrique Zero Motorcycles SR/F, a ajouter au selecteur fin
septembre. Avec la remarque qui compte : sa batterie et son chargeur embarque
etant bien plus petits, elle sera peut-etre le premier vehicule du foyer
electriquement distinguable des deux autres.

53/53 requetes verifiees.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
Tallagrand Thierry
2026-09-05 03:23:07 +02:00
parent 0681bf5af4
commit 14e04a428a
3 changed files with 57 additions and 40 deletions

View File

@@ -620,35 +620,24 @@ telephone = dashboard("evcs-telephone", "Sur le telephone", (
# variation de -373 kWh sur une heure. Integrer la puissance ignore
# completement ce probleme.
def flux_dernier(refid, mesure, entite, libelle, champ="value", fenetre="6h"):
def flux_dernier(refid, mesure, entite, libelle, champ="value", fenetre="24h"):
"""Derniere valeur connue d'une entite, renommee pour l'affichage."""
# Fenetre de 6 HEURES : un compromis, et il merite d'etre explique.
# LA FENETRE DEPEND DU COMPORTEMENT DE L'ENTITE AU REPOS, pas d'un
# compromis unique. C'est la lecon de deux erreurs successives :
#
# Trop large (7 jours, premiere version), le panneau Reseau affichait le
# 05/09 a minuit « Courant 2,2 A » — une valeur ecrite QUATORZE HEURES plus
# tot, du temps ou le contacteur etait ferme. Les capteurs du reseau
# passent en `unavailable` quand AC-IN disparait ; ils ne tombent pas a
# zero. Leur derniere valeur numerique reste donc celle d'avant, et elle
# ment.
# - trop LARGE partout (7 jours) : le panneau Reseau affichait le 05/09 a
# minuit « Courant 2,2 A », valeur ecrite quatorze heures plus tot. Les
# capteurs du reseau passent en `unavailable` quand AC-IN disparait ;
# ils ne tombent pas a zero, et leur derniere valeur numerique ment.
#
# Trop etroite (30 minutes), on efface des valeurs JUSTES : la production
# nulle de la nuit est ecrite une fois au coucher du soleil et reste vraie
# jusqu'a l'aube.
# - trop ETROITE partout (6 heures) : a 03:20 le panneau PV affichait
# « No data » alors que la production est nulle et connue — sa derniere
# ecriture datait du coucher du soleil, 370 minutes plus tot.
#
# Six heures couvre une nuit sans soleil et une borne au repos, tout en
# ecartant une lecture vieille de quatorze heures. Au-dela, la case affiche
# un tiret — « aucune mesure recente », jamais un chiffre invente.
# Ancien commentaire :
# tentant — c'est ce que je faisais — mais le 05/09 a minuit le panneau
# Reseau affichait « Courant 2,2 A », valeur ecrite QUATORZE HEURES plus
# tot, du temps ou le contacteur etait ferme. Une case vide dit « aucune
# mesure recente » et c'est vrai ; un chiffre perime dit « voici la
# valeur » et c'est faux.
# Ancienne justification, conservee pour memoire : l'integration InfluxDB
# de Home Assistant n'ecrit QUE sur changement d'etat. Une grandeur stable
# — la borne a 0 A, voiture debranchee — n'a donc aucun point recent, et
# une fenetre courte affiche une case vide la ou la valeur est simplement
# constante. `last()` reste peu couteux sur une fenetre large.
# Regle : une entite qui publie un VRAI zero au repos (production PV, borne
# a l'arret, trackers) supporte une fenetre large, sa derniere valeur restant
# exacte. Une entite qui DISPARAIT au repos exige une fenetre courte — c'est
# le cas des seules grandeurs du reseau, qui passent donc 6h en argument.
return flux(refid,
f'from(bucket: "evcs")\n'
f' |> range(start: -{fenetre})\n'
@@ -804,9 +793,11 @@ systeme = dashboard("evcs-systeme", "Le systeme", (
frm="now-24h", refresh="30s", variables=[VARIABLE_VUE], panels=[
stat("Reseau", [
flux_dernier("A", "W", "victron_grid_power_l1", "Puissance"),
flux_dernier("B", "V", "airtria_mpii_v1_input_voltage_l1", "Tension"),
flux_dernier("C", "A", "gx_device_grid_current_l1", "Courant")],
# 6 h et non 24 : ces trois capteurs DISPARAISSENT quand AC-IN s'ouvre,
# laissant derriere eux une valeur qui ne vaut plus rien.
flux_dernier("A", "W", "victron_grid_power_l1", "Puissance", fenetre="6h"),
flux_dernier("B", "V", "airtria_mpii_v1_input_voltage_l1", "Tension", fenetre="6h"),
flux_dernier("C", "A", "gx_device_grid_current_l1", "Courant", fenetre="6h")],
IN, 0, 0, 5, 5,
"Positif : le reseau alimente la maison. Le contacteur EDF est pilote par "
"le workflow d'hysteresis, pas depuis ici.",