Commander une prise Z-Wave avec un bouton Zigbee!

Introduction

Ce projet repose sur Home Assistant, mon instance utilise à la fois des périphériques Wi-Fi, Zigbee and Z-wave.

Dans cet article, j’explique comment j’ai utilisé Node-RED pour commander une prise z-wave depuis un bouton zigbee. L’article est surtout un bon point de départ pour démystifier la « magie » opérée par Home Assistant afin de faire dialoguer du matériel initialement pas vraiment pour.

Néanmoins, cet article n’explique pas la configuration des réseaux et appareils z-wave / zigbee.

Schéma de principe

Nous avons dans ce schéma les 4 grands réseaux utilisés:

  • Wi-Fi : Réseau sans fil entre le routeur Wi-Fi, un smartphone et le pont Sonoff Wi-Fi / zigbee;
  • Zigbee : Réseau sans fil pour le bouton Sonoff zigbee et le pont Sonoff;
  • LAN : Réseau câblé entre le routeur Wi-Fi et le serveur Home Assistant;
  • Z-Wave : Réseau sans fil pour la prise connectée Z-Wave et le dongle Z-Wave UZB.

Malgré la diversité des réseaux, on voit que le point commun est le serveur Home Assistant. Son travail dans ce scénario est de convertir les ordres du bouton Sonoff afin de modifier le statut de la prise Z-Wave : allumé / éteint.

Voilà qui semble bien compliqué pour simplement changer le statut de la prise, il est vrai que l’on peut faire plus simple en n’utilisant que du matériel Zigbee ou Z-wave… ou même une prise RF433. C’est malgré tout la configuration la plus simple pour illustrer comment connecter le tout, ce qui est le but de cet article.

Nous verrons plus bas comment Home Assistant, grâce à Node-RED, convertit les ordres Zigbee vers Z-Wave.

Matériel requis

Au delà du serveur Home Assistant, il vous faut créer quatre réseaux distincts : LAN, Wi-Fi, zigbee et z-wave.

Mes articles détaillés ne sont pas encore disponibles en français, voici pour le pont zigbee.

Note : Il est tout à fait possible d’utiliser des dongles zigbee / z-wave directement sur le serveur Home Assistant, mais j’essaie autant que possible de découpler le hardware du serveur Home Assistant (surtout que c’est une machine virtuelle hébergée dans un coin du garage, la réception n’est pas géniale).

Réseau LAN : La dorsale de tout réseau

Vous disposez très probablement déjà d’un réseau LAN, la forme la plus basique est un ordinateur relié par câble au modem de votre fournisseur internet. Les ports étant comptés sur le modem, vous aurez très probablement besoin d’un switch pour des prises supplémentaires.

Pour un réseau de qualité  supérieure, utilisez du matériel de grandes marques comme Ubiquiti, TP-Link ou encore Cisco.

Attention : Le gigabit (réseau 1 Gbps, soit 1000 Mbps) s’est à présent fortement démocratisé. Avec des vitesses internet dépassant les 100 Mbps, il est essentiel de prendre du matériel gigabit.

Si vous comptez améliorer votre réseau, pensez à prévoir assez de ports libres sur le switch (un 8 ports est un minimum, un 16 ports est recommandé).

Vérifiez également que vous disposez de câbles réseaux « Catégorie 5e » au minimum, privilégiez le « Catégorie 6« . Il existe même du « Catégorie 7 » pouvant supporter 10 Gbps mais ce n’est pas encore très abordable.

Réseau Wi-Fi : Home Assistant et le pont Sonoff

Commençons simple, un réseau Wi-Fi classique. Je vous conseille d’utiliser du bon matériel si vous avez un modem/routeur basique de votre fournisseur internet.

En particulier, j’utilise deux point d’accès Wi-Fi Ubiquiti UAP-AC-LR. Le suffixe « LR » est pour « Long Range », c’est un gage de qualité pour votre Wi-Fi. Ces antennes arrivent à pousser le signal jusqu’au milieu du jardin en traversant la moitié de la maison (~5m dans la maison et 25m en extérieur). Elles sont aussi excellentes pour supporter de nombreux périphériques, que ce soit des smartphones, PC ou des périphériques ESP8266. Cerise sur le gateau, elles sont également POE (Power Over Ethernet) afin de les placer où vous voulez avec juste un cable réseau (l’alimentation électrique passe par le cable réseau!).

Pour exploiter le POE, vous devrez utiliser « l’injecteur » fourni (il ajoute l’électricité au câble) ou un switch compatible POE. Un switch compatible est plus onéreux mais simplifie grandement l’installation.

Attention : La plupart des switch POE ne propose le POE que sur la moitié des ports. Un switch POE 8 ports n’a donc probablement que 4 ports fournissant le fameux POE.

Réseau zigbee : Pont Sonoff et bouton Sonoff

Voici un réseau spécialisé que vous n’avez peut-être jamais rencontré. Le zigbee est un réseau basse consommation pour le matériel domotique.

Notre configuration utilise une passerelle Wi-Fi – Zigbee Sonoff Zigbee Bridge (SN-ZBBridge) ainsi qu’un bouton Sonoff (SNZB-01).

De part sa nature, le pont est obligatoirement en Wi-Fi et cela sous-entend que vous pouvez le placer où il est nécessaire. Bien que cet exemple n’exploite qu’un bouton, pour un plus grand réseau il peut être nécessaire d’ajouter des « relais » (des appareils zigbee branchés sur le 220v comme une prise connectée).

