Table des matières

Sommaire Raspberry Pi sous Linux

Créer un flux de données et une interface utilisateur avec Node-RED

[Mise à jour le 27/7/2022]


1. Présentation

Node-RED est un outil de programmation visuel basé sur l'édition de flux de données. Il a été développé par IBM pour connecter des périphériques matériels, des API et des services en ligne dans le cadre de l'Internet des objets. L'éditeur de flux est basé sur un navigateur. Ceux-ci sont construits par glisser-déplacer et déployés en un seul clic.

Le moteur d'exécution est construit sur Node.js, tirant ainsi pleinement parti de son modèle non bloquant, piloté par les événements. Cela le rend idéal pour une utilisation sur du matériel à faible coût, tel que le Raspberry Pi, ainsi que dans le cloud.

Les flux créés dans Node-RED sont stockés à l'aide de JSON, qui peut être facilement importé et exporté pour être partagé.

2. Concept

On peut installer des nœuds supplémentaires à l'aide du gestionnaire de paquets npm ou de l'interface d'administration.

3. Installation de Node-RED et du module dashboard

3.1 Installation de Node-RED

Installer Node-RED en suivant le lien de la source ci-dessus.
Node-RED fonctionnant en tant que service, il peut être lancé ou stopper à partir d'un terminal.
node-red-start # démarre le service Node-RED et affiche le journal. 
# Le fait d'appuyer sur ctrl-C ou de fermer la fenêtre n'arrête pas le service; 
# il continue à fonctionner en arrière-plan
node-red-stop # arrête le service Node-RED
node-red-log  # affiche le journal du service
sudo systemctl enable nodered.service
sudo systemctl disable nodered.service

  1. Installer ou mettre à jour Node.js
  2. Installation de Node-RED
    Ouvrir une invite de commandes powershell ou cmd et vérifier les versions de Node.js et npm, installer node-RED et lancer Node-RED.
    *.ps
    # powershell
    node --version # vérification des versions 
    npm --version  
    # npm est mis à jour avec l'installation de la nouvelle version de Node.js (sur le compte admin)
    npm install -g --unsafe-perm node-red # installation de Node-RED (sur le compte élève)
     
    node-red # exécution de Node-RED
Si Node-RED ne se lance pas avec un message indiquant que le fichier settings.js n'est pas trouvé, créer le fichier ci-dessus dans le répertoire spécifié.

3.2 Installation du module dashboard

Redémarrez ensuite le Raspberry Pi pour vous assurer que toutes les modifications prennent effet sur le logiciel Node-RED
La mise à jour des modules se fait dans l'onglet Palette de Manage palette.

3.3 Accès à l'éditeur et au tableau de bord

L'accès à l'environnement de programmation se fait sur le port 1880 à partir d'un navigateur soit directement sur le Raspberry Pi (localhost: 1880), soit sur un ordinateur (<ip-address>:1880).Il est préférable d'utiliser le navigateur d'un ordinateur connecté sur le même réseau que la Raspberry Pi.

Pour ouvrir l'interface utilisateur Node-RED, tapez l'adresse IP du Raspberry Pi dans un navigateur, suivie de : 1880 / ui.

Exemple : 192.168.200.42:1880/ui

Pour le moment, le tableau de bord est vide comme vous pouvez le voir sur la figure suivante - car nous n'avons encore rien ajouté.

4. Description de l'éditeur

4.1 Le menu

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

A compléter

5. Créer un premier flux avec Node-RED

*.js
// Create a Date object from the payload
var date = new Date(msg.payload);
// Change the payload to be a formatted Date string
msg.payload = date.toString();
// Return the message so it can be sent on
return msg;

- Cliquez sur le bouton de déploiement puis sur . Désormais, lorsque vous cliquez sur le bouton Injecter, les messages de la barre latérale sont formatés et affichent des horodatages lisibles.

Exemple de comportement attendu :




6. Créer un deuxième flux avec Node-RED

L'interface utilisateur est conçue dans le paragraphe suivant.

7. Créer une interface utilisateur

7.1 Présentation

A illustrer

Il est conseillé d'utiliser plusieurs groupes plutôt qu'un grand groupe afin que la page puisse se redimensionner de manière dynamique sur des écrans plus petits.

7.2 Création de l'interface du deuxième flux

*.js
[{"id":"7ea54cd1.ce8a34","type":"ui_slider","z":"f2e4faa9.cd1dd8","name":"","label":"slider","tooltip":"","group":"ee35309d.13af6","order":0,"width":0,"height":0,"passthru":true,"outs":"all","topic":"","min":0,"max":"50","step":1,"x":260,"y":280,"wires":[["bc97d2a5.b93b1"]]},{"id":"bc97d2a5.b93b1","type":"ui_gauge","z":"f2e4faa9.cd1dd8","name":"","group":"ee35309d.13af6","order":1,"width":0,"height":0,"gtype":"gage","title":"gauge","label":"units","format":"{{value}}","min":0,"max":"50","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":470,"y":280,"wires":[]},{"id":"ee35309d.13af6","type":"ui_group","z":"","name":"Valeur","tab":"a740d7bd.dc5c68","order":1,"disp":true,"width":"6","collapse":false},{"id":"a740d7bd.dc5c68","type":"ui_tab","z":"","name":"Test","icon":"dashboard","order":1,"disabled":false,"hidden":false}]

le nom de l'icône doit être choisie dans la liste disponible ici.
Après avoir créé un onglet, vous pouvez créer plusieurs groupes sous cet onglet. Vous devez créer au moins un groupe pour ajouter vos widgets.

*.js
[{"id":"21b65a95.c084f6","type":"ui_gauge","z":"66098dac.f28304","name":"","group":"84281dde.b3e05","order":1,"width":0,"height":0,"gtype":"gage","title":"gauge","label":"units","format":"{{value}}","min":0,"max":10,"colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":420,"y":220,"wires":[]},{"id":"84281dde.b3e05","type":"ui_group","name":"valeur","tab":"f28a60dc.9887","order":1,"disp":true,"width":"6","collapse":false},{"id":"f28a60dc.9887","type":"ui_tab","name":"Test","icon":"dashboard","order":1,"disabled":false,"hidden":false}]

8. Sécuriser Node-Red

9. Projet Domotique HG (MàJ le 3/11/21)

  • Description du projet ici
  • Code des cartes ArduinoESP8266, ESP32 et MKR1010 ici
  • Code Node-Red ici
1)
Les nœuds sont déclenchés soit en recevant un message du nœud précédent dans un flux, soit en attendant un événement externe, tel qu'une demande HTTP entrante, une temporisation ou une modification matérielle GPIO. Ils traitent ce message, ou cet événement, puis peuvent envoyer un message aux nœuds suivants du flux.
2)
Un flux est représenté sous la forme d'un onglet dans l'espace de travail de l'éditeur et constitue le moyen principal d'organiser les nœuds.
3)
Les messages sont ce qui passe entre les nœuds d'un flux. Ce sont des objets JavaScript simples qui peuvent avoir n'importe quel ensemble de propriétés. Ils sont souvent désignés sous le nom msg de l'éditeur.
4)
Les messages possèdent un payload, c'est à dire, une propriété contenant les informations les plus utiles.
5)
Les fils connectent les nœuds et représentent la manière dont les messages transitent.
6)
L'espace de travail est la zone principale où les flux sont développés en faisant glisser les nœuds de la palette et en les reliant ensemble.
7)
zone de l'éditeur node-RED destinée à la création de l'interface utilisateur
8)
onglet de dashboard, permet d'ajouter et de réorganiser les pages de l'interface, réorganiser les groupes et les widgets, puis ajouter et modifier leurs propriétés.
9)
section dans une page
10)
page de l'interface utilisateur