Débuter avec Node-Red sur Raspberry Pi. Installation, autostart, prise en main • Domotique et objets connectés à faire soi-même

Node-Red est une boite à outils de programmation graphique qui permet de développer des objets connectés (et beaucoup d’autres choses) avec peu de connaissance en informatique. Node-Red est un projet Open Source soutenu par IBM. C’est un langage idéal pour débuter la programmation et comprendre l’internet des objets.

Tutoriel actualisé le 10 juin 2020

Node-Red est disponible sur Windows, macOS et Linux. Les conseils et les explications de cet article sont également valables pour les autres plateformes.

Installer Node-Red sur Raspbian Buster depuis le Terminal

Avant de réaliser notre premier programme, nous allons commencer par découvrir son fonctionnement et ajouter quelques plugins utiles. Node-Red est maintenant inclus par défaut sur la distribution Raspbian. Vous n’avez donc rien à installer pour débuter.

L’installation de Node-RED est ultra simplifiée sur Raspbian. Tout est expliqué en détail ici.

Connectez-vous en SSH au Raspberry Pi et exécutez cette commande

bash  Import -> Clipboard) dans votre un flow.

[{"id":"3ff9c2cd.ef914e","type":"function","z":"16966388.6f0e2c","name":"Inverse état Led","func":"\ncontext.state = context.state || 0;\n\n(context.state == 0) ? context.state = 1 : context.state = 0;\nmsg.payload = context.state;\n\nreturn msg;","outputs":1,"noerr":0,"x":340,"y":320,"wires":[["b91a94fa.ec1e48","59b95cea.56d4f4"]]},{"id":"b91a94fa.ec1e48","type":"debug","z":"16966388.6f0e2c","name":"","active":true,"x":570,"y":360,"wires":[]},{"id":"9b2414e2.c584c8","type":"inject","z":"16966388.6f0e2c","name":"chaque seconde","topic":"","payload":"","payloadType":"date","repeat":"1","crontab":"","once":false,"x":149,"y":320.0000009536743,"wires":[["3ff9c2cd.ef914e"]]},{"id":"59b95cea.56d4f4","type":"rpi-gpio out","z":"16966388.6f0e2c","name":"Led sur GPIO4","pin":"16","set":false,"out":"out","x":580,"y":280,"wires":[]}]

Faire clignoter une Led à chaque Tweet sur un mot clé


Allons un peu plus loin maintenant. Nous allons faire clignoter une Led à chaque fois qu’un Tweet est publié sur le mot clé #arduino sur votre compte.

Commençons par ajouter un node twitter (prenez celui avec l’oiseau à gauche). Faites un double clic pour ouvrir le panneau de configuration et cliquez sur le crayon

Cliquez maintenant sur “Click here to authenticate with Twitter”

Vous allez être redirigé vers Twitter. Cliquez sur “Autoriser l’application”
Enfin cliquez sur “Add” pour terminer la connexion avec votre compte Twitter.

A partir de maintenant, vous pouvez récupérer ou poster des Tweets. Pour cet article, ce qui nous intéresse c’est de filtrer les Tweets postés sur le mot clé #arduino. Choisissez “all public tweets” en face de Search et saisissez #arduino dans le champ for. Vous pouvez ajouter plusieurs mots clés en les séparant par un virgule mais également des personnes (symbole @).
A chaque fois qu’un Tweet est détecté, nous allons faire 3 choses :
  • Afficher le Tweet dans la console de debug
  • Déclencher le clignotement de la Led branchée sur le GPIO4
  • Incrémenter un compteur et afficher celui dans la console de debug.


Voici le code de cet exemple qu’il vous suffit de copier puis importer dans un flow.
[{"id":"d40bbabd.933568","type":"debug","z":"7acbed96.061554","name":"Tweet reçu","active":true,"console":"false","complete":"payload","x":390,"y":160,"wires":[]},{"id":"ff741292.77408","type":"twitter in","z":"7acbed96.061554","twitter":"","tags":"#arduino","user":"false","name":"Filtre les tweets sur #Arduino","topic":"tweets","x":140,"y":220,"wires":[["d40bbabd.933568","d06dda9f.451c58","ba64a3f8.03aea"]]},{"id":"881cc7d6.ea3578","type":"rpi-gpio out","z":"7acbed96.061554","name":"Led sur GPIO4","pin":"16","set":false,"out":"out","x":600,"y":220,"wires":[]},{"id":"d06dda9f.451c58","type":"trigger","z":"7acbed96.061554","op1":"1","op2":"0","op1type":"val","op2type":"val","duration":"750","extend":false,"units":"ms","reset":"","name":"Fait clignoter la led ","x":410,"y":220,"wires":[["881cc7d6.ea3578"]]},{"id":"ba64a3f8.03aea","type":"function","z":"7acbed96.061554","name":"Compteur de Tweet","func":"\ncontext.state = context.state || 0;\n\ncontext.state ++;\nmsg.payload = context.state;\n\nreturn msg;","outputs":1,"noerr":0,"x":410,"y":280,"wires":[["600494ad.09533c"]]},{"id":"600494ad.09533c","type":"debug","z":"7acbed96.061554","name":"Compteur","active":true,"console":"false","complete":"payload","x":580,"y":280,"wires":[]}]

Récupérer la météo locale sur OpenWeatherMap

 

Pour récupérer la météo locale, nous allons utiliser le node openweathermap qui permet de récupérer la météo via l’API d’OpenWeatherMap. Pour pouvoir l’utiliser, vous devez récupérer une clé API qui est gratuite pour un usage personnel (lien vers la page d’accueil d’OpenWeatherMap). Vous pourrez faire 1 millions de requêtes par mois en ne dépassant pas 60 requêtes par minute, ça devrait suffire pour faire quelques essais !.
Pour récupérer une clé, créez un compte (gratuit) puis allez dans l’onglet setup de My Home.
Ajoutez un node openweathermap (celui du bas) dans un flow. Faites un double clic puis :
  • Coller la clé API
  • Indiquer la ville (et le pays) ou les coordonnées GPS du lieu dont on souhaite connaître la météo
  • Brancher un node debug pour envoyer la météo récupérée dans la console


Voilà, c’est aussi simple que ça !
[{"id":"6fa26a7b.c92204","type":"openweathermap in","z":"77ff7e2d.d10ff","name":"Météo à Paris","lon":"","lat":"","city":"Paris","country":"France","x":270,"y":100,"wires":[["ec5c6880.844ee8"]]},{"id":"ec5c6880.844ee8","type":"debug","z":"77ff7e2d.d10ff","name":"","active":true,"console":"false","complete":"false","x":450,"y":100,"wires":[]}]

Que faire si Node-Red ne fonctionne plus


Même si Node-Red est déjà une solution très aboutie, il reste encore des outils à développer. Il n’y a aucun outil disponible (ni depuis l’interface du navigateur, ni en ligne de commande) pour gérer les flows (à ma connaissance du moins). Si Node-Red refuse de démarrer, cela peut se produire par exemple si vous avez une erreur dans un flow, vous devrez intervenir “à la main” sur le fichier flows_raspberrypi.json.
Ce fichier se trouve dans le répertoire /home/pi/.node-red/
Le plus difficile est d’éditer ce fichier JSON. Dans un éditeur de texte, vous allez avoir une seule ligne de texte. Pas évident avec l’éditeur de texte nano qui ne renvoie pas à la ligne automatiquement. Le mieux est d’utiliser l’éditeur de texte de Raspbian leafpad à la place de nano.
sudo leafpad flows_raspberrypi.json

Dans le menu Options, cochez l’option “Retour à la ligne automatique”. Après avoir corrigé le problème, faites “Enregistrez sous” sans vous soucier de l’avertissement.
Vous pouvez aussi tout simplement effacer le fichier à l’aide de la commande
rm flows_raspberrypi.json

Un nouveau fichier sera créé au prochain démarrage.

Et maintenant, quoi faire avec Node-RED ?


Voici d’autres projets et tutoriels pour aller plus loin avec Node-RED. Des projets domotiques, objets connectés, caméra de surveillance…

Mises à jour


27/06/2017 Correction de la commande systemctl. Merci Jean-Michel !
27/06/2017 Ajout de module depuis le gestionnaire de palette. Démarrage automatique avec PM2 Avez-vous aimé cet article ?