Formation PUB425 : Objets connectés avec Jeedom et Home Assistant, A-2025 MQTT

49.4 Publication et abonnement MQTT avec Home Assistant


Une fois que vous avez installé un client MQTT sur Home Assistant et que vous avez configuré l'agent MQTT à utiliser, vous pouvez débuter le processus de publication et d'abonnement MQTT.

Dans cette fiche :

Publication sur un canal

Home Assistant peut publier de l'information sur un canal à l'aide de l'action mqtt.publish.

Cette action peut être utilisée dans vos automatisations au même titre que n'importe quelle autre action.

Il est également possible de la tester à l'aide du menu Outils développement / Actions.

Vous devrez spécifier ces informations :

  • Sujet (Topic) : nom du canal
  • Charge utile (Payload) : information à publier codée en dur ou à l'aide d'un modèle.

    Dans le fichier automation.yaml, lorsque vous utilisez un modèle, n'oubliez pas les apostrophes ou guillemets alentour du modèle.

    Les apostrophes ou guillemets ne sont pas requis quand on travaille avec l'interface graphique.

    Modèle

    payload: '{{ states(''sensor.5_in_1_pir_motion_sensor_illuminance'') }}'

    Dans le fichier automation.yaml ou dans l'interface graphique, lorsque les données sont publiées au format JSON, il ne faut pas entourer le modèle de guillemets ou d'apostrophes (dans cet exemple, il n'y a pas de guillemets alentour de state_attr('domaine.identifiant_objet', 'attribut1')).

    Modèle

    {%
        set valeurs = {
            "premierattribut":state_attr('domaine.identifiant_objet', 'attribut1'),
            "deuxiemeattribut": state_attr('domaine.identifiant_objet', 'attribut2')
        }
    %}
    {{ valeurs | to_json }}

  • QoS : Qualité du service
  • Retenir (Retain) : Activez cette option pour que le message soit retenu.

    mqtt.publish

Une fois l'information publiée, il faut qu'il y ait un abonné sur ce canal pour vérifier si tout a fonctionné.

Généralement, l'abonné ne sera pas Home Assistant lui-même car ceci serait inutile. Il pourrait s'agir parr exemple d'une autre boîte domotique.

Abonnement à un canal

Home Assistant peut s'abonner à un canal afin de connaître la valeur de la dernière charge utile publiée sur ce canal. Une entité est créée lors de l'abonnement, ce qui ouvre la porte à de nombreuses possibilités.

Pour abonner Home Assistant à un canal, il faut entrer une configuration dans le fichier configuration.yaml.

Fichier configuration.yaml

mqtt:
  sensor:
    - name: "nom de l'équipement"
      state_topic: "un_niveau/un_sous_niveau/un_nom"

Attention : cette syntaxe est obsolète :

Fichier configuration.yaml

sensor:
  - platform: mqtt
    name: "nom de l'équipement"
    state_topic: "un_niveau/un_sous_niveau/un_nom"

Entité créée

L'abonnement à un canal crée un nouvel équipement qui contient une entité pour donner accès à la dernière valeur reçue.

L'attribut name sera utilisé pour générer l'identifiant de l'entité. Home Assistant remplacera les espaces par des barres de soulignement et les caractères spéciaux par leur équivalent dans les caractères de base. Ainsi, « nom de l'équipement » sera utilisé pour créer l'entité sensor.nom_de_l_equipement.

Dans cette impression d'écran, l'entité a été utilisée pour afficher sur le tableau de bord la dernière valeur reçue sur ce canal.

Configuration de la carte

Déclencheur d'une automatisation

Pour qu'une automatisation soit déclenchée quand un message MQTT est reçu, le plus facile consiste à utiliser l'entité créée lors de l'abonnement au canal MQTT.

Lors de l'ajout du déclencheur, on choisira Entité / État ou Entité / État numérique selon les besoins de l'automatisation.

Déclencheur

Cette entité pourra être utilisée comme n'importe quelle autre entité pour :

  • déclencher l'automatisation dès que sa valeur change (Entité / État puis ne rien inscrire dans la zone De: ni dans dans la zone À:)
  • déclencher l'automatisation quand sa valeur est égale à quelque chose (Entité / État puis inscrire la valeur dans la zone À:)
  • déclencher l'automatisation quand sa valeur est entre deux valeurs (Entité / État numérique puis préciser les limites inférieure et supérieure)
  • etc.

Autre technique : configurer le déclencheur avec Autres déclencheurs / MQTT.

Vous pourrez alors choisir le sujet (le canal) à écouter et, au besoin, ne réagir que lorsque la charge utile (la valeur reçue) est égale à une valeur donnée.

MQTT dans automatisation

 

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre