MQTT-Kommunikation mit Node-RED
Zuletzt aktualisiert:
Einführung
MQTT ist ein schlankes Publish/Subscribe-Nachrichtenprotokoll, das häufig in IoT-Anwendungen eingesetzt wird. Statt direkt miteinander zu kommunizieren, senden Geräte Nachrichten unter einem Topic an einen MQTT-Broker. Andere Clients können dieses Topic abonnieren, um die Nachrichten zu empfangen.
Node-RED bietet integrierte MQTT-Knoten, mit denen sich IoT-Nachrichten empfangen und verarbeiten lassen, ohne eine vollständige MQTT-Anwendung zu schreiben. In diesem Tutorial konfigurieren wir Node-RED auf einem reComputer RK Series-Gerät, abonnieren ein Topic auf dem öffentlichen MQTT-Broker von HiveMQ und veröffentlichen anschließend eine JSON-Nachricht aus dem RK-Terminal, um die Verbindung zu prüfen.
Sicherheit: Dieses Beispiel verwendet den gemeinsam genutzten öffentlichen HiveMQ-Broker über TCP-Port 1883 ohne TLS oder Authentifizierung. Verwenden Sie nur Testdaten. Übertragen Sie keine Passwörter, personenbezogenen Daten oder Produktions- und Industriedaten. Nutzen Sie im Produktivbetrieb einen Broker mit Authentifizierung und TLS.
Voraussetzungen
| Element | Anforderung |
|---|---|
| Hardware | reComputer RK Series-Gerät |
| Betriebssystem | Debian-basiertes ARM64-Linux |
| Node-RED | Installiert und aktiv; schließen Sie zuerst Erste Schritte mit Node-RED ab |
| Netzwerk | Internetzugang zum öffentlichen MQTT-Broker von HiveMQ |
| Zugriff | Ein Webbrowser für Node-RED und ein Terminal oder eine SSH-Verbindung zum RK-Gerät |
Funktionsweise
reComputer RK Terminal
(mosquitto_pub)
|
| Publish JSON to topic: rk3588/seeed/demo
v
HiveMQ Public MQTT Broker
(broker.hivemq.com:1883)
|
| Subscribe to the same topic
v
Node-RED on reComputer RK
MQTT in --> Debug
|
v
Debug sidebar: received JSON objectSchritt 1: Den Node-RED-Editor öffnen
Prüfen Sie, ob Node-RED auf dem RK-Gerät läuft:
sudo systemctl status nodered.service --no-pagerStarten Sie den Dienst bei Bedarf:
node-red-startFalls dieser Befehl fortlaufend Dienstprotokolle anzeigt, kehren Sie mit Ctrl+C zum Terminal zurück. Node-RED läuft im Hintergrund weiter.
Ermitteln Sie die lokale IP-Adresse des Geräts:
hostname -IÖffnen Sie den Node-RED-Editor auf einem Computer im selben Netzwerk:
http://<RK_DEVICE_IP>:1880Ersetzen Sie <RK_DEVICE_IP> durch die tatsächliche IP-Adresse des Geräts. Melden Sie sich an, falls bei der Einrichtung von Node-RED die Editor-Authentifizierung aktiviert wurde.
Schritt 2: Einen MQTT-Eingangsknoten hinzufügen
- Öffnen Sie Flow 1 oder erstellen Sie einen neuen Flow.
- Suchen Sie in der linken Palette nach mqtt in und ziehen Sie den violetten Knoten mqtt in auf die Arbeitsfläche.
- Doppelklicken Sie auf den Knoten, um Edit mqtt in node zu öffnen.
- Klicken Sie neben Server auf die Schaltfläche zum Hinzufügen/Bearbeiten, je nach Version + oder ein Stiftsymbol, um eine MQTT-Broker-Konfiguration zu erstellen.
Schritt 3: Den HiveMQ-Broker konfigurieren
Tragen Sie im Konfigurationsdialog des MQTT-Brokers Folgendes ein:
| Einstellung | Wert |
|---|---|
| Name | HiveMQ (optionaler Anzeigename) |
| Server | broker.hivemq.com |
| Port | 1883 |
| Protocol | MQTT V3.1.1 |
| Client ID | Leer lassen, um eine ID automatisch zu erzeugen |
| TLS | Deaktiviert |
| Username / Password | Leer lassen |

