Mettre à jour automatiquement des entités HA, depuis MQTT
Cas pratique : des objets externes à Home assistant doivent être mis en cohérence avec des entités internes. Les entités internes sont utilisées pour des automatisations. Ceci a été testé dans 2 cas de figure :
- des booléens de type on/off
- des "input select"
Illustration de ce fonctionnement : on utilise un écran tactile avec la mise en route du chauffe, celle de la chaudière (input boolean), et on doit choisir un mode de fonctionnement pour le chauffe-eau, soit 24/24 soit aux heures creuses (input select).
Il y a une procédure pour les booléens et une autre pour les input select. Avec ces topics MQTT,
topic: homeassistant/input_select/+/set topic: homeassistant/input_boolean/+/set
Le caractère + est un "wildcard",
Exemples de publication qui seront effectuées (IDE Arduino avec ESP32)
client.publish("homeassistant/input_boolean/regulation_chauffage/set", "ON");
client.publish("homeassistant/input_boolean/regulation_chauffe-eau/set", "ON");
client.publish("homeassistant/input_select/regulation_chauffe-eau/set", "Tempo");
Chaque fois qu’un topic MQTT /set pour un input_boolean reçoit "ON" ou "OFF", Home Assistant met automatiquement à jour l’état de cet input_boolean pour qu’il corresponde au message MQTT.
alias: Sync MQTT /set vers input_boolean
description: Met à jour automatiquement les input_boolean depuis les topics /set MQTT
triggers:
- topic: homeassistant/input_boolean/+/set
trigger: mqtt
conditions: []
actions:
- variables:
entity: input_boolean.{{ trigger.topic.split('/')[2] }}
payload_upper: "{{ trigger.payload | upper }}"
- choose:
- conditions:
- condition: template
value_template: "{{ payload_upper == 'ON' }}"
sequence:
- target:
entity_id: "{{ entity }}"
action: input_boolean.turn_on
data: {}
- conditions:
- condition: template
value_template: "{{ payload_upper == 'OFF' }}"
sequence:
- target:
entity_id: "{{ entity }}"
action: input_boolean.turn_off
data: {}
mode: single
Avec cette automatisationon, tout message MQTT publié sur homeassistant/input_select/<nom>/set mettra à jour automatiquement l’input_select correspondant dans HA.
alias: Sync MQTT /set vers input_select
description: Met à jour automatiquement les input_select depuis les topics /set MQTT
triggers:
- topic: homeassistant/input_select/+/set
trigger: mqtt
conditions: []
actions:
- variables:
input_name: "{{ trigger.topic.split('/')[2] }}"
payload_value: "{{ trigger.payload }}"
- target:
entity_id: input_select.{{ input_name }}
data:
option: "{{ payload_value }}"
action: input_select.select_option
mode: single