Prise en main de NodeRED
✎ Travail n° 1 C’est quoi NodeRED ?
🎯 Travail à faire :
Prendre connaissance du document Présentation générale
💻 Travail n° 2 Installation
On vous demande d’installer NodeRED sur Windows.
🎯 Travail à faire :
Procéder à l’nstallation de NodeRED en suivant les étapes ci-dessous :
La procédure est détaillée dans l’article Running on Windows |
-
Installer Node.js (avec son gestionnaire de paquets npm)
Ceci peut se faire de différentes façons mais la méthode la plus simple est de le faire depuis l’installateur au format MSI (→ Microsoft System Installer) disponible sur le NAS du labo (→
\\Diskstation\install\node.js
) ou, à défaut, dans la section Downloads du site officiel de Node.js.
Dans les versions proposées, toujours préférer la version “LTS” (→ Long Time Support) qui, comme son nom l’indique, propose un support à long terme : c’est une version stable.
-
Télécharger localement l’installateur
-
Suivre l’assistant d’installation
-
-
Saisir la commande qui suit depuis un terminal afin d’installer le paquet
node-red
depuis le gestionnaire de paquets de Node.js (→npm
).npm install -g --unsafe-perm node-red (1)
1 Installe globalement (→ option -g
) le paquetnode-red
-
Exécuter NodeRED en tapant la commande
node-red
depuis un terminal :C:\Users\ragnar>node-red (1) 2 Oct 15:24:40 - [info] Welcome to Node-RED =================== 2 Oct 15:24:40 - [info] Node-RED version: v3.0.2 (2) 2 Oct 15:24:40 - [info] Node.js version: v14.18.1 (3) [...] 2 Oct 15:24:44 - [info] Server now running at http://127.0.0.1:1880/ (4) [...]
1 On lance l’application NodeRED 2 le “log” de l’application indique la version de NodeRED 3 le “log” de l’application indique la version de Node.js sur laquelle s’exécute NodeRED 4 le “log” de l’application indique l’url sur laquelle il faut se rendre avec un navigateur pour afficher l’interface de NodeRED
L'espace de travail est la zone dans laquelle le ou les flux (→ flows) constituant l’application à développer prennent place. Les flux sont constitués de nœuds (→ nodes) que l’on glisse depuis la palette puis qu’on relie entre eux. Le comportement des nœuds est dicté soit par des options disponibles lorsque l’on double-clique dessus soit par du code Javascript
La Palette liste les nœuds qu’il est possible de glisser/déposer sur l’espace de travail. Certains sont disponibles par défaut mais il est possible d’en installer d’autres.
La Barre latérale contient des panneaux qui fournissent des outils/informations utiles (informations/aide sur les nœuds, affichage de messages de deboggage lors de l’exécution de l’application, …)
💻 Travail n° 3 Premier flux NodeRED
Le site de NodeRED propose un tutoriel de prise en main de l’outil. Il consiste à créer un 1er flux qui se contente d’afficher la date de son exécution.
🎯 Travail à faire :
-
Suivre le tutoriel Creating your first flow
.
Le résultat attendu doit ressembler à ce qui suit :
-
Qu’indique le point bleu qui s’affiche sur un ou plusieurs nœuds ? Quelle action faut-il alors entreprendre avant d’exécuter le flux ?
-
Que représente selon vous le
msg.payload
qui apparaît dans les options de chaque nœud ou le code Javascript qu’on vous demandé de saisir dans le nœud de fonction ?
💻 Travail n° 4 Interface Web
On vous propose maintenant de coder pas-à-pas dans NodeRED un flux qui dispose d’une interface web pour interagir avec lui.
Cette interface web sera constituée :
-
d’une jauge circulaire
-
d’un slider qui permettra de faire varier le curseur de la jauge circulaire
-
d’une courbe qui affichera l’évolution des valeurs affichées sur la jauge circulaire
🕮 Apport de connaissances :
Un module additionnel de NodeRED — nommé node-red-dashboard
— propose une série de nœuds qui, une fois ajoutés à la palette de NodeRED, permettent de créer facilement une interface web de supervision. Celle-ci pourra être utilisée pour suivre en temps réel l’évolution de données diverses (températures, cours du bitcoin, …) sous différentes formes (jauges, courbes, histogrammes)
🎯 Travail à faire :
-
Ajouter le module
node-red-dashboard
à NodeRED par l’intermédiaire du gestionnaire de paletteUne nouvelle palette de nœuds est alors disponible
-
Faire glisser les nœuds “Slider” et “Gauge” sur l’espace de travail et les relier entre eux
Pour que ces composants graphiques soient bien disposés sur l’interface Web, il faut les intégrer dans un onglet (→ Tab) et dans un groupe (→ Group). En effet, l’interface Web est composée d’un ou plusieurs onglets et chacun d’eux est constitué de zones/groupes dans lesquels sont disposés les composants graphiques.
-
Configurer les 2 nœuds pour les disposer dans un onglet nommé “Accueil” au sein d’un groupe nommé “Groupe n°1”. Exemple pour le nœud “Slider” :
-
Déployer le flux avec le bouton Deploy puis accéder à l’interface web en se rendant à l’url http://127.0.0.1:1880/ui/ dans un nouvel onglet du navigateur internet
-
Actionner le curseur et constater l’effet sur la jauge circulaire
-
Parcourir les options des 2 nœuds pour faire en sorte que :
-
l’étendue des valeurs délivrées par le curseur aille de 0 à 100
-
le secteur actif de la jauge circulaire s’affiche en jaune lorsque la valeur du curseur est comprise dans l’intervalle [0, 25], en vert lorsqu’elle est comprise dans l’intervalle ]25, 75] et en rouge lorsqu’elle est comprise dans l’intervalle ]75, 100]
-
-
Faire glisser le nœud “Chart” (→ Courbe) sur l’espace de travail et le relier, comme le nœud “Gauge”, à la sortie du nœud “Slider”
-
Déployer le flux et se rendre sur l’interface Web pour constater les actions du slider sur la jauge circulaire et la courbe.
-
Modifier les options du nœud “Chart” pour n’afficher les variations du curseur que durant les 5 dernières minutes et pour que son titre soit “Variations du curseur”
-
Faire constater le travail à l’enseignant
💻 Travail n° 5 Contrôle de la qualité d’air
On désire à présent construire une interface web qui affiche le bulletin de qualité d’air de la date courante pour l’Isle sur la Sorgue (code INSEE de la commune : 84054).
L’objectif de ce travail est de parvenir à une interface web dont un aperçu est donné ci-dessous :
🕮 Apport de connaissances :
Le bulletin de qualité d’air de l’Isle sur la Sorgue est publié quotidiennement sur le site internet de l’association AtmoSud .
L’indice ATMO qualifie l’état de l’air selon 6 classes :
-
Bon
-
Moyen
-
Dégradé
-
Mauvais
-
Très mauvais
-
Extrêmement mauvais
Il est calculé quotidiennement, à partir de concentrations de 5 polluants réglementés, aux effets sanitaires avérés :
-
les particules fines dont le diamètre est inférieur à 10 micromètres (→ PM10),
-
les particules fines dont le diamètre est inférieur à 2.5 micromètres (→ PM2.5),
-
le dioxyde d’azote (NO2),
-
l’ozone (O3),
-
le dioxyde de soufre (SO2).
L’indice ATMO correspond alors au plus dégradé des sous-indices calculés pour chacun de ces 5 polluants.
Voir Comprendre les indices pour qualifier l’air |
En plus du site internet, l’indice ATMO ainsi que les sous-indices associés aux 5 polluants sont accessibles à travers ce qu’on appelle une API Web.
Une API Web est un service web qui permet de récupérer des informations “brutes” à partir d’une URL. Cette URL spécifie non seulement le chemin de la ressource mettant à disposition les informations mais précise aussi ce qu’on souhaite vraiment récupérer (valeurs, format, étendue…)
Ainsi, l’URL https://api.atmosud.org/iqa2021/commune/bulletin/journalier/derniers?format_indice=couleur,qualificatif&indice=no2,o3&format=csv&insee=13055 permet de récupérer :
-
le dernier bulletin journalier (→ https://api.atmosud.org/iqa2021/commune/bulletin/journalier/derniers)
-
… pour la ville de Marseille (→
insee=13055
) -
… au format csv(→
format=csv
, coma separated values ou valeurs séparées par des virgules) -
… indiquant les indices de dioxyde d’azote et d’ozone (→
indice=no2,o3
) -
… sous la forme de couleur et de qualificatif (→
format_indice=couleur,qualificatif
).
date_diffusion,date_echeance,echeance,code_insee,nom_commune,lon,lat,majoritaire,no2_couleur,no2_qualificatif,o3_couleur,o3_qualificatif
2022-10-02,2022-10-04,2,13055,MARSEILLE (13),5.44099652485599,43.294823038496,"['no2', 'o3']",#50CCAA,Moyen,#50CCAA,Moyen
2022-10-02,2022-10-03,1,13055,MARSEILLE (13),5.44099652485599,43.294823038496,"['no2', 'o3']",#50CCAA,Moyen,#50CCAA,Moyen
2022-10-02,2022-10-02,0,13055,MARSEILLE (13),5.44099652485599,43.294823038496,"['no2', 'o3']",#50CCAA,Moyen,#50CCAA,Moyen
2022-10-02,2022-10-01,-1,13055,MARSEILLE (13),5.44099652485599,43.294823038496,"['no2', 'o3']",#50CCAA,Moyen,#50CCAA,Moyen
Vous pouvez remarquer que la structure de l’URL est de la forme :
avec :
|
🎯 Travail à faire :
-
En vous aidant des informations du site Nouvel Indice de la Qualité de l’Air (IQA)
, établir l’URL qui permet de récupérer le dernier bulletin pour l’Isle sur la Sorgue, au format JSON, avec tous les indices sous forme de valeur (→ 1, 2, …) et de qualificatif (→ “bon”, “moyen”…). Tester depuis le navigateur.
Consulter l’article Wikipedia JavaScript Object Notation pour une présentation du format JSON.
Exemple de résultat attendu
{ "date_diffusion": "2022-10-02", "indices": [ { "commune": "L' ISLE-SUR-LA-SORGUE (84)", "code_insee": "84054", "valeurs": [ { "date_echeance": "2022-10-04", "echeance": 2, "majoritaire": [ "o3" ], "indice": { "valeur": 2, "qualificatif": "Moyen" }, "no2": { "valeur": 1, "qualificatif": "Bon" }, "o3": { "valeur": 2, "qualificatif": "Moyen" }, "pm10": { "valeur": 1, "qualificatif": "Bon" }, "pm2.5": { "valeur": 1, "qualificatif": "Bon" }, "so2": { "valeur": 1, "qualificatif": "Bon" } }, { "date_echeance": "2022-10-03", "echeance": 1, "majoritaire": [ "o3" ], "indice": { "valeur": 2, "qualificatif": "Moyen" }, "no2": { "valeur": 1, "qualificatif": "Bon" }, "o3": { "valeur": 2, "qualificatif": "Moyen" }, "pm10": { "valeur": 1, "qualificatif": "Bon" }, "pm2.5": { "valeur": 1, "qualificatif": "Bon" }, "so2": { "valeur": 1, "qualificatif": "Bon" } }, { "date_echeance": "2022-10-02", "echeance": 0, "majoritaire": [ "o3" ], "indice": { "valeur": 2, "qualificatif": "Moyen" }, "no2": { "valeur": 1, "qualificatif": "Bon" }, "o3": { "valeur": 2, "qualificatif": "Moyen" }, "pm10": { "valeur": 1, "qualificatif": "Bon" }, "pm2.5": { "valeur": 1, "qualificatif": "Bon" }, "so2": { "valeur": 1, "qualificatif": "Bon" } }, { "date_echeance": "2022-10-01", "echeance": -1, "majoritaire": [ "o3" ], "indice": { "valeur": 2, "qualificatif": "Moyen" }, "no2": { "valeur": 1, "qualificatif": "Bon" }, "o3": { "valeur": 2, "qualificatif": "Moyen" }, "pm10": { "valeur": 1, "qualificatif": "Bon" }, "pm2.5": { "valeur": 1, "qualificatif": "Bon" }, "so2": { "valeur": 1, "qualificatif": "Bon" } } ] } ] }
-
Dans NodeRED, créer un flux disposant reliant, dans l’ordre, les nœuds “Inject”, “http request” et “Debug”
-
Configurer les nœuds pour que l’activation du flux en cliquant sur le nœud “Inject” déclenche une requête HTTP sur l’URL déterminée à la question précédente et affiche son résultat dans le nœud “Debug”
-
Compléter le flux NodeRED pour qu’il soit conforme à celui représenté ci-dessous :
Les nœuds “set msg.payload” correspondent au nœud la palette standard nommé “Change”.
Le nœud “Date” est le nœud “Text” de la palette “dashboard”
Les nœuds “NO2”, “O3” et “PM2.5” sont les jauges circulaires de la palette “dashboard”
-
Configurer les nœuds “Change” de façon à ce qu’ils délivrent en sortie l’information à afficher dans leurs jauges circulaires respectives.
-
Configurer les nœuds des jauges circulaires pour qu’elles affichent dans le groupe “Isle sur la Sorgue” de l’onglet “Qualité d’air” de l’interface Web, l’indice de chacun des polluants avec un secteur dont la couleur dépendra de la valeur (“Bon” → vert, “Moyen” → jaune, au delà → rouge)
-
Compléter le flux pour indiquer l’indice ATMO c’est-à-dire l’indice correspondant au plus dégradé des sous-indices calculés pour chacun de ces 5 polluants.
L’indice ATMO est déjà fourni dans les données renvoyées par l’API WEB ⇒ Vous devez seulement le localiser et non le calculer.
-
Configurer le nœud “Text”/“Date” pour qu’il affiche la date du jour
Consulter l’aide de ce nœud — accessible depuis la barre latérale — pour savoir comment fixer la valeur du texte à la date du jour.
L’extrait suivant peut s’avérer utile :
“The label can also be set by a message property by setting the field to the name of the property, for example {{msg.topic}}.”
-
En s’aidant du flux NodeRED flow-customize-gauge
(🕮 Source : How to add sectors in a gauge? - Dashboard - Node-RED Forum
) personnaliser les jauges de votre interface web pour qu’elles disposent de 6 secteurs (3 à l’origine) afin de pouvoir afficher les 6 valeurs d’indice de polluant possibles avec 6 couleurs différentes.
Pour importer le flux NodeRED fourni, aller dans le menu
🞄 🞄 🞄