Saltar al contenido

Automatizaciones Avanzadas Home Assistant: Guía 2026

24/02/2026

Actualizado el 22 de enero de 2026

Crear automatizaciones avanzadas en Home Assistant es lo que diferencia un simple conjunto de dispositivos conectados de un hogar verdaderamente inteligente y autónomo. Si llevas un tiempo en el mundo de la domótica, seguramente ya has superado el clásico «si se detecta movimiento, enciende la luz». En 2026, las herramientas que nos ofrece Home Assistant nos permiten construir lógicas complejas, eficientes y, sobre todo, fáciles de mantener. Esta guía definitiva te enseñará las técnicas clave que he estado perfeccionando durante años para llevar tus automatizaciones al siguiente nivel.

El Poder del `trigger_id`: Simplifica y Consolida tus Automatizaciones

Uno de los pilares para crear automatizaciones eficientes es la consolidación. En lugar de tener diez automatizaciones pequeñas que hacen cosas similares, a menudo es mejor tener una sola que gestione múltiples escenarios. Aquí es donde entra en juego el trigger id home assistant.

Imagina una automatización para la puerta del garaje. Quieres una notificación cuando se abre, pero una alerta mucho más urgente si se queda abierta más de 10 minutos. Antes, esto podría haber requerido dos automatizaciones separadas. Ahora, podemos asignar un id único a cada disparador (trigger) dentro de la misma automatización.

automation:
  - alias: "Gestión Inteligente Puerta Garaje"
    trigger:
      - platform: state
        id: "apertura_normal"
        entity_id: binary_sensor.puerta_garaje
        to: "on"
      - platform: state
        id: "olvidada_abierta"
        entity_id: binary_sensor.puerta_garaje
        to: "on"
        for:
          minutes: 10
    action:
    # ... aquí es donde usamos el ID para decidir qué hacer

Este id se pasa a la sección de acciones, permitiéndonos ejecutar diferentes lógicas según qué disparador activó la automatización.

Caso Práctico: Una Automatización, Múltiples Acciones con `choose`

La verdadera magia del trigger_id se desata cuando lo combinamos con la acción choose. Esto nos permite crear «ramas» lógicas dentro de una única automatización, haciendo el código mucho más limpio y legible. Siguiendo el ejemplo anterior, así gestionaríamos las dos notificaciones diferentes:

automation:
  - alias: "Gestión Inteligente Puerta Garaje"
    trigger:
      - platform: state
        id: "apertura_normal"
        entity_id: binary_sensor.puerta_garaje
        to: "on"
      - platform: state
        id: "olvidada_abierta"
        entity_id: binary_sensor.puerta_garaje
        to: "on"
        for:
          minutes: 10
    action:
      - choose:
          - conditions:
              - condition: trigger
                id: "apertura_normal"
            sequence:
              - service: notify.mobile_app_mi_telefono
                data:
                  message: "La puerta del garaje se ha abierto."
          - conditions:
              - condition: trigger
                id: "olvidada_abierta"
            sequence:
              - service: notify.mobile_app_mi_telefono
                data:
                  title: "¡ALERTA DE SEGURIDAD!"
                  message: "¡La puerta del garaje lleva más de 10 minutos abierta!"
                  data:
                    push:
                      sound:
                        name: default
                        critical: 1
                        volume: 1.0

Como puedes ver, una única automatización gestiona perfectamente dos escenarios distintos. Esta técnica es fundamental y funciona tanto si escribes el código en Home Assistant YAML como si utilizas el editor de automatizaciones visual, que desde hace años soporta estas funcionalidades de forma nativa.

Crea Lógica Inteligente con Condiciones Dinámicas

Las condiciones dinámicas en Home Assistant permiten que tus automatizaciones reaccionen al estado actual de tu hogar, no solo a valores fijos. Una de las implementaciones más útiles es la capacidad de comparar el estado numérico de una entidad con el de otra.

El ejemplo clásico que sigo usando en 2026 porque es increíblemente efectivo: notificar para cerrar las ventanas cuando la temperatura exterior supera a la interior.

automation:
  - alias: "Cerrar ventanas por calor exterior"
    trigger:
      - platform: numeric_state
        entity_id: sensor.temperatura_exterior
        above: sensor.temperatura_interior
    action:
      - service: notify.familia
        data:
          message: "Hace más calor fuera que dentro. ¡Es hora de cerrar las ventanas para mantener el frescor!"

Esta misma lógica se puede aplicar a condiciones de tiempo, permitiendo, por ejemplo, que una acción se ejecute solo si es después de la hora de amanecer, usando el estado del sensor sun.sun en lugar de una hora fija. Esto hace que tus automatizaciones se adapten automáticamente a las estaciones del año.

¿Tu Automatización Falló? Cómo Depurar Scripts y Automatizaciones

Una automatización avanzada puede volverse compleja, y cuando algo no funciona como se espera, es crucial tener herramientas para diagnosticar el problema. La función de «Trazas» (Traces) es tu mejor aliado para depurar scripts en Home Assistant.

Cada vez que una automatización se ejecuta (o incluso cuando sus condiciones no se cumplen y se detiene), se genera una traza. Dentro de la interfaz de Home Assistant, puedes acceder a estas trazas y ver un diagrama de flujo interactivo que muestra exactamente qué camino tomó la lógica, qué condiciones se evaluaron como verdaderas o falsas y qué datos se manejaron en cada paso. Si una automatización no está funcionando, revisar sus trazas es, sin duda, el primer paso que debes dar.

Tabla Comparativa: ¿Una Automatización Compleja o Varias Simples?

Una pregunta frecuente es si conviene agrupar la lógica en una automatización grande o mantener varias más pequeñas. Aquí te dejo una tabla comparativa basada en mi experiencia:

CriterioAutomatización Única con `trigger_id`Múltiples Automatizaciones Simples
MantenimientoMás fácil a largo plazo. Toda la lógica relacionada está en un solo lugar.Puede ser confuso. Un cambio puede requerir editar varias automatizaciones.
Complejidad InicialLigeramente mayor. Requiere entender `choose` y `trigger_id`.Muy baja. Cada automatización es un simple «si esto, entonces aquello».
LegibilidadAlta si está bien estructurada con alias y comentarios.Baja en la vista general. Es difícil ver cómo interactúan entre sí.
Eficiencia de RecursosGeneralmente más eficiente, ya que Home Assistant evalúa un solo «objeto» de automatización.Menos eficiente, especialmente si comparten disparadores, ya que se evalúan múltiples automatizaciones.

Bonus: Manipulación de Fechas en Plantillas

Las automatizaciones avanzadas a menudo implican cálculos de tiempo. Trabajar con fechas y horas en plantillas puede ser complicado, pero la función as_datetime simplifica enormemente la conversión de texto a un objeto de fecha y hora real, sobre el cual podemos realizar cálculos.

Por ejemplo, si tienes un sensor que te da la fecha de la próxima recogida de basura, puedes calcular fácilmente cuántos días faltan:

# En un sensor de plantilla o en una notificación:
{{ (states('sensor.proxima_recogida_basura') | as_datetime - now()).days }} días restantes.

Dominar las plantillas en YAML es una habilidad que te abrirá un mundo de posibilidades para personalizar tus automatizaciones y sensores.

Preguntas Frecuentes (FAQ) sobre Automatizaciones Avanzadas

¿Puedo usar `trigger_id` y `choose` en el editor visual de automatizaciones?

Sí, absolutamente. Desde hace ya varias versiones, el editor de automatizaciones de la interfaz de usuario de Home Assistant tiene soporte completo para asignar IDs a los disparadores y para añadir la acción «Elegir» (Choose), permitiéndote construir estas lógicas complejas sin escribir una sola línea de YAML.

¿Qué pasa si un disparador en mi automatización no tiene un `id`?

No hay problema. Si ese disparador activa la automatización, la variable trigger simplemente no contendrá la clave id. Puedes usar esto en tus condiciones, por ejemplo, para crear una acción por defecto que se ejecute si ningún disparador con ID específico fue el causante.

¿Cómo puedo empezar a usar Blueprints con estas técnicas?

Los Blueprints son la forma perfecta de empaquetar y compartir automatizaciones avanzadas. Puedes crear un Blueprint con múltiples entradas para disparadores (!input trigger_input_1) y luego usar los `id` internamente en tu sección de `action` con `choose` para manejar cada disparador de forma diferente. Esto permite crear Blueprints increíblemente flexibles y potentes.

Mi automatización usa una condición dinámica, pero no se activa. ¿Qué hago?

Primero, ve a las Trazas de la automatización para ver si se intentó ejecutar. Segundo, ve a «Herramientas para desarrolladores» -> «Estados» y comprueba los valores exactos de las entidades que estás comparando (sensor.temperatura_exterior y sensor.temperatura_interior en nuestro ejemplo). A veces, una entidad puede tener un estado «desconocido» o un formato inesperado que impide que la condición se evalúe correctamente.