Session reseau unique de la nuit : engagement sur le bilan, sortie sur la fenetre
§26 avait pose l objectif et designe le critere. Avant d ecrire quoi que ce soit, j ai mesure les kWh reellement sortis de la batterie par point de SOC sur cinq fenetres et trois nuits : 0,164 a 0,171 kWh/point au-dessus de 42 %, soit environ 17 kWh, mais 0,121 entre 45 et 22 % et 0,082 entre 33 et 20 %. En bas d echelle un point de SOC vaut moitie moins, alors que BALANCE.js convertit avec une constante unique de 15 kWh. required_soc y est donc systematiquement trop bas — c est le facteur 1,75 mesure la nuit du 02-03/09, ou le SOC descendait bien plus vite que la ligne. Cette mesure a dicte la conception : le relachement de la session ne peut pas etre un seuil de SOC, puisqu il porterait sur une grandeur fausse et que tout seuil que le SOC repasse ensuite rouvre l oscillateur du 27/08. Les deux variantes evidentes — relacher sur required_soc, ou sur required_soc_prudent avec la bande p50/p80 — ont ete ecartees pour cette raison. Retenu : engagement sur le bilan (batterie sous la cible), relachement a la fin de la fenetre. L oscillation devient structurellement impossible, la condition de sortie etant monotone : une fenetre ne se ferme qu une fois. Un nouveau helper input_boolean.victron_evcs_night_grid_session_committed porte l engagement, cree par input_boolean.reload sans redemarrage HA et ecrit seulement sur changement reel ; sans cette persistance la garde redeviendrait une bande, donc un oscillateur. Effet : l ACM recharge jusqu a la cible puis tient la batterie a 2 A, la maison finit la nuit sur le reseau en heures creuses au lieu de vider la reserve, et la batterie arrive a l aube pres de sa cible avec de la place pour le solaire. La coupure immediate E2 de l hysteresis exige l absence d override et le helper takeover reste ON : aucune modification du workflow d hysteresis. Golden 75 -> 78. Le scenario epingle quelques heures plus tot comme limite connue devient celui du correctif, attendu mis a jour dans le meme commit. Quatre mutations ; la plus parlante retire la garde bilan et fait tomber les trois scenarios anti-oscillateur du 27/08 — les tests de l ancien correctif protegent le nouveau code. Prerequis identifie et non traite : la conversion kWh vers points de SOC est une constante la ou la realite est une courbe. Consequence, un sous-declenchement possible en bas d echelle, jamais une oscillation. Prochain chantier du bilan. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
@@ -867,6 +867,51 @@ Le bon critere de re-engagement — « un budget d'energie restant a couvrir »
|
||||
etait deja designe par §26 ; le bilan est maintenant cable, mais la suite touche
|
||||
la machine a etats de la nuit et fera l'objet d'un chantier propre.
|
||||
|
||||
#### G. Session reseau unique de la nuit (03/09/2026)
|
||||
|
||||
Le chantier annonce ci-dessus, fait le soir meme — mais pas comme prevu.
|
||||
|
||||
**Mesure prealable, qui a change la conception.** Les kWh reellement sortis de
|
||||
la batterie par point de SOC, sur cinq fenetres et trois nuits : 0,164 a
|
||||
0,171 kWh/point au-dessus de 42 % (soit ~17 kWh), mais **0,121 entre 45 et 22 %
|
||||
et 0,082 entre 33 et 20 %**. En bas d'echelle, un point de SOC vaut moitie
|
||||
moins. Or le bilan convertit avec une constante unique de 15 kWh :
|
||||
`required_soc` y est donc systematiquement trop bas — d'ou la batterie qui,
|
||||
la nuit du 02-03/09, descendait 1,75 fois plus vite que la ligne.
|
||||
|
||||
**Consequence : le relachement ne peut pas etre un seuil de SOC.** Il porterait
|
||||
sur une grandeur fausse, et tout seuil que le SOC repasse ensuite rouvre
|
||||
l'oscillateur du 27/08. Les deux variantes evidentes — relacher sur
|
||||
`required_soc`, ou sur `required_soc_prudent` avec la bande p50/p80 — ont ete
|
||||
ecartees pour cette raison.
|
||||
|
||||
**Conception retenue : engagement sur le bilan, relachement a la FIN DE LA
|
||||
FENETRE.** L'oscillation devient structurellement impossible, la condition de
|
||||
sortie etant monotone : une fenetre ne se ferme qu'une fois. Un helper
|
||||
`input_boolean.victron_evcs_night_grid_session_committed` porte l'engagement —
|
||||
sans cette persistance, la garde serait reevaluee a chaque cycle et redeviendrait
|
||||
une bande.
|
||||
|
||||
Effet : l'ACM recharge jusqu'a la cible puis tient la batterie a 2 A, la maison
|
||||
finit la nuit sur le reseau **en heures creuses** au lieu de vider la reserve, et
|
||||
la batterie arrive a l'aube pres de sa cible, avec de la place pour le solaire.
|
||||
La coupure immediate E2 de l'hysteresis exige `!evcsGridOverride` et le helper
|
||||
takeover reste ON : aucune modification du workflow d'hysteresis n'a ete
|
||||
necessaire.
|
||||
|
||||
Golden 75 → 78. La mutation la plus parlante : retirer la garde bilan fait
|
||||
tomber les trois scenarios anti-oscillateur du 27/08 — les tests de l'ancien
|
||||
correctif protegent le nouveau code. Detail : HANDOFF §40.
|
||||
|
||||
⚠️ **Prerequis identifie, non traite** : `evcs_balance_usable_capacity_kwh` = 15
|
||||
est une constante la ou la realite est une courbe, et `INPUT_PARSE` code 17,5 en
|
||||
dur de son cote. Consequence : `required_soc` sous-estime le besoin en bas
|
||||
d'echelle, donc la session peut manquer des nuits ou elle aurait du s'engager
|
||||
(sous-declenchement — jamais d'oscillation, la conception y est immune), et la
|
||||
reserve d'orage est optimiste dans la meme bande. §28 avait deja signale
|
||||
l'effondrement de la jauge ; les mesures du 03/09 lui donnent sa courbe. C'est
|
||||
le prochain chantier du bilan energetique.
|
||||
|
||||
⚠️ Point structurel mis au jour par cet incident : le bilan energetique publie
|
||||
l'heure de croisement, l'energie a couvrir, le SOC requis, `grid_needed` et
|
||||
`pv_censored` — et **aucun des deux workflows de decision n'en lit une seule
|
||||
|
||||
Reference in New Issue
Block a user