Realizar acciones mediante plantillas en Home Assistant

Realizar acciones mediante plantillas en Home Assistant
Índice

El editor visual de acciones en las automatizaciones de Home Assistant presenta muchas limitaciones. Encender o apagar una luz cuando lo hace otra o en función del estado de la puerta son dos de las que tengo implementadas.

La primera alternativa que nos surge al intentar afrontar automatizaciones complejas es realizar varias automatizaciones simples. El método funciona pero resulta mucho más práctico hacer uso de plantillas que permitan acciones complejas. Ya he tratado anteriormente el tema de las plantillas en Home Assistant al escribir sobre los sensores virtuales, ahora las voy a utilizar para el uso de acciones en automatizaciones

Encender o apagar una luz cuando lo haga otra

Quiero que la luz “light.luces_del_salon” se enciendan o apaguen cuando lo haga “light.salon_lado_mesa” para lo cual he creado la siguiente automatización.

alias: Salón - Encender/Apagar Luces
description: ''
trigger:
  - platform: device
    type: changed_states
    device_id: 25748c26d934b4dce0acb58bde24ad75
    entity_id: light.salon_lado_mesa
    domain: light
condition: []
action:
  - service: >-
      light.turn_{{ 'on' if states ('light.salon_lado_mesa') == 'on' else 'off' }}      
    target:
      entity_id: light.luces_del_salon
mode: single

En la acción podemos ver como se hará una llamada al servicio “light.turn_on” cuando el estado de “light.salón_lado_mesa” sea “on” y al servicio “light.turn_off” en caso contrario.

Cuando con una línea se resuelve un problema es que este es pequeño o la línea es buena.

Encender una luz al abrir de noche una puerta

Ahora quiero que la luz de la galería (“light.galeria”) se encienda al abrir la puerta (“binary_sensor.galeria_puerta”) si es de noche (Elevación del sol menor de 11º sobre el horizonte) y que se apague al cerrar la puerta.

alias: Galería - Luz automática
description: ''
trigger:
  - platform: state
    entity_id: binary_sensor.galeria_puerta
condition: []
action:
  - service: >-
      light.turn_{{ 'on' if state_attr('sun.sun','elevation') < 11 and
      states('binary_sensor.galeria_puerta') == 'on' else 'off' }}      
    target:
      entity_id: light.galeria
mode: single

Ahora, se encenderá la luz mediante una llamada al servicio “light.turn_on” cuando se abra la puerta y el atributo “elevation” del sol “sun.sun” esté por debajo de 11. En caso contrario se llamará al servicio “light.turn_off” y consecuentemente apagará la luz de “light.galeria”.

En mi repositorio de GitHub puedes encontrar todas las automatizaciones que actualmente tengo en uso en el archivo automations.yaml