wifi-densepose/v2/crates/wifi-densepose-sensing-server/src/mqtt
ruv 9ddcf0c9fc fix(mqtt): one HA device per node — closes #898
After the #872 MQTT wiring, the JSON->VitalsSnapshot bridge hard-coded a
single node_id (the MQTT client id) and the publisher used one
OwnedDiscoveryBuilder, so every physical node collapsed into a single
Home-Assistant device (identifiers:["wifi_densepose_wifi-densepose-1"]),
contradicting the one-device-per-node docs.

- Bridge (main.rs): emit one VitalsSnapshot per node in the sensing
  update's nodes[] (each carries its own node_id + RSSI; shared aggregate
  presence/vitals), falling back to a single aggregate snapshot when
  there is no per-node data (wifi/simulate sources).
- Publisher (publisher.rs): add OwnedDiscoveryBuilder::for_node(), and
  publish discovery + availability lazily on first sight of each node_id,
  routing state to per-node topics. Heartbeat/refresh/offline-LWT iterate
  all known nodes. Result: N distinct HA devices, one per node.

3 new unit tests (distinct nodes -> distinct wifi_densepose_<node>
identifiers); full MQTT suite 71 passed, example builds.
2026-06-02 09:43:28 +02:00
..
config.rs fix(sensing-server): wire MQTT publisher into the binary — closes #872 2026-05-31 09:39:21 -04:00
discovery.rs ADR-115: Home Assistant + Matter integration (#778) 2026-05-23 16:13:28 -04:00
mod.rs ADR-115: Home Assistant + Matter integration (#778) 2026-05-23 16:13:28 -04:00
privacy.rs ADR-115: Home Assistant + Matter integration (#778) 2026-05-23 16:13:28 -04:00
publisher.rs fix(mqtt): one HA device per node — closes #898 2026-06-02 09:43:28 +02:00
security.rs ADR-115: Home Assistant + Matter integration (#778) 2026-05-23 16:13:28 -04:00
state.rs ADR-115: Home Assistant + Matter integration (#778) 2026-05-23 16:13:28 -04:00