La popularité de Node-RED s’explique par la simplification considérable du développement de projets pour l'IdO. Examinons de près comment l’utiliser dans un projet très simple comme la commande d'une LED. Découvrez une forme de programmation qui fait beaucoup penser au Lego®! 

On assiste à l'utilisation croissante d'outils de programmation visuelle par blocs. L'idée sous-jacente est d’offrir au programmeur un ensemble de modules visuels qu'il lui suffit de relier les uns aux autres de manière logique pour créer le programme d'application. Node-RED est un tel outil de programmation visuel à code source ouvert. Il comprend des modules pour effectuer des tâches très complexes, notamment l'accès au web, Twitter, le courrier électronique, HTTP, Bluetooth, MQTT, le contrôle des ports GPIO d'ordinateurs populaires tels que le Raspberry Pi (RPi), Arduino, ESP32, etc. L’avantage avec Node-RED, c'est que le programmeur n'a pas à écrire de programmes complexes. Ainsi, un courriel peut-il être envoyé avec quelques modules joints à quelques lignes de code simple.

Installer Node-RED

Node-RED est déjà installé sur RPi et peut être lancé soit depuis le bureau (fig. 1), soit avec la ligne de commande suivante (fig. 2) :

pi@raspberrypi:~ $ node-red-start

Figure 1. Lancer Node-RED sur Raspberry Pi.
Figure 2. Lancer Node-RED par ligne de commande.

Node-RED est lancé en tant que service et une liste de commandes valides pour le démarrer et l'arrêter s'affiche à l'écran au démarrage (fig. 2). Ici 192.1681.202 est l'adresse de mon RPi. Vous pouvez facilement trouver l'adresse IP du vôtre avec la ligne de commande ifconfig. La réponse se trouve sur la ligne qui commence par wlan0.

Maintenant vous démarrez votre navigateur et saisissez le lien suivant sur votre PC pour lancer l'interface graphique Node-RED sur votre écran :

https://<votre adresse IP>:1880

Avec par exemple mon RPi, ça donne :

https://192.168.1.202:1880

L'écran de démarrage de Node-RED (fig. 3) comporte trois sections : à gauche, une liste de modules (ou nodes) par défaut disponibles dès l’installation du programme. Les utilisateurs peuvent ajouter des modules supplémentaires à partir de diverses sources sur Internet. La partie centrale est la zone de travail où les modules requis sont glissés-déposés puis connectés pour former un flux. La partie droite est la très utile zone d'information et de débogage.

Figure 3. Menu de démarrage de Node-RED.

Le meilleur moyen de comprendre comment utiliser Node-RED est peut-être d’étudier un exemple simple. Dans cet exemple, une LED est connectée au GPIO 2 du RPi par une résistance de limitation de courant de 220 Ω (fig. 4).

Figure 4. Schéma de l'exemple.

Nous commandons simplement la LED à partir d'un programme Node-RED. Les étapes sont les suivantes (voir le flux (= ​flow) fig. 5) :

Figure 5. Diagramme du flux de l'exemple.
  • Cliquez, glissez et déposez un module d'injection dans l'espace de travail. Les modules d'injection sont utilisés pour injecter des messages (chaîne, numéro, etc.) dans un flux. Dans cet exemple, nous allons injecter 1 pour allumer la LED, ou 0 pour l’éteindre.
  • Double-cliquez sur le module d'injection pour le configurer. Réglez sa charge utile (= payload) sur "nombre" et entrez 1. En cliquant sur la case carrée à gauche de ce module, vous obtiendrez 1 pour allumer la LED.
  • Mettez le sujet (= ​topic) du mode d'injection sur ON afin que nous puissions voir la fonction de ce module. Cliquez sur Terminé pour fermer l'écran de configuration.
  • Cliquez, glissez et déposez un autre module d'injection (cf.  fig. 5) et réglez sa charge utile sur 0 et son sujet sur OFF. Cliquez sur ce module, la valeur 0 sera affichée pour éteindre la LED.
  • Cliquez, faites glisser et déposez un module de sortie rpi gpio out dans l'espace de travail. Ce module est utilisé pour envoyer des données numériques ou PWM à un port GPIO du RPi. Connectez le module (fig. 5).
  • Double-cliquez sur le module rpi gpio out pour le configurer (fig. 6). Réglez la broche sur GPIO2, Type sur la sortie numérique, cliquez sur Initialiser l'état de la broche (= Initialise pin state) et réglez l'état initial de la broche sur 0. Nommez le module LED. Cliquez sur Done pour fermer l'écran de configuration.
Figure 6. Configuration du module gpio out du Raspberry Pi.

Nous avons notre flux. Cliquez sur Déployer pour compiler le programme et produire le code exécutable. Assurez-vous de l’absence de message d'erreur. Cliquez sur le bouton carré à gauche du module d'injection ON, la LED s'allume. Cliquez sur le bouton de l'autre module d'injection, la LED s'éteint.

Autres aspects

Avec cet exemple très simple, nous avons vu ce qu'est Node-RED et comment l’utiliser. Un de ses points forts est que Node-RED est soutenu par de vastes communautés et qu'il existe de nombreux modules développés par des tiers, disponibles gratuitement, et utilisables dans des projets complexes. Le module openweathermap donne p. ex. les conditions météorologiques locales (température, humidité, pression atmosphérique, vitesse du vent, précipitations, etc.) partout sur Terre. Un projet de prévisions météo peut être réalisé en moins d'une heure à partir de ce module et quelques autres. Une réalisation comparable à partir de capteurs externes serait coûteuse et longue à déployer. Node-RED prend en charge la communication basée sur l'UDP et le TCP avec un seul module sur une liaison Wi-Fi. Cette fonction permet aux utilisateurs d'envoyer et de recevoir des données sans fil à partir d'autres appareils connectés à un réseau Wi-Fi (téléphones, tablettes, PC, etc.).

On trouve d'autres modules intéressants qui peuvent être installés gratuitement :

  • Tableau de bord
  • Bluetooth
  • Amazon Alexa
  • I2C et LCD parallèle
  • Carte du monde
  • Convertisseur A/D
  • Capteur d’ultrasons

Node-RED n'est pas un exclusivité RPi. Il peut également être utilisé (au prix de certaines limitations) avec les processeurs Arduino et ESP32, ou avec une combinaison du RPi et de l'Arduino, ou du RPi et de l'ESP32.

Le module de fonction, l'un des plus importants, peut être configuré pour commander plusieurs sorties. L’utilisateur peut exploiter avec son code les données de ce module. Après avoir p. ex. obtenu la météo locale du module openweathermap, nous pouvons en extraire les informations de température et d'humidité locales. C’est facile grâce à quelques déclarations à l'intérieur du module de fonction. Les lecteurs intéressés trouveront davantage d'informations grâce aux liens [1] [2] [3] [4] [5] et dans mon livre sur Node-RED.       (200164) 


 Elektor est réputé pour la qualité de son contenu. En voulez-vous davantage ?

 Abonnez-vous maintenant au magazine Elektor et ne manquez plus jamais ni aucun de ces articles précieux ni aucun de ces projets géniaux.