Rewrite README with requirements and quick start

## 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)
This commit is contained in:
Jason Murray authored and GitHub committed 2026-10-15 14:57:42 -07:00
1 parent 47410e66d8
commit 1835b91d47
1 file changed
+66 -14
+66 -14
View File
@@ -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:
## Requirements
- 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)
## Flow Preview
![meshtastic-flow](./meshtastic-flow.png)
## 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.