Skip to content

Releases: meshcore-dev/meshcore-ha

v2.6.0

28 Apr 05:19

Choose a tag to compare

Features

  • Structured query services for companion integrations (#216) — new meshcore.get_contacts, meshcore.get_channels, and meshcore.trace services return typed responses so companions don't have to scrape execute_command output.
  • SNR + hop count on incoming DM events (#215) — meshcore_message events now include hop_count (always) and snr (V3 firmware) for direct messages, matching what was already available for channel messages via rx_log_data.
  • Repeater neighbor sensors (#211) — per-repeater SNR and activity sensors with auto-cleanup of stale neighbors, plus an opt-in toggle and configurable airtime cost in the global settings.
  • Per-device online binary sensor (#209) — replaces the imprecise global device.connected flag with per-device binary_sensor.*_online entities derived from _last_successful_request timing.
  • Stale discovered-contact cleanup (#183) — new days_threshold parameter on clear_discovered_contacts, plus an opt-in daily auto-cleanup with a configurable threshold.
  • Adaptive RX_LOG poll-wait (#182) — replaces the blocking 500ms sleep on incoming channel messages with a 50ms-step poll that fires as soon as data arrives, with a background pass for late-arriving repeater RX_LOGs delivered as meshcore_delivery_update events.

Fixes

  • Entity-identity stabilization (#201) — removes device name from unique_id (one-time startup migration), refreshes SELF_INFO after config-modifying commands, and adds missing async_write_ha_state() so frontend updates without a reload.
  • Map uploader (#200) — corrects ADV_TYPE_CHAT and points the uploader at meshcore.io.
  • Telemetry sensors (#191) — restores missing device_class and units on telemetry sensors.
  • execute_command AttributeError (#190) — removes a stale set_command_result call.

Docs

  • README now links to the meshcore-card Lovelace card (#220).
  • Installation docs USB firmware note (#133).

Notes

  • Migration on first start: #201 strips device names from unique_id once per upgrade; entities migrate automatically. Some users may see a brief reload as the registry updates.
  • The minimum Home Assistant version remains 2023.8.0.

v2.5.0

01 Apr 16:21

Choose a tag to compare

What's New

Map Auto Uploader

Automatically uploads repeater and room server adverts to map.meshcore.dev when your companion hears them. No separate bot needed. Enable in Global Settings. Requires ENABLE_PRIVATE_KEY_EXPORT=1 on firmware. (#163)

Message Delivery Feedback

New Last Message Delivery sensor shows real-time delivery status for sent messages. Channel messages show repeater count (progressive updates as relays arrive). Direct messages show ACK confirmation. (#168)

Instant Message Delivery

Subscribes to the firmware's MESSAGES_WAITING push notification for near-instant message fetching instead of waiting for the poll interval. (#177)

Reconfigure Connection

Change your connection type (USB/BLE/TCP) or parameters without deleting and re-adding the integration. All settings are preserved. Look for the "Reconfigure" button on the integration page. (#187)

Public Key Change Detection

Detects when a companion device's public key changes (e.g., after firmware reflash) and automatically migrates all entity IDs. Creates a repair notification for any manual references that need updating. (#169)

Companion Prefix Sensor

New sensor showing the device's routing prefix based on path_hash_mode, with live updates from SELF_INFO events. (#169)

Fixes

  • Repeater status/telemetry timeouts — Fixed login check (was comparing against wrong event type), switched to SDK sync methods with firmware-calculated timeouts. Multi-hop repeaters now respond reliably. (#185)
  • coordinator.data set to None_async_update_data now returns result_data so HA's coordinator framework has valid data. Fixes NoneType has no attribute 'get' crashes. (#171)
  • Repeater firmware version not updating — Re-queries firmware version when editing a repeater in Manage Devices. (#179)
  • Edit repeater clears password — Password field no longer gets overwritten with empty string when saving other settings. (#179)
  • set_flood_scope type — Fixed parameter type from int to str. (#181)
  • Conditional message polling — Replaced unconditional get_msg() every 5s with a 60-second safety-net poll, reducing ~17,280 unnecessary commands/day on quiet meshes. (#186)
  • mesh_core returns None when disconnected — Prevents startup crashes when device isn't available. (#163)
  • ConfigEntryNotReady on connection failure — HA retries connection automatically instead of leaving the integration in a broken state. (#173)

Other

  • Dutch and Slovak translations for new features
  • Last command result sensor for dashboard CLI feedback (#163)
  • Channel select now filters unused/empty channels (#163)
  • execute_command supports return_response for automation use (#169)
  • OptionsFlow updated to HA 2024+ pattern (#163)
  • Deprecated logger.warn() calls replaced with logger.warning()

V2.4.1

07 Mar 16:20
1565921

Choose a tag to compare

  • Bump meshcore requirement to >=2.2.24 by @yellowcooln in #155
  • Fix LetsMesh MQTT Status Parity: Accurate Startup Metadata, Radio Format Alignment, and Secure Owner Claims by @yellowcooln in #152

V2.4.0

03 Mar 03:07
d5a5ab9

Choose a tag to compare

MQTT Upload Support

  • Multi-broker MQTT upload with full UI configuration
  • LetsMesh integration with EdDSA auth-token support (Python fallback when CLI unavailable)
  • Per-broker owner/email JWT claim settings
  • Periodic MQTT status metrics for LetsMesh observer support
  • Packet-only publishing aligned with meshcoretomqtt format
  • Broker connection status binary sensors
  • Auto-fetch device private key for auth tokens
  • Packet hash stabilization to reduce LetsMesh duplicates

Execute Command Improvements

  • Bump meshcore to >=2.2.15 with synced command parameter mappings
  • Functional syntax support: set_coords(37.7749, -122.4194) (fixes #111)
  • Supports positional args, keyword args, strings, numbers, booleans, and bytes literals
  • Add set_flood_scope command

Discovered Contacts Management

  • New opt-in FIFO limit for discovered contacts (configurable max, default 100 when enabled)
  • Oldest contacts evicted first; re-advertisements refresh queue position
  • Evicted contacts have binary sensor entities automatically removed
  • New meshcore.clear_discovered_contacts service to remove all at once

Bug Fixes

  • Fix duplicate entry setup and guard static path registration
  • Fix options menu contact detection for repeaters and clients
  • Fix missing log argument
  • Only cleanup devices associated with the current entry

Telemetry

  • Support negative current readings (charging vs discharging)
  • Add power sensor, display current in mA
  • 2-character pubkey prefix for display

Documentation

  • Add MQTT upload documentation page
  • Document functional command syntax in services docs
  • Add contact FIFO limit section to contacts docs
  • Replace manual storage file deletion with clear_discovered_contacts service

Housekeeping

  • Add __pycache__/, *.pyc, .pytest_cache to .gitignore
  • Add test infrastructure and unit tests for command parsing and contact eviction

V2.3.0

05 Feb 20:47
0095d95

Choose a tag to compare

  • Fixes issues with non-normalized repeater names and the latest versions of home assistant

v2.2.5

26 Jan 21:21
dd54218

Choose a tag to compare

Fix documentation link

v2.2.4

27 Dec 22:18
f168719

Choose a tag to compare

Fix issue with broken contact select options

v2.2.3

28 Nov 06:03
7de2dbf

Choose a tag to compare

Fixes minor issue with sensors reverting to discovered after being added to the connected client.

v2.2.2

27 Nov 06:39
706785a

Choose a tag to compare

  • Fixes some bugs preventing proper contact sensor synchronization when adding/removing contacts.
  • Changes RX and TX Airtime sensors to be TOTAL_INCREASING

v2.2.1

23 Nov 17:58
aa697f2

Choose a tag to compare

New Features

RX_LOG Correlation

  • Automatic RX_LOG parsing and decryption - RX_LOG_DATA events are now automatically parsed and decrypted when
    GroupText payloads are detected
  • Multi-reception correlation - meshcore_message events now include rx_log_data with radio metrics (SNR, RSSI) and path
    information from all mesh receptions
  • Path visualization - See which routes your messages took through the mesh network

Example rx_log_data includes:

  • Signal quality (SNR/RSSI)
  • Mesh path (hop nodes)
  • Channel hash
  • Multiple receptions from different routes

Contact Management

  • Remove discovered contact service - New service to clean up discovered contacts from Home Assistant without removing from
    node
  • Disable contact discovery toggle - New global setting to disable automatic contact sensor creation for large networks (500+
    contacts)

Improvements

Performance & Reliability

  • Rate limiting - Token bucket refill rate reduced from 180s to 120s (2 minutes instead of 3)
  • Auto-disable inactive devices - Tracked repeaters/clients automatically disable after 5 days without successful
    requests (120 hours)
  • Increased sensor timeout tolerance - Sensors now wait 3x the update interval before marking unavailable (previously
    1.5x)
  • Event-driven contact updates - Removed contact refresh interval setting in favor of real-time NEW_CONTACT event handling

Bug Fixes

  • Fixed service parameter types for change_contact_path and change_contact_flags methods