From 1835b91d47e7ac28bd84a06d8d4e72168af4ef68 Mon Sep 17 00:00:00 2001 From: Jason Murray <15822260+scruplelesswizard@users.noreply.github.com> Date: Thu, 15 Oct 2026 14:57:42 -0700 Subject: [PATCH] Rewrite README with requirements and quick start MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Describe what the flow does and why, with the flow image up top. - Add Position and Neighbors subflows to the feature and subflow lists (they exist in `meshtastic.json` but were missing from the README). - Add Requirements (including InfluxDB 1.x), a step-by-step Quick start with the config nodes to edit, a measurements table, and a compatibility note (last updated for firmware 2.2.15). Facts were taken from `meshtastic.json` (broker, topic `msh/+/c/#`, InfluxDB database `msh`, subflow list) and the commit history. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- README.md | 84 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 68 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 05d1374..327751f 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,80 @@ # meshtastic-node-red -Node-RED Configuration for Meshtastic Packets + +A ready-made [Node-RED](https://nodered.org) flow that turns [Meshtastic](https://meshtastic.org) 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. + +![meshtastic-flow](./meshtastic-flow.png) ## Features -- Ingestion from MQTT -- Protobufs decoding -- Message deduplication by ID -- Annotate integer-based node ids to hex -- Annotate packets with known NodeInfo -- Split for all current port numbers -- Writing Mesh, Packet, Device, Environment and Position measurements to InfluxDB -- Debug nodes for all outputs -### Included Subflows +- 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 + +### Included subflows + - Ingest from MQTT - Measurement: Mesh - Measurement: Packet +- Measurement: Position - Measurement: Device Telemetry - Measurement: Environment Telemetry +- Measurement: Neighbors -## Dependencies -The following Node-RED modules need to be added to the palette before importing the workflow: -- [@meshtastic/node-red-contrib-meshtastic](https://flows.nodered.org/node/@meshtastic/node-red-contrib-meshtastic) -- [node-red-contrib-influxdb](https://flows.nodered.org/node/node-red-contrib-influxdb) +## Requirements -## Flow Preview -![meshtastic-flow](./meshtastic-flow.png) +- Node-RED +- An MQTT broker that your Meshtastic nodes publish to (Mosquitto works well) +- InfluxDB **1.x** (the flow uses the `influxdb` node with a database, not a v2 bucket) +- These Node-RED palette modules, installed before importing the flow: + - [@meshtastic/node-red-contrib-meshtastic](https://flows.nodered.org/node/@meshtastic/node-red-contrib-meshtastic) + - [node-red-contrib-influxdb](https://flows.nodered.org/node/node-red-contrib-influxdb) +## Quick start + +1. Install the two palette modules above (Menu, Manage palette, Install). +2. Import [`meshtastic.json`](./meshtastic.json) (Menu, Import, paste or select the file). +3. Edit the two config nodes to match your environment. The defaults assume a Docker network: + + | Node | Default | Change to | + |------|---------|-----------| + | MQTT broker (`Mosquito`) | `mqtt-mosquitto:1883` | your broker host and port, plus credentials if you use them | + | InfluxDB (`Local InfluxDB`) | `influxdb:8086`, database `msh` | your InfluxDB host, and a database you have created | + +4. Make sure your Meshtastic nodes publish to the broker. The flow subscribes to `msh/+/c/#`. +5. Deploy. Packets should start appearing in the debug sidebar and in InfluxDB. + +## Measurements written + +| 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. + +## Status: archived + +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](https://github.com/scruplelesswizard/meshtastic-node-red/issues/11)), so the +"Ingest from MQTT" subflow needs modification before it will work with current firmware. You are welcome +to fork it. + +## License + +[The Unlicense](LICENSE). Public domain.