Después de pelearme bastante tiempo con Timer una herramienta de Home Assistant que nos permite hacer algo sin tener que esperar un evento o, al menos, controlar el tiempo hasta que sucede, de hecho, sin tener que repetir automatizaciones, podemos hacer que esté funcionando de forma continuada.

Os explico lo que quería hacer para entender el funcionamiento de Timer en mi caso:

Tengo una luz en la cocina bajo la encimera (tengo pendiente publicar el cambio que le hice a la luz) que usando un sensor de movimiento, en mi caso un sensor de movimiento Aqara para poder controlar la luminosidad, enciende la luz cuando detecta movimiento, siempre que tenga menos luz de la indicada para que se encienda solo cuando empieza a faltar luz en la cocina.

La automatización, podría hacerse de forma sencilla usando el estado del sensor de movimiento, pero, al minuto y medio, la luz se apagaría si no detecta movimiento de continuo, algo molesto cuando estás haciendo algo en la cocina y, por tanto, había que mejorar ese comportamiento.

Estuve mirando como hacerlo y tenía pensado hacerlo por medio de algún indicador binario para saber cuando apagar o no la luz, pero, encontré los Timers y aunque me ha costado llegar a lo que creo que es la solución, lo tengo en pruebas, pero, seguro que a más de uno le puede ayudar a mantener la luz siempre encendida mientras sea necesario.

Declaración de Timer en configuration.yaml

Lo primero que tendremos que hacer es en nuestro configuration, declarar el Timer que queremos, que, en mi caso lo he puesto de 2:20 para dar un tiempo prudencial para confirmar que nos hemos ido:

timer:
  cocina:
    duration: '00:02:20'

Automations con Timer en Home Assistant

Una vez hecho eso necesitaremos 3 automations:

  • Encendido de la luz la primera vez que entramos a la cocina y se detecta movimiento, activando también el timer para que empiece a contar. Encendemos la luz cuando cocinaPIR_occupancy (el sensor de Aqara) siempre que la luminosidad en cocinaPIR_illuminance sea inferior a 12 lx:
- id: '1539039314913'
  alias: Cocina LED ON
  trigger:
  - platform: state
    entity_id: binary_sensor.cocinaPIR_occupancy
    from: 'off'
    to: 'on'
  condition:
  - below: '12'
    condition: numeric_state
    entity_id: sensor.cocinaPIR_illuminance
  action:
  - service: switch.turn_on
    data:
      entity_id: switch.LEDCocinaEncimera
  - service: timer.start
    data:
      entity_id: timer.cocina
  • Reseteo de la cuenta para que el Timer vuelva a contar desde el principio, en caso de que la luz esté encendida y el sensor de movimiento pase de off a on de nuevo (dejó de detectar movimiento, pero ha vuelto a detectar movimiento):
- id: '15390123123913'
  alias: Cocina LED Timer
  trigger:
  - platform: state
    entity_id: binary_sensor.cocinaPIR_occupancy
    from: 'off'
    to: 'on'
  condition:
  - condition: state
    state: 'on'
    entity_id: switch.LEDCocinaEncimera
  action:
  - service: timer.start
    data:
      entity_id: timer.cocina
      duration: '00:02:20'
  • Por último, la automation que apagará la luz, cuando el Timer llegue a cero y el sensor de movimiento esté en off, es decir, ya no se detecta movimiento:
- id: '1011'
  alias: Apagado LED Cocina
  trigger:
  - platform: event
    event_type: timer.finished
    event_data:
      entity_id: timer.cocina
  condition:
  - condition: state
    state: 'off'
    entity_id: binary_sensor.cocinaPIR_occupancy
  action:
  - service: switch.turn_off
    data:
      entity_id: switch.LEDCocinaEncimera

ACTUALIZACIÓN: He tenido que añadir una automatización más, ya que, se daba el caso de que el Timer se acababa, pero, el sensor de movimiento seguía en on, por lo que no apagaba la luz y, al no haber más Timer, la luz permanecía encendida, esta es la que he puesto y ahora si que parece ir bien:

- id: '10122'
  alias: Reinicio del timer
  trigger:
  - platform: event
    event_type: timer.finished
    event_data:
      entity_id: timer.cocina
  condition:
  - condition: state
    state: 'on'
    entity_id: binary_sensor.cocinaPIR_occupancy
  action:
  - service: timer.start
    data:
      entity_id: timer.cocina
      duration: '00:02:20'

Cada vez que iniciamos un Timer, si se estaba ejecutando, reinicia su duración a la que tenga por defecto, o a la que le especificamos en el momento de llamarlo. Para determinar si un Timer ha terminado, podemos verlo por medio del evento finished o bien si la hemos parado por medio de cancelled.

Es un tutorial sencillo, pero como me ha costado dejarlo en su sitio, lo comparto para aquellos que quieran controlar una luz u otro objeto de casa por medio de un temporizador. Si necesitáis más información de los Timer en Home Assistant, podéis verlo aquí.

¿Lo habéis podido poner?

IMPORTANTE: Con el fin de ayudaros de una forma más directa, he creado un grupo en Telegram de Home Assistant en Español donde podemos ayudarnos todos así como evitar que os quedéis atascados, si tenéis Telegram podéis pulsar aquí para uniros y si no lo tenéis, os recomiendo que os lo instaléis ya que lo usaremos en el tutorial para notificarnos.

¿Quieres montarte tu propio sistema Smart Home?¿Te gustaría empezar poco a poco teniendo Google Home, Alexa o Home Assistant para controlar las luces, calefacción y otros electrodomésticos de la casa? ¡Te ayudamos! Entra en nuestro Grupo de Telégram de Domótica y también puedes entrar a nuestro Foro de Domótica donde podrás empezar a leer y preguntar tus dudas. Además, si quieres estar al tanto de las ofertas de domótica que salen a diario para poder hacerte un sistema de domótica low cost, entra a nuestro Canal de ofertas de domótica y no te perderás ni una o si lo prefieres y no tienes Telegram, puedes entrar a nuestra página de ofertas de domótica o Smart Home en Facebook. ¡Síguenos también en nuestro Facebook, Twitter o Instagram! ¡Te esperamos! Si también buscas otro tipo de ofertas, puedes echar un ojo a nuestros otros canales: * Tecnología en general * * Juguetes / consolas / Juegos de mesa * * Manualidades * Si no tienes Telegram puedes consultar todas las ofertas en Megabazar.es