Vamos a continuar con la configuración de las notificaciones push en home assistant. Venimos de configurar el servicio de notificaciones y ya somos capaces de enviar nuestra primera notificación de ejemplo. Al final de este post seremos capaces de tener notificaciones interactivas donde podremos ejecutar comandos de respuesta.
Para facilitar este post, realizaremos la configuración siguiendo un ejemplo. Nuestro ejemplo consistirá en poder abrir la puerta si llaman al timbre, como por ejemplo si hemos realizado la modificación al vídeo portero, aunque esto solo servirá de ejemplo.
Tabla de contenidos
Creando notificación simple
Lo primero que tenemos que hacer es crear una automatización o editar alguna existente con la cual queramos disparar una notificación por HTML5. Por ejemplo, cuando llamen al timbre.
De esa manera, cuando llamen al timbre recibiremos la notificación en los dispositivos suscritos. De momento, realizaremos la automatización notificando a todos los usuarios suscritos.
Vamos a seguir con el ejemplo del videoportero. Suponiendo que hemos llamado a nuestra plataforma «notifications.htmlpush», un ejemplo de notificación sería el siguiente:
- id: '1'
alias: 'Pican a la puerta'
hide_entity: true
trigger:
platform: state
entity_id: binary_sensor.timbre_videportero
from: 'off'
to: 'on'
action:
- service: notify.htmlpush
data:
message: 'Estan llamando al timbre'
title: 'Timbre'
Con esto, recibiremos una notificación cuando nos llamen al timbre. Hasta aquí, nada distinto a lo que teniamos anteriormente.
Añadiendo acciones a la notificación
Sin embargo, la potencia de estas notificaciones reside en que también pueden ponerse acciones a ejecutar. En nuestro caso, vamos a configurar en la notificación de llamada al timbre vamos a añadir un botón para abrir la puerta. Para ello, dentro del servicio notify.htmlpush, añadiremos los parametros action, dentro de otra clave ‘data’. Modificamos la acción anterior para que quede como sigue:
- id: '1'
alias: 'Pican a la puerta'
hide_entity: true
trigger:
platform: state
entity_id: binary_sensor.timbre_videportero
from: 'off'
to: 'on'
action:
- service: notify.htmlpush
data:
message: 'Estan llamando al timbre'
title: 'Timbre'
data:
actions:
- action: "abrir_puerta"
title: "Abrir"
De esta manera, tendremos un botón en la notificación para abrir la puerta:

SI quisieramos más acciones, podríamos añadirlas en al array de actions.
Ahora debemos interceptar el comando, es decir, configurar el qué queremos hacer cuando hagan click en una acción u en otra. es por eso que es importante al nombre de la acción, el valor que aparece en la clave – action. Es importante que sea único en toda la app, ya que será la clave que nos ayudará a identificar en las automatizaciones qué acción o script queremos ejecutar.
Para ello, añadimos una nueva automatización para interceptar el «abrir_puerta»:
- alias: "abrir puerta"
trigger:
platform: event
event_type: html5_notification.clicked
event_data:
action: abrir_puerta
action:
- service: script.turn_on
entity_id: script.videportero
- service: notify.pushchrome
data:
message: "Puerta abierta"
###################
#
# Automatización para cuando llaman a la puerta
#
#####################
- id: '1'
alias: 'Pican a la puerta'
hide_entity: true
trigger:
platform: state
entity_id: binary_sensor.timbre_videportero
from: 'off'
to: 'on'
action:
- service: notify.htmlpush
data:
message: 'Estan llamando al timbre'
title: 'Timbre'
data:
actions:
- action: "abrir_puerta"
title: "Abrir"
##Callback de las acciones
- alias: "abrir puerta"
trigger:
platform: event
event_type: html5_notification.clicked
event_data:
action: abrir_puerta
action:
- service: script.turn_on
entity_id: script.videportero
- service: notify.pushchrome
data:
message: "Puerta abierta"
Filtrar dispositivos a notificar
Con la configuración anterior, todos los dispositivos suscritos recibirían la notificación, y podrían tomar la determinación de abrir o no la puerta. Sin embargo, se puede filtrar este comportamiento para enviar solo la notificación a algunos dispositivos.
Para ello, con cada suscripción, Home assistant habrá creado una entrada en un fichero json en /config/html5_push_registrations.conf como la siguiente:
"unnamed device": {
"browser": "chrome",
"subscription": {
"endpoint": "https://android.googleapis.com/gcm/send/fQooZ....",
"expirationTime": null,
"keys": {
"auth": "4wK[...]",
"p256dh": "BNKW5Oa_JoFAMVP[...]E"
}
}
}
SI vamos añadiendo las suscripciones una a una, podremos saber de qué dispositivo son. A continuación podemos editar el nombre «unnamed device» y poner lo que queramos, por ejemplo, «Mi movil»
"Mi movil": {
"browser": "chrome",
"subscription": {
"endpoint": "https://android.googleapis.com/gcm/send/fQooZ....",
"expirationTime": null,
"keys": {
"auth": "4wK[...]",
"p256dh": "BNKW5Oa_JoFAMVP[...]E"
}
}
}
A continuación, después de los cambios , es necesario reiniciar HA.
Una vez arrancado, podemos editar las automatizaciones añadiendo a quién queremos enviar la notificación. SI no indicamos nada, se enviarán a todos los dispositivos suscritos. Para ello, debermos añadir un atributo target indicando a quién va dirigida la notificación. Así, si quisieramos enviar la anterior sólo al dispositvo Mi MOvil, editado anteriormente, nuestra automatización quedaría como sigue:
- id: '1'
alias: 'Pican a la puerta'
hide_entity: true
trigger:
platform: state
entity_id: binary_sensor.timbre_videportero
from: 'off'
to: 'on'
action:
- service: notify.htmlpush
data:
message: 'Estan llamando al timbre'
title: 'Timbre'
target: 'Mi movil'
data:
actions:
- action: "abrir_puerta"
title: "Abrir"
Como en todas las ocasiones, podemos usar templates en los mensajes, títulos, etc.
Con esto, ya tenemos nuestras notificaciones bidireccionales funcionando!
Como siempre, si tenéis cualquier duda, dejad vuestros comentarios en la web o en el grupo de telegram de @Domology
Saludos y Happy Automation!