Boas amigos!
Passei aqui para deixar meu projeto de automação das luzes que uso em casa.
Minhas principais necessidades são:
- Ligar e desligar as luzes automaticamente
- Aguardar um tempo configurável para desligar
- Se a luz for ligada manualmente antes do gatilho, não iniciar a automação, isto é, não deligar sozinha (modo semi-automático)
- Se a luz for apagada, reiniciar o gatilho da automação ao invés de aguardar o tempo mínimo
- Tudo em uma única entrada de automação
Neste script uso o atributo No motion since
do sensor Xiaomi para calcular o tempo de espera.
Cada cômodo tem sua automação única, onde uso outras duas automações de rotinas (nascer do sol e pôr do sol) para ligar e desligar todas as automações automaticamente de acordo com a posição solar.
Segue o package completo:
automation:
- alias: Bedroom Light
trigger:
platform: state
entity_id: binary_sensor.motion_sensor
to: 'on'
condition:
condition: state
entity_id: light.bed_light
state: 'off'
action:
- service: light.turn_on
entity_id: light.bed_light
- delay: 00:00:05 #atrasa 5 segundos para que o wait template inicie com sucesso
- wait_template: >
{% set light = "light.bed_light" -%} #entidade da luz
{%- set timmer_input = "input_select.bedroom" -%} #entidade do seletor de timmer
{%- set motion_sensor = "binary_sensor.motion_sensor" -%} #entidade do sensor de movimento
{%- if is_state(light , 'off') or (state_attr(motion_sensor, 'No motion since') | int >= states(timmer_input) | int and is_state(motion_sensor , 'off')) -%}true{%- else -%}false{%- endif %} #se a luz estiver desligada ou o tempo mínimo foi atingido
- condition: state #verifica se a luz ainda está ligada
entity_id: light.bed_light
state: 'on'
- service: light.turn_off
entity_id: light.bed_light
- alias: Routine - Sunset
trigger:
platform: sun
event: sunset
offset: '-00:15:00'
action:
- service: homeassistant.turn_on
entity_id:
- automation.bedroom_light
- alias: Routine - Sunrise
trigger:
platform: sun
event: sunrise
offset: '-00:15:00'
action:
- service: homeassistant.turn_off
entity_id:
- automation.bedroom_light
input_select:
bed_light_timmer:
name: 'Bedroom'
options:
- 120
- 180
- 300
- 600
- 1200
initial: 180
icon: mdi:timer
Basta multiplicar a automação das luzes para cada cômodo com seus respectivos sensores e luzes e adicionar o mesmo junto à lista de rotinas.
Ainda dá para melhorar um pouco mas já estou bem satisfeito com o resultado. Foram alguns meses de testes.
Espero ter ajudado!