#Test du pont Zigbee2MQTT, hack Gateway Xiaomi Smart Home Aqara. Partie 1 : assemblage, démo avec Node-RED, boitier

Il y a trois semaines, je vous ai présenté le projet Zigbee2mqtt qui permet de fabriquer un pont domotique à l’aide d’un sniffer Zigbee CC2531 de Texas Instrument. C’est un projet équivalent au projet français Zigate. Il est compatible avec la plupart des accessoires domotiques Xiaomi Smart Home Aqara et Mijia ainsi que quelques ampoules Ikea. Après environ 3 semaines d’attente, j’ai reçu tout le matériel nécessaire il y a quelques jours (CC Debugger, Sniffer CC2531 et interface de câblage GBAN).

 

Je vous propose un test grandeur réelle avec quelques accessoires Xiaomi Mijia. Outre de nombeux avantages, le projet Zigbee2MQTT va nous permettre de nous débarrasser de la gateway officielle et garder la main sur vos données personnelles. Toutes les mesures, états, commandes resterons chez vous. Le code source est entièrement disponible sur GitHub.

Matériel nécessaire pour fabriquer la Gateway Xiaomi Zigbee

Le pont zigbee2mqtt utilise un sniffer basé sur le circuit CC2531 (environ 5€) de Texas Instrument. Il faudra acheter un CC Debugger de Texas Instrument (environ 16€) pour installer et mettre à jour le firmware sur le sniffer. Il faudra également acheter un câble spécifique (GBAN) qui permet de relier le CC Debugger au Sniffer CC2531 (environ 2€). à chaque fois que vous voulez mettre à jour le firmware.

Matériel nécessaire pour faire fonctionner le pont Zigbee2MQTT

Une fois que le firmware est installé sur le sniffer CC2531, vous n’aurez plus besoin du CC Debugger et de l’interface GBAN. C’est un investissement d’environ 20€ pour fabriquer la gateway Zigbee mais rien ne vous empêche de fabriquer plusieurs Gateway. En utilisant un Raspberry Pi Zero ou un Orange Pi Zero en Ethernet vous pourrez très facilement augmenter la couverture Zigbee dans votre habitation ou pourquoi pas votre jardin.

Ici, nous utiliserons un Raspberry Pi 3 équipé d’une carte SD de 16Go sur laquelle sont installés Node-RED, Domoticz et le broker MQTT. Node-RED nous servira à intégrer les appareils Zigbee à l’application Maison (Homekit) sur iOS.

Principe de fonctionnement du pont Zigbee2MQTT

Toutes les actions, états, mesures sont donc interceptées et publiées sur un broker (serveur) MQTT. La passerelle est bi-directionnelle, c’est à dire qu’on pourra également pilotés les appareils Zigbee en envoyant des messages MQTT.

architecture zigbee mqtt xiaomi aqara

Le projet a été développé en javascript à l’aide de Nodejs. En théorie, on pourra donc faire fonctionner la passerelle sur PC Windows/Linux, MAC et mini PC ARM tel que le Raspberry Pi ou Orange Pi. Pour ce tutoriel, nous allons le déployer sur un Raspberry Pi 3 sur lequel est également installé un broker MQTT (Mosquitto), Node-RED et Domoticz.

Installation du firmware sur le sniffer CC2531

Les étapes d’installation sont peu nombreuses et très bien expliquées sur le WiKi officiel. Je n’ai rencontré aucune difficulté particulière. Le Wiki propose plusieurs méthodes d’installation pour chaque système (Linux, macOS), mais le plus facile est encore d’utiliser un PC Windows.

Installer SmartRF Flash Programmer

Commencez par récupérer la version 1 du logiciel SmartRF Flash Programmer sur le site de Texas Instrument en allant sur cette page. Vous aurez besoin de créer un compte utilisateur gratuit. Décompressez le ZIP et installez SmartRF Flash Programmer.

install SmartRF Flash Programmer cc debugger cc2531 zigbee mqtt

Branchez le CC Debugger et le Sniffer CC2531

Branchez le Sniffer au CC Debugger à l’aide d’un câble de liaison. Le Sniffer est équipé d’un connecteur au pas de 1mm. La carte GBAN sert juste à changer de format de câble. Il n’y a pas de détrompeur sur le CC2531. Utilisez la photo ci-dessous pour orienter correctement le câble (le détrompteur vers l’intérieur du Sniffer).

cc2531 usb sniffer connected to coucou debugger

Branchez le CC Debugger et le Sniffer CC2531 sur l’ordinateur. La LED du Debugger va être rouge au branchement., Appuyez sur le bouton RESET pour la passer en vert. On est prêt pour flasher le firwmare.

cc debugger green led

Installer les drivers

Télécharger le driver Windows swrc212 du boitier CC Debugger (ici). Décompressez le fichier ZIP. Branchez le CC Debugger. Windows va tenter d’installer automatiquement le driver mais va probablement échouer. Le plus facile est et d’ouvrir le gestionnaire de périphérique et de faire un clic droit sur le CC Debugger puis de choisir l’option Mettre à jour le pilote…

nstall drivers windows cc debugger sniffer cc2531 zigbee xiaomi

Dans la fenêtre qui s’ouvre, choisissez Rechercher un pilote sur mon ordinateur

install manually coucou debugger driver windows zigbee

Puis, indiquez le chemin vers le dossier swrc212 qui contient le drivers (32-bits et 64-bits).

path cebal swrc212 cc debugger zigbee xiaomi

Windows scan le répertoire à la recherche du drivers adapté à votre version. Validez le drivers trouvé pour terminer l’installation. A la fin, les deux appareils doivent être correctement installés.

Télécharger le firmware

Le firmware Zigbee2MQTT est disponible sur GitHub sur cette page. Télécharger la dernière version (fichier hex)

Flasher le firmware

Lancez le programme SmartRF Flash Programmer. Indiquez le chemin vers l’image du firmware (fichier hex précédemment téléchargé) puis cliquez sur Perform Action. L’installation dure moins d’une minute. Ne débranchez rien pendant l’opération.

 

zigbee2mqtt flash firmware cc debugger cc2531 sniffer

Installer la passerelle Zigbee2MQTT sur le Raspberry Pi

Branchez le sniffer USB sur le Raspberry Pi et ouvrez un Terminal (ou connectez vous en SSH). Exécutez cette commande pour trouver le port sur lequel se trouve le Sniffer.

En général, il est branché sur le port ttyACM0.

Vérifiez maintenant que Nodejs et npm sont installés sur Raspbian. Si vous utilisez Jeedom ou Node-RED, vous n’avez rien à installer.

Si ce n’est pas le cas, exécutez ces deux commandes ou suivez ce tutoriel pour plus de détail.

Maintenant, il ne reste plus qu’à installer Zigbee2MQTT

La commande npm install reste en attente à la fin de l’installation. Vous pourrez la quitter manuellement à la lecture du message

Configurer la passerelle

Le fichier de configuration se trouve dans le dossier data.

Modifiez les paramètres MQTT :

  • topic de base
  • adresse IP du broker MQTT (server). Ne changez rien si le sniffer est branché sur le même Raspberry Pi
  • user et password si le broker est protégé par un mot de passe (fortement conseillé, suivez ce tutoriel pour le configurer)

Enregistrez avec CTRL+X puis O. Tout est prêt !

Ajouter un accessoire Xiaomi Aqara ou Mijia

Lancez le script de la gateway

Attendez d’avoir le message Zigbee: allowing new devices to join.

Pour le test, je vous propose d’intégrer le détecteur de présence Xiaomi Mi Motion Sensor. La procédure est identique quelque soit l’accessoire.

Prenez un trombone et maintenez le micro-interrupteur durant 3 à 5 secondes jusqu’à ce que la LED blue clignote. Vous devriez obtenir directement l’identifiant unique de votre accessoires. Le script s’occupe du jumelage. Contrairement à la gateway officielle, il faut empêcher l’accessoire de s’endormir en appuyant régulièrement (1 fois par seconde) sur le bouton d’association jusqu’à ce que le processus d’association débute.

Dès que le premier message arrive (détection de mouvement, mesure de température…), c’est terminé, votre accessoire Zigbee est maintenant associé.

Renommer les accessoires

Par défaut le script utilise l’identifiant unique de l’accessoire domotique comme nom. Ce n’est pas forcément le plus facile pour s’y retrouver. On peut facilement modifier le nom en allant le changer dans le fichier de configuration. Arrêtez le scrit et ouvrez de nouveau le fichier de configuration

En bas du fichier de configuration, vous allez trouver une nouvelle section nommée devices. Indiquez le nom de chaque accessoire avec la clé friendly_name. Evitez de mettre des espaces dans le nom des accessoires pour éviter les problèmes de Topic avec MQTT.

Un système d’alarme en 5′ chrono avec Node-RED et le plugin Homekit

En attendant un test complet avec Jeedom et Domoticz, voici une petite démo réalisée en quelques minutes avec Node-RED. On va créer un petit système d’alarme en utilisant Node-RED pour récupérer les états d’un contacteur de porte (pour la porte d’entrée) ainsi qu’un détecteur de présence qui surveille le salon.

Un noeud fonction permet d’extraire les données récupérées par le pont Zigbee. En fonction de ce que le capteur envoi, on pourra récupérer l’état et quelque fois le niveau et la tension de la batterie. On récupère en sortie du Node fonction 4 données utiles :

  1. L’état du capteur (booléen)
  2. Le niveau de batterie (0 à 100%)
  3. Un message que l’on pourra affiché sur le dashboard ou un message furtif
  4. La configuration pour un accessoire Homekit

Et voilà, en moins de 5 minutes sans avoir besoin d’installer un serveur domotique, vous pouvez développer un petit système d’alarme avec Node-RED

Xiaomi smart home aqara mijia zigbee2mqtt node-red dashboard

Le flow du projet à importer dans Node-RED

Vous pouvez même intégrer vos accessoires Xiaomi Aqara et Mijia dans l’appli Maison si vous possédez un iPhone.

xiaomi smart home pir motion door aqara mijia zigbee2mqtt nodered

Les accessoires de sécurité peuvent envoyer des notifications dès qu’un événement est déclenché même si vous n’êtes pas chez vous (à condition d’avoir un pont Homekit à la maison, une Apple TV ou un iPad).

xiaomi smart home pir motion door aqara mijia zigbee2mqtt nodered homekit notification

Pour en savoir plus, je vous conseille de lire ces tutoriels précédents :

Verrouiller la gateway

Une fois que tous les accessoires sont associés, il est plus prudent d’interdire l’association de nouveaux périphériques. Dans le fichier de configuration, passez la clé permit_join à false.

Boitier à imprimer en 3D

J’ai mis à disposition les fichiers STL d’un petit boitier à imprimer en 3D sur Thingiverse ici.

cc2531 zigbee2mqtt gateway 3d printed case

Comparaison de la portée de réception par rapport à la gateway officielle

Le sniffer USB CC2531 est avant tout est accessoire pour mettre au point les projets d’objets connectés. L’antenne Zigbee est gravée sur le PCB. Elle n’est pas forcément optimisée pour une réception à très longue portée. Pour en avoir le coeur net, j’ai fait un test comparatif (rapide) entre ma Gateway officielle et le Sniffer CC2531. Rien de bien scientifique dans ce test, j’ai simplement placé les deux gateway l’une à coté de l’autre puis vérifié la réception du bouton connecté dans les mêmes conditions (au même endroit).

Lieu Gateway Officielle Xiaomi Sniffer Zigbee CC2531
Chambre 1 Oui Oui
Chambre 2 Non Oui
Chambre 3 Non Non
Grenier Oui Oui
Grenier (très éloigné) Non Non

A ma grande surprise, le Sniffer reçoit aussi bien (pour ne pas dire mieux) les commandes du bouton connecté Mi Switch que la gateway officielle. C’est dommage qu’il n’existe pas de connecteur pour une antenne externe pour améliorer encore un peu plus la portée de réception. Mais vu le prix d’un Sniffer, ne vous privez pas de multiplier les ponts 🙂

Pour le moment les gammes Aqara et Mijia ne sont pas encore commercialisées dans la boutique officielle de Xiaomi France qui s’est ouverte le 25 mai dernier. En attendant, vous pourrez vous procurer vos accessoires directement en chine ou sur Amazon.

Page GitHub du projet : zigbee2mqtt 

 

Print Friendly, PDF & Email

Inscrivez-vous à la newsletter hebdomadaire

Aucun spam et aucun autre usage ne sera fait de votre email. Vous pouvez vous désinscrire à tout moment.

Comparateur de prix

Bons plans

Les offres suivantes se terminent bientôt. Utilisez le coupon indiqué pour profiter du prix promo

Domotique et objets connectés à faire soi-même