Communication MQTT avec Node-RED

Dernière mise à jour:

Introduction

MQTT est un protocole léger de messagerie par publication/abonnement, largement utilisé dans les applications IoT. Au lieu de communiquer directement entre eux, les appareils envoient des messages à un broker MQTT sur un topic, auquel les autres clients peuvent s’abonner pour les recevoir.

Node-RED intègre des nœuds MQTT qui facilitent la réception et le traitement des messages IoT sans développer une application MQTT complète. Dans ce tutoriel, nous configurerons Node-RED sur un appareil reComputer RK Series pour s’abonner à un topic du broker MQTT public de HiveMQ, puis publierons un message JSON depuis le terminal RK afin de vérifier la connexion.

Sécurité : Cet exemple utilise le broker public partagé de HiveMQ sur le port TCP 1883, sans TLS ni authentification. Utilisez uniquement des données de test. Ne transmettez pas de mots de passe, de données personnelles ou de données industrielles ou de production. En production, utilisez un broker avec authentification et TLS.

Prérequis

ÉlémentExigence
MatérielAppareil reComputer RK Series
Système d’exploitationLinux ARM64 basé sur Debian
Node-REDInstallé et en cours d’exécution ; suivez d’abord Premiers pas avec Node-RED
RéseauAccès Internet au broker MQTT public de HiveMQ
AccèsUn navigateur pour Node-RED et un terminal ou une connexion SSH à l’appareil RK

Fonctionnement

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

Étape 1 : Ouvrir l’éditeur Node-RED

Vérifiez que Node-RED fonctionne sur l’appareil RK :

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

Si nécessaire, démarrez le service :

bash
node-red-start

Si cette commande affiche les journaux en continu, appuyez sur Ctrl+C pour revenir au terminal ; Node-RED continue de fonctionner en arrière-plan.

Recherchez l’adresse IP locale de l’appareil :

bash
hostname -I

Depuis un ordinateur sur le même réseau, ouvrez l’éditeur Node-RED :

text
http://<RK_DEVICE_IP>:1880

Remplacez <RK_DEVICE_IP> par l’adresse IP réelle de l’appareil. Connectez-vous si l’authentification de l’éditeur a été activée lors de la configuration de Node-RED.

Étape 2 : Ajouter un nœud d’entrée MQTT

  1. Ouvrez Flow 1 ou créez un nouveau flux.
  2. Recherchez mqtt in dans la palette de gauche, puis faites glisser le nœud violet mqtt in dans l’espace de travail.
  3. Double-cliquez sur le nœud pour ouvrir Edit mqtt in node.
  4. À côté de Server, cliquez sur le bouton d’ajout/modification, + ou une icône de crayon selon la version, pour créer une configuration de broker MQTT.

Étape 3 : Configurer le broker HiveMQ

Dans la boîte de dialogue de configuration du broker MQTT, renseignez :

ParamètreValeur
NameHiveMQ (nom d’affichage facultatif)
Serverbroker.hivemq.com
Port1883
ProtocolMQTT V3.1.1
Client IDLaisser vide pour générer automatiquement un ID
TLSDésactivé
Username / PasswordLaisser vide

Paramètres de connexion du broker HiveMQ

Conservez les autres options par défaut, puis cliquez sur Add ou Update, selon la version de l’éditeur, pour enregistrer la configuration du broker.

Le broker public est partagé avec d’autres utilisateurs. Choisissez un topic peu susceptible d’entrer en conflit avec d’autres tests. Cet exemple utilise rk3588/seeed/demo. Si vous choisissez un autre topic, utilisez-le à la fois dans l’abonnement et dans la commande de publication.

Étape 4 : Configurer l’abonnement MQTT

De retour dans Edit mqtt in node, configurez :

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

Topic, QoS et format de sortie de l’entrée MQTT

Cliquez sur Done pour enregistrer le nœud.

Les topics MQTT sont sensibles à la casse. Le topic de Node-RED doit correspondre exactement à celui utilisé par le client de publication en ligne de commande. Si vous choisissez un topic unique, modifiez également les commandes de publication de l’étape 7.

Étape 5 : Relier MQTT In à Debug et déployer

  1. Recherchez debug dans la palette, puis faites glisser le nœud vert debug dans l’espace de travail.
  2. Reliez la sortie de SeeedStudio (mqtt in) à l’entrée du nœud debug.
  3. Ouvrez les paramètres du nœud Debug et laissez sa sortie sur msg.payload.
  4. Cliquez sur Done, puis sur Deploy en haut à droite.
  5. Ouvrez le panneau Debug messages.

Le flux obtenu doit ressembler à ceci :

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

Une fois la connexion MQTT établie, le nœud mqtt in doit afficher un état vert connected en dessous.

Étape 6 : Installer le client MQTT en ligne de commande

Dans le terminal de l’appareil reComputer RK, installez les outils en ligne de commande Mosquitto :

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

La commande mosquitto_pub envoie un message MQTT au broker. Node-RED étant déjà abonné au même topic, il peut le recevoir.

Étape 7 : Publier un message JSON de test

Exécutez la commande suivante dans le terminal RK :

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

Cette commande publie un message JSON sur le topic rk3588/seeed/demo à l’aide du broker public de HiveMQ.

Pour obtenir une sortie plus détaillée dans le terminal, utilisez l’option -d :

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

Étape 8 : Vérifier le message reçu dans Node-RED

Revenez dans l’éditeur Node-RED et consultez le panneau Debug messages. Le nœud d’entrée MQTT doit transmettre le message au nœud Debug.

Le message doit contenir les données suivantes :

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

Comme Output du nœud d’entrée MQTT est configuré pour détecter automatiquement le JSON, Node-RED peut afficher la charge utile sous forme d’objet JavaScript analysé. Le panneau indique également le topic rk3588/seeed/demo.

Flux MQTT connecté et JSON reçu dans Debug messages

La réception du message confirme ce chemin de communication :

Terminal reComputer RK → broker public de HiveMQ → Node-RED MQTT in → Debug

Conclusion

Vous avez configuré Node-RED sur un appareil reComputer RK Series pour se connecter à un broker MQTT, s’abonner à un topic et recevoir un message JSON publié depuis le terminal de l’appareil. Cela constitue une base simple pour développer des applications IoT utilisant MQTT sur la plateforme RK.

Dans de prochains tutoriels, le flux MQTT pourra être étendu au traitement des données de capteurs, à la publication de messages avec un nœud mqtt out, ou à l’intégration avec d’autres protocoles industriels et tableaux de bord.

Références