github meshcore-dev/meshcore-ha v2.8.0

6 hours ago

Features

  • Unified Contact Discovery Mode (#261) — the two overlapping contact-discovery flags (disable_contact_discovery and the never-shipped large_mesh_mode) are collapsed into a single Contact Discovery Mode select with three choices:

    • Entity per contact (default) — one diagnostic binary_sensor per discovered contact, same as before.
    • Data only — discovered (un-added) contacts are tracked as data with no per-contact entity, while added/curated contacts keep theirs. On dense meshes this avoids hundreds of low-utility entities and the entity-registry churn they drive. The dropdown, services, chat panel, an aggregate summary sensor, and meshcore.get_discovered_contact all keep working.
    • Disabled — no discovered-contact processing at all.

    Set it at install time or in Configure → Global Settings.

Fixes

  • Telemetry/GPS AttributeError from untracked nodes (#266) — _get_node_info assumed a dict-shaped public_key; a TELEMETRY/GPS event from a node that wasn't a tracked repeater/client/root raised AttributeError on the string-shaped key and killed the handler.
  • node_status sensor stuck "Disconnected" (#267) — the status callback set its value but never pushed state, so the header indicator could show disconnected (while actually connected) until the next device event. Now pushes on event and seeds an initial value at setup.
  • UTC-aware MQTT timestamps (#259) — status, raw event, and normalized packet payloads now emit offset-aware ISO 8601 timestamps so consumers don't misread local time as UTC. Fixes #258.
  • Quiet benign reconnect-race log noise (#268) — the no_event_received result from the get_msg loops during config re-add / reconnect is downgraded to debug; real errors still log at ERROR.
  • Flood-scope * wildcard (#263) — a raw * entry in the flood-scope allowlist is now recognized as the global wildcard and skipped, instead of deriving a junk transport key for a non-existent #* region.

Notes

  • Migration on first start: existing installs migrate config entry v2 → v3 automatically. disable_contact_discovery=true maps to Disabled; otherwise the mode defaults to Entity per contact, so behavior is unchanged unless you opt into Data only. No reload, no entity-registry churn.
  • MQTT timestamp format change (#259): the time/date display fields in MQTT packet payloads now reflect UTC wall-clock rather than local time. If you parse those downstream, note the shift.
  • Minimum Home Assistant version remains 2023.8.0. No meshcore-py floor change (still >=2.3.7).

Don't miss a new meshcore-ha release

NewReleases is sending notifications on new releases.