Le contacteur ne se rend plus au milieu du service
La regle du 05/09 ferme quand la maison depasse 80 % du plafond de decharge du parc — elle a mordu au bon instant hier soir, a -97,4 A pour 100 A autorises. Mais elle relachait sur un seul echantillon sous 50 %, et la soiree offrait quatorze occasions de le faire. Le troisieme pic est tombe deux minutes avant l'ouverture reelle : decale de cinq minutes, elle refermait, et chaque aller-retour du contacteur coute 50 a 150 Wh. Les accalmies mesurees sont franchement bimodales — treize de 5 min au plus pendant la cuisson, une de 201 min apres. Le relachement se mesure donc en duree, et la duree vient du bilan energetique : 20 min tant que la batterie est condamnee a toucher son plancher avant les heures creuses (l'energie reseau du soir est due de toute facon, la tenir ne change que son heure), 6 min des qu'elle passerait la nuit seule (chaque kWh du soir deplacerait alors un kWh d'heures creuses vers des heures pleines). Premiere lecture du bilan par le workflow d'hysteresis. Le dwell se compte sur la maison, jamais sur le contacteur : l'horodatage est ecrit qu'il soit ouvert ou ferme, sans quoi la decision detruirait sa propre cause. Et parce que la tension batterie s'est tue 27 minutes hier soir en pleine cuisson, le plafond retombe sur la tension nominale du parc, et a defaut l'horodatage — un fait persiste — tient la protection jusqu'au bout du dwell. Golden-hysteresis 11 -> 20. Six mutations, chacune tombant sur un jeu different. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
149
HANDOFF.md
149
HANDOFF.md
@@ -4353,3 +4353,152 @@ ce qui confirme la commune retenue pour l'integration Meteo-France (§32).
|
||||
|
||||
---
|
||||
*Document mis a jour le : 05/09/2026 — parc date par les factures ; le passage en parallele de mars 2025 est disculpe*
|
||||
|
||||
## 57. Session du 06/09/2026 — Le relachement du contacteur se mesurait sur un instant
|
||||
|
||||
### La nuit du 05-06/09, et une erreur de cadrage de ma part
|
||||
Premiere nuit a quatre modules. La soiree a vide le pack : **87 % -> 20 % entre
|
||||
20:00 et 00:00, 6,80 kWh sortis** pour une maison a 1,2-3 kW. A 23:55 le SOC a
|
||||
touche le seuil bas de l'hysteresis ET le plancher ESS (20 dans les deux cas),
|
||||
le contacteur s'est ferme, l'ESS est passe en `self_consumption_soc_below_min`.
|
||||
A 01:24 la fenetre HC s'est ouverte, la session reseau unique (§40) s'est
|
||||
engagee, l'ACM est passe en `evcs_takeover_recover` et **c'est lui qui a charge
|
||||
la batterie**, vers `night_target_soc` — cible issue du bilan depuis le 03/09
|
||||
(§39), qui demandait 11,71 kWh a couvrir, soit plus de 100 % de SOC avec quatre
|
||||
modules, donc 90 (plafond) puis 80,5 a 01:00.
|
||||
|
||||
La charge s'est arretee a 05:05 quand le SOC (55) a rattrape la cible qui
|
||||
descendait (49,4) -> `evcs_takeover_hold`, DVCC 2 A. Bilan de la nuit :
|
||||
**13,34 kWh importes**, dont 4,23 dans la JEEP, **3,28 dans la batterie** et
|
||||
~5,8 directement dans la maison. Verification par la suite : a 06:47 la JEEP est
|
||||
debranchee, EDF ouvert, et la batterie a porte la maison de 55 % a 45 % jusqu'au
|
||||
croisement PV vers 08:45 — **0,99 kWh consommes contre 1,49 annonces a 06:00**.
|
||||
La chaine a fonctionne.
|
||||
|
||||
⚠️ **J'ai d'abord presente la vidange du soir comme un defaut. C'est faux** : la
|
||||
batterie a delivre 6,80 kWh en heures pleines, ce qui est exactement son metier,
|
||||
et elle est partie de 87 % — elle ne pouvait pas etre plus pleine. Les 1,4 kWh
|
||||
achetes de 23:55 a 01:24 l'auraient ete de toute facon. Le defaut est ailleurs.
|
||||
|
||||
### Le defaut : treize occasions de relacher au milieu du service
|
||||
La regle du 05/09 ferme quand la maison depasse 80 % du plafond de decharge du
|
||||
BMS et relachait des que la charge repassait sous 50 % — **sur un seul
|
||||
echantillon**. Releve de la soiree :
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| pic de decharge a 20:40 | **-97,4 A** pour un plafond de **100 A** (maison 4 944 W) |
|
||||
| depassements du seuil de fermeture (4 080 W) | 3 : 20:34:20, 20:39:30, **21:01:55** |
|
||||
| passages sous le seuil de relachement (2 550 W) | **14** en quatre heures |
|
||||
| contacteur ouvert a | 21:04 |
|
||||
| maison apres le relachement | jusqu'a **3 423 W** a 21:37, soit -73 A, 73 % du plafond |
|
||||
|
||||
La fermeture a mordu au bon instant, a 2,6 A de la limite du parc. Mais le
|
||||
troisieme pic est tombe **deux minutes avant l'ouverture** : decale de cinq
|
||||
minutes, la regle refermait, et chaque aller-retour du contacteur coute 50 a
|
||||
150 Wh de transitoire (§28/§31). Le battement n'a pas eu lieu par chance, pas
|
||||
par construction.
|
||||
|
||||
### La mesure qui donne les durees (et rend tout choix inutile)
|
||||
Duree des accalmies sous 2 550 W, pas d'une minute :
|
||||
|
||||
| periode | accalmies | la plus longue |
|
||||
|---|---:|---:|
|
||||
| pendant la cuisson, 20:33 -> 21:37 | **13** | **5 min** |
|
||||
| apres la cuisson, 21:40 -> 01:00 | 1 | **201 min** |
|
||||
|
||||
Distribution franchement bimodale, fosse net entre 5 et 201 minutes. **Un creux
|
||||
de vingt minutes n'existe pas tant que ca cuisine.** Les deux durees se lisent
|
||||
donc sur la mesure : **20 min** (milieu du fosse, marge x4) et **6 min** (juste
|
||||
au-dessus de la plus longue accalmie de cuisson).
|
||||
|
||||
### Le correctif (deploye 06/09 13:03, golden-hysteresis 20/20)
|
||||
`tools/patch-20260906-relachement-sur-duree.mjs`, rejouable et idempotent.
|
||||
|
||||
**Fermeture inchangee** — c'est une contrainte de PUISSANCE, ni le SOC ni un
|
||||
budget d'energie n'ont rien a y dire, et le plafond vient deja du BMS donc il
|
||||
suit le nombre de modules tout seul.
|
||||
|
||||
**Relachement sur une DUREE** : la maison doit rester sous le seuil bas pendant
|
||||
N minutes. Meme mecanisme que la tolerance temporelle de la politique batterie
|
||||
(§35) — un franchissement de seuil doit DURER pour compter.
|
||||
|
||||
**Et N vient du bilan energetique.** Tant que la batterie est de toute facon
|
||||
condamnee a toucher son plancher avant l'ouverture des heures creuses, le
|
||||
partage batterie/reseau de la soiree est FIGE : tenir le contacteur plus
|
||||
longtemps ne change que l'HEURE d'achat, pas le montant. Des qu'elle passerait
|
||||
la nuit seule, chaque kWh du soir deplace un kWh d'heures creuses vers des
|
||||
heures pleines. D'ou 20 min dans le premier cas, 6 dans le second.
|
||||
C'est la premiere lecture du bilan par le workflow d'hysteresis, qui n'en lisait
|
||||
aucun champ (trou structurel signale en §11.8.A).
|
||||
|
||||
⚠️ **APPROXIMATION ASSUMEE** : le bilan publie `required_soc`, qui vise le
|
||||
CROISEMENT PV — cible strictement plus lointaine que 01:24. `soc <
|
||||
required_soc` est donc NECESSAIRE mais pas SUFFISANT pour « la batterie
|
||||
n'atteindra pas l'ouverture des HC ». L'erreur est unilaterale : on tient
|
||||
parfois le long dwell une nuit ou le court aurait suffi, ce qui deplace ~0,4 kWh
|
||||
des heures creuses vers les heures pleines et menage le parc. Direction voulue.
|
||||
|
||||
⚠️ **LE DWELL SE COMPTE SUR LA MAISON.** Le nouvel horodatage
|
||||
`input_datetime.victron_grid_charge_high_last_at` porte la derniere charge
|
||||
maison HAUTE et il est ecrit **que le contacteur soit ouvert ou ferme**. Meme
|
||||
raison qu'au 05/09 : fermer le contacteur fait chuter le courant batterie, s'en
|
||||
servir comme critere ferait que la decision detruirait sa propre cause — le
|
||||
piege des quatre oscillateurs deja corriges. Horodatage absent ou illisible =>
|
||||
dwell repute ecoule => comportement d'avant ce correctif.
|
||||
|
||||
Helpers : paquet `victron_grid_charge_dwell.yaml` (`..._dwell_long_min` 20,
|
||||
`..._dwell_court_min` 6, `..._charge_high_last_at`), crees par
|
||||
`input_number.reload` + `input_datetime.reload` — **aucun redemarrage HA**.
|
||||
|
||||
### Capteurs muets — un mode de defaillance observe, pas suppose
|
||||
Le 05/09 **de 21:22:21 a 21:49:35, soit 27 minutes**,
|
||||
`sensor.victron_battery_current` et `sensor.victron_battery_voltage` n'ont RIEN
|
||||
publie, pendant que `sensor.victron_consumption_power_l1` continuait
|
||||
normalement. Le SOC, lui, a publie en boucle une valeur figee a 60 % alors qu'il
|
||||
tombait reellement a 49 %. Un courant fige a -73,2 A pendant que la maison
|
||||
oscille entre 1,4 et 3,4 kW est physiquement impossible.
|
||||
|
||||
Consequences : les `battery_current_hard_stop` du controleur EVCS enregistres a
|
||||
21:31, 21:36, 21:38 et 21:41 sont des decisions prises sur une valeur vieille
|
||||
d'une demi-heure ; et **la tension alimente `plafondDechargeW`**, donc sans
|
||||
repli la protection s'evanouissait pile a l'heure du diner.
|
||||
|
||||
Deux filets, tous deux fondes sur du mesure ou du persiste :
|
||||
1. plafond en AMPERES lisible mais tension muette => **tension nominale 51 V**.
|
||||
Sur toute la soiree la tension mesuree n'est pas sortie de 48,85-51,5 V : au
|
||||
pire 5 % d'erreur sur le seuil, contre 100 % si la regle s'eteint ;
|
||||
2. les deux muets => l'horodatage de charge haute reste un **fait persiste** :
|
||||
on tient jusqu'a la fin du dwell. La memoire ne survit pas au dwell, puisque
|
||||
l'horodatage n'est ecrit que quand le plafond est lisible.
|
||||
|
||||
### Golden-hysteresis 11 -> 20
|
||||
`h-dwell-accalmie-de-cuisson-ne-relache-pas` (le releve reel : accalmie de
|
||||
5 min, SOC 65 sous les 92 requis) et son contrefactuel a 25 min · trois
|
||||
scenarios a **8 minutes** de calme, entre les deux durees, que **seul l'etat du
|
||||
bilan separe** (frais+condamne -> tient · frais+reserve suffisante -> rend ·
|
||||
perime -> rend) · l'horodatage ecrit contacteur OUVERT · les trois cas de
|
||||
capteurs muets avec leur contrefactuel de memoire expiree.
|
||||
|
||||
Preuve par mutation, six directions, **chacune faisant tomber un jeu different**
|
||||
et aucune plus d'un ou deux scenarios : dwell retire · bilan ignore · garde de
|
||||
fraicheur retiree · horodatage ecrit seulement contacteur ferme · repli de
|
||||
tension retire · memoire de protection retiree. Restauration -> 20/20.
|
||||
|
||||
### A surveiller ce soir
|
||||
1. `input_datetime.victron_grid_charge_high_last_at` doit avancer pendant la
|
||||
cuisson et se figer ensuite ;
|
||||
2. au plus UNE fermeture et UNE ouverture du contacteur sur la soiree ;
|
||||
3. la raison doit afficher `Charge maison retombee a XW depuis Y min : on garde
|
||||
le reseau jusqu'a 20 min (reserve deja condamnee...)` ;
|
||||
4. si la tension batterie se remet a disparaitre, `plafond_decharge_w` doit
|
||||
rester a ~5100 et non tomber a 0.
|
||||
|
||||
### Reste ouvert
|
||||
- Detecteur de gel dans le service d'historisation : une grandeur qui ne bouge
|
||||
pas alors qu'une autre du meme bilan bouge = alerte. Non fait.
|
||||
- `grid_soc_on` / `grid_soc_off` (20/30) restent des niveaux fixes : c'est le
|
||||
dernier consommateur du bilan qui n'est pas cable (§11.8.A).
|
||||
|
||||
---
|
||||
*Document mis a jour le : 06/09/2026 (~13:10) — relachement du contacteur sur une duree gagee sur le bilan, golden-hysteresis 20/20, deploye*
|
||||
|
||||
Reference in New Issue
Block a user