Fiz a substituição de um interruptor da minha cozinha que tinha dois botões, e coloquei um de 3 botões com a intenção de que um deles controlasse os demais.
Inicialmente fiz em node-red mas todas as minhas automações ficam no core e no node-red estava tendo alguns problemas então decidi investir um tempo maior pra solucionar o problema e compartilho aqui a primeira versão para que outros possam usar e melhorar.
Crie uma nova automação em configurações-> automações e cenas → começar com uma vazia e clique no menu dos 3 pontinho no canto superior direito e em seguida editar como YAML
cole o código abaixo substituindo os nomes de cada botão, sendo que o botão “cozinha” controla os demais.
alias: '[Automation] Switch 3-gang button'
description: Usa um botão do switch de 3 botões para controlar os demais.
trigger:
- platform: state
entity_id: switch.luz_cozinha
to:
- 'on'
- 'off'
- platform: state
entity_id: switch.luz_pia
to:
- 'on'
- 'off'
- platform: state
entity_id: switch.luz_mesa
to:
- 'on'
- 'off'
condition:
- condition: template
value_template: >-
{% set switches = ['switch.luz_cozinha', 'switch.luz_pia',
'switch.luz_mesa'] %} {% set target = trigger.to_state.state %} {{ states
| selectattr('entity_id', 'in', switches) | selectattr('state','eq',
target) | list | length != switches | length }}
action:
- service_template: switch.turn_{{ trigger.to_state.state }}
data_template:
entity_id: >-
{% set switches = ['switch.luz_cozinha', 'switch.luz_pia',
'switch.luz_mesa'] %} {% set target = trigger.to_state.state %} {% if
states('switch.luz_pia') == states('switch.luz_mesa') %}
{{ states | selectattr('entity_id', 'in', switches) | selectattr('state','!=',target) | map(attribute='entity_id') | list | join(', ') }}
{% endif %}