Homey Community Forum

[Tutoriel 4] Création basique d’une interface Node-Red

Après avoir suivi les trois premiers tutoriels, nous voici donc arrivés à la dernière phase : comment utiliser Node-Red.
Je pars du principe que tout c’est bien déroulé, vous avez installé et configuré correctement MQTT Hub et MQTT Client sur Homey, et que Node-Red et MQTT Client, sont installés sur le Raspberry ou le Synology.

Se connecter à Node-Red

Pour l’utiliser, il faut bien s’y connecter. Node-Red installé sur le Raspberry, pour y accéder, rien de bien compliqué, avec votre Mac/PC, ouvrez votre navigateur préféré, et connectez-vous à l’adresse du Raspberry, pour moi c’est :
192.168.1.7:1880
Le port (1880) devrait être le même, remplacez juste l’IP par la vôtre.

Voici l’écran principal de Node-Red :


Sur la partie gauche, vous avec les « Nodes », au centre, la partie édition, et à droite, des infos diverses. Les « Nodes » sont le cœur de Node-Red, en les disposant dans l’éditeur et en les reliant entre eux, vous allez composer votre programme, un peu comme les flows de Homey.
D’ailleurs dans Node-Red, ces petits bouts de code s’appellent aussi des « Flows ».
Le bouton « Déploy » sert à lancer le Dashboard.

Avant de commencer, il faut installer le module « Dashboard », qui n’est pas installé par défaut dans Node-Red.

Installation du module Dashboard

Cliquez sur l’icône du menu en haut à gauche, puis sélectionnez « Manage Palette ».
Ensuite, cliquez sur l’onglet « Install », tapez « node-red-dashboard » dans le champ de recherche, puis sur « Install », pour démarrer l’installation.
Une fois l’installation terminée, dans la partie « Nodes »,vous avez tout un tas de nouveaux outils qui ont été installés à la rubrique Dashboard (switch, button…), ce sont principalement eux qui vont nous servir à créer notre interface.

Création du premier flow

Pour un premier essai, nous allons créer un premier flow qui affiche toutes les requêtes de nos objets connectés sur Homey.
03 - Premier Flow

Placez un premier node « MQTT In » dans l’éditeur, puis un autre « Debug », reliez ensuite les deux entre eux avec la souris, comme sur la capture d’écran.

Double cliquez sur le Node « MQTT IN », des options s’affichent.
04 - MQTT In
Dans « Topic », mettez « # », c’est un joker qui veut dire qu’il faut lire « tous les objets ».

Dans le champ « Server », cliquez sur le bouton de droite (crayons) pour voir cet écran :
05 - Serveur

Donnez un nom, entrez l’adresse IP de votre Raspberry et le port 1883 (pas le 1880), 1883 c’est le port pour MQTT Mosquitto.
Si vous avez défini un mot de passe pour Mosquitto, ce qui est recommandé, entrez votre user/mot_de_passe dans l’onglet « Security ». C’est terminé, vous pouvez tout valider.

En haut à droite, sous le bouton « Deploy », vous avez une icône « Debug », cliquez dessus pour faire apparaitre le bon onglet.
06 - Onglet Debug

Cliquez sur « Deploy » pour lancer Node-Red, vous devez voir défiler toute la liste de vos objets connectés dans la partie « Debug ».


Bravo, vous venez de créer votre premier flow avec Node-Red !

Trouver un objet déjà connecté à Homey

Vous êtes prêts ? Nous allons créer notre premier flow qui commande vraiment un de nos objets connectés ! J’ai choisi une lampe pour cet exemple, la mienne est reliée à une prise Osram, mais vous pouvez utiliser n’importe quel autre objet de votre installation.

Comment trouver facilement un objet connecté à Homey ainsi que ses paramètres ?
Il faut utiliser MQTT Explorer, dans cette capture d’écran, vous pour voir que j’ai cherché la lampe du bureau en utilisant le champ de recherche, c’est pour éviter d’avoir trop d’informations à l’écran.

