From 32779b39f44eed8c1c1b902ab0ae717ab9838429 Mon Sep 17 00:00:00 2001 From: Patrick Schurig Date: Fri, 28 Aug 2026 12:30:11 +0200 Subject: [PATCH] chore(release): 1.15.2+etm13 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les deux correctifs V2C de la campagne du 2026-08-28 : sessionEnergy construit par accumulation, et les registres 0x0BD9-0x0BDB republiés en ampères. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01A41CTzMvir1Y5ABPXW8xpB --- debian/changelog | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/debian/changelog b/debian/changelog index b606fab..092dba0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,45 @@ +etm-powersync-plugins-modbus (1.15.2+etm13) trixie; urgency=medium + + * v2c: sessionEnergy is now BUILT by the plugin, not wired to a register. + + The Trydan publishes no session energy. Its ChargeEnergy counter (0x0BC4) + is accurate -- integrating it matches currentPower to better than one + percent, twice over -- but it is not conserved: the firmware zeroes it on + every CHARGE STOP, cable still plugged in. Measured cycle: stop at t+1 s, + zeroed at t+8 s, unplug only at t+127 s. The trigger is the stop, not the + unplug. + + That makes it our problem, not the firmware's: under surplus control it is + our own arbitration that cuts when a cloud passes. The HEMS would erase its + own measurement several times a day, and an overnight charge read back at + 07:00 would be 0 -- "nothing delivered", which LM-1009 condition C1 forbids + displaying. + + The plugin accumulates the increments before each reset. In the plugin and + not in the engine: the plugin polls at 30 s, the engine at one minute, so an + increment erased between two engine reads would be invisible to it. Reset + happens when a session OPENS, never when it closes, so the total stays + readable in the morning once the car has gone. Unplug is confirmed over 3 + SUCCESSFUL polls; failed polls are not counted, so a WiFi outage freezes the + absence counter instead of advancing it. State survives a nymead restart via + two cached states plus a transition-only flag in pluginStorage(). + + chargeEnergy stays published alongside under its exact name -- the raw + charger counter next to the built quantity. Only its displayName changes. + + * v2c: registers 0x0BD9-0x0BDB carry AMPERES, not watts. + + V2C's sheet labels them "Power_L1/L2/L3". Measured: a 6 A setpoint reads + 5.9-6.0, a 10 A setpoint reads 9.x-10. At 230 V a phase power would be + ~1380 W, not 5.9. Published as Watt, the app showed "5.9 W" where the + charger says "5.9 A". States renamed currentL1/L2/L3, unit Ampere; the + UUIDs do NOT change, as the identifier always carried amperes -- it was the + name that lied. Side benefit: per-phase imbalance, which no other charger in + the catalogue provides, useful for the per-phase overload ceiling + (LM-1006-1). + + -- Patrick Schurig Fri, 28 Aug 2026 14:30:00 +0200 + etm-powersync-plugins-modbus (1.15.2+etm12) trixie; urgency=medium * v2c: the Trydan now declares phaseCount, and it is ENTERED at pairing.