Section 65 : ce que les etiquettes de vehicule ont appris
Consigne au dossier ce que la journee a produit autour du concierge vehicule : le drapeau `vehicule_sur` qui ne detecte pas le cas qui compte, la puissance qui distingue un vehicule invite la ou elle ne distingue pas les deux du foyer, et surtout la frontiere d'un branchement — un fait lu dans le journal, jamais un ecart de temps, les creux soir/heures creuses faisant 5 h 20. Plus le contrat arrete avec la session OpenClaw (helper unique en liste, clef verbatim avec millisecondes, max:255 explicite, fenetre commencant sur un branchement) et la correction sur `evcs_lecture`, qui porte un INSERT sur `evenement` et ne doit donc pas etre confie a un tiers. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
This commit is contained in:
110
HANDOFF.md
110
HANDOFF.md
@@ -6108,5 +6108,113 @@ c'est donc la charge du MATIN qui dira ce que le 150 A libere.
|
||||
|
||||
Cellules a 2 mV d'ecart et aucune alarme sur toute la sequence.
|
||||
|
||||
|
||||
## 65. Session du 13/09/2026 (soir) — Six sessions sur douze etaient mal etiquetees
|
||||
|
||||
### Le declencheur
|
||||
Une session voisine sur OpenClaw prepare un « concierge vehicule » : un agent
|
||||
qui demande par WhatsApp quel vehicule est branche quand l'etiquette est
|
||||
douteuse. En lui donnant les noms d'entites, j'ai verifie le selecteur.
|
||||
`input_select.victron_evcs_vehicle` etait sur **VW, inchange depuis le 07/09
|
||||
20:49** — six jours. Onze sessions consecutives en avaient herite.
|
||||
|
||||
### ⚠️ `vehicule_sur` ne dit pas ce que son nom laisse croire
|
||||
Les onze lignes affichaient `vehicule_sur = true`. En lisant le code :
|
||||
`vehicule_sur = vehicule_sur AND (nouveau = ancien)` — le drapeau ne passe a
|
||||
faux que si le selecteur change PENDANT une session. Un selecteur perime depuis
|
||||
six jours reste « sur ». C'est le defaut de conception qui a rendu l'anomalie
|
||||
invisible, et il est de mon fait.
|
||||
|
||||
### Ce que la puissance revele, et qui corrige une doctrine
|
||||
`p_max_w` sur les douze sessions :
|
||||
```
|
||||
3 606 a 3 784 W -> onze sessions, toutes a 20 A de consigne
|
||||
6 360 W / 28 A -> UNE session, le 11/09 16:54
|
||||
```
|
||||
Cette derniere est une **Megane electrique de service**, utilisee pour aller a
|
||||
Rennes — 7,45 kWh attribues a la VW qui ne les a jamais pris. Le proprietaire
|
||||
depanne aussi des amis en charge : le vehicule invite est un cas recurrent, et
|
||||
il n'etait documente nulle part.
|
||||
|
||||
**La doctrine « vehicules indiscernables » ne vaut donc QUE pour la VW et la
|
||||
JEEP l'une par rapport a l'autre.** Regle a sens unique : `consigne_max_a >= 20`
|
||||
ET `p_max_w > 4200` ⟹ invite, certain ; en dessous on ne sait rien, car un
|
||||
invite a chargeur 16 A est identique a la VW. Toute question sur l'identite d'un
|
||||
vehicule doit offrir « aucune des deux ».
|
||||
|
||||
### ⚠️ LA FRONTIERE D'UN BRANCHEMENT EST UN FAIT, PAS UN ECART DE TEMPS
|
||||
J'ai d'abord reconstruit les groupes soiree+nuit par l'ecart entre sessions.
|
||||
Les ecarts reels valent **5 h 19 a 5 h 25** — le creux entre la fin du solaire
|
||||
et l'ouverture des heures creuses. Aucun seuil de duree ne les distingue d'une
|
||||
nuit entiere.
|
||||
|
||||
La table `evenement` enregistre les transitions de
|
||||
`binary_sensor.victron_evcs_vehicle_connected`, en jsonb structure :
|
||||
`detail->>'entite'`, `detail->>'avant'`, `detail->>'apres'`. Un branchement va
|
||||
d'un `apres='on'` au `apres='off'` suivant. C'est un FAIT observe.
|
||||
|
||||
Les branchements reels de la semaine :
|
||||
```
|
||||
mar 08/09 19:39 -> mer 08:57 2 sessions
|
||||
mer 09/09 15:55 -> jeu 09:05 3 SESSIONS
|
||||
jeu 10/09 18:19 -> ven 16:27 2 sessions
|
||||
ven 11/09 16:53 -> 18:27 1 session (Megane)
|
||||
sam 12/09 11:42 -> 11:53 1 session
|
||||
sam 12/09 11:55 -> en cours 1 session
|
||||
```
|
||||
|
||||
**Le mercredi est un triplet, et j'avais applique une correction incoherente** :
|
||||
15:55 en JEEP, 19:35 et 01:25 laissees en VW. Physiquement impossible — un seul
|
||||
point de charge, le cable n'a pas bouge. Le journal me l'a mis sous le nez.
|
||||
|
||||
### La raison, que rien n'aurait pu deduire
|
||||
Mot du proprietaire : « mercredi c'est typique du contexte humain pas logique du
|
||||
tout car ma femme a branche la JEEP et le soir quand mon fils est arrive il n'a
|
||||
pas debranche la JEEP pour brancher la VW a la place, donc le jeudi il a roule a
|
||||
l'essence ». Plus le contexte de la semaine : sa femme (JEEP) en conges, son
|
||||
fils (VW) en stage sans retour le midi — la routine documentee entierement
|
||||
inversee.
|
||||
|
||||
Il ajoute qu'il lui est **plus facile de donner ces informations par WhatsApp
|
||||
que de venir sur un PC**. C'est l'argument central de l'agent conversationnel,
|
||||
et il est meilleur que celui que je defendais (« le selecteur s'oublie ») : le
|
||||
systeme n'a aucun canal d'entree pour le contexte humain.
|
||||
|
||||
### Etiquettes finales (reparation idempotente, 6 lignes)
|
||||
5 VW, 6 JEEP, 1 MEGANE — contre 11 VW et 1 JEEP avant. Chaque predicat verifie
|
||||
en lecture avant ecriture : fenetre d'une minute, exactement une ligne visee,
|
||||
energies concordantes.
|
||||
|
||||
### L'INVARIANT a retenir
|
||||
**Un cable, un vehicule** : toutes les sessions d'un meme branchement portent la
|
||||
meme etiquette. C'est une propriete physique, independante de toute
|
||||
connaissance metier, qu'aucune evolution de regle ne peut invalider. Un groupe a
|
||||
etiquettes mixtes signale soit une frontiere fausse, soit une ligne fausse — les
|
||||
deux meritent une alerte. C'est ce controle qui aurait signale mon triplet le
|
||||
jour meme ; il est desormais au cahier des charges du concierge, en continu.
|
||||
|
||||
### Contrat arrete avec la session OpenClaw
|
||||
- Airtria publie dans SON espace de noms, ne touche aucun actionneur, et le
|
||||
service d'historisation — proprietaire de `session_charge` — lit et applique.
|
||||
- Un seul helper JSON, `session_debut` en LISTE (ecritures sequentielles sur un
|
||||
helper unique perdraient une confirmation sur deux, mon service ne passant que
|
||||
toutes les 60 s).
|
||||
- La clef `debut` porte les **millisecondes** : renvoyer la chaine verbatim,
|
||||
jointure sur ±1 s.
|
||||
- `input_text` : declarer `max: 255` — le defaut est 100, et un rejet est
|
||||
SILENCIEUX (incident `forecast_updated` du 08/09).
|
||||
- Une fenetre d'analyse historique doit commencer sur un `on`, jamais au milieu
|
||||
d'un branchement.
|
||||
|
||||
### ⚠️ `evcs_lecture` N'EST PAS EN LECTURE SEULE
|
||||
Verifie en repondant : SELECT partout, plus **INSERT sur `evenement`** — octroi
|
||||
delibere du 04/09 pour les annotations manuelles, mais que le README decrivait
|
||||
a deux endroits comme « lecture seule », et que j'ai repete a un tiers. Ne pas
|
||||
confier ce role a un agent externe : `evenement` alimente les annotations
|
||||
Grafana, le rapport de nuit et l'attribution des transitions, et une ligne
|
||||
etrangere y serait indiscernable des notres. Un role dedie `airtria_ro`, SELECT
|
||||
sur `session_charge` et `evenement` uniquement, est en attente de creation par
|
||||
le proprietaire. README corrige.
|
||||
|
||||
---
|
||||
*Document mis a jour le : 13/09/2026 — table de charge 150/130/80/30, pv_mid 51,2 → 51,5 V, golden-acm 20/20*
|
||||
*Document mis a jour le : 13/09/2026 (soir) — six etiquettes de vehicule corrigees, frontiere de branchement lue dans le journal, contrat du concierge arrete*
|
||||
|
||||
Reference in New Issue
Block a user