Vous pouvez voir que la lampe à une propriété « ON/OFF », en cliquant dessus, vous voyez apparaitre le « topic » (l’adresse si vous voulez) de cet objet. C’est très important, c’est cette « adresse » qu’il faudra fournir à chaque fois à un Node. Dans l’exemple c’est :
homie/homey-topic/lampebureau/onoff
IMPORTANT, cette adresse ne fait que « lire », l’état de l’objet, plus tard, pour changer sa valeur, il faudra rajouter « /set » à la fin pour envoyer une commande du style « allumer/éteindre » :
homie/homey-topic/lampebureau/onoff/set
Maintenant que vous avez identifié l’objet voulu, nous allons créer un flow pour le commander.

Créer un premier Dashboard simple.

Avant d’ajouter notre lampe, il va nous falloir créer une page qui va afficher sur le navigateur. Le minimum pour Node-Red, c’est de créer un « Layout », une page de base, et un « Group », une zone dans laquelle vont s’afficher nos objets.

Cliquez sur l’icône « Dashboard » en haut à droite.
07 - Premiere page

Dans l’onglet « Layout », cliquez sur « + Tabs », cela va ajouter une page (un premier écran si vous préférez).
Cliquez ensuite sur « + Groups » pour ajouter un groupe, puis nommez-le. Dans l’exemple c’est « Eclairage », pour un groupe qui pourrait contenir des lampes par exemple.
Pour voir, et commander quelque chose, il va falloir ajouter un interrupteur ou un bouton.

Ajouter une lampe au Dashboard

Ajoutez un Node « MQTT In » sur l’éditeur, et double-cliquez dessus pour le paramétrer :

Dans « Topic », mettez l’adresse de votre objet, et donnez un nom facile à retenir. N’oubliez pas de sélectionner votre serveur si ce n’est pas déjà le cas.

Ajoutez ensuite un bouton « switch », c’est ce Node qui va s’afficher sur l’écran.


Rentrez les paramètres comme sur la capture d’écran, n’oubliez pas de lui indiquer « où » s’afficher (dans quel groupe), pour moi c’est dans le groupe éclairage.
IMPORTANT : Dans « on.payload » et « off.payload », j’ai sélectionné une valeur type « string », mais c’est valable pour ma config de lampe, pour vous, vous devriez peut être avoir à choisir le type « boolean » pour que ça fonctionne. En gros, on va envoyer « true » pour allumer la lampe, et « false » pour l’éteindre.
N’oubliez pas de RAJOUTER le « /set » à la fin dans la partie « topic », rappelez-vous que le « set » sert à définir la valeur, on ne veut pas seulement le lire la valeur, on veut la définir en ON ou OFF.

En dernier, ajoutez un node MQTT Out, qui va servir à envoyer la commande ON/OFF du bouton à la lampe.

Entrez les paramètres comme sur la capture d’écran, mais n’oubliez pas, là encore, de RAJOUTER le « /set » à la fin dans le champ topic, rappelez-vous que le « set » sert à définir la valeur, on ne veut pas seulement le lire la valeur, on veut la définir en ON ou OFF.

Cliquez sur « Deploy ».
Pour voir (enfin) la page vous devez aller sur la page du Dashboard avec votre navigateur, tout à droite dans l’onglet « Dashboard », il y a une petite icône « lien », en cliquant dessus vous allez ouvrir une fenêtre avec votre Dashboard.
12 - Lien Dashboard

Voilà votre interface!


En cliquant sur le switch, vous devriez allumer/éteindre la lampe !

Bravo, ce tutoriel est enfin terminé.
Même si on ne fait qu’allumer ou éteindre une lampe, cela fait pas mal de connaissances à acquérir en une fois. J’espère que tout s’est bien passé pour vous, si vous avez des questions ou des problèmes, n’hésitez pas.

4 Likes

Merci beaucoup pour ces tutos!
Je suis déjà à ce stade, comment as tu modifié l’apparence de ton dashboard?

