Intégrez vos produits SwitchBot à Home assistant

Il y a quelques temps je vous ai présenté des produits de la marque SwitchBot. Je les ai plutôt appréciés mais jusqu’ici je n’ai pas pu pleinement les inclurent dans mon installation. En effet, bien que très simple avec le bot, l’intégration avec home assistant n’est pas évidente avec les autres produits de la marque. Ce n’est surement qu’une question de temps puisque SwitchBot fournis un ensemble d’outil de développement pour tout ces produits.

Aujourd’hui nous allons donc voir comment outre passer ces limites avec une solution cloud less (fonctionnant sans service cloud). Vous verrez ainsi comment mieux intégrer ces produits et qu’elles fonctionnalités sont disponibles avec cette manière détournée de les utiliser. Nous nous limiterons ici à l’utilisation du contact sensor. Le but étant qu’à la fin de cet article ce nouveau périphérique soit intégré dans notre système afin de compléter l’alarme mise en place dans l’article suivant:

Vous pourrez très aisément utiliser ce que vous apprendre ici pour intégrer d’autre produits. Dans mon cas perso j’ai aussi des capteur de mouvements que j’utiliser de la même manière.

Architecture

Dans le cadre de cet article nous allons créer un pont maison qui se substituera au hub de la marque et qui permettra de faire le relais entre le Bluetooth des appareils et votre installation Home assistant. Votre installation devrait donc ressembler à ceci, la pièce centrale (ESP32) est la petite carte que nous allons paramètrer ensemble pour pouvoir tirer partie de vos nouveaux jouets SwitchBot.

Prés-requis

Hardware

Pour suivre ce tuto vous aurez besoin d’une carte ESP32. Pour ma part j’ai opté pour ce modèle -> https://amzn.to/3DWgLTy. Il est aussi dispo à profusion et moins chère sur aliexpress mais je n’ai pas confiance en ce site et je ne veux pas l’attendre 4 mois.

Dans ce tuto j’utiliserais le Contact Sensor que vous pouvez trouver ici, cependant vous pouvez utiliser cette méthode avec le détecteur de mouvement, les Bot, le système d’automatisation d’ouvertures de rideaux (le Curtain) et le Meter.

Vous aurez aussi bien entendu besoin d’un cable micro USB et d’un transfo USB afin de brancher votre carte ESP32.

Logiciel

Tout d’abord vous aurez bien entendu besoin d’une installation Home assistant disposant d’une integration MQTT. Comme par hasard je vous avez fait une petite remise à niveau il y a quelques temps 😉

Pour le pont en lui même vous aurez besoin de flasher votre carte ESP32. Nous en avions déjà parlé dans un précédent article, vous devez télécharger l’IDE arduino. Ce dernier permet de développer des applicatifs pour de nombreuses cartes.

https://www.arduino.cc/en/software

Mise en place du pont

Maintenant que vous avez tout à votre disposition nous allons pouvoir monter notre pont. Dans un premier temps il va vous falloir installer les drivers permettant d’utiliser votre ESP32. Vous allez voir c’est très simple. Rendez-vous dans les préférences et ajoutez https://dl.espressif.com/dl/package_esp32_index.json dans le champ URL de gestionnaire de cartes supplémentaires.

Maintenant vous devrez pouvoir trouver les drivers de votre carte. Allez dans Outils > Type de carte > Gestionnaire de carte et recherchez ESP32. Une fois identifié installez le driver.

Une fois installé vous devriez être en mesure d’exécuter du code. Nous allons tester cela dès maintenant.

Votre première application

Pour tester notre installation nous allons d’abord exécuter un code exemple qui ferra simplement clignoter la led de la carte. Dans un premier temps rendez-vous dans option, type de carte et sélectionnez votre modèle, pour moi « Wemos D1 mini ESP32 ».

Il est maintenant temps de se connecter à votre carte. Toujours dans l’onglet Outils, rendez-vous sur dans Port. Vous aurez ainsi la possibilité de choisir le port de connexion à utilisé. En régle général Il ressemble à COMX (X étant un chiffre) sur windows ou /dev/usbXXXXX sur les système unix/mac.

Une fois connecté nous allons pouvoir tester un premier code. Chargez le projet exemple blink (Fichier > exemples > 01.Basics > Blink).

Une fois chargé vous pouvez cliquez sur

Le code du projet vas être compilé et publié sur votre carte. Il aura pour effet de faire clignoter la petite led de votre carte.

Installation du programme SwitchBot

Si vous êtes arrivé jusqu’ici c’est que vous avez une carte fonctionnelle prête à être programmée. Il est donc temps d’installer le programme qui va vous permettre d’interagir avec vos équipements SwitchBot. Dans un premier temps vous allez devoir installer les bibliothèques suivantes: NimBLEDevice, EspMQTTClient, ArduinoJson, CRC32, ArduinoQueue.

Ici encore c’est très simple. Allez dans Outils > Gérer les bibliothèques, recherchez et installez les éléments souhaité. Vous avez ci-dessous un exemple pour CRC32, je vous laisse reproduire l’opération pour toutes.

Une fois toutes les Bibliothèques installées il est temps de configurer et de lancer le programme SwitchBot. Allez sur la page suivante https://github.com/devWaves/SwitchBot-MQTT-BLE-ESP32 et téléchargez le projet

Décompressez le et ouvrez le fichier SwitchBot-BLE2MQTT-ESP32.ino qui se trouve dans le dossier Arduino IDE Files. Cela aura pour effet de lancer l’IDE Arduino et de charger le projet. Avant de le compiler et de le téléverser vous allez avoir besoin de faire quelques ajustements.

Connectivité

Votre passerelle aura besoin d’accéder à deux éléments indispensables. Un réseau wifi (logique puisque la passerelle va faire l’interface entre le Bluetooth BLE et votre réseau local) et une instance MQTT qui va stocker l’information. N’hésitez pas à retourner voir l’article MQTT que je vous ai mis plus haut si vous voulez en savoir plus.

Vous l’aurez donc compris, dans un premier temps il vous faut mettre à jour vos paramètres Wifi. Le Host est libre, il correspond au nom utilisé pour identifier votre périphérique sur votre réseau. Le SSID est le nom de votre point d’accès et le password la clé de sécurité.

Ensuite vous allez devoir configurer la partie MQTT. mqtt_host est l’adresse permettant d’accéder à votre broker MQTT. Dans mon cas c’est l’adresse IP local de mon Home Assistant. Ensuite vous aurez besoin de renseigner le user/mot de passe et port tel que vous l’avez définit en installant votre infrastructure. Enfin vous pouvez choisir le nom du topic qui recevra les informations. ce dernier est libre j’ai personnellement garder la valeur par défaut.

[remark]Pour des raisons de sécurité inutile de vous préciser qu’il est fortement recommender de personnaliser les paramètres que vous utilisez. Les valeur ci-dessus correspondent à des exemples.[/remark]

Configuration des contact sensor

Plus bas dans le code vous verrez plusieurs blocs concernant les différents périphériques gérés par ce module. Nous allons nous focaliser sur le contact sensor mais la logique est la même pour tous.

Vous allez devoir lister vos appareils en ajoutant des lignes comme ci-dessous. Chaque périphérique est représenté par un nom (contactone, contacttwo dans l’exemple) et de son adresse mac (xX:xX:xX:xX:xX:xX et yY:yY:yY:yY:yY:yY).

Super, mais autant il est simple de choisir un nom autant une adresse Mac ça ne s’invente pas :/ Pour la connaitre vous êtes obligé de passer par l’application SwitchBot. Cela veut donc dire que vous devait vous connecter et ajouter vos périphériques. Ensuite vous trouverez facilement l’adresse MAC de tout vos appareils. Je vous ai fait une petite vidéo d’exemple pour vous y retrouver (j’ai coupé avant que l’adresse MAC s’affiche 😉 )

Une fois toutes les configurations faites vous pouvez lancer la compilation en cliquant sur

Si vous n’avez pas d’erreur vous pouvez ouvrir MQTT explorer ou MQTT.fx, connectez-vous à votre broker MQTT et vous devriez voir les premiers messages arriver !

Home assistant

Vous êtes encore là ? Félicitation vous avez fait le plus dur 😉 Il ne vous reste plus qu’à exploiter les données dans home assistant. Vous devez simplement ajoutez une intégration (Configuration > Appareils et service > Ajouter l’intégration). Choisissez Mosquitto broker. Remplissez les deux trois champs permettant de faire le lien avec votre serveur MQTT (host, user, mot de passe) et c’est fini ! Home assistant devrait de lui même vous créer des « appareils » MQTT.

Vous pouvez donc utiliser les données capté dans MQTT comme n’importe quel périphérique.

En terme d’option accessible c’est vraiment bien, je pense que tout y est, vous ne perdez rien vis à vis de l’usage normal. Voici ce que vous pourrez exploiter pour le contact sensor

Conclusion

C’est fini pour aujourd’hui. La manipulation est assez simple mais elle est tout de même réservé à un publique averti. Après quelques temps d’utilisation je n’ai pas à me plaindre de cette solution, elle est stable et efficace. Les deux points noirs à date selon moi sont:

  • Il est nécessaire d’avoir un nouveau pont (ESP32). Personnellement je fait un peu la chasse à cela, il n’y a rien de plus pénible (et de moins écolo) que d’avoir 10 box branchées en permanence pour avoir une domotique complète.
  • Le mini Hub de SwitchBot n’est pas pilotable par Home assistant (en cloud less) C’est vraiment dommage car il est vraiment top pour contrôler des appareils utilisant des télécommandes infrarouge !

Grâce à cet article vous avez donc de nouvelles possibilités d’intégration. Pour ma part à date j’utilise donc du zigbee (Hue, xiaomi, sonoff, Lidl), du BLE (SwitchBot) et du Wifi (Shelly). Le tout centralisé et utilisable via une interface unifiée. C’est exactement le type d’installation que je souhaitais mettre en place. Elle est parfois un peu « usine à gaz » mais elle permet une grand liberté!

Comme d’habitude, une question, un retour d’expérience ? n’hésite pas à utiliser les commentaires 😉 A bientôt!

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.