github meshcore-dev/meshcore-ha v3.0.0

3 hours ago

3.0 rebuilds how the integration talks to the radio, protects the shared mesh from runaway polling, and ships a rewritten documentation site. Read Upgrade to 3.0 before you update.

Upgrade notes

  • Requires Home Assistant 2025.6.0 and meshcore 2.3.11 or later.
  • Entries are migrated to a new version on first start. 2.x cannot load a migrated entry, so take a backup if you may roll back.
  • Mesh traffic policy. New installs use Governed. Existing installs keep Legacy, which is now deprecated and logs a warning at startup. Switching to Governed is one-way. See Mesh Traffic Policy and Legacy traffic policy.
  • Events. Every meshcore_* event carries entry_id and device_id. An outgoing channel message fires meshcore_message when it is sent; the final repeat count arrives as meshcore_delivery_update with progressive: false. A failed send fires meshcore_message_send_failed.
  • execute_command refuses factory reset, private key import and raw packet commands. add_selected_contact and remove_selected_contact are admin-only and need entry_id when you have two or more companions.
  • Companion telemetry and GPS tracker entities created from now on include the companion key prefix in their entity ID. Existing entities keep their IDs.
  • Integrations that read the integration's internal objects (coordinator._repeater_stats, api.mesh_core, api._cache_self_info_event) still work but log a deprecation warning. Use the supported interface.

Features

  • Governed traffic policy: separate flood, direct and message budgets per companion. Polls wait for budget instead of failing, a broken route is repaired at once with up to 3 path discoveries, and nodes that stop answering back off.
  • Options apply without a reload, and tracked nodes can be added, edited and removed in place.
  • Contact sensors show the route of the last advert (adv_path, adv_path_len, adv_path_time). (#323, @jpettitt)
  • The repeat window for outgoing channel messages is sized to the packet's airtime (4 to 20 s). (#366)
  • Long channel messages whose repeats the companion cannot report show Unconfirmed instead of 0 Repeaters, and events carry repeats_observable. (#367)
  • Secrets are redacted on the event bus, in MQTT raw payloads and in the CLI Console unless Expose Node Secrets in Events is on.

Fixes

  • MQTT: correct route letters (flood was published as direct), no empty packet records from stats refreshes, connection sensors follow broker changes without a reload.
  • The radio connection is owned by Home Assistant: reconnects, command serialization and a released SDK instance after a failed connect. (#364, @jpettitt)
  • Last Message Delivery reacts only to its own companion. Selected-contact services no longer mix companions.
  • Unsupported manual contact mode is asked once per connection and logged at info level. (#368)
  • Many smaller fixes to contacts, trace, neighbor aging, logbook labels and error responses.

Documentation

The documentation site is rewritten against the code in ASD-STE100 Simplified Technical English, with new Concepts, First steps, Upgrade, Mesh Traffic Policy, Two or more companions and Troubleshooting pages.

Notes

  • Validation: 450 integration tests pass. The release ran on the maintainer's Home Assistant with a live companion and LetsMesh MQTT; no regressions were found.

Full changelog: v2.10.0...v3.0.0

Don't miss a new meshcore-ha release

NewReleases is sending notifications on new releases.