MQTT, un protocole pour tous les rassembler - Partie 3 : interactions avec la domotique

Cet article est le dernier de la série sur le protocole MQTT (après la partie 1 sur le broker et la partie 2 sur l'inclusion de modules), et nous allons voir comment intégrer dans notre solution domotique préférée, que ce soit Home Assistant, Gladys, Domoticz, Jeedom, ou d'autres que je n'aurais cité ... les produits que nous avons connecté à notre broker.

Dans la suite de l'article, je vais vous expliquer comment remonter et contrôler les équipements venant de Zigbee2Mqtt, sachez que le principe reste le même pour tous les autres produits connectés à notre broker.


La configuration dans Home Assistant


Pour ceux qui se posent la question de savoir ce qu'est Home Assistant, ce qu'il permet de faire ou comment l'installer, cela sera abordé dans un prochain article. Vous aurez déjà un premier aperçu de ses possibilités avec le protocole MQTT.

Pour configurer le plus simplement et efficacement possible Zigbee2Mqtt dans Home Assistant, seulement 2 petites étapes sont nécessaires :

  • Dans le fichier configuration.yaml de Zigbee2Mqtt, ajustez le paramètre homeassistant en le passant à true.
  • Dans Home Assistant, rendez-vous dans Configuration, puis Intégrations. En cliquant sur le bouton "+" orange en bas à droite, cherchez "mqtt" et cliquez sur l'intégration qui est listée. Renseignez l'adresse IP de votre broker et le port de celui-ci (1883 par défaut pour rappel). Cochez également la case pour activer la découverte.
    Une autre méthode est d'ajouter les lignes suivantes dans le fichier configuration.yaml de Home Assistant.
mqtt:
  discovery: true
  broker: 192.168.1.2    # adresse IP de votre broker MQTT

Cela va permettre la création automatique des modules inclus dans Zigbee2Mqtt. Rendez-vous dans la page des "Appareils" pour découvrir les modules automatiquement remontés, qui sont correctement configurés en fonction de leur marque et modèle. En cliquant dessus, vous pourrez voir les "entités" (autrement appelées commandes) et les valeurs remontées. Vous n'aurez ensuite qu'à attribuer une zone à chaque appareil créé, et choisir ce que vous souhaitez afficher dans votre aperçu.

Voici quelques rendus de ce que vous pourrez obtenir :


La configuration dans Jeedom

Maintenant que nous avons vu à quel point il est simple de configurer des équipements communiquant en MQTT dans Home Assistant, vous pouvez remonter vos manches, c'est un peu moins facile, moins user-friendly sous Jeedom malheureusement ... En espérant que ça change prochainement avec l'amélioration des plugins existants ou de nouveaux à venir d'ailleurs.

Pour commencer, vous devez installer un des plugins suivants : jMQTT (gratuit, développé par domotruc), MQTT (gratuit, développé par Lunarok) ou MQTT Docker Hub (payant 5€, développé par Lunarok, disponible en bêta uniquement pour le moment). Ce dernier est prometteur car il permettra de gérer en automatique divers connecteurs entre vos équipements et un broker MQTT, tous fonctionnant en tant que conteneurs Docker, à la manière de ce qu'on a fait manuellement dans le second article.

Sur la page "Gestion des plugins" de votre Jeedom, accessible depuis le menu "Plugins", puis cliquez sur "Market" et cherchez "mqtt". Choisissez entre jMQTT ou MQTT en cliquant dessus, puis installez le plugin dans sa version stable. (Mon choix pour le reste du tutoriel s'est porté sur jMQTT, le plugin MQTT ayant quelques lacunes.) A la question "Voulez-vous aller sur la page de configuration de votre nouveau plugin ?", cliquez sur "Ok". Activez le plugin. Dans l'encart de configuration, décochez la case "Installer Mosquitto localement" et sauvegardez.

Rendez-vous ensuite dans "Plugins", "Protocole domotique", "jMQTT".
Ajoutez un broker, donnez un nom à l'équipement et cliquez sur Ok. Cochez la case pour activer l'équipement puis allez dans l'onglet "Broker" et renseignez l'adresse IP de votre broker mosquitto (192.168.1.2 pour moi) et sauvegardez. Notez que j'ai modifié l'"Identifiant de connexion", qui peut être interprété comme le topic sous lequel le plugin s'annoncera au broker. En effet, si plusieurs sources utilisent le même identifiant d'annonce, vous pourrez avoir des erreurs de déconnexion dans les logs, et n'arriverez pas à savoir d'où vient exactement le problème.
La configuration de base est faite.

Passons maintenant à la création des équipements Jeedom pour les modules que nous avons inclus précédemment : le capteur de température Xiaomi et l'ampoule Ikea.
Ajoutez un équipement, donnez-lui un nom et cliquez sur Ok. Configurez l'objet dans lequel apparaîtra l'équipement, activez-le et rendez-le visible, renseignez le topic auquel souscrire (zigbee2mqtt/temp_salon/# dans notre cas), cochez la case "Ajout automatique des commandes", indiquez qu'il s'agit d'un module remontant des informations de type "Humidité et Température" et enfin sauvegardez.
A la prochaine remontée d'informations du capteur, les commandes seront automatiquement ajoutées. Retournez dans l'équipement fraîchement créé, et plus précisément dans l'onglet "Commandes". Vous y trouvez une commande unique, ayant pour valeur l'intégralité du sous-topic du module. Cliquez alors sur "JSON" pour créer les commandes adéquates depuis le JSON, et nommez chaque commande puis sauvegardez. Vous pourrez enfin définir quelles sont les commandes de type info que vous souhaitez afficher et historiser, puis sauvegardez. Vous pouvez maintenant aller admirer le résultat sur votre Dashboard.

Occupons-nous de créer l'équipement qui commandera l'ampoule Ikea. Pour cela, comme tout à l'heure, cliquez sur "Ajouter un équipement" et nommez-le, puis cliquez sur Ok. Configurez l'objet dans lequel apparaîtra l'équipement, activez-le et rendez-le visible, renseignez le topic auquel souscrire (zigbee2mqtt/lampe_coeur/# dans notre cas) et cochez la case "Ajout automatique des commandes". Allez dans l'onglet "Commandes" et ajoutez 2 commandes action. Nommez-les On et Off et indiquez le topic zigbee2mqtt/lampe_coeur/set et respectivement "on" et "off" comme valeurs. Sauvegardez. Testez la commande On, la lampe s'allume. Vu que nous avions coché la case adéquate, une nouvelle commande d'information avec un json est créée. De la même manière que pour le capteur de température, cliquez sur "JSON" pour créer les commandes d'information depuis le JSON, et nommez chaque commande puis sauvegardez. Vous pourrez également définir quelles sont les commandes que vous souhaitez afficher et historiser, puis sauvegardez. Rendez-vous sur le Dashboard pour voir votre équipement et allumer / éteindre la lampe.

Voilà, vous avez maintenant les bases pour créer des équipements de types capteurs qui ne font que remonter des informations, ou encore des modules qui ont besoin qu'on interagisse avec eux pour les commander. Je vous avais prévenu que c'était moins facile, même si une fois la logique appréhendée, ce n'est qu'une question de temps pour créer tous vos équipements.
J'ai volontairement omis d'aborder le bouton d'inclusion, qui va vous créer tout un tas d'équipements correspondant à chaque topic et sous-topic que vous avez sur votre broker. Je préfère créer uniquement les équipements que j'ai besoin, plutôt que de passer un temps non négligeable juste pour supprimer les équipements indésirables créés en automatique.


Conclusion


Initialement prévu en un seul article, celui-ci dernier s'est avéré être finalement très long, et je ne voulais pas sacrifier une partie pour le raccourcir, ce qui explique qu'il y a eu 3 articles à la suite, permettant ainsi à ceux qui ne sont intéressés que par une partie de ne pas décrocher trop rapidement. Cela nous a permis de découvrir le protocole MQTT, d'aborder la gestion de différents types de modules, ainsi que l'intégration de ceux-ci dans Home Assistant et Jeedom.
Sur ce dernier point, je suis néanmoins déçu par les plugins existants sur Jeedom, et je reste dans l’attente d´une évolution ou d´un nouveau plugin qui apporterait la découverte automatique des équipements selon le fabricant et modèle, informations qui sont bien détectées par Zigbee2Mqtt et Home Assistant (et surement par d´autres concurrents que je n´ai pas testé).

Il existe tout un tas d'autres produits qui peuvent utiliser le protocole MQTT, comme remonter les événements de caméras (onvif, Dahua, ...), gérer des équipements Bluetooth ou zwave, récupérer des informations ou piloter une instance Kodi, ...

J'espère que vous avez appris quelque chose, et surtout que vous allez pouvoir mettre en application certains des cas abordés. N'hésitez pas à commenter pour remonter vos problèmes rencontrés ou juste pour discuter de vos usages du protocole MQTT, je me ferais un plaisir d'y répondre pour tenter de vous aider.

A bientôt pour de nouveaux tutoriaux, axés vers Docker et son infini potentiel!