Switch 3 botões onde 1 deles controla os outros dois

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 %}
1 Like