Node-RED sous Synology DSM 7.0

Je l’avais évoqué dans un précédent article : il est possible de faire fonctionner Node-RED sous NAS Synology étant donné que Node.JS est un paquet officiel livré avec ce type de NAS.

Cependant il n’existe pas de paquets officiels pour Node-RED et bien souvent il faut passer par Docker pour faire fonctionner ce logiciel.

Voici comment se passer de Docker sous DSM 7.0 pour faire fonctionner Node-RED.

Je rappelle que DSM 7.0 reste en version bêta, et le paquet présenté est donc à considérer comme une version bêta.

Présentation

Pour ceux qui ne connaissent pas Node-RED, il s’agit d’une solution logicielle écrite en Javascript et se basant sur Node.JS.

C’est un outil pour connecter entre eux différents périphériques, APIs ou bien services en ligne de manière simple et très intéressante.

Pour cela, il propose un éditeur web pour connecter les différents éléments/traitements en se basant sur un système de noeuds.

Celui-ci peut être déployé et exécuté en un seul clic 🙂

Installation

Pour l’installer sur votre NAS Synology sous DSM 7.0, ajoutez l’URL http://digital.box.free.fr/dsm7/ dans le centre de paquets.

Dans l’onglet « Communauté » vous devriez voir apparaitre le paquet « Node-RED » :

Lancez l’installation du paquet et confirmez le message ci-dessous :

A la fin de l’installation, vous devriez voir apparaitre le message ci-dessous :

Cette manipulation sera détaillée dans la partie configuration qui suit.

Configuration

Sous DSM 7.0, pour des raisons de sécurité, il n’est pas possible qu’un paquet lance une installation avec l’utilisateur root.

C’est pour cette raison que la finalisation du paquet Node-RED nécessite un complément post-installation.

Pour cela, connectez-vous en SSH sur votre NAS et mettez-vous sous l’utilisateur root :

sudo -i

Si vous souhaitez faire directement la manipulation sous DSM – sans passer par SSH – vous pouvez aussi créer une tâche via le planificateur de tâches en précisant comme utilisateur « root » :

Lancez ensuite l’installation de Node-RED avec l’outil npm, soit en SSH, ou alors via une tâche sous DSM :

npm install -g --unsafe-perm node-red

En SSH, si vous voyez quelques messages d’erreur suite à cette installation, celles-ci n’ont pas d’incidence sur l’utilisation qui sera faite par la suite.

Vérifiez que la commande « node-red » a bien été installée :

which node-red
/usr/local/bin/node-red

Si vous êtes passé par une tâche sous DSM, attendez une ou deux minutes que l’installation se termine.

Avant de démarrer le paquet, je conseille de sécuriser l’accès à l’outil comme indiqué dans la page suivante.

Il faut savoir que le paquet proposé ici est installé sous DSM 7 via l’utilisateur « sc-nodered ».

Sous SSH via votre NAS, connectez-vous à cet utilisateur :

sudo su - sc-nodered -s /bin/sh

Allez ensuite dans le répertoire « .node-red » de cet utilisateur :

cd .node-red

Choisissez un mot de passe pour votre administrateur Node-RED (ici « password):

echo "password" | node-red admin hash-pw
Password: 
$2a$08$xi.Ped4i4cJWDZInCfkhGe893LWakuDLgvhKGdI./UhUbGH7JYGYW

Copiez le mot de passe codé obtenu de manière à l’insérer dans le fichier settings.js :

vi settings.js
    adminAuth: {
        type: "credentials",
        users: [{
            username: "admin",
            password: "$2a$08$xi.Ped4i4cJWDZInCfkhGe893LWakuDLgvhKGdI./UhUbGH7JYGYW",
            permissions: "*"
        }]
    },

La configuration est maintenant terminée !

Mise en pratique

Sous DSM 7, lancez à présent le paquet :

Si tout se passe bien, le statut doit passer à « En cours d’exécution » :

L’interface d’administration est disponible via l’adresse IP locale (ou publique) de votre NAS sur le port 1880 : par exemple http://192.178.1.79:1880

L’interface d’administration ci-dessous apparait. Connectez-vous avec votre admin/mot de passe définis précédemment :

Une fois connecté, vous devez arriver sur la page de l’éditeur :

Si vous êtes débutant sous Node-RED, il est possible de mettre en place un workflow minimum pour comprendre.

Pour cela, dans la barre latérale de gauche (la « palette »), glissez-déplacez un noeud de type « inject » vers l’écran principal (le « workspace ») :

Ajoutez ensuite un noeud de type « debug » :

Connectez les deux noeuds entre eux :

Finalisez en cliquant sur « Deploy » :

Votre premier flux est maintenant fonctionnel :

Pour vérifier son fonctionnement, cliquez sur l’onglet « debug » (symbole d’insecte) :

Et cliquez sur le bouton du premier noeud:

Si tout fonctionne, vous devriez voir apparaitre une date/heure au format numérique :

Pourquoi ne pas mettre en place un flux un peu plus intéressant avec un dashboard associé ?

C’est ce que nous allons voir par la suite.

Mettre en place un dashboard meteo

Tout d’abord, il est nécessaire d’installer des extensions à la palette actuelle.

Allez dans le menu en haut à droite puis « manage palette » :

Cliquez sur l’onglet « Install », puis entrez le mot « dashboard » :

Sélectionnez « node-red-dashboard » puis « install ».

Confirmez via le bouton « Install » :

Si vous retournez dans la palette vous devriez voir de nouveaux boutons disponibles dans la rubrique « dashboard » :

A partir d’une page vierge, glissez-déplacez un noeud de type « Inject » dans le flux :

Précisez un intervalle de répétition chaque 5 minutes comme ci-dessous :

Le noeud devrait apparaitre dans le flux avec un symbole de répétition comme ci-dessous :

Pour récupérer des informations météo, ajoutez un noeud de type « http request » :

Précisez dans la partie « URL », l’accès au service JSON ci-dessous :

https://www.prevision-meteo.ch/services/json/paris

Enfin indiquez que ce noeud doit renvoyer un objet de type JSON :

Ajoutez un noeud de type « function » pour récupérer uniquement la température du service JSON précédent :

Dans la fonction indiquez les deux lignes ci-dessous pour récupérer la valeur de la température :

msg.payload = msg.payload.current_condition.tmp;
return msg;

Enfin ajoutez un noeud de type « debug » et connectez les 4 noeuds ensemble comme ci-dessous :

Vérifiez que votre flux fonctionne correctement en cliquant sur « Deploy » puis sur le bouton de votre noeud « inject » :

Si tout se passe bien la température devrait s’afficher dans la console de debug, ici 12 degrés :

Maintenant que notre flux fonctionne correctement, nous allons ajouter un dashboard avec une jauge.

Glissez-déplacez un noeud de type « gauge » vers votre flux de travail :

Pour créer un dashboard, deux choses sont nécessaires : un « Group » et un « Tab ».

Double cliquez sur la jauge et cliquez sur le crayon à côté de « Groupe » pour créer un nouveau groupe.

Entrez le nom « Temperature » :

Cliquez également sur le crayon à droite du champ « Tab » pour indiquer que ce groupe sera rattaché à un nouveau « Tab ».

Celui-ci est appelé « Home » par défaut :

Validez avec « Add ».

De retour dans le noeud de type « Gauge », indiquez l’intervalle de valeur allant de 1 à 25 puis cliquez sur « Done » :

Enfin, connectez ce noeud à la fonction qui récupère la température et vous devriez avoir le flux ci-dessous :

Pour visualiser le dashboard, cliquez sur le dernier symbole en haut à droite ou alors choisissez le menu « Dashboard » :

Vous devriez avoir le symbole ci-dessous avec la flèche. Cliquez dessus pour accéder à votre Dashboard publique :

Vous devriez avoir la température affichée comme ci-dessous (celle-ci a augmenté de 2 degrés entre temps) :

Bingo !

Si jamais la jauge est à 0, vous pouvez cliquez une fois sur le premier noeud « inject » pour injecter une première température.

Avouez que le résultat est déjà plus sympa non ?

Notez que ce dashboard est partageable sur le web si le port 1880 est ouvert vers l’extérieur.

Pour aller plus loin

Si vous souhaitez en connaitre plus sur l’utilisation de Node-RED, vous pouvez toujours consulter les tutoriels sur le site officiel ou encore sur le site Node-RED guide.

Lorsque vous n’utilisez plus Node-RED sur votre NAS, pensez à stopper le paquet pour arrêter le service.

Les fichiers qui sont créés pour vos flux se trouvent stockés dans le dossier « /var/packages/nodered/home/.node-red » avec comme noms « flows_*.js » et « flows_*_cred.js ».

Si jamais vous souhaitez désinstaller le paquet, pensez à lancer les deux commandes ci-dessous pour enlever complètement Node-RED de votre NAS :

npm -g remove node-red
npm -g remove node-red-admin

Node-RED peut être utilisé dans beaucoup de cas d’usage, comme celui de faire communiquer entre eux des objets connectés ou alors des services en ligne.

L’intérêt du NAS ici est qu’il permet de publier simplement les résultats et de les mettre à disposition sur internet sous forme de dashboard si vous le souhaitez.

N’hésitez pas à indiquer dans les commentaires votre avis sur cet outil !

Une réflexion sur “Node-RED sous Synology DSM 7.0

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s