DucoBox Integration v1.0.2
What's Changed
Reliability overhaul addressing unknown/unavailable sensor states on startup, transient node gaps from weak RF nodes, and energy sensor registration issues introduced by the differential polling architecture.
Changes
- Fixed: Node discovery scanned 60 IDs sequentially (up to 120s); replaced with parallel asyncio.gather bounded by semaphore=5 for fast scanning without overwhelming the device
- Fixed: Energy and node requests could fire in the same coordinator tick; replaced time-based thresholds with a strict boolean toggle that alternates each tick
- Fixed: Energy sensors were never registered as coordinator listeners when energy_info was None on the first (nodes-only) tick — always register them regardless
- Fixed: Energy sensors went unavailable when /boxinfoget fails — cached energy is now preserved on failure
- Fixed: Node sensors showed transient unknown when coordinator data was None — _last_value cache now returns last known value instead
- Fixed: Box sensors showed unknown on reboot — RestoreSensor with restore-before-super() ordering ensures last persisted value loads before first write_ha_state()
- Fixed: Nodes temporarily unreachable during re-discovery no longer disappear — live results are merged with cache
- Changed: Coordinator interval bumped from 15s to 30s (device updates every ~60s, 30s is sufficient)
Upgrade Notes
- Reload the integration after updating (Settings → Integrations → DucoBox → ⋮ → Reload)
- No configuration changes required