Featured image of post HA : Node-RED

HA : Node-RED

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é : Flow complet 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 : Cas : Déclanchement du timer

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). Ecoute de l’état du boutton 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”. Statut relais 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” : Lancement du timer

On finit ce premier cas avec une notification Gotify grâce au service notify d’HA : Notification

Détail champs data de la notification

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. Cas : RAZ

On active alors le relais : Service Node : Relais Je vous laisse comprendre le reste de cette séquence… 🧐

Passons maintenant au cas du timer qui vient de finir. Cas : Timer terminé

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 : Ecoute fin des 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. Filtrage pour le timer du sèche-linge

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.

Généré avec Hugo
Thème Stack conçu par Jimmy