Saltar al contenido

Cómo reaccionan las automatizaciones a los cambios

Nivel avanzado: por qué una automatización arranca con un cambio y no con un estado, qué pasa al reiniciar y cuándo se comprueban las condiciones.

  • Publicado el
  • automatizaciones
  • avanzado
  • disparadores
  • condiciones

¿Tu automatización «no hace nada» aunque todo parece correcto? Casi siempre es por una de estas dos reglas:

  1. Una automatización arranca cuando algo cambia, no mientras algo es cierto.
  2. Las condiciones se comprueban una sola vez, justo después de que reaccione el disparador.

Este artículo las explica paso a paso, con lo que ocurre al guardar, recargar y reiniciar, y cómo escribir una automatización que funcione pase primero lo que pase. Es de nivel avanzado: conviene conocer ya los disparadores y los modos.

1. Los disparadores reaccionan a cambios

Una automatización no está vigilando si algo es cierto. Espera un cambio y entonces arranca. Por debajo, esos cambios son eventos: casi siempre, el cambio de estado de una entidad.

Gráfica de temperatura con un umbral de 25 °C: al guardar ya hay 26 °C y no reacciona; baja por debajo de 25 y queda preparado; al volver a superar 25 °C se dispara
Guardar con la temperatura ya por encima no cuenta como cruzar el umbral.

Paso a paso:

  1. Creas un disparador «Temperatura por encima de 25 °C» y lo guardas cuando ya hace 26 °C. No pasa nada: no ha habido ningún cruce.
  2. La temperatura baja a 25 °C o menos. El disparador queda preparado.
  3. Vuelve a superar los 25 °C. Ahora sí se dispara.

Por la misma razón:

2. Qué cuenta como cambio

No toda actualización de una entidad pone en marcha una automatización.

Tabla: cambio de atributo, mismo estado, vuelta desde unavailable y cambio que dura poco, frente a tres tipos de disparador, con marcas de sí y no
La respuesta depende del tipo de disparador.

3. Arranque, recarga y reinicio

Los disparadores solo reaccionan a lo que cambia mientras están preparados. Home Assistant los prepara al final del arranque, y de nuevo cuando recargas o guardas una automatización.

Línea de tiempo del arranque: Home Assistant empieza, las integraciones crean sus entidades (los cambios no cuentan), se preparan los disparadores y desde ahí los cambios sí cuentan
Lo que ocurre antes de que se preparen los disparadores no pone nada en marcha.

Por eso:

Recargar, apagar y encender o reiniciar no hacen lo mismo:

Tabla comparativa de recargar o guardar, apagar y encender, y reiniciar Home Assistant: qué se vuelve a preparar, qué pasa con las ejecuciones en curso, con las esperas y con el disparador de inicio
Solo el reinicio activa el disparador «Home Assistant se inicia».
Recargar o guardarApagar y encenderReiniciar
Se vuelven a prepararSolo las que cambiasteSolo esaTodas, al final del arranque
Ejecuciones en cursoSe detienen las de las cambiadasSe detienen las suyasSe detienen todas
Esperas «Durante al menos»Se cancelanSe cancelanSe cancelan todas
«Home Assistant se inicia»No reaccionaNo reaccionaReacciona

Una espera cancelada no se reanuda. Si una automatización esperaba «la puerta lleva abierta 10 minutos» y reinicias a los 8, el reloj no sigue: el disparador necesita un cambio nuevo para volver a empezar. Si la puerta sigue abierta, ya no avisará.

Cómo hacer que reaccione también tras un reinicio

Si necesitas que la automatización se ejecute aunque el cambio ocurriera antes, añade un segundo disparador de arranque y deja que las condiciones comprueben la situación actual:

triggers:
  - trigger: state
    entity_id: binary_sensor.puerta_entrada
    to: "on"
    for: "00:10:00"
  - trigger: homeassistant
    event: start
conditions:
  - condition: state
    entity_id: binary_sensor.puerta_entrada
    state: "on"
actions:
  - action: notify.mobile_app_mi_movil
    data:
      message: "La puerta de entrada sigue abierta."

Tras un reinicio, el aviso llega en cuanto arranca Home Assistant si la puerta está abierta, aunque no lleve 10 minutos. Si necesitas medir el tiempo de forma exacta aunque haya reinicios, guarda la hora del cambio en un ayudante de fecha y hora y compárala en la condición.

4. Las condiciones miran el estado actual, una vez

Una condición se comprueba una sola vez, justo después de que el disparador reaccione, y con el estado de ese instante, que puede no ser ya el del cambio que la puso en marcha.

Línea de tiempo: un interruptor se enciende y se apaga en dos segundos; el disparador reacciona al encenderse, pero cuando se comprueba la condición «está on» ya está apagado y no se cumple
La condición es una foto de ese instante, no una vigilancia.

Por eso:

5. Cuando dos cosas tienen que ser ciertas

Quieres encender el salón cuando Ana está en casa y ya es de noche. Si el disparador es «Ana llega a casa» y la condición es «es de noche», solo funciona si Ana llega de noche. Si llega de día, cuando se pone el sol no ocurre nada: la puesta de sol no es un disparador.

Comparación: con un solo disparador falla si Ana llega de día; con un disparador por cada cambio funciona en los dos casos. Esquema: disparadores Ana llega o anochece, condiciones Ana en casa y de noche, acción encender el salón
Un disparador por cada cambio y una condición por cada situación.

La solución: un disparador por cada cambio y una condición por cada situación.

alias: "Salón al anochecer con Ana en casa"
triggers:
  - trigger: zone.entered
    target:
      entity_id: person.ana
    options:
      zone: zone.home
  - trigger: sun
    event: sunset
conditions:
  - condition: state
    entity_id: person.ana
    state: home
  - condition: state
    entity_id: sun.sun
    state: below_horizon
actions:
  - action: light.turn_on
    target:
      entity_id: light.salon

En resumen

Piensa en momentos, no en situaciones: ¿qué cambio debería poner en marcha la automatización? Añade un disparador por cada uno, deja que las condiciones comprueben el estado en ese instante y recuerda que guardar, recargar o reiniciar cancela las esperas en curso. Si algo no funciona, abre las Trazas de la automatización: ahí ves qué disparador reaccionó y qué condición falló.

Fuente: documentación oficial de Home Assistant, How automations react to changes.

Volver a Artículos