Bilan : reserve d orage, en mode ombre
Une coupure reseau n arrete pas l installation : le solaire et la batterie continuent, seul le filet de secours disparait. La reserve a tenir est donc la couverture prudente p80 que le bilan calcule deja — aucune constante nouvelle. En deficit c est la fenetre traversee, en surplus la prochaine, car a 15 h la reponse « rien a couvrir » est exacte et inutile. Le seuil d activation est la vigilance orange, echelle officielle de Meteo-France et non un nombre choisi ici. Le snapshot lit l alerte sans connaitre la commune, donc le code marche des l installation de l integration et publie « indisponible » en attendant. Tests 38 -> 42. Le fixture du test de perimetre ombre ne contenait pas storm : les nouvelles ecritures n etaient pas couvertes. Corrige, assertion explicite, preuve par mutation. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
52
HANDOFF.md
52
HANDOFF.md
@@ -1313,6 +1313,58 @@ hiver doit se faire APRÈS ce correctif, sous peine de dimensionner sur une
|
||||
installation qui perd les trois quarts de sa production dès que le réseau est
|
||||
présent.
|
||||
|
||||
### Réserve d'orage (déployé 27/08 12:04, mode ombre, tests 42/42)
|
||||
Besoin : les coupures réseau d'orage sont fréquentes sur ce site, et le
|
||||
propriétaire veut garder de quoi tenir jusqu'au retour du solaire.
|
||||
|
||||
**Point de départ, souvent mal posé** : une coupure n'arrête PAS
|
||||
l'installation. Le solaire et la batterie continuent, seul le filet de secours
|
||||
disparaît. La question n'est donc pas « combien stocker pour survivre » mais
|
||||
« la batterie traverse-t-elle la prochaine fenêtre de déficit SANS réseau ».
|
||||
C'est **exactement la couverture prudente (p80) que le bilan calcule déjà** :
|
||||
aucune constante nouvelle. Le profil prudent est le bon choix ici précisément
|
||||
parce qu'une coupure retire la possibilité de rattraper une sous-estimation.
|
||||
|
||||
Chaîne : `HA_SNAPSHOT_TEMPLATE` lit la vigilance **sans connaître la commune**
|
||||
(`states.sensor | selectattr('entity_id','search','_weather_alert')`) →
|
||||
`PREPARE_BALANCE` passe-plat → `BALANCE` calcule le bloc `storm` →
|
||||
`BUILD_HA_CALLS` publie 5 helpers `evcs_balance_storm_*`.
|
||||
|
||||
Fenêtre retenue : en déficit, celle qu'on traverse (couverture prudente) ; en
|
||||
surplus, la prochaine (`nextDeficit`) — car à 15 h la réponse « rien à couvrir »
|
||||
est exacte et inutile, le risque étant la nuit qui vient.
|
||||
|
||||
Seuil d'activation : **vigilance orange**, c'est-à-dire l'échelle officielle de
|
||||
Météo-France (vert/jaune/orange/rouge) et non un nombre choisi ici.
|
||||
|
||||
Helpers (package `evcs_energy_balance.yaml`, sauvegarde
|
||||
`*.bak.20260827`, rechargés et vérifiés) : `evcs_balance_storm_level` ·
|
||||
`_storm_active` · `_storm_reserve_kwh` · `_storm_reserve_soc` (borné à 100 pour
|
||||
la plage de l'entrée) · `_storm_reason`.
|
||||
|
||||
Tests 38 → 42. Deux résultats notables figés :
|
||||
- 24/08 06:43, SOC 21 % : réserve 2,42 kWh (SOC 38,1 %) → **manque 2,57 kWh**
|
||||
pour tenir la matinée sans réseau ;
|
||||
- 24/08 15:30, SOC 95 %, vigilance rouge : la fenêtre qui compte devient celle
|
||||
de 19 h, 12,77 kWh, **SOC requis 107,1 %** — même pleine, la batterie
|
||||
actuelle ne passe pas la nuit sans réseau. Valeur volontairement NON écrêtée :
|
||||
c'est le signal de dimensionnement pour l'achat de batteries de cet hiver.
|
||||
|
||||
Garantie mode ombre étendue : le fixture synthétique `BALANCE_OK` de
|
||||
`scenarios-shadow.mjs` ne contenait pas `storm`, donc les nouvelles écritures
|
||||
n'étaient PAS couvertes par le test de périmètre. Corrigé, plus une assertion
|
||||
explicite `wroteStorm: 5`. Preuve par mutation : une écriture détournée vers
|
||||
`input_boolean.victron_evcs_night_grid_takeover_needed` fait échouer la suite
|
||||
(`outOfScope` la nomme).
|
||||
|
||||
**RESTE À FAIRE — action utilisateur** : l'intégration **Météo-France n'est pas
|
||||
installée** (HA n'a que `met` / Met.no). Elle est gratuite, sans clé d'API,
|
||||
intégrée au cœur de HA. Le flux de configuration a été testé par API : il
|
||||
réclame un **nom de commune** et refuse les coordonnées (`{"city":"empty"}` sur
|
||||
48.7732657 / -3.5187179) — donc à ajouter par l'interface, ou à me donner la
|
||||
commune. Tant qu'elle est absente, le bilan publie `indisponible`, `active`
|
||||
reste faux, et la réserve est quand même chiffrée : **rien ne casse**.
|
||||
|
||||
### Historique HA plus court que configuré
|
||||
`configuration.yaml` déclare `purge_keep_days: 90`, mais l'historique brut
|
||||
s'arrête au **20/08** (~7 jours) : testé vide au 01/06, 29/07, 10/08, 17/08 ;
|
||||
|
||||
Reference in New Issue
Block a user