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 carriesentry_idanddevice_id. An outgoing channel message firesmeshcore_messagewhen it is sent; the final repeat count arrives asmeshcore_delivery_updatewithprogressive: false. A failed send firesmeshcore_message_send_failed. execute_commandrefuses factory reset, private key import and raw packet commands.add_selected_contactandremove_selected_contactare admin-only and needentry_idwhen 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