Publicado y última revisión: 23/09/2026
Automatizaciones en Home Assistant con YAML: triggers, conditions y actions (2026)
Una automatización de Home Assistant son tres piezas encadenadas: algo ocurre (trigger), compruebas si se cumple una condición, y ejecutas una acción. Esta guía copia los tres bloques con ejemplos que puedes pegar y modificar.
La estructura mínima
En YAML, una automatización se escribe dentro de la clave automation: como una lista. Los tres bloques van siempre en este orden:
automation:
- alias: "Encender la luz del pasillo al atardecer"
triggers:
- trigger: sun
event: sunset
conditions:
- condition: state
entity_id: person.alice
state: "home"
actions:
- action: light.turn_on
target:
entity_id: light.pasillo
data:
brightness_pct: 70
Cada bloque es una lista. Puedes tener varios triggers, varias conditions y varias actions. Si no necesitas condiciones, deja conditions: [] o quita ese bloque.
La documentación oficial de Home Assistant usa esta misma estructura, con los plurales triggers, conditions y actions. Ejemplos de esta guía están contrastados contra la documentación oficial consultada hoy, 23/09/2026.
Triggers: qué dispara la automatización
El trigger es el suceso que arranca la automatización. Puedes poner varios; se comportan como un O lógico: basta con que uno se dispare para evaluar el resto.
| Trigger | Para qué sirve | Ejemplo mínimo |
|---|---|---|
state | Cuando una entidad cambia a un estado concreto | to: "on" |
time | A una hora fija o con cadencia | at: "23:00:00" |
sun | Salida o puesta de sol, con offset | event: sunset |
numeric_state | Cuando un sensor cruza un valor numérico | above: 25 |
template | Cuando una plantilla evalúa a true | value_template: "{{ is_state('binary_sensor.puerta_entrada', 'on') }}" |
event | Eventos emitidos por integraciones | event_type: state_changed |
La clave to indica el estado al que debe llegar, y from el estado del que viene. No hace falta usar ambas: si solo quieres que salte cuando la puerta pase a abierta, usa to: "on".
triggers:
- trigger: state
entity_id:
- binary_sensor.puerta_entrada
to: "on"
id: "puerta"
- trigger: time
at: "23:00:00"
id: "noche"
Referenciar un trigger por su id
Cuando una automatización tiene varios disparadores, casi siempre te interesa saber cuál saltó. La plantilla trigger.id te da el id que asignaste. Se combina con choose en las acciones.
actions:
- choose:
- conditions: "{{ trigger.id == 'puerta' }}"
sequence:
- action: notify.notify
data:
message: "Se abrió la puerta de entrada"
- conditions: "{{ trigger.id == 'noche' }}"
sequence:
- action: light.turn_off
target:
entity_id: light.salon
Conditions: cuándo no debe ejecutarse
Las condiciones se evalúan después del trigger. Si falla una, la automatización no ejecuta acciones (salvo que uses choose con secuencias distintas). Para combinar varias condiciones usa and, or y not.
conditions:
- condition: and
conditions:
- condition: state
entity_id: person.alice
state: "home"
- condition: time
after: "16:00:00"
before: "23:00:00"
Condiciones útiles: state, numeric_state, template, time y zone. Las más usadas en domótica local son state (¿hay alguien en casa?) y numeric_state (¿la batería está por debajo del 20%?).
Actions: qué se ejecuta
Las acciones son llamadas a servicios. Puedes encadenar varias y controlar el flujo con choose, repeat, delay o if. Un patrón muy común es esperar un minuto y apagar la luz, evitando que quede encendida por error.
actions:
- action: light.turn_on
target:
entity_id: light.pasillo
data:
brightness_pct: 70
- delay: "00:01:00"
- action: light.turn_off
target:
entity_id: light.pasillo
Plantilla completa copiable
Esta automatización enciende la luz del pasillo al atardecer si hay alguien en casa, y la apaga a los cinco minutos. Cámbiala por tus entidades y pruébala antes de darla por buena.
automation:
- alias: "Luz del pasillo al atardecer"
triggers:
- trigger: sun
event: sunset
offset: "-00:15:00"
conditions:
- condition: state
entity_id: person.alice
state: "home"
actions:
- action: light.turn_on
target:
entity_id: light.pasillo
data:
brightness_pct: 60
- delay: "00:05:00"
- action: light.turn_off
target:
entity_id: light.pasillo
Qué comprobé antes de publicar
Contrasté la sintaxis con la documentación oficial de Home Assistant (Automation basics y páginas de triggers, conditions y actions) a fecha 23/09/2026. El uso de trigger.id con choose aparece reflejado en la documentación oficial; no es un atajo no documentado. No he podido probar esta automatización en una instalación real hoy, así que si encuentras una entidad con nombre distinto, ajusta entity_id y pruébala antes de fiarte del todo.
Última revisión: 23/09/2026