RPi-NodeRed

De knowledge
Aller à la navigation Aller à la recherche

NodeRed est un produit fabuleux. Installons le sur un Raspbery PI. Ici un Raspberry PI 4 de base (4Go)

Installation

On commence par un simple:

sudo apt update
sudo apt install nodejs

Tout se passe bien. Mais ensuite on installe le gestionnaire de packages npm. Ca semple une formalité mais....

sudo apt install npm

à chez moi pris une éternité et installé une centaine de dépendances. Mais ça a terminé et j'ai pu terminé par :

sudo npm install -g --unsafe-perm node-red
added 312 packages in 47s

63 packages are looking for funding
  run `npm fund` for details

Bon, il suffit alors de lancer nodered.

node-red
11 Feb 22:38:13 - [info]

Welcome to Node-RED
===================

11 Feb 22:38:13 - [info] Node-RED version: v4.0.8
11 Feb 22:38:13 - [info] Node.js  version: v18.19.0
11 Feb 22:38:13 - [info] Linux 6.6.51+rpt-rpi-v8 arm64 LE

On peut ouvrir avec un navigateur:

http://XX.YY.ZZ.TT:1880

Si l'adresse IP du serveur est XX.YY.ZZ.PP (1880 est le port par défaut de NodeRed)

Nodered.png

Bon il y a quelques "popups" de présentation. On peut les lires la première fois!

Premier test

On va créer un petit "Hello world" avec nodered!

On "drague & droppe" trois éléments :

Nodered-exemple-001.png

On les relie entre eux:

Nodered-exemple-002.png

On édite l'élément "function 1".

msg.payload+=" Hello World!"
return msg;

Et on clique sur "Déployer" (le bouton rouge en haut à droite)

Deploy-nodered.png

On obtiens la confirmation.

On sélectionne, a droite, la fenêtre debug.

Nodered-debug.png

Et on clique sur le carré bleu de l'élément "horodatage".

Nodereddebug.png

A chaque clic on a une ligne dans les logs de debug... On a vu que dans "function 1" on ajoute "Hello World" au "timestamp" .

Sécurisation

Il serait tout de même préférable d'ajouter un "login password" non?

Pour cela, on va tout d'abord encoder un mot de passe. Il y a pour cela une commande : node-red admin hash-pw

node-red admin hash-pw
Password: <ici on tape le mot de passe sans echo>
$2y$08$AK6/jMQoUMpbnSxS3TTv3eIxiQfILfTjulpMvYxzomFi.ZZaz1IFu

On arrète le serveur nodered (ctrl + C)

Et on édite le fichier : /home/admin/.node-red/settings.js si admin est l'utilisateur que fait tourner le serveur.

Dans la section "security" on décommente la partie

adminAuth: {
    type: "credentials",
    users: [{
       username: "admin",
       password: "$2y$08$AK6/jMQoUMpbnSxS3TTv3eIxiQfILfTjulpMvYxzomFi.ZZaz1IFu",
       permissions: "*"
    }]
},

On crée un utilisateur nommé "admin" et dont le mot de passe est celui donné à node-red admin hash-pw.

Et on relance le serveur.

Et on relance la connexion avec le navigateur:

Nodered-login.png

On rentre Admin + mot de passe et on se retrouve connecté.