docs(§10): la garde de sessionWh doit porter sur la joignabilité, pas sur le recul
Mise en garde avant que le remplissage de `sessionWh` depuis le compteur soit écrit, et elle vient d'un relevé déjà pris. Le « recul franc » de `getEcoProgress()` recapture la base pour une nouvelle session. Mais un compteur qui disparaît peut publier 0 au lieu de se taire — mesuré sur la V2C le 2026-08-30, `currentPower` 4 396 → 0 et les booléens à `false` à la perte du lien. Les deux cas donnent la même observation et appellent des gestes opposés. Et le coût est asymétrique : base reprise à 0 pendant l'absence, retour du compteur avec son cumul réel (10 kWh sur l'ECS), et `deliveredWh` saute à 10 000 en un cycle — l'obligation se déclare TENUE sans rien avoir livré. Sous `measured`, R6 ne s'y oppose pas : elle n'interdit `ECO_FLOOR_MET` que sous `unmeasurable`. Le chemin mesuré est le seul par lequel un faux « tenue » peut sortir, et c'est celui qu'on ouvre. La garde doit donc porter sur la joignabilité du compteur, pas sur la direction de la valeur — même règle que la clôture de tronçon, et même geste que l'app a fait le 2026-08-30 en jetant les états d'un Thing injoignable à l'entrée. Portée honnête : le zéro forgé a été mesuré sur `currentPower` et les booléens, pas sur un compteur d'énergie — `sessionEnergy` de la V2C est resté à sa dernière valeur. La politique dépend du plugin, d'où l'intérêt de ne pas parier dessus. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GKM8FDNHZWogAsjjfB8pSw
This commit is contained in:
parent
78f7fa23a9
commit
e4697980ad
@ -2,6 +2,49 @@
|
||||
|
||||
---
|
||||
|
||||
## 2026-09-03 (suite) — avant d'écrire `sessionWh` sur un compteur : la garde ne peut pas être le recul
|
||||
|
||||
Le correctif est le bon, et l'ordre aussi. Une mise en garde avant qu'il soit écrit, parce
|
||||
qu'elle vient d'un relevé déjà pris — et parce que le défaut qu'elle décrit **arriverait par le
|
||||
chemin où R6 ne protège plus**.
|
||||
|
||||
### Le « recul franc » ne distingue pas une remise à zéro d'une valeur forgée
|
||||
|
||||
`getEcoProgress()` recapture la base quand l'accumulateur recule franchement — juste pour une
|
||||
**nouvelle session**. Mais un compteur qui disparaît peut, selon son plugin, publier **0** au lieu
|
||||
de se taire : nous l'avons mesuré sur la V2C le 2026-08-30, `currentPower` passé de 4 396 W à 0 et
|
||||
les booléens à `false` à la perte du lien Modbus.
|
||||
|
||||
Les deux cas produisent **exactement la même observation** : une valeur qui s'effondre. Or ils
|
||||
appellent des gestes opposés — recapturer, ou ne rien faire.
|
||||
|
||||
**Et le coût de les confondre n'est pas symétrique.** Si la base est reprise à 0 pendant l'absence,
|
||||
puis que le compteur revient avec son cumul réel (10 kWh sur l'ECS du banc), alors
|
||||
`deliveredWh = 10 000 − 0` d'un seul cycle : l'obligation se déclare **tenue** sans que rien n'ait
|
||||
été livré. Sous `measured`, R6 ne s'y oppose pas — elle n'interdit `ECO_FLOOR_MET` que sous
|
||||
`unmeasurable`. Le chemin mesuré est donc le seul par lequel un faux « tenue » peut sortir, et
|
||||
c'est celui qu'on est en train d'ouvrir.
|
||||
|
||||
**Donc : la garde doit porter sur la JOIGNABILITÉ du compteur**, pas sur la direction de la valeur.
|
||||
Tant que le Thing n'est pas joignable, ni recapture ni avancement — le tronçon se clôt sur la
|
||||
dernière valeur lue **pendant que la mesure existait**, exactement la règle que vous avez posée
|
||||
hier pour la bascule de régime. C'est aussi ce que l'app a fait de son côté le 2026-08-30 : sous
|
||||
`connected == false`, les états sont jetés **à l'entrée** plutôt que relayés.
|
||||
|
||||
> **Honnêteté sur la portée** : le zéro forgé a été mesuré sur `currentPower` et les booléens,
|
||||
> **pas** sur un compteur d'énergie — `sessionEnergy` de la V2C, lui, est resté à sa dernière
|
||||
> valeur pendant la coupure. La politique dépend donc du plugin, et c'est précisément pourquoi un
|
||||
> accumulateur ne devrait pas parier dessus.
|
||||
|
||||
### Et une conséquence heureuse de votre dernière phrase
|
||||
|
||||
Une fois `sessionWh` rempli, la population « réellement non mesurable » se réduit à trois cas
|
||||
matériels — et **deux sur trois sont réparables par l'installateur** (aucun compteur désigné,
|
||||
compteur sans énergie). L'avertissement de saisie cesse alors d'être une fatalité affichée : il
|
||||
devient une consigne, et `progressUnmeasurableCause` porte déjà les trois gestes.
|
||||
|
||||
---
|
||||
|
||||
## 2026-09-03 — `+etm49` à la sonde : `purchasedWh` marche, et deux champs se contredisent
|
||||
|
||||
Obligation déclarée puis retirée sur le banc (`chauffe-eau`, 4 000 Wh avant 12:00, sept cycles,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user