What's Changed
Features
- Unify the protobuf-family devices (Gen2 HT25G2 + XD HT34A/HT32A) into one
BHyveProtobufDevicewith real device-read state decoded from the hardware-verified#16status block: run-state, active zone, seconds-remaining, battery mV,#30watering-status, rain-delay, and flow. Adds a rain-delay number + "Rain delay ends" sensor, a Gen2 Flow rate gauge + "Check flow" button, live battery, and connection-health diagnostics ("Last successful poll" / "Consecutive timeouts" / "Watering ends").#15{}is the canonicalrefresh_state()(reads real state on any poll — scheduled/app/button runs, not just HA commands), with a wall-clock auto-close backstop. Backwards-compatible; existing entities keep their identities. (#24)
Bug Fixes
- Back-to-back mesh actuation no longer throws
BluetoothGATTAPIError: Not connected—send_actuationnow drops a stale pooled session and reopens a fresh one instead of surfacing the error to the service call. (#26) - Sync button now forces a BLE connect on mesh devices, restoring on-demand battery/state refresh (it had become a no-op on mesh). (#27)
- Connected sensor is now event-driven on mesh — it reflects device reachability instead of the torn-down live socket (which pinned it off). (#29)
- HT34A/XD: read seconds-remaining from
#16.#6.#5, not#16.#6.#7. (#21)
Documentation
- BLE protocol reference + reverse-engineering notes. (#22)
- Correct run-progress field mapping. (#20)
- BLE transport-reliability & hardware-verified behavior notes (Gen2 + XD). (#18)
Full Changelog: v2.1.2...v2.2.0