Le service d historisation consigne lui-meme les evenements qu il constate
Une courbe sans ses evenements ne s interprete pas. Le service voit passer les etats toutes les minutes : autant qu il en tire les conclusions plutot que d attendre que quelqu un y pense. Douze etats DISCRETS suivis — contacteur EDF, session reseau de nuit, verrou hysteresis, vehicule branche, strategie, vehicule selectionne, etat BatteryLife, mode de l Auto Charge Manager, reseau necessaire, vigilance orage, production bridee. Les grandeurs continues restent dans mesure et les decisions dans decision : un evenement qui double une autre table est du bruit. Une lecture unavailable n est pas une transition mais une absence de lecture, elle n est pas consignee. Le redemarrage de Home Assistant est detecte sans capteur d uptime, qui n existe pas ici : au redemarrage HA restaure ses helpers et leur pose un last_changed neuf. Le 04/09 a 07:28:49, 352 entites partageaient la seconde du redemarrage dont 183 input_number. Le service prend donc le mode des last_changed des input_number — aucune entite codee en dur, et l estimation se corrige d elle-meme puisque entre deux redemarrages seuls les helpers reellement ecrits s ecartent du mode. Sous dix helpers d accord, la signature est jugee trop faible et rien n est affirme. Un episode d indisponibilite de Home Assistant est journalise AU RETOUR avec sa duree : au moment de la panne, la base n est peut-etre pas joignable non plus. Au premier cycle l etat est enregistre SANS rien journaliser, sinon chaque redemarrage du service produirait douze fausses transitions ; seul le demarrage du service est consigne. Verifie de bout en bout en conditions reelles et non seulement a blanc : essai a blanc avec cycle court, bascule reelle du selecteur de vehicule puis restauration. Amorcage sans fausse transition, cycle sans changement a zero evenement, les deux bascules relevees, etat restaure. Documente aussi le GRANT INSERT sur la seule table evenement pour le role d analyse — insert seulement, ni update ni delete : on ajoute une annotation, jamais on ne reecrit ni n efface les precedentes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
@@ -92,6 +92,52 @@ Le bon créneau est le milieu de matinée.
|
||||
À faire après l'étape 1 — n8n a besoin que la base existe pour qu'on y crée
|
||||
l'identifiant de connexion.
|
||||
|
||||
## Événements : détectés par le service, annotés à la main
|
||||
|
||||
La table `evenement` existe parce qu'une courbe sans ses événements ne
|
||||
s'interprète pas : « le rendement a changé le 12 novembre » ne veut rien dire
|
||||
sans la ligne qui dit qu'un pack a été rebranché ce jour-là.
|
||||
|
||||
**Le service consigne seul ce qu'il peut constater** — il voit passer les états
|
||||
toutes les minutes, autant qu'il en tire les conclusions plutôt que d'attendre
|
||||
que quelqu'un y pense :
|
||||
|
||||
| genre | ce qui est consigné |
|
||||
|---|---|
|
||||
| `systeme` | démarrage du service, redémarrage de Home Assistant, épisode d'indisponibilité avec sa durée |
|
||||
| `reseau` | contacteur EDF, session réseau de nuit, reprise nuit, verrou hystérésis |
|
||||
| `vehicule` | véhicule branché ou débranché |
|
||||
| `intervention` | changement de stratégie ou de véhicule sélectionné |
|
||||
| `ess` | état BatteryLife, mode de l'Auto Charge Manager |
|
||||
| `bilan` | réseau nécessaire, vigilance orage, production bridée |
|
||||
|
||||
On suit des états **discrets** dont chaque changement mérite une ligne. Les
|
||||
grandeurs continues sont dans `mesure`, les décisions du contrôleur dans
|
||||
`decision` : un événement qui double une autre table est du bruit. Une lecture
|
||||
`unavailable` n'est pas une transition mais une absence de lecture — elle n'est
|
||||
pas consignée.
|
||||
|
||||
Le redémarrage de Home Assistant est detecté **sans capteur d'uptime**, qui
|
||||
n'existe pas sur cette installation : au redémarrage HA restaure ses helpers et
|
||||
leur pose un `last_changed` neuf. Le 04/09, 352 entités partageaient la seconde
|
||||
du redémarrage, dont 183 `input_number`. Le service prend donc le **mode** des
|
||||
`last_changed` des `input_number` — aucune entité codée en dur, et l'estimation
|
||||
se corrige d'elle-même.
|
||||
|
||||
**Les annotations qu'aucun service ne peut deviner** — « pack rebranché »,
|
||||
« correctif déployé » — s'écrivent à la main. Pour cela le rôle d'analyse a
|
||||
besoin d'un `INSERT` sur cette seule table :
|
||||
|
||||
```sh
|
||||
sudo docker compose exec -T postgres psql -U evcs -d evcs -c \
|
||||
"GRANT INSERT ON evenement TO evcs_lecture;
|
||||
GRANT USAGE, SELECT ON SEQUENCE evenement_id_seq TO evcs_lecture;"
|
||||
```
|
||||
|
||||
`INSERT` seulement : ni `UPDATE`, ni `DELETE`. On peut ajouter une annotation,
|
||||
jamais réécrire ni effacer les précédentes — y compris les siennes. C'est ce
|
||||
qu'on attend d'un journal, et ça laisse les tables de mesure hors de portée.
|
||||
|
||||
## Accès en lecture pour l'analyse
|
||||
|
||||
```sh
|
||||
|
||||
Reference in New Issue
Block a user