On découvre ici comment réaliser des automatisations avec Node-RED.
Introduction
Comme expliqué lors de mon installation de Node-RED, j’utilise maintenant Node-RED pour réaliser les automatisations de Home Assistant.
Nous verrons donc ici comment réaliser une automatisation par un exemple : celui réglant le problème de mon sèche-linge.
Explication
Problématique
Un des programmes de séchage de mon sèche-linge ne s’interrompt jamais
en fin de cycle. Forcément, c’est celui que j’utilise le plus et celui qui est
le plus efficace : le programme “jeans”.
Du coup, il faut que je prévoie d’aller l’arrêter en temps et en heure afin que
mes vêtements ne finissent pas comme des nouilles instantanées !
Solution
Ma première solution était de mettre un minuteur sur mon téléphone et
d’aller interrompre le cycle sans fin dès que les 2h10 de séchage sont écoulé.
Ce système me demande donc d’être présent à mon domicile lors de la fin du séchage.
Ayant une prise connectée (celle-ci),
j’ai eu l’idée d’y mettre le sèche-linge dessus pour couper le courant
à la fin du cycle.
Pour réalisé cela, j’ai crée un
timer sur HA et utilisé Node-RED
pour gérer le mécanisme.
Mécanisme
Ma prise Gosund SP1 est équipée d’un bouton et de deux LED (rouge et bleu) qui sont indépendantes (le bouton et les LED n’ont aucune influence sur le relais de la prise). Je peux donc les utiliser pour faire ce que je veux.
Dans mon implémentation, la LED bleue indique que le timer est en fonctionnement
et la rouge signifie que le timer est terminé (donc que le relais est coupé).
Le bouton sert à déclencher le timer et aussi à remettre le relais en fonctionnement
(quand le cycle est terminé).
De ce fait, le scénario décrit est le suivant :
- Lancement du cycle “jean” du sèche-linge
- Appuie sur le bouton de la prise
- Lancement du timer
- LED bleu actif
- [2h10 plus tard…]
- Le relais se coupe
- LED bleu éteint
- LED rouge actif
- [Quand je vais retirer les linges]
- Remise du sèche-linge sur “OFF” (via sa molette)
- Appuie sur le bouton de la prise
- Le relais redevient actif
- LED rouge éteint
Nous allons donc voir ici comment mettre cela en place.
Implémentation
Home Assistant
Bien qu’on peut utiliser les timers sur Node-RED, je préfère utiliser celui d’HA car cela me permet de consulté le temps restant sur Lovelace (via une carte de la communauté).
On crée donc notre timer sur HA :
# configuration.yaml
timer:
seche_linge_jeans:
duration: "02:10:00"
L’intégration de ma prise connectée me donne les entités suivantes sur HA :
binary_sensor.gosund_sp1_1_button
switch.gosund_sp1_1_relay
switch.gosund_sp1_1_led_blue
switch.gosund_sp1_1_led_red
Node-RED
Voici donc le flow au complet que j’ai réalisé : Ce dernier est composé de deux séquences : une pour la gestion du bouton et l’autre pour l’extinction du timer.
Dans un premier temps, nous allons voir le scénario de déclanchement :
On commence alors par récupérer les évènements liés au bouton de la prise.
On glisse donc un node “events: state” et on inscrit le nom de l’entité
(merci l’autocomplétion).
Dans le champ “If State”, on sélectionne “is” et l’on inscrit on
afin que le node
ait une sortie pour l’état “on” (lorsque le bouton est pressé).
Remarque
Condition des nodes
Le conditionnement (ex: “If State”) crée une sortie réalisant cette condition.
On peut multiplier les conditions comme ça nous chante.
Une dernière condition s’ajoute automatiquement, celle qui ne répond pas aux autres.
De ce fait, si on crée une condition VRAI, une sortie VRAI sera créée ainsi qu’une autre sortie : FAUX.
Ensuite, on vérifie le statut du relais avec un node “current state”. On fait de même pour celui de la LED bleue.
Si ce dernier est bien éteint (donc que le timer n’est pas déjà lancé), on lance le timer via un node “call service” :
On finit ce premier cas avec une notification Gotify grâce au service notify
d’HA :
Toujours à l’appui du bouton, si le relais est coupé, c’est que l’on est dans le cas où il faut remettre le système à son état initial.
On active alors le relais : Je vous laisse comprendre le reste de cette séquence… 🧐
Passons maintenant au cas du timer qui vient de finir.
Ici, c’est assez particulier.
Pour récupérer la fin du timer, j’ai crée un node qui écoute tous les évènements
de fin de timers d’HA et de filtrer si ce dernier correspond a
celui fait pour mon sèche-linge (timer.seche_linge_jeans
).
On récupère donc les fins de timers :
On filtre nos résultats via un node “switch” (couleur ocre)
via la propriété msg.payload.entity_id == timer.seche_linge_jeans
.
En effet, comme on peut le voir dans la définition du node précédant,
les données reçues (event.data
) sont transmises via la sortie msg.playload
.
Lorsque notre timer spécifié est terminé, on coupe le relais et la LED bleue, on allume la rouge et l’on envoie une notification.
Le flow terminé, on le déploie via le bouton Deploy en haut à droite.
Conclusion
Cet exemple d’application permet de voir la prise en main l’application Node-RED.
Je me suis mis à utiliser cet outil car je n’aimais pas la façon de faire
des automatisations sur HA.
Il faut savoir que certaines personnes utilisent seulement Node-RED
pour gérer l’ensemble de leur domotique (cela prouve la force de cet outil).
Pour ma part, j’aime bien avoir un frontend pour visualiser mes informations.
De ce fait, Node-RED sera pour moi une évolution de mon système plutôt qu’une refonte.
Ce logiciel montre que le low-code ouvre pas mal de possibilités en tout genre. Il serait peut-être intéressant pour moi de regarder l’autre solution qu’est n8n.