Native LAN (local UDP) transport — issue #57 🎉
Govee devices with the LAN API enabled (toggle per device in the Govee app) are now controlled and read locally — no cloud round-trip — and it auto-enables when a device answers the local scan.
Reads: each poll overlays live power / brightness / color / color-temperature from the device over UDP. Scene/segment/sensor state is preserved (mode-aware overlay never clobbers an active effect).
Control: Power and Brightness commands go LAN-first with verify-by-read confirmation. Any LAN failure/timeout falls through LAN → MQTT → REST, so a command is never stranded. Color, scenes, segments, and sensors stay on the cloud path (the LAN API can't confirm those).
Notes
- Precedence is BLE → LAN → MQTT → REST; cloud remains the fallback for non-LAN devices.
- A per-device LAN connectivity diagnostic entity is available (opt-in via expose transport connectivity sensors).
- Cross-VLAN devices: use the existing LAN device addresses / subnets option.
- Escape hatch: set the LAN-targets option to
offto disable LAN entirely.
Heads-up: LAN auto-enables on upgrade for any device that answers the scan. It's been extensively unit/integration-tested but not yet validated on every SKU in the wild — please report anything off on #57.
Fixes
- #114 — Air-quality reading is now a diagnostic presence binary sensor (the API only ever returns a constant index, not a real PM2.5 value); added a redacted per-device raw-BFF dump to diagnostics to scope future battery/humidity/AQI support.
- #120 — fixed duplicate fan preset (a device's own "Auto") that crashed the HomeKit bridge with a duplicate-IID error (H7106).
Full changelog: v2026.6.20...v2026.6.21