Ein Flow in NodeRED entwickeln

In diesem Beitrag zeige ich Euch, wie Ihr eine MQTT Kommunikation zu einer Cloud einrichten könnt.

Konzept:
Für meinen Testaufbau verwende ich zwei Shellys, die ich bei mir zu Hause verbaut habe. Diese Geräte können mithilfe von MQTT ausgelesen werden.

Damit ich jedoch mit den Shellys Lokal kommunizieren kann, ist es notwendig einen MQTT Broker auf meiner Steuerung mithilfe von Docker zu integrieren.

Nachdem die lokale Kommunikation abgeschlossen ist, sende ich die Daten über einen kostenfreien Test Broker von Mosquitto an die Cloud.
Dieser Test Broker kann ich jedoch nur empfehlen für Tests, weil hier keine Verschlüsslung integriert ist.

Datenvorverarbeitung:
Weil ich nun alle Sensordaten mit meinem Lokalen Broker kommunizieren lasse, integriere ich nun diese Daten in mein NodeRED, hierfür verwende ich den bereits vorinstallierten MQTT Node.

Ihr werdet feststellen, dass der Node einen String zurückgibt, mithilfe des JSON Node kann ich dies jetzt in ein sauberes JSON Objekt konvertieren.
Im nächsten Schritt, integriere ich jetzt die Sensordaten aus dem JSON in meine Function Node, dort kann ich meine Daten in eine globale Variable speichern, die innerhalb von NodeRED verwendet werden können.

Beim grünen Node handelt es sich nur um einen Debug, dieser Node gibt mir immer den aktuell Stand aus.  

Daten an Cloud senden über MQTT:
Jetzt erstelle ich einen Inject Node, dieser Node triggert meine globalen Variablen alle fünf Sekunden, dass bedeutet das meine Daten alle 5 Sekunden neu aktualisiert werden.
Sie sehen jetzt wieder eine Function Node, diese verwende ich, damit ich die globalen Variablen in ein JSON Objekt verschachteln kann, um es an den MQTT Entknoten weiterzugeben.
Der MQTT Endknoten sendet jetzt die Daten an den Mosquitto Online-Broker.
Jetzt kann im Backend der Web-Applikation von Batix Schweiz AG einen MQTT Client integriert werden.
Mithilfe des Clients im Backend können jetzt meine Nachrichten im fünf Sekundentakt visualisiert werden.