Imagine a seguinte situação: Você tem uma luminária na sua sala com duas ou mais lâmpadas led RGB e quer controlar todas ao mesmo tempo pelo Home Assistant. Você pode recorrer a diversas automações para que as demais lâmpadas sejam atualizadas a partir do status de uma primeira, mas isso fica muito mais fácil utilizando o Light Template.
Documentação da integraação Template Light:
Para demonstrar vamos criar um light template para representar uma luminária da sala que possui duas lâmpadas físicas que são as entidades:
- Lâmpada 1: light.led_sala_1
- Lâmpada 2: light.led_sala_2
Segue o código com comentários do template, é necessário incluir este código no seu arquivo de configuração do Home Assistant (configuration.yaml
).
light:
- platform: template
luz_sala: #ID da entidade modelo
friendly_name: "Luzes Sala" #Nome da entidade modelo
#Status da lâmpada criada pela entidade de modelo
#Neste caso ele verifica se a lâmpada 1 está disponível,
#se estiver utiliza o status da lâmpada 1, senão utiliza o status da lâmpada 2
value_template: >-
{% if (is_state('light.led_corredor','on') or is_state('light.led_quarto_2','on')) %}
{{ 'on' }}
{% else %}
{{ 'off' }}
{% endif %}
#Verifica se os dispositivos estão disponíveis
availability_template: >-
{% if (states('light.led_sala_2')!='unavailable' and states('light.led_sala_2')!='unknow') %}
{{ true }}
{% elif (states('light.led_sala_1')!='unavailable' and states('light.led_sala_1')!='unknow') %}
{{ true }}
{% else %}
{{ false }}
{% endif %}
#Usa o brilho da lâmpada 1 como referência para a entidade modelo, se disponível, senão usa a da lâmpada 2
level_template: >-
{% if (states('light.led_sala_2')!='unknow') and (states('light.led_sala_2')!='unavailable') %}
{{ state_attr('light.led_sala_2', 'brightness') | int }}
{% else %}
{{ state_attr('light.led_sala_1', 'brightness') | int }}
{% endif %}
# Usa a temperatura de cor da lâmpada 1 como referência para a entidade de modelo, se disponível, senão usa a da lâmpada 2
temperature_template: >-
{% if (states('light.led_sala_2')!='unknow') and (states('light.led_sala_2')!='unavailable') %}
{{ state_attr('light.led_sala_2', 'color_temp') }}
{% else %}
{{ state_attr('light.led_sala_1', 'color_temp') }}
{% endif %}
# Usa a cor da lâmpada 1 como referência para a entidade de modelo, se disponível, senão usa a da lâmpada 2
color_template: >-
{% if (states('light.led_sala_2')!='unknow') and (states('light.led_sala_2')!='unavailable') %}
{{ state_attr('light.led_sala_2', 'hs_color')}}
{% else %}
{{ state_attr('light.led_sala_1', 'hs_color')}}
{% endif %}
turn_on: #Ação a ser executada quando ligar a entidade de modelo
#Chama o serviço light.turn_on e liga as entidades das lâmpadas físicas
- service: light.turn_on
data_template:
entity_id:
- light.led_sala_1
- light.led_sala_2
turn_off: #Ação a ser executada quando desligar a entidade de modelo
#Chama o serviço light.turn_off e desliga as entidades das lâmpadas físicas
- service: light.turn_off
data_template:
entity_id:
- light.led_sala_1
- light.led_sala_2
set_level: #Ação a ser executada quando alterar o brilho da entidade de modelo
#Chama o serviço light.turn_on e define o brilho das entidades das lâmpadas físicas com base na entidade modelo
- service: light.turn_on
data_template:
entity_id:
- light.led_sala_1
- light.led_sala_2
brightness: "{{ brightness }}" #Define o brilho de acordo com o definido na entidade de modelo
- service: input_boolean.toggle
entity_id: input_boolean.bright_boolean
set_temperature: #Ação a ser executada quando alterar a temperatura de cor da entidade de modelo
#Chama o serviço light.turn_on e a temperatura de cor das entidades das lâmpadas físicas com base na entidade modelo
- service: light.turn_on
data_template:
effect: "White" #Aqui define o efeito da lâmpada para branco (necessário para alguns modelos de lâmpadas)
entity_id:
- light.led_sala_1
- light.led_sala_2
color_temp: "{{ color_temp }}" #Define a temperatura de cor de acordo com a entidade de modelo
- service: input_boolean.toggle
entity_id: input_boolean.temp_boolean
set_color: #Ação a ser executada quando alterar a cor da entidade de modelo
- service: light.turn_on
data_template:
effect: "Color"
hs_color: #Define a cor de acordo com a entidade de modelo
- "{{ h }}"
- "{{ s }}"
entity_id:
- light.led_sala_1
- light.led_sala_2
- service: input_boolean.toggle
entity_id: input_boolean.color_boolean
supports_transition_template: "{{ true }}"
Após incluir o código acima na configuração e alterar as entidades das lâmpadas físicas, recarregue as entidades de modelo (Configurações > Controle do Servidor > Recarregar as entidades de modelo) ou reinicie o Home Assistant.
A partir daí a nova entidade estará disponível, teste a vontade!
É possível usar outras ações para os eventos (turn_on, turn_off, etc) pode acionar switchs, scripts, etc.