Utiliser MQTT en lien avec Home Assistant

De Wiki de Mémoire Vive
Révision datée du 17 décembre 2023 à 23:02 par 192.168.2.1 (discussion)
Aller à la navigation Aller à la recherche

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, auquel cas les équipements sont pilotés au travers de ce protocole de façon native,
  • en récupérant toutes les informations publiées par les équipements dans ce protocole pour les utiliser ailleurs, et réciproquement

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"

https://www.home-assistant.io/integrations/sensor.mqtt/#json-attributes-template-configuration

Pour aller plus loin,

  • voir la possibilité de connecter des brokers MQTT entre eux,
  • voir comment actionner un équipement via MQTT