Skip to content

[FEAT] Device Heartbeat and Configurable Health Notifications for Meshtastic and MeshCore Nodes #4558

Description

@maxhayim

Is your feature request related to a problem? Please describe.

MeshMonitor displays device information and telemetry for Meshtastic and MeshCore nodes, but there is no centralized way to receive proactive notifications when a monitored device is about to fail, stops reporting, or reaches a configurable health threshold.

I use several mobile and fixed radio devices around the house. Some are battery-powered, and I currently have to manually check MeshMonitor to make sure they do not run out of power or disappear from the network.

MeshMonitor already has web notifications and already receives some device telemetry and last-heard information. It would be useful to use those existing systems to provide configurable device-health and heartbeat alerts.

Examples include:

  • A node’s battery falls below a configured percentage or voltage
  • A node has not been heard from within a configured period
  • A node stops sending telemetry or heartbeat data
  • A node reconnects or returns online
  • A solar node is losing battery over time instead of charging
  • A node reports an unusually high temperature
  • A node’s channel utilization or noise floor reaches a configured level
  • A device restarts unexpectedly or its uptime resets

Without these notifications, a battery-powered or remote node may remain offline for hours or days before the operator notices.

Describe the solution you'd like

Add a Device Health, Heartbeat Monitoring, or Node Alerts feature for both Meshtastic and MeshCore sources.

Users should be able to create per-node or global notification rules using telemetry and last-heard data already available in MeshMonitor.

Possible notification conditions could include:

  • Battery percentage below: configurable percentage
  • Battery voltage below: configurable voltage
  • No heartbeat or telemetry received for: configurable number of minutes or hours
  • Node not heard for: configurable number of minutes or hours
  • Node returned online: enabled or disabled
  • Temperature above or below: configurable threshold
  • Noise floor above: configurable threshold
  • Channel utilization above: configurable threshold
  • Uptime reset detected: enabled or disabled
  • External power lost: when supported by the device telemetry
  • Battery not charging during expected solar hours: optional advanced condition

Notifications should use MeshMonitor’s existing web push notification system so alerts can reach phones, tablets, and computers that have notifications enabled.

Example notifications:

Low Battery Alert

MTDL Base has reached 20% battery.
Last voltage: 3.62 V
Last heard: 2 minutes ago
Heartbeat Lost

MTKL Solar has not been heard from for 45 minutes.
Last heard: 2:14 PM
Last battery: 54%
Node Restored

MTKL Solar is reporting again.
Offline duration: 52 minutes
Current battery: 51%

The feature should support:

  • Per-node thresholds
  • Default thresholds applied to all nodes
  • Separate settings per source
  • Meshtastic and MeshCore nodes
  • Web push notifications
  • Notification cooldowns
  • Recovery notifications
  • Enable or disable each alert type
  • Quiet hours
  • Alert history
  • Test notification button

A heartbeat should not necessarily require a new packet type. MeshMonitor could use the node’s existing telemetry, status, advertisement, or last-heard updates as proof that the device is still alive.

The system should avoid repeated notifications for the same condition. For example, a low-battery alert could be sent once when the battery crosses below the threshold and then again only after a configurable cooldown or after the device recovers and falls below the threshold again.

Describe alternatives you've considered

I currently open MeshMonitor and manually check the node list, telemetry values, battery levels, and last-heard times.

Home Assistant automations could potentially monitor some Meshtastic data, but that requires a separate platform and does not provide a unified solution for both Meshtastic and MeshCore nodes already managed by MeshMonitor.

Device-specific applications may provide some battery information, but they require checking each node individually and may not work for remote nodes connected directly to MeshMonitor.

A scheduled external script could query the MeshMonitor API and send notifications, but native support would be easier to configure, more reliable, and available to all MeshMonitor users.

Additional context

My primary use case is monitoring several battery-powered and mobile devices around the house so they do not silently run out of power.

The intended flow would be:

Meshtastic or MeshCore node
          ↓
Telemetry, advertisement, or heartbeat
          ↓
      MeshMonitor
          ↓
Threshold and stale-device evaluation
          ↓
Web push notification
          ↓
Phone, tablet, or computer

This could build on existing MeshMonitor functionality where applicable, including:

  • Node telemetry
  • Battery information
  • Last-heard timestamps
  • Source connection status
  • Existing web notifications
  • Meshtastic device metrics
  • MeshCore device status and telemetry

Not every device or firmware reports every metric. The UI should only offer alert conditions supported by the available data, or clearly indicate when a metric has never been reported.

Environment

  • Host OS: N/A
  • Deployment type: Docker
    • Container version: MeshMonitor v4.14.0
    • Container image/tag: N/A
  • Networking customizations: N/A
  • Database backend: N/A
  • Node types: Multiple Meshtastic and MeshCore devices
  • Node connection types: Multiple
  • Virtual Node client: N/A

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions