Saltar al contenido

Notificaciones con texto según el estado

Usa una plantilla Jinja2 para que una sola automatización envíe un mensaje distinto según el estado de la entidad que la dispara.

  • básico
  • Publicado el

Objetivo

Recibir en el móvil un único aviso cuya frase cambia sola: «la puerta está abierta» o «la puerta está cerrada».

Requisitos

El código

alias: "Aviso de puerta de entrada"
description: "Notifica al móvil cuando la puerta se abre o se cierra"
mode: queued
triggers:
  - trigger: state
    entity_id: binary_sensor.puerta_entrada
    not_from: ["unavailable", "unknown"]
    not_to: ["unavailable", "unknown"]
actions:
  - action: notify.mobile_app_mi_movil
    data:
      title: "Puerta de entrada"
      message: >-
        {% set textos = {'on': 'abierta', 'off': 'cerrada'} %}
        La puerta está {{ textos.get(trigger.to_state.state, 'en un estado desconocido') }}
        ({{ now().strftime('%H:%M') }}).

Cambia binary_sensor.puerta_entrada y notify.mobile_app_mi_movil por los nombres de tu instalación.

Cómo funciona

Resultado

Acción
binary_sensor.puerta_entrada
cambia de off a on a las 19:42
Resultado
Puerta de entrada
La puerta está abierta (19:42).
Acción
binary_sensor.puerta_entrada
cambia de on a off a las 19:43
Resultado
Puerta de entrada
La puerta está cerrada (19:43).

Pruébalo sin abrir la puerta

En Herramientas para desarrolladores → Plantilla no existe la variable trigger, pero puedes probar la misma lógica leyendo el estado actual con states():

{% set textos = {'on': 'abierta', 'off': 'cerrada'} %}
La puerta está {{ textos.get(states('binary_sensor.puerta_entrada'), 'en un estado desconocido') }}.

Variante: varias puertas con una sola automatización

Añade más entidades al disparador y usa el nombre de la que ha cambiado (trigger.to_state.name) en lugar de un título fijo:

triggers:
  - trigger: state
    entity_id:
      - binary_sensor.puerta_entrada
      - binary_sensor.puerta_terraza
    not_from: ["unavailable", "unknown"]
    not_to: ["unavailable", "unknown"]
actions:
  - action: notify.mobile_app_mi_movil
    data:
      title: "{{ trigger.to_state.name }}"
      message: >-
        {% set textos = {'on': 'abierta', 'off': 'cerrada'} %}
        Ahora está {{ textos.get(trigger.to_state.state, 'en un estado desconocido') }}.
Volver a Repositorio