Features
- Self-diagnostic sensors for the companion node (#251) — opt-in polling of the locally-attached companion's
get_stats_core/get_stats_radio/get_stats_packets, exposed as 13+ new sensors on the main device. Local-transport queries only — no mesh traffic. - Region-scoped channel broadcasts (#250) — new
scopeparameter onmeshcore.send_channel_messagefor TC_FLOOD region-scoped sends. Optionalflood_scopesallowlist in global settings labels incoming scoped messages with their region name. - Remove orphan devices from the UI (#247) — repeater, client, and contact devices that are no longer tracked can now be deleted via the HA device page. Hub and live devices are refused. Closes #229.
- Repeater neighbor count sensor (#228) — per-repeater count of active neighbors derived from the existing neighbor list.
- hop_count + snr on incoming channel messages (#245) — logbook event now carries SNR and hop count for channel traffic, matching the existing DM behavior.
- Conditional recipient type selection (#218) — adapts the message-input UI based on the chosen recipient.
Fixes
- Region-scope (TC_FLOOD) RX_LOG correlation (#246) — fixes a 4-byte transport-code offset that broke RX_LOG correlation for all region-scoped messages and corrects the AES plaintext offset. Closes #237, #242, #198.
- path_hash_size on rx_log correlation entry (#249) — completes #226 by propagating the per-hop hash width to every consumer of
meshcore_message. - execute_command response normalization (#248) —
req_*_synchelpers that return plain dicts, lists, scalars, orNoneare now surfaced correctly instead of being silently dropped or raising a confusing error. - Discovered-contact cleanup post-#236 (#252) — repairs four cleanup paths that the #236 unique_id migration left looking up entities by the old format.
- Recorder cap on discovered-contact select (#254) —
optionsis now excluded from recorder state, dodging the 16 KiB per-state attribute cap that fired warnings on dense meshes. Closes #243. - Removed
hass.helpers.entity_registry.async_get()accessor (#253) — switched toer.async_get(hass)in three contact services. FixesAttributeErroron recent HA core. - MQTT startup wait (#244) — fixes a task that blocked HA boot.
- recv errors as count + measurement (#239) — corrects sensor types.
- multi-entry message_sent fan-out (#235) — filters by entry_id.
- Contact-diagnostic unique_id scoping (#236) — scoped by entry_id with one-time migration.
- TZ-aware UTC timestamp on meshcore_message (#234).
- RX_LOG multi-byte path size parsing (#226).
Docs
- Companion Integration API page (#217)
- ESPHome BLE bridge workaround (#223)
- Discord community channel linked in README + docs site
Notes
- Minimum Home Assistant version remains
2023.8.0. - The
meshcore-pyfloor is>=2.3.7(was bumped in #222). - #236's unique_id migration runs once per install on first start of this release. Entities migrate automatically. Users on the broken cleanup state from earlier #236-only installs will see the Phase 4 orphan sweep clean up stale registry entries (covered by #252).
- #251 self-diagnostics defaults off. Enable in Global Settings if you want the new sensors.