Home Assistant et les télécommandes
Pour gérer les télécommandes, j'utilise depuis des années ControllerX qui tourne sous AppDaemon, c'est simple, et ça fonctionne très bien. Problème, s'il en est, d'une part je suis perplexe sur l'avenir de cette solution, et d'autre part je me dis que simplifier et avoir le moins d'addons possible c'est toujours mieux.
En alternative à ControllerX il existe la solution BluePrint. C'est bien et j'en utilise plusieurs, dont certains sont de véritables usines à gaz. C'est parfois utile pour certaines taches complexes pour lesquelles je n'ai pas envie de mes farcir des heures de YAML.
Avec ControllerX je gérait les télécommandes Ikea associés aux Shelley 2.5 de mes volets roulants, c'est simple et ça fonctionne depuis des années :
volet_rc_ikea_07:
module: controllerx
class: E1743CoverController
controller: bc:33:ac:ff:fe:be:50:21
integration: zha
cover: cover.vr_baiePour remplacer ça j'ai d'abord testé plusieurs BluePrint dédié aux diverses télécommandes, et ça foisonne. Mais aucun ne faisais exactement ce que ControllerX fait, à savoir, exploiter les deux boutons et faire un stop avec un clic supplémentaire. Et puis je me suis dit que je devrais pouvoir gérer tout seul toutes les télécommandes de tous mes volets avec une seule automation, que ça serait plus simple, et donc plus réactif.
Pour chaque télécommande on va exploiter un trigger: qui correspond à l'action de la télécommande (simple ON, double OFF, etc...). Dans ce trigger on y colle un id: baie_on ou la première partie correspond au nom du volet et la seconde à l'action.
Ensuite on s'en sert pour gérer des variables qui correspondent au volet et on exploite ça dans un choose: qui va tester si le volet est en mouvement pour faire un cover.stop_cover et se servir de la seconde partie du trigger.id pour le faire monter ou le descendre.
Avec cette solution il est dans l'absolu possible de gérer un nombre infini de volets et de télécommandes, voire même de gérer autre chose que des volets... Et bien sur les télécommandes peuvent provenir de différentes intégrations (ici Z2M et ZHA).
alias: Remote Covers - Multiples & Stop
description: Gère plusieurs volets et plusieurs télécommandes indépendamment avec fonction Stop
triggers:
- domain: mqtt
device_id: 1a4ba8e9b8e66a574e3c688f907e70fd
type: action
subtype: "on"
id: lionel_on
trigger: device
- domain: mqtt
device_id: 1a4ba8e9b8e66a574e3c688f907e70fd
type: action
subtype: "off"
id: lionel_off
trigger: device
- device_id: c3c2106f2d457bc86c573fed853f02fc
domain: zha
type: remote_button_short_press
subtype: turn_on
id: marie_on
trigger: device
- device_id: c3c2106f2d457bc86c573fed853f02fc
domain: zha
type: remote_button_short_press
subtype: turn_off
id: marie_off
trigger: device
actions:
- variables:
target_cover: >
{% if trigger.id.startswith('lionel') %} cover.vr_lionel
{% elif trigger.id.startswith('marie') %} cover.vr_marie
{% elif trigger.id.startswith('autre') %} cover.vr_autre
{% endif %}
- choose:
- conditions:
- condition: template
value_template: >-
{{ is_state(target_cover, 'opening') or
is_state(target_cover, 'closing') }}
sequence:
- action: cover.stop_cover
target:
entity_id: "{{ target_cover }}"
- conditions:
- condition: template
value_template: "{{ trigger.id.endswith('_on') }}"
sequence:
- action: cover.open_cover
target:
entity_id: "{{ target_cover }}"
- conditions:
- condition: template
value_template: "{{ trigger.id.endswith('_off') }}"
sequence:
- action: cover.close_cover
target:
entity_id: "{{ target_cover }}"
mode: restart
max_exceeded: silent