MQTT-communicatie met Node-RED

Laatst bijgewerkt:

Inleiding

MQTT is een lichtgewicht berichtenprotocol voor publiceren en abonneren dat veel wordt gebruikt in IoT-toepassingen. Apparaten communiceren niet rechtstreeks met elkaar, maar sturen berichten naar een MQTT-broker onder een topic. Andere clients kunnen zich op dat topic abonneren om de berichten te ontvangen.

Node-RED bevat ingebouwde MQTT-nodes waarmee je IoT-berichten kunt ontvangen en verwerken zonder een volledige MQTT-applicatie te schrijven. In deze handleiding configureren we Node-RED op een reComputer RK Series-apparaat om een topic op de openbare MQTT-broker van HiveMQ te volgen. Daarna publiceren we een JSON-bericht vanuit de RK-terminal om de verbinding te controleren.

Beveiliging: Dit voorbeeld gebruikt de gedeelde openbare HiveMQ-broker via TCP-poort 1883, zonder TLS of authenticatie. Gebruik alleen testgegevens. Verstuur geen wachtwoorden, persoonsgegevens of productie- en industriële gegevens. Gebruik voor productie een broker met authenticatie en TLS.

Vereisten

OnderdeelVereiste
HardwarereComputer RK Series-apparaat
BesturingssysteemARM64 Linux op basis van Debian
Node-REDGeïnstalleerd en actief; voltooi eerst Aan de slag met Node-RED
NetwerkInternettoegang tot de openbare MQTT-broker van HiveMQ
ToegangEen webbrowser voor Node-RED en een terminal of SSH-verbinding met het RK-apparaat

Werking

text
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 object

Stap 1: De Node-RED-editor openen

Controleer of Node-RED op het RK-apparaat actief is:

bash
sudo systemctl status nodered.service --no-pager

Start de service indien nodig:

bash
node-red-start

Als deze opdracht de servicelogboeken blijft tonen, druk je op Ctrl+C om naar de terminal terug te keren. Node-RED blijft op de achtergrond actief.

Zoek het lokale IP-adres van het apparaat:

bash
hostname -I

Open de Node-RED-editor op een computer in hetzelfde netwerk:

text
http://<RK_DEVICE_IP>:1880

Vervang <RK_DEVICE_IP> door het werkelijke IP-adres van het apparaat. Meld je aan als editor-authenticatie tijdens de installatie van Node-RED is ingeschakeld.

Stap 2: Een MQTT-invoernode toevoegen

  1. Open Flow 1 of maak een nieuwe flow.
  2. Zoek mqtt in in het linkerpalet en sleep de paarse mqtt in-node naar de werkruimte.
  3. Dubbelklik op de node om Edit mqtt in node te openen.
  4. Klik naast Server op de knop voor toevoegen/bewerken, afhankelijk van de versie + of een potloodpictogram, om een MQTT-brokerconfiguratie te maken.

Stap 3: De HiveMQ-broker configureren

Vul in het configuratievenster van de MQTT-broker het volgende in:

InstellingWaarde
NameHiveMQ (optionele weergavenaam)
Serverbroker.hivemq.com
Port1883
ProtocolMQTT V3.1.1
Client IDLeeg laten om automatisch een ID te genereren
TLSUitgeschakeld
Username / PasswordLeeg laten

Verbindingsinstellingen van de HiveMQ-broker

Laat de overige opties op hun standaardwaarden staan en klik op Add of Update, afhankelijk van de editorversie, om de brokerconfiguratie op te slaan.

De openbare broker wordt gedeeld met andere gebruikers. Kies een topic dat waarschijnlijk niet met andere tests samenvalt. Dit voorbeeld gebruikt rk3588/seeed/demo. Als je een ander topic kiest, gebruik dat dan zowel in het abonnement als in de publicatieopdracht.

Stap 4: Het MQTT-abonnement configureren

Stel terug in Edit mqtt in node het volgende in:

InstellingWaarde
ServerHiveMQ
ActionSubscribe to single topic
Topicrk3588/seeed/demo
QoS0
Outputauto-detect (parsed JSON object, string or buffer)
NameSeeedStudio

Topic, QoS en uitvoerformaat van de MQTT-invoernode

Klik op Done om de node op te slaan.

MQTT-topics zijn hoofdlettergevoelig. Het topic in Node-RED moet exact overeenkomen met het topic dat de opdrachtregelclient voor publicatie gebruikt. Als je een uniek topic kiest, pas dan ook de publicatieopdrachten in stap 7 aan.

Stap 5: MQTT In met Debug verbinden en implementeren

  1. Zoek debug in het palet en sleep de groene debug-node naar de werkruimte.
  2. Verbind de uitgang van SeeedStudio (mqtt in) met de ingang van de debug-node.
  3. Open de instellingen van de Debug-node en laat de uitvoer op msg.payload staan.
  4. Klik op Done en daarna rechtsboven op Deploy.
  5. Open het zijpaneel Debug messages.

De resulterende flow ziet er als volgt uit:

text
[SeeedStudio (mqtt in)] ----> [debug node]

Zodra de MQTT-verbinding tot stand komt, moet onder de mqtt in-node de groene status connected verschijnen.

Stap 6: De MQTT-opdrachtregelclient installeren

Installeer de Mosquitto-opdrachtregeltools in de terminal van het reComputer RK-apparaat:

bash
sudo apt update
sudo apt install -y mosquitto-clients

De opdracht mosquitto_pub stuurt een MQTT-bericht naar de broker. Node-RED is al op hetzelfde topic geabonneerd en kan het bericht ontvangen.

Stap 7: Een JSON-testbericht publiceren

Voer de volgende opdracht uit in de RK-terminal:

bash
mosquitto_pub \
  -h broker.hivemq.com \
  -p 1883 \
  -t "rk3588/seeed/demo" \
  -m '{"device":"RK3588","temperature":25.6}'

Deze opdracht publiceert één JSON-bericht op het topic rk3588/seeed/demo via de openbare HiveMQ-broker.

Gebruik de optie -d voor uitgebreidere uitvoer op de opdrachtregel:

bash
mosquitto_pub -d \
  -h broker.hivemq.com \
  -p 1883 \
  -t "rk3588/seeed/demo" \
  -m '{"device":"RK3588","temperature":25.6}'

Stap 8: Het ontvangen bericht in Node-RED controleren

Ga terug naar de Node-RED-editor en bekijk het zijpaneel Debug messages. De MQTT-invoernode moet het bericht doorsturen naar de Debug-node.

Het bericht moet de volgende gegevens bevatten:

json
{
  "device": "RK3588",
  "temperature": 25.6
}

Omdat Output van de MQTT-invoernode is ingesteld op automatische JSON-detectie, kan Node-RED de payload als een geparseerd JavaScript-object weergeven. Het zijpaneel toont ook het topic rk3588/seeed/demo.

Verbonden MQTT-flow en ontvangen JSON in Debug messages

Het succesvol ontvangen bericht bevestigt deze communicatieroute:

reComputer RK-terminal → openbare HiveMQ-broker → Node-RED MQTT in → Debug

Conclusie

Je hebt Node-RED op een reComputer RK Series-apparaat geconfigureerd om verbinding te maken met een MQTT-broker, een topic te volgen en een JSON-bericht te ontvangen dat vanuit de terminal van het apparaat is gepubliceerd. Dit vormt een eenvoudige basis voor MQTT-gebaseerde IoT-toepassingen op het RK-platform.

In latere handleidingen kan de MQTT-flow worden uitgebreid om sensorgegevens te verwerken, berichten te publiceren met een mqtt out-node of te integreren met andere industriële protocollen en dashboards.

Referenties