diff --git a/docs/BRIEF_plugin_depuis_maquettes.md b/docs/BRIEF_plugin_depuis_maquettes.md index 08b22d3..e25513f 100644 --- a/docs/BRIEF_plugin_depuis_maquettes.md +++ b/docs/BRIEF_plugin_depuis_maquettes.md @@ -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,