A ready-made Node-RED flow that turns Meshtastic mesh traffic into time-series data. It subscribes to your MQTT broker, decodes the protobuf packets, deduplicates them, resolves node names, and writes measurements to InfluxDB so you can chart your mesh in Grafana.
- Ingestion from MQTT
- Protobuf decoding
- Message deduplication by packet ID (5 minute window, so one packet heard by several gateways is stored once)
- Annotate integer-based node IDs as hex
- Annotate packets with known NodeInfo (long name, short name, hardware model)
- Split by every current port number
- Writing Mesh, Packet, Position, Device, Environment and Neighbor measurements to InfluxDB
- Debug nodes on all outputs
- Ingest from MQTT
- Measurement: Mesh
- Measurement: Packet
- Measurement: Position
- Measurement: Device Telemetry
- Measurement: Environment Telemetry
- Measurement: Neighbors
- Node-RED
- An MQTT broker that your Meshtastic nodes publish to (Mosquitto works well)
- InfluxDB 1.x (the flow uses the
influxdbnode with a database, not a v2 bucket) - These Node-RED palette modules, installed before importing the flow:
-
Install the two palette modules above (Menu, Manage palette, Install).
-
Import
meshtastic.json(Menu, Import, paste or select the file). -
Edit the two config nodes to match your environment. The defaults assume a Docker network:
Node Default Change to MQTT broker ( Mosquito)mqtt-mosquitto:1883your broker host and port, plus credentials if you use them InfluxDB ( Local InfluxDB)influxdb:8086, databasemshyour InfluxDB host, and a database you have created -
Make sure your Meshtastic nodes publish to the broker. The flow subscribes to
msh/+/c/#. -
Deploy. Packets should start appearing in the debug sidebar and in InfluxDB.
| Measurement | Fields |
|---|---|
Mesh |
Links between nodes (source, target) with SNR and RSSI |
Packet |
Receive time, SNR, RSSI, hop limit, priority, delayed |
Position |
Latitude, longitude, altitude, satellites in view, ground speed and track, PDOP |
Device |
Battery level, voltage, channel utilization, TX air utilization |
Environment |
Temperature, relative humidity, barometric pressure, gas resistance |
Neighbor |
Neighbor links from NeighborInfo packets, with SNR |
Every point is tagged with the sender and receiver (hex ID, short name, long name, hardware model), the channel and the gateway.
This project is archived and read-only. It is kept as a working reference for decoding Meshtastic MQTT traffic into InfluxDB with Node-RED.
It was last updated for Meshtastic firmware 2.2.15. Firmware 2.3.0 and later changed the MQTT payloads (see #11), so the "Ingest from MQTT" subflow needs modification before it will work with current firmware. You are welcome to fork it.
The Unlicense. Public domain.
