v0.9.36b25
Pre-release
Pre-release
v0.9.36b25 (pre-release)
Fixed
- Misrouted dongle responses no longer permanently disable Fast-mode read coalescing (joyfulhouse/eg4_web_monitor#320, PR #211): the WiFi dongle proxies cloud traffic and can hand the local client a response meant for the cloud server (valid CRC, wrong serial / Modbus function / start register) — or an unsolicited heartbeat frame sharing the same 0xA1 0x1A prefix. These raised generic
TransportReadErrorand tripped the probe-once coalescing latch, silently reverting the connection to conservative grouped reads until reload.- New
TransportResponseMismatchErrorclassifies cross-request validation failures (serial / Modbus function / register and the TCP function byte, now validated request-aware — heartbeats 0xC1 and proxied param frames 0xC3/0xC4 are rejected as mismatches instead of mis-parsed). - A coalesced read hitting a mismatch now falls back to plain grouped reads for the cycle and re-probes after a ~5-minute cooldown — no permanent latch. Genuine refusal signatures (Modbus exceptions, timeouts, short-but-well-formed responses = the old ~40-register firmware cap) still latch permanently as designed.
- The exception subclass survives the dongle retry loop; both coalescing fallback handlers now build an explicitly plain retry plan.
- New
2659 tests passing. mypy clean (94 source files).