Belassen Sie die übrigen Optionen auf den Standardwerten und klicken Sie je nach Editorversion auf Add oder Update, um die Broker-Konfiguration zu speichern.
Der öffentliche Broker wird von anderen Nutzern mitverwendet. Wählen Sie ein Topic, das möglichst nicht mit anderen Tests kollidiert. Dieses Beispiel verwendet
rk3588/seeed/demo. Wenn Sie ein anderes Topic wählen, verwenden Sie es sowohl im Abonnement als auch im Veröffentlichungsbefehl.
Schritt 4: Das MQTT-Abonnement konfigurieren
Stellen Sie unter Edit mqtt in node Folgendes ein:
| Einstellung | Wert |
|---|---|
| Server | HiveMQ |
| Action | Subscribe to single topic |
| Topic | rk3588/seeed/demo |
| QoS | 0 |
| Output | auto-detect (parsed JSON object, string or buffer) |
| Name | SeeedStudio |

Klicken Sie auf Done, um den Knoten zu speichern.
MQTT-Topics unterscheiden zwischen Groß- und Kleinschreibung. Das Topic in Node-RED muss exakt mit dem Topic des Kommandozeilen-Publishers übereinstimmen. Wenn Sie ein eindeutiges Topic wählen, passen Sie auch die Veröffentlichungsbefehle in Schritt 7 an.
Schritt 5: MQTT In mit Debug verbinden und bereitstellen
- Suchen Sie in der Palette nach debug und ziehen Sie den grünen Knoten debug auf die Arbeitsfläche.
- Verbinden Sie den Ausgang von SeeedStudio (mqtt in) mit dem Eingang des Knotens debug.
- Öffnen Sie die Einstellungen des Debug-Knotens und lassen Sie die Ausgabe auf
msg.payloadstehen. - Klicken Sie auf Done und anschließend oben rechts auf Deploy.
- Öffnen Sie die Seitenleiste Debug messages.
Der fertige Flow sollte so aussehen:
[SeeedStudio (mqtt in)] ----> [debug node]Sobald die MQTT-Verbindung hergestellt ist, sollte unter dem Knoten mqtt in der grüne Status connected erscheinen.
Schritt 6: Den MQTT-Kommandozeilenclient installieren
Installieren Sie im Terminal des reComputer RK-Geräts die Mosquitto-Kommandozeilenwerkzeuge:
sudo apt update
sudo apt install -y mosquitto-clientsDer Befehl mosquitto_pub sendet eine MQTT-Nachricht an den Broker. Node-RED hat dasselbe Topic bereits abonniert und kann sie empfangen.
Schritt 7: Eine JSON-Testnachricht veröffentlichen
Führen Sie den folgenden Befehl im RK-Terminal aus:
mosquitto_pub \
-h broker.hivemq.com \
-p 1883 \
-t "rk3588/seeed/demo" \
-m '{"device":"RK3588","temperature":25.6}'Dieser Befehl veröffentlicht eine JSON-Nachricht über den öffentlichen HiveMQ-Broker im Topic rk3588/seeed/demo.
Für eine detailliertere Ausgabe auf der Kommandozeile verwenden Sie die Option -d:
mosquitto_pub -d \
-h broker.hivemq.com \
-p 1883 \
-t "rk3588/seeed/demo" \
-m '{"device":"RK3588","temperature":25.6}'Schritt 8: Die empfangene Nachricht in Node-RED prüfen
Kehren Sie zum Node-RED-Editor zurück und prüfen Sie die Seitenleiste Debug messages. Der MQTT-Eingangsknoten sollte die Nachricht an den Debug-Knoten weiterleiten.
Die Nachricht sollte die folgenden Daten enthalten:
{
"device": "RK3588",
"temperature": 25.6
}Da Output des MQTT-Eingangsknotens auf automatische JSON-Erkennung eingestellt ist, kann Node-RED die Nutzdaten als geparstes JavaScript-Objekt anzeigen. Die Seitenleiste zeigt außerdem das Topic rk3588/seeed/demo an.

Die erfolgreiche Nachricht bestätigt diesen Kommunikationsweg:
reComputer RK-Terminal → öffentlicher HiveMQ-Broker → Node-RED MQTT in → Debug
Fazit
Sie haben Node-RED auf einem reComputer RK Series-Gerät mit einem MQTT-Broker verbunden, ein Topic abonniert und eine vom Terminal des Geräts veröffentlichte JSON-Nachricht empfangen. Dies bildet eine einfache Grundlage für MQTT-basierte IoT-Anwendungen auf der RK-Plattform.
In späteren Tutorials lässt sich der MQTT-Flow zur Verarbeitung von Sensordaten, zum Veröffentlichen von Nachrichten mit einem mqtt out-Knoten oder zur Integration mit anderen Industrieprotokollen und Dashboards erweitern.