Il existe une foule d’appareils zigbee, allant du simple bouton au thermomètre en passant par les commandes de volets, les détecteurs de mouvement et j’en passe.

Réseau Z-Wave : Pont Z-Wave et prise Z-Wave

Similaire au zigbee, il requière cependant un autre matériel incompatible avec le zigbee.

Ma configuration type repose sur un dongle Z-Wave Plus USB et une prise connectée Z-Wave.

Comme cette partie exploite une prise 220V, elle est donc également un relai du réseau Z-Wave. Plusieurs prises pourront discuter ensemble pour couvrir l’ensemble de votre zone. Même si vous n’en utilisez pas à certains endroits, il reste judicieux d’en acheter en lots pour les placer dans les zones où la couverture serait moins bonne.

A propos de Node-RED

Node-RED est un outil graphique permettant de lier matériels, entités, logiques et autres en connectant ceux-ci par des fils virtuels. Ces fils permettent de  câbler les éléments ensemble, ce qui fait circuler des messages d’un à l’autre et déclencher les événements sans (quasiment) écrire de code.

Nous utiliserons cet outil afin d’écouter les messages zigbee, les interpréter en commandes et les envoyer aux appareils Z-Wave concernés.

Pour savoir comment l’installer, je vous renvoie aux documentations de l’addon Home Assistant et Node-RED.

Lorsqu’un événement a lieu, comme l’appuie d’un bouton ou le changement de valeur d’une entité, un message est envoyé là où l’événement a été détecté. Ce message contient plusieurs informations dont la plus importante est le « payload » (le corps du message).

C’est en faisant circuler intelligement (enfin, autant que possible) ces messages que « nous programmons en Node-RED ».

NB: Il existe un nœud spécial « Function » qui lui permet réellement d’utiliser du javascript pour effectuer des opérations plus complexes.

Création du flow

Qu’est-ce qu’un Flow ?

Dans Node-RED, on groupe les éléments (des nœuds) dans des onglets appelés Flow. Il est possible d’activer ou désactiver tout un Flow, ce qui est pratique pour les organiser et tester facilement des choses.

Les nœuds de base

Envoi manuel d’un message

Afin de découvrir les nœuds, commençons simple par l’envoi manuel d’un message vers la console de debug.

Nous aurons besoin d’un nœud de type Inject, qui est comme un bouton dans le flow, ainsi que d’un nœud Debug qui enverra le message reçu vers la console de debug.

Voyons le flow et la configuration pour nos deux nœuds:

  • Nœud « Inject » : Son rôle est d’envoyer dans le flux un message, nous lui assignons la valeur « Our Paylo4d »;
  • Nœud « Debug » : Son rôle est de lire tout message et l’envoyer dans la console de développement.

 

En cliquant le bouton situé à la gauche du nœud Inject, le message apparaîtra dans la console de développement.

Envoi d’un message sur base d’un appareil zigbee

Maintenant que nous « voyons » passer les messages, essayons d’envoyer le message lorsque l’on appuie sur le bouton Sonoff SNZB-01.

Le bouton, connecté au pont zigbee, déclenche un événement grâce à l’intégration Zigbee et au mode « ZHA » (Zigbee Home Assistant).

Chaque bouton étant unique, il nous faut récupérer le code de ce bouton spécifique.

Pour ce faire, il convient d’aller écouter les événements, appuyer sur le bouton et retrouver l’événement contenant le code du bouton.

Une fois ce code connu, il reste à l’intégrer dans un filtre en sortie des événements ZHA.

Ecouter les messages zigbee

Pour écouter les message zigbee, nous utilisons un nœud de type « Events« , le type d’événement est zha_event.

Events node : Listen to zha_event

Interpréter les événements zigbee en commandes

Attention : Abusez du nœud « Debug » afin de connaitre les codes utilisés par vos appareils. L’identifiant de l’appareil est repris dans le message sous msg.payload.event.unique_id.

Comme chaque bouton aura un identifiant unique, il est nécessaire de router le message vers les bons nœuds. Le plus simple est d’utiliser un nœud de type « Switch ». Chaque ligne de configuration crée un point de sortie sur ce nœud.

Switch node

Dans mon cas, le bouton « 1 » de la cuisine utilise l’identifiant 00:12:4b:00:22:42:58:32:1:0x0006.

Il reste à vérifier qu’il s’agit d’un bouton, la commande envoyée sous msg.payload.event.command doit être « toggle« .

Switch node : Check commadn value

Appel d’un service Home Assistant

Maintenant que le bouton est câblé, il reste à utiliser son message pour changer l’état de la prise Z-Wave de allumé vers éteint et inversement. Pour cela, nous allons faire appel au service Home Assistant switch.toggle. Celui-ci fera alterner la prise entre ON/OFF. Il n’est donc pas nécessaire de connaître le statut actuel de la prise.

Service node : Switch toggle

Configuration finale

Le tout étant remis ensemble, voici le Flow terminé, félicitations !

Full flow

Conclusion

Ce simple exemple permet de démystifier Node-RED et l’apparente complexité de systèmes hétérogènes. Ma clé pour comprendre tout cela est d’imaginer les messages circulant entre les noeuds.

De prime abord, le messages semblent basiques car l’attribut « payload » est celui le plus visible, il m’a donc été nécessaire d’explorer le détail du message en exploitant un nœud Debug pour afficher l’ensemble des attributs.

Finalement, voici mon matériel « en conditions réelles ».

Post Author: Shut

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *