Débuter
S'équiper
Matériel recommandé

Vous voulez participer au financement du blog. C’est simple, suivez les liens commerciaux pour faire vos achats. Quelques pourcents qui font toute la différence. Merci à vous !

Kit raspberry pi 4 8GB
Kit Raspberry Pi 4 - 8GB
kit raspberry pi 4
Kit Raspberry Pi 4 - 4GB
raspberry pi 4 2019
Raspberry Pi 4 - 4GB
Cartes micro-SD SDHC v90
Kit Retrogaming Nespi
Kit Retrogaming

Débuter avec Node-Red sur Raspberry Pi. Installation, autostart, prise en main

install node-red raspberrypi
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

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 <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)
A LIRE AUSSI :
Activer la connexion SSH pour accéder à un Raspberry Pi à distance

Cette commande lance le script d’installation qui s’occupe de tout !

Running for user pi at /home/pi

This can take 20-30 minutes on a Pi 1 - please wait.

  Stop Node-RED                       ✔
  Remove old version of Node-RED      ✔
  Remove old version of node.js       ✔
  Install node.js for Armv6           ✔   Node v6.11.0   Npm 3.10.10
  Clean npm cache                     ✔
  Install Node-RED core               ✔   0.16.2 
  Install extra nodes                 ✔
  Install serialport node             ✔
  Npm rebuild existing nodes          ✔
  Add menu shortcut                   ✔
  Update systemd script               ✔
  Update update script                ✔

Any errors will be logged to   /var/log/nodered-install.log

All done.
  You can now start Node-RED with the command  node-red-start
  or using the icon under   Menu / Programming / Node-RED
  Then point your browser to localhost:1880 or http://{your_pi_ip-address}:1880

Started  Thu 22 Jun 14:42:28 UTC 2017  -  Finished  Thu 22 Jun 15:00:14 UTC 2017

Le script réalise les opérations suivantes

  • Il arrête et désinstalle la version actuelle de Node-RED et Node.js. Cette étape n’est pas anodine si vous avez d’autres projets basés sur Node.js
  • Il installe ensuite Node.js pour les OSC Arm V6
  • Installe Node-RED et les scripts systemd qui permettent de lancer automatiquement Node-RED au démarrage de Raspbian

Le script d’installation dure environ une trentaine de minutes sur un Raspberry Pi. Toutes les ressources sont compilées directement après le téléchargement. Pour suivre le déroulement de l’installation, ouvrez une seconde connexion SSH et exécutez la commande suivante.

tail -f /var/log/nodered-install.log

Pour interrompre la commande, utilisez la combinaison de touches CTRL+C.

Démarrer automatiquement Node-Red au lancement du Raspberry Pi

C’est rapidement pénible de devoir démarrer manuellement NodeRED. Heureusement, il est possible de lancer automatiquement Node-RED au démarrage de Raspberry Pi OS (ou de n’importe quelle autre distribution linux d’ailleurs) sous la forme d’un deamon (l’équivalent d’un service sur Windows).

Saisissez la commande suivante dans le Terminal pour activer le service au démarrage.

sudo systemctl enable nodered.service

Celle-ci permet de désactiver le démarrage automatique.

sudo systemctl disable nodered.service

Démarrer Node-Red manuellement depuis le bureau Pixel

Node-Red est pré-installé sur la distribution Desktop and recommended software. On y accède depuis Menu -> Programmation

Vous pouvez également démarrer depuis le Terminal avec la commande

sudo node-red-start

Si vous découvrez le Pi (et peut être Linux par la même occasion), en cliquant sur l’icône de Node-Red vous avez du être déçu de voir apparaître que des lignes de texte dans la fenêtre du Terminal. C’est tout à fait normal, son utilisation va entièrement se faire dans un navigateur internet. Vous avez simplement démarré un serveur web accessible depuis n’importe quel ordinateur (ou tablette !!) relié à votre réseau local.

Maintenant que Node-Red est démarré, nous allons récupérer l’adresse ip de celui-ci. Elle se trouve à la 2nd lignes.

Si vous voulez programmer directement sur votre Pi, ouvrez le navigateur internet et saisissez

http://localhost:1880/
ou
http://127.0.0.1:1880/

Pour utiliser NodeRED depuis n’importe quel autre ordinateur sur votre réseau local, exécuter la commande hostname -I pour connaître l’adresse IP du Raspberry Pi puis ouvrez votre navigateur internet et saisissez dans la barre d’adresse

http://ADRESSE_IP_DU_RASPBERRY_PI:1880/

Et voilà, dans tous les deux cas, vous devriez arriver sur l’écran de Node-Red.

node-red start demarrage naviguateur

Découverte de l’environnement de programmation

Voici un petit aperçu de l’environnement de développement proposé

Sur la gauche de l’écran se trouvent toutes les fonctions disponibles. Au centre se trouve la zone de programmation. Le panneau de droite regroupe un onglet info regroupant des informations contextuelles (exemple correspondant à la fonction sélectionnée…) et un onglet debug qui renvoie les messages d’erreurs ainsi que les messages de la fonction debug qui se trouve dans les outils output.

A chaque fois que vous voulez déployer votre programme, appuyez sur le bouton Deploy rouge qui se trouve dans le coin supérieur droit.

Le menu situé à côté du bouton Deploy contient quelques outils supplémentaires :

  • View : Permet d’afficher/masquer la grille qui peut aussi être magnétique (snap to grid)
  • Import : Permet d’importer des nodes. C’est avec cette option que vous pouvez ajouter à votre flow des nodes récupérés sur internet ou sur http://flows.nodered.org/
  • Export : Vous pouvez exporter vers le presse papier (une chaine de texte au format JSON) ou dans un fichier dont vous devrez donner un nom. Vous trouverez ce fichier dans le répertoire ./home/pi/.node-red/lib/flows
  • Flows : Vous pourrez ajouter un nouveau flow (Add), renommer (Rename), supprimer (Delete) le flow en cours

Utiliser Node-Red sur une tablette

Il est tout à fait possible de développer sur une tablette reliée au réseau local sur lequel est démarré le serveur Node-Red. La seule différence notoire est la manipulation des blocs dans la zone de programmation. Le clavier et la souris ont été remplacés par un menu contextuel que l’on fera apparaître par un appui long dans la zone de programmation ou sur le bloc à modifier. Il permet de réaliser les opérations copier/couper/coller, effacer/modifier l’objet et annuler la dernière modification.

node-red tablette ipad galaxy tab android

Sur tablette, faire un appui long sur l’objet ou la zone de programmation pour faire apparaître le menu.

Installer (ou mettre à jour) npm

Avant d’aller plus loin, voyons comment ajouter des packages (appelés flow).

Commençons par ajouter un nouvel onglet au Terminal ou ouvrez un nouveau Terminal et saisissez la commande suivante qui va par arrêter NodeRed.

sudo node-red-stop

Node-Red utilise le gestionnaire de package npm de nodejs (le moteur javascript de Node-Red). Voici les étapes à suivre pour l’installer.

On commence par mettre à jour le système

sudo apt-get update

puis on installe npm

sudo apt-get install npm

Enfin on met à jour npm

sudo npm i npm -g

Installation de node-red-admin

Le premier module que je vous propose d’installer est node-red-admin. Comme son nom l’indique il ajoute quelques fonctions utiles :

  • List pour lister les nodes installés
  • Enable ou disable pour activer / désactiver un node.
  • Search pour chercher un node sur un mot clé. Par exemple sudo node-red-admin search weather va vous retourner 4 nodes permettant de vous connecter à des services de météo en ligne (Forecast.io, openweathermap, underground et yr.no).
  • install pour installer un Node
  • remove pour désinstaller un Node
  • info pour afficher les informations sur un Node en particulier

Pour installer node-red-admin, allez dans le répertoire de node-red.

cd ./home/pi/.node-red

Pour ceux qui découvrent Linux, le point devant le répertoire signifie que c’est un répertoire caché. Il n’est pas affiché dans le gestionnaire de fichier.

Maintenant saisissez la commande suivante dans le Terminal

npm install -g node-red-admin

Installer des nouveaux modules (Node)

La communauté Node-Red développe de très nombreux plugins (environ 480 nodes actuellement) dans tous les domaines : objets connectés (ZWave, Sonos..), services en ligne (météo, twitter…), bases de données… Tous les nodes sont listés ici.

Pour cet article nous allons installer le module node-red-node-openweathermap (lien vers le node) qui permet de récupérer la météo locale depuis le site openweathermap. Ouvrez le gestionnaire de palette

node-red manage palette

Cherchez le module node-red-node-openweathermap puis cliquez sur install.

node-red dashboard ui module

Pour en savoir plus sur le gestionnaire de palette, lisez ce tutoriel détaillé.

En cas de difficulté pour installer un module, arrêtez NR puis exécutez cette commande dans le Terminal.

npm install node-red-node-openweathermap

Plein de flows pour découvrir Node-Red

Si vous découvrez Node-Red ou que vous avez déjà un projet en tête, commencez par aller faire un petit tour du côté des flows déposés sur le site fows.nodered.org. Il y en a déjà plus de 250 dans tous les domaines (cochez flows en dessous du champ de recherche pour les filtrer).

Démarrer automatiquement Node-Red au démarrage du Raspberry Pi

Votre programme est prêt et vous voudriez qu’il se lance automatiquement au démarrage de votre Raspberry Pi. C’est tout à fait possible, saisissez la commande suivante dans le Terminal.

sudo systemctl enable nodered.service

Pour interrompre le démarrage automatique, saisissez la commande suivante

sudo systemctl disable nodered.service

Démarrer automatiquement avec PM2 (déconseillé)

Il existe une autre solution pour démarrer automatiquement. Le gestionnaire de processus PM2 pour Nodejs est conseillé. PM2 offre d’autres outils permettant de gérer plus facilement le démarrage, l’arrêt, l’ouverture du journal d’exécution, etc. C’est bien plus souple que d’utiliser les services Linux et systemd. Commencez par installer PM2 avec cette commande :

sudo npm install -g pm2

Si vous ne connaissez pas chemin de Node-RED, exécutez cette commande

which node-red

Sur Linux / Raspbian, il est devrait se trouver dans /usr/bin/node-red.

Pour lancer NodeRED, exécutez cette commande PM2

pm2 start /usr/bin/node-red -- -v

Pour finir, on enregistre la configuration et on active le démarrage automatique. C’est tout.

pm2 save
pm2 startup

Quelques commandes PM2 à connaître :

Indiquez l’identifiant ou le nom de l’application. Pour le trouver, exécutez pm2 status .

  • pm2 restart ID|NOM : relance NR.
  • pm2 stop ID|NOM : arrête NodeRED
  • pm2 log ID|NOM : affiche le journal d’exécution en temps réel du programme indiqué. C’est très pratique pour suivre l’exécution de NodeRED.
  • pm2 status ID|NOM
  • pm2 info ID|NOM : affiche de nombreuses infos utiles (état, chemins, versions…)

Premier programme avec Node-Red : faire clignoter une Led

Pour débuter, nous allons simplement faire clignoter une Led reliée sur le GPIO4 du Raspberry Pi. Pour cela nous allons utiliser la fonction inject qui envoi une pulsation chaque seconde (au choix). A chaque pulsation, on utilise la fonction “Inverse Etat Led” pour allumer ou éteindre la Led.

node-red blink led example clignote led

Copiez puis Importez directement ce code (Menu -> 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.

node-red blink led tweet filter

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

1 node-red twitter add credential

Cliquez maintenant sur “Click here to authenticate with Twitter”

2 node-red twitter authenticate with twitter

Vous allez être redirigé vers Twitter. Cliquez sur “Autoriser l’application”3 node-red twitter autoriser application

Enfin cliquez sur “Add” pour terminer la connexion avec votre compte Twitter.

4 node-red twitter twitter id

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.

node-red tweet search filtrer filtrer tweet

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

node-red openweathermap

Voilà, c’est aussi simple que ça !

node-red openweathermap météo

[{"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 ?
[Total: 2 Moyenne: 5]
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Vous rencontrez un problème avec ce sujet ?

Peut-être que quelqu’un a déjà trouvé la solution, visitez le forum avant de poser votre question

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

6 Commentaires
  1. Bonjour je suis entrain de faire un Dashboard avec node red et je bloque pour la météo. Je cherche à l’afficher sur le Dashboard. Pourriez-vous m’éclairer?
    Je vous remercie d’avance

    • Bonjour Stobbart, pas facile d’expliquer comment faire dans un commentaire, alors, j’ai rédigé un tutoriel complet que je viens de publier . J’espère que ça répond à votre besoin, si tel n’est pas le cas, n’hésitez pas à me laisser un message dans les commentaires. A bientôt.

  2. Pour la commande autostart de Node-Red c’est plutôt :

    sudo systemctl enable nodered.service

    au lieu de :

    sudo systemctrl enable nodred.service

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Domotique et objets connectés à faire soi-même
Vous avez aimé ce tutoriel

Ne manquez plus les prochains projets

Recevez chaque semaine le récapitulatif des tutoriels et projets.

Vous pouvez vous désabonner à tout moment.