diff --git a/sunspec/DIVERGENCES.md b/sunspec/DIVERGENCES.md index 01bbc38..6e700a6 100644 --- a/sunspec/DIVERGENCES.md +++ b/sunspec/DIVERGENCES.md @@ -354,3 +354,49 @@ est en outre vérifiée **à la compilation** par `nymea-plugininfocompiler` : essayer `KiloWattHour` sur `currentPower` fait échouer le build avec « claims to implement interface "energystorage" but state "currentPower" has not matching unit ». + +--- + +## D-10 — la géométrie des modèles est figée à la découverte (MESURÉ) + +**Contexte.** Le plugin lie chaque thing à un `SunSpecModel` au moment de la +découverte : identifiant de modèle, registre de départ, longueur. Les modèles +compagnons du storage (160, 120) sont liés de la même façon, par +`bindStorageCompanionModels()`. + +**L'écart.** Rien ne redécouvre la chaîne tant que la **connexion** ne tombe pas. +Si l'appareil change la FORME de sa chaîne sans rompre le TCP, le plugin +continue de lire l'ancienne géométrie. + +**Mesure du 2026-08-26.** Le simulateur `.211` a été redémarré sans batterie, puis +de nouveau avec. Trois états successifs, connexion Modbus jamais rompue : + +| moment | chaîne | ce que fait le plugin | +|---|---|---| +| avant | 160 `L=88` (4 blocs) · 124 présent | `currentPower` suit la batterie | +| sans batterie | 160 `L=48` (2 blocs) · **124 absent** | `Read data block response error: ProtocolError` toutes les 7 s sur `"storage"` — il lit toujours 40355 | +| batterie revenue | 160 `L=88` · 124 présent | les erreurs cessent, mais **`currentPower` reste figé à sa dernière valeur** | + +`thingPower` du storage : `0.0` à 16:09, 16:10, 16:11 pendant que les registres +portaient `StCha = 2000 W` et `ChaSt = Charging`. Un `systemctl restart nymead` +force la redécouverte, et la valeur repart immédiatement — `2000.0` à 16:13. + +**Ce que cela apprend.** Le défaut n'est ni dans le signe ni dans le mapping de +D-9 : ceux-là sont justes, et le prouvent dès que la découverte est refaite. +Il est dans le fait qu'une liaison thing↔modèle est établie une fois et jamais +reconsidérée. Le storage y est plus exposé que les autres things parce qu'il +dépend de **trois** modèles au lieu d'un. + +**Portée réelle.** Au banc, c'est fréquent : tout redémarrage du simulateur avec +d'autres options change la chaîne. Sur du matériel, c'est rare mais pas +théorique — une mise à jour de firmware, ou une batterie ajoutée à un hybride +déjà appairé, produisent exactement cette transition. + +**Contournement aujourd'hui.** Redémarrer `nymead`, ou retirer et rajouter la +connexion. La perte de la connexion TCP suffit aussi, puisqu'elle déclenche une +redécouverte. + +**Comment lever.** Redécouvrir périodiquement, ou sur erreur Modbus répétée à une +adresse jusque-là valide — le `ProtocolError` toutes les 7 s du tableau ci-dessus +est précisément le signal que la chaîne a bougé, et il est actuellement journalisé +sans conséquence. Hors périmètre de D-9, qui ne touche pas au cycle de découverte.