Un node « template » avec le CSS à l’intérieur pour écrire par dessus le CSS existant.
Je le posterais quand j’aurai fait le ménage dedans :slight_smile:

2 Likes

Bonjour @DeepBlueNine, merci pour le tutoriel. Jusqu’ici tout s’est bien passé. N’aimeriez-vous pas écrire un autre tutoriel sur la façon de créer un si beau Dashboard? Le Dashboard d’origine semble ennuyeux.

Bonjour @lirand
Merci, content que tout se soit bien passé ! Bravo !

Alors pour un tutoriel sur la personnalisation du CSS, ce n’est pas que je n’aimerais pas en faire un, c’est que ça serait extrêmement long et complexe à faire.
Je ne peux pas faire juste une séquence de choses à faire, il faut connaitre la création de pages en HTML, savoir créer des feuilles de style CSS, utiliser le mode développeur des navigateurs pour inspecter le code source, bref, beaucoup de compétences qu’il faudrait que je mette en place dans plusieurs tutos. En fait c’est même un boulot à part entière, celui d’intégrateur Web.

Par contre ce que je ferais, c’est donner mon code qui permet d’avoir le style de mon dashboard, il suffira de le copier dans le vôtre pour avoir le même que moi.

3 Likes

Ce serait génial. Merci beaucoup!

Je pense que tu ne peut pas faire de nous des pros de la programmation, j’ai des petite notion du HTML mais meme la je nage, alors meme si tu poste tout ces codage on en s’auras pas quoi faire avec.

Si tu nous mets le nécessaire pour le style c’est déjà TOP, après chacun doit essayer soit même.
Ce que je trouve aussi super bien sur ce forum, c’est que on trouve de l’aide. Je suis aussi les post en allemand., pas en anglais car la je ne comprend pas assez. En allemand j’ai aussi trouver beaucoup d’aide très rapidement.
J’espère moi aussi pouvoir aider avec le savoir qui s’agrandi tout les jours…

Si tu ne sais pas, demande. Si tu sais, partage.

:slightly_smiling_face:

2 Likes

Que ce que je fait faut si le MQTT IN ne se connecte pas?

J’ai tout fait comme tu l’as décrit.

Voila le message a droite dans le debug:
25/06/2020 à 22:23:09
msg : string[567]
“↵↵---------------------------------------------------------------------↵Your flow credentials file is encrypted using a system-generated key.↵↵If the system-generated key is lost for any reason, your credentials↵file will not be recoverable, you will have to delete it and re-enter↵your credentials.↵↵You should set your own key using the ‘credentialSecret’ option in↵your settings file. Node-RED will then re-encrypt your credentials↵file using your chosen key the next time you deploy a change.↵---------------------------------------------------------------------↵”

Alors, il faut tu modifies le fichier “settings.js” de Node-Red. Il se trouve ici sur ton Raspberry :
~/.node-red/settings.js
Cherche la partie dans le texte credentialSecret et supprime les deux // devant cette partie.
Ensuite, à la place de a-secret-key, tape un mot de passe. Il va servir à crypter certains fichiers pour Node-Red.
Arrête et relance Node-Red, node-red-stop et node-red-start.

OK merci, je vais voir puisque je suis sur mon Synology il doit avoir une possibilité de configuration.

Question de comprehension…

Si je vais sur le NAS synology, dans le Node-Red, il y a un Terminal. Sa s’affiche comme dans l’invite de commande. La je peut créer une commande mais il me dis que le chemin est pas correcte?!

Une idée que ce que je doit mettre pour y arriver…

Désolé, pour le Synology, je ne peux pas vraiment t’aider. On voit bien que tu as un souci de connexion sur ta capture, mais pour savoir d’où ça vient, pas facile. Le port, ou le mot_de_ passe/login, ne sont peut être pas bons.

