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.
Excelente lo voy a usar para la luz del baño !!!