Utiliser MQTT en lien avec Home Assistant
MQTT, ou Message Queuing Telemetry Transport, est un protocole de communication léger et fiable conçu pour les appareils à faible bande passante et à faible puissance, typiquement utilisé dans l'Internet des Objets (IoT). Il offre un moyen simple et efficace pour que ces appareils puissent communiquer entre eux et avec des serveurs.
Il y a 2 façons de l'utiliser dans HA,
- en le connectant directement à la clé Zigbee
- en récupérant toutes les informations publiées par les équipements
C'est cette 2e méthode que j'ai regardée, dans le but de transmettre les informations d'une instance HA vers une autre. Exemple : transmettre une température sur un site et la transmettre à un autre.
Pour ce faire,
- on installe un broker MQTT, typiquement Mosquito, qui est un module complémentaire de HA. En parallèle, on définit un user et un mot de passe pour y accéder
- on installe une intégration MQTT, qui fait le lien entre HA et ce broker, via son adresse IP, le port (1883) et user/pwd. Si on souhaite accéder au broker à travers une box, il sera nécessaire de définir une règle pour effectuer un transfert de port.
Ensuite on ajoute quelque lignes dans HA, dans configuration.yaml, pour que tous les messages générés par les capteurs et autres équipements soient publiés dans le broker.
Ces quelques lignes sont :
# publication pour MQTT mqtt_statestream: base_topic: homeassistant publish_attributes: true publish_timestamps: true
https://www.home-assistant.io/integrations/mqtt_statestream/
Pour voir ce qui se passe sur le broker, utiliser un outil tel que MQTT Explorer (windows). Ceci permet de consulter le flux de messages publiés sur le broker MQTT. On utilisera les mêmes paramètres pour s'y connecter que pour HA, c'est à dire, IP du broker, port, user et pwd.
Dans cette application, on peut rechercher la valeur du capteur qui nous intéresse. Exemple, homeassistant/sensor/ewelink_th01_temperature/state
Ensuite, il faut modifier configuration .yaml pour créer des entités en miroir des topics qui nous intéressent, i.e. la valeur d'un capteur donné.
Voici un exemple avec 2 capteurs, qu'on peut faire apparaitre sur un tableau de bord,
# configuration des entités MQTT mqtt: sensor: - name: "Temperature int" state_topic: "homeassistant/sensor/ewelink_th01_temperature_2/state" - name: "Temperature ext" state_topic: "homeassistant/sensor/ewelink_th01_temperature/state"