IoT,  IT

MQTT-Flow in Node-RED entwickeln: Vom lokalen Broker in die Cloud

Autor

Ueli Iff

Veröffentlicht

Lesezeit

2 Min.

Node-RED-Flow mit MQTT-Nodes zur Cloud-Anbindung

In diesem Beitrag zeige ich, wie sich eine durchgaengige MQTT-Kommunikation aufbauen laesst: von der lokalen Sensorerfassung ueber die Datenaufbereitung in Node-RED bis zur Uebertragung an eine Cloud. Als Datenquelle dienen zwei Shelly-Geraete, die bei mir zu Hause verbaut sind und sich ueber MQTT auslesen lassen.

Konzept und Aufbau

Fuer den Testaufbau nutze ich zwei Shellys, die ihre Messwerte per MQTT bereitstellen. Damit ich lokal mit den Geraeten kommunizieren kann, betreibe ich einen MQTT-Broker direkt auf meiner Steuerung. Den Broker integriere ich dabei ueber Docker.

Sobald die lokale Kommunikation steht, leite ich die Daten ueber einen kostenfreien Test-Broker von Mosquitto an die Cloud weiter. Diesen Test-Broker empfehle ich ausschliesslich fuer Tests, da er keine Verschluesselung bietet.

Der oeffentliche Mosquitto-Test-Broker ist unverschluesselt und eignet sich nur fuer Experimente, nicht fuer den produktiven Einsatz.

Datenvorverarbeitung in Node-RED

Alle Sensordaten laufen nun ueber den lokalen Broker. Um sie in Node-RED weiterzuverarbeiten, binde ich den bereits vorinstallierten MQTT-Node ein. Dieser Node liefert die Nutzlast als String zurueck.

Mit dem JSON-Node konvertiere ich diesen String anschliessend in ein sauberes JSON-Objekt. Im naechsten Schritt uebergebe ich die Sensordaten aus dem JSON an einen Function-Node. Dort speichere ich die Werte in eine globale Variable, die innerhalb von Node-RED weiterverwendet werden kann.

Debug-Node. Der gruene Node ist lediglich ein Debug-Node und gibt jederzeit den aktuellen Stand der Daten aus.

Daten per MQTT an die Cloud senden

Fuer das Senden lege ich zunaechst einen Inject-Node an. Dieser triggert die globalen Variablen alle fuenf Sekunden, sodass die Daten im selben Takt neu aktualisiert werden.

Es folgt ein weiterer Function-Node. Mit ihm verschachtle ich die globalen Variablen in ein JSON-Objekt und gebe es an den MQTT-Endknoten weiter. Der MQTT-Endknoten sendet die Daten anschliessend an den Mosquitto-Online-Broker.

Visualisierung im Backend

Im Backend der Web-Applikation der Batix Schweiz AG laesst sich nun ein MQTT-Client integrieren. Ueber diesen Client werden meine Nachrichten im Fuenf-Sekunden-Takt empfangen und visualisiert.

Fazit

Mit einem lokalen, per Docker betriebenen MQTT-Broker, der Datenaufbereitung in Node-RED und einem Mosquitto-Online-Broker entsteht eine durchgaengige Kette von der Sensorik bis in die Cloud. Fuer den produktiven Betrieb sollte der unverschluesselte Test-Broker durch eine abgesicherte, verschluesselte Verbindung ersetzt werden.

// Weitere Beiträge