Objetivo
Recibir en el móvil un único aviso cuya frase cambia sola: «la puerta está abierta» o «la puerta está cerrada».
Requisitos
- La app Home Assistant Companion instalada y vinculada en tu móvil. Crea la acción
notify.mobile_app_<tu_movil>. - Un sensor de puerta o ventana, por ejemplo
binary_sensor.puerta_entrada. - Saber abrir una automatización en YAML: Ajustes → Automatizaciones y escenas → Crear automatización → ⋮ → Editar en YAML.
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
trigger.to_statees el estado nuevo de la entidad que ha disparado la automatización. Su valor (.state) es siempre un texto: en los sensores binarios,onuoff.- El diccionario
textostraduce cada estado técnico a una palabra legible. Usar.get(estado, 'texto por defecto')evita un error si llega un valor inesperado. not_fromynot_todescartan los cambios desde o haciaunavailableyunknown. Sin ellos recibirías avisos falsos cada vez que el sensor pierde la conexión o Home Assistant se reinicia.mode: queuedpone en cola las ejecuciones. Si abres y cierras la puerta muy rápido, llegan los dos avisos en orden.>-indica a YAML que el mensaje ocupa varias líneas pero debe unirse en una sola frase.
Resultado
Acción
binary_sensor.puerta_entrada
cambia de off a on a las 19:42Resultado
Puerta de entrada
La puerta está abierta (19:42).Acción
binary_sensor.puerta_entrada
cambia de on a off a las 19:43Resultado
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') }}.