Im Blogbeitrag „Meshtastic – Erfassung und Versand von Messwerten“ hatte ich die Erweiterung eines Meshtastic-Knotens mit Sensoren und den Versand der erfassten Messwerte betrachtet. Damit stehen die Messwerte im Meshtastic-Netzwerk zur Verfügung.
Sollen die erfassten Messwerte visualisiert oder anderweitig weiterverarbeitet werden, dann müssen sie außerhalb des Meshtastic-Netzwerks zur Verfügung gestellt werden. Ein mit einer MQTT-Schnittstelle ausgestatteter Meshtastic-Knoten kann die Verbindung ins Internet ermöglichen. Auf diese Weise lassen sich örtlich weit auseinanderliegende (lokale) Meshtastic-Netzwerke verbinden und/oder erfasste Daten zentral auswerten.
Der Off-Grid-Aspekt geht in diesem Fall allerdings verloren.
Bei den folgenden Betrachtungen gehe ich von dem in der Abbildung gezeigten Meshtastic-Netzwerk aus.

Mein Netzwerk besteht aus verbreiteten Meshtastic-Devices. Eine kommentierte Übersicht finden Sie unter Meshtastic Erfahrungen: Boards und Module.
Hervorzuheben sind hier der RAKwireless-Sensorknoten auf Basis eines Mikrocontrollers RAK4631 (nRF52840), der Messwerte über verschiedene Sensoren erfasst und diese im Meshtastic-Netzwerk zur Verfügung stellt, und der Heltec LoRa32 V3 Knoten auf Basis eines ESP32-S3, der eine WiFi-Schnittstelle zur Verbindung mit einem Router und über diesen mit dem Internet ermöglicht. Die anderen Meshtastic-Knoten (in der Abbildung nicht eingefärbt) empfangen die Nachrichten des Sensorknotens und dienen dem üblichen Nachrichtenaustausch.
Um den Meshtastic-Knoten autonom betreiben zu können, wird dieser über eine Solarzelle mit Batteriepufferung versorgt. Nachdem der ursprünglich vorgesehene Waveshare Solar Power Manager (B) nicht die erwarteten Ergebnisse gebracht hat, habe ich einen DFRobot Solar Power Manager 5 V eingesetzt (siehe Abbildung).

Der Ladezustand des eingesetzten NCR18650 Li-Ion-Akkus muss separat überwacht werden. Hierzu verwende ich einen INA219, der über den I2C-Bus mit dem Grove-Anschluss des RAK1920 Sensor Adapter Modul verbunden wird (siehe Abbildung).

Der mit einem I2C-Interface ausgestattet SHTC3-Sensor zur Messung von Temperatur und relativer Feuchte kann über einen I2C-Hub (z.B. von M5Stack) mit dem Grove-Anschluss des RAK1920 Sensor Adapter Moduls verbunden werden.
Der Temperatursensor DS18B20 ist Bestandteil des im Blogbeitrag „Meshtastic – Erfassung und Versand von Messwerten“ beschriebenen externen Sensormoduls, welches über ein serielles Interface mit dem RAK1920 Sensor Adapter Modul verbunden wird.
Beide Mikrocontroller, der Meshtastic-Knoten und das externe Sensormodul, werden vom DFRobot Solar Power Manager 5 V über ein USB-A- zu 2x USB-C-Kabel mit Spannung versorgt.
Als MQTT-Broker verwende ich HiveMQ (https://broker.hivemq.com). Es ergibt sich damit die in der Abbildung gezeigte Zusammenstellung.

Vom Meshtastic-Gateway werden mit dem Token msh/2/json/LongFast verschiedene MQTT-Messages versendet (published). Ein MQTT-Client abonniert (subscribed) diese Tokens und kann damit die übermittelten Nachrichten weiterverarbeiten.
Ich habe auf dem PC den MQTT-Client MQTTX installiert und kann damit die empfangenen Messages anzeigen. Abgeleitet von den aktivierten Meshtastic-Modulen empfange ich vom Knoten 2692927950 (RAK1) die folgenden Messages:
Telemetry Message:
{
"channel": 0,
"from": 2692927950,
"hop_start": 3,
"hops_away": 0,
"id": 587303572,
"payload": {
"barometric_pressure": 0,
"current": -0.200000002980232,
"gas_resistance": 0,
"iaq": 0,
"lux": 0,
"radiation": 0,
"relative_humidity": 29.2199993133545,
"temperature": 24.4500007629395,
"voltage": 4.19999980926514,
"white_lux": 0,
"wind_direction": 0,
"wind_gust": 0,
"wind_lull": 0,
"wind_speed": 0
},
"rssi": -54,
"sender": "!fa66367c",
"snr": 6.75,
"timestamp": 1740267577,
"to": 4294967295,
"type": "telemetry"
}
TextMessage:
{
"channel": 0,
"from": 2692927950,
"hop_start": 3,
"hops_away": 0,
"id": 3687588499,
"payload": {
"text": "DS18B20 Temp = 24.8 °C\n"
},
"rssi": -54,
"sender": "!fa66367c",
"snr": 6.25,
"timestamp": 1740267577,
"to": 4294967295,
"type": "text"
}
Position Message:
{
"channel": 0,
"from": 2692927950,
"hop_start": 3,
"hops_away": 0,
"id": 1306258064,
"payload": {
"altitude": 423,
"latitude_i": 471921490,
"longitude_i": 88150580,
"precision_bits": 32,
"time": 1740266796
},
"rssi": -54,
"sender": "!fa66367c",
"snr": 5.75,
"timestamp": 1740266796,
"to": 4294967295,
"type": "position"
}
In den drei Messages sind alle von den Sensoren erfassten Messwerte enthalten. Vom Sensor SHTC3 werden Temperatur (temperature) und rel. Luftfeuchtigkeit (relative_humidity) erfasst. Der Sensor INA219 erfasst den Ladezustand der Batterie mit Spannung (voltage) und Strom (current).
Der Temperaturmesswert des DS18B20 Sensors wird vom externen Sensormodul als Textstring übergeben und folglich auch als Textmessage (text) versendet.
Die Positionsdaten sind hier fest vorgegeben und werden in der Position Message (altitude, latitude_i, longitude_i) versendet.
Die MQTT-Messages enthalten weitere Daten, die bei Bedarf auch noch ausgewertet werden können.
Ich verwende zum Zugriff auf den MQTT-Broker und zur Visualisierung der erfassten Messwerte die IoT-Plattform Datacake. Datacake ist eine vielseitig einsetzbare Low-Code-IoT-Plattform, die keine Programmierkenntnisse und nur minimalen Zeitaufwand erfordert, um benutzerdefinierte IoT-Anwendungen für den Desktop oder Mobil Devices zu erstellen.
Die folgenden Abbildungen zeigen ein Dashboard für einen Desktop-PC und zwei Screenshots des Dashboards für ein Smartphone.



Die verwendete Software finden Sie unter https://github.com/ckuehnel/Meshtastic.
Über den öffentlichen Link können Sie
das Dashboard aufrufen.

Das Verhalten des Meshtastic-Knotens unter verschiedenen Umgebungsbedingungen beschreibe ich im Blogpost Solar-betriebener Meshtastic-Knoten.
2025-03-14/CK






