v0.9.36b2 (beta) — dongle write resilience + cloud bank capacity
Pre-release
Pre-release
·
82 commits
to feat/battery-control-mode
since this release
Beta release for the eg4_web_monitor 3.4.0-beta.2 cycle. Install: pip install pylxpweb==0.9.36b2
Fixed
- WiFi dongle parameter writes survive TCP connection drops without write wars (joyfulhouse/eg4_web_monitor#201): the dongle drops its TCP link mid-sequence during parameter writes;
write_named_parametersnow retries the ENTIRE read-modify-write sequence — tearing down the dead connection and RE-READING the register before re-writing, so a retry can never replay stale bit-field values over a concurrent writer's change. Request-level timeout resends were removed from the write path, and post-write verification mismatches are diagnostic-only. - Write ACK echo validation: FC06 ACKs must echo the written value and FC16 ACKs the register count.
_parse_response()now parses the real 16-byte write-ACK layout; read-style ACK echoes still fall through to the read parser, so a legitimate ACK can never false-positive into a write error. - All multi-request reads serialized on the dongle's single TCP link: runtime/energy/battery/parameter/midbox/device-info reads now hold the operation lock — a coordinator poll can no longer interleave with a write retry/reconnect and misroute responses.
- Cloud battery bank full/remaining capacity double-counted banks whose master module mirrors pack totals:
BatteryBank.full_capacity/remain_capacitynow prefer the BMS-reported bank pair (maxBatteryCharge/currentBatteryCharge), switching sources together on a single complete-pair gate. Open-loop systems (lead-acid / no BMS comms) and half-present pairs keep the legacy fields for BOTH properties. Live-verified on an 18kPV 3×280 Ah bank: 1400→840 Ah full, 822→496 Ah remaining.
Full details in CHANGELOG.md. 2136 tests, mypy --strict clean.