Je suis finalement arrivé au bout des 4 tutoriaux, merci beaucoup :slight_smile: J’ai juste encore 2 questions:

  1. Pour le test du tutoriel 4, j’ai choisi d’allumer une lampe Philips Hue. L’interrupteur dans l’interface fonctionne, mais mon interrupteur physique ordinaire (en fait un bouton Aqara, mais ce n’est pas déterminant) ne fonctionne plus, respectivement si je l’actionne, la lampe s’allume puis s’éteint immédiatement, comme si Node-Red prenait en quelque sorte le dessus. Si je coupe le Raspberry, tout rentre dans l’ordre. En résumé, est-ce qu’il y a une possibilité pour que Node-Red accepte le changement de valeur venant de l’extérieur et le prenne en compte?
  2. Pour quelqu’un qui n’est pas programmeur web, que conseillez-vous pour apprendre le plus efficacement possible à utiliser Node-Red afin de faire une interface comlète? Un livre, un site Internet de tutoriaux en particulier? Merci beaucoup d’avance!

@Picsou621
Parfait ! Voilà une bonne nouvelle, bravo ! :+1:

  1. C’est un problème qui m’est déjà arrivé au début, mais difficile de répondre comme ça sans voir aussi le flow qui contrôle la lampe. Pour mes lampes Hue, j’utilise l’extension : node-red-contrib-huemagic, à installer dans Node-Red.
    Un autre point important c’est de cocher les 2 options suivantes pour le serveur dans l’interface de Node-Red : “Use clean session” et “Use legacy MQTT 3.1 support”.
  2. Malheureusement à part des petits bouts de tutos en Anglais un peu partout, je ne connais pas de bouquins ou de tutos en Français :frowning:

Bonjour
Encore merci pour ces tutos j’en suis venu à bout aussi :muscle:
Je me renseigne un peu partout pour le fonctionnement un peu plus précis de Node red.
J’ai quelques questions :face_with_monocle:. Comment fais tu pour mettre en page correctement le dashboard ? Et comment peux t-on changer les apparences des icônes ?
Merci d’avance
Bonne journée tout le monde

Bonjour,
Le Dashboard fonctionne avec des « Widgets », la taille de base est définie dans l’onglet « Site », c’est un petit bloc, par exemple de 48x48px. Les « Widgets » sont ajoutés à l’écran dans un bloc plus grand appelé « Group », les uns à côté des autres sur toute la longueur de l’écran, en commençant en haut à gauche. Quand la taille maximum de l’écran est atteinte, les « Groupes » suivants sont ajoutés sur la ligne suivante.

Par exemple, sur mon iPad, une ligne complète sur toute la largeur de l’écran contient 18 « Widgets ». Si je veux 4 colonnes, je peux créer une colonne de 6 « Widgets », une seconde de 6, et 2 colonnes de 3, soit 18 « Widgets » au total.

Pour avoir un visuel de tout ça, il faut aller dans l’onglet « Layout », et cliquer sur le lien « Layout ». Les éléments dans cet écran se déplacent à la souris, ce qui permet de les arranger facilement.

Pour les icônes, ils sont listés ici : https://fontawesome.com/v4.7.0/icons/
La syntaxe est la suivante, par exemple pour afficher l’icône « Power » :
fa-power-off fa-2x
« fa-power-off » affiche l’icône, et sa taille est définie par « fa-2x » pour une icône x2, les tailles vont de 1 à 5 max.

Merci pour ta réponse très complète je suis sur que cela va aider pas mal de monde :+1:
Je vais pouvoir tout organiser proprement.
Bonne fin de journée à toi

1 Like

Bonjour
Je continue mes expérimentations de dashboard, j’ai épluché des tas de forums.
J’avais deux questions :thinking: concernant la météo et la date/heure.
Quels sont les flows que tu as utilisé ?
Merci d’avance
Bonne soirée

Bonjour,
Pour la météo, pour ceux qui utilisent OpenWeather, il suffit de jeter un coup d’oeil ici :
https://flows.nodered.org/flow/b5b7d5da14d24e71de447e6aa290937e/in/dbKdTXPTnHBx
Tout y est bien expliqué, et le flow est dispo.
Pour l’heure et la date, il faut installer Moment dans le Dashboard, ainsi que Simple Time.