Las notificaciones son importantes en un hogar inteligente, pero cuando unimos Home Assistant y Telegram, el resultado supera todo lo esperado. Fiabilidad y flexibilidad

Estamos de nuevo con temas de notificaciones, y es que ésta será la principal vía cómoda con la que nuestro sistema domótico nos puede informar de acontecimientos detectados o acciones realizadas. Adicionalmente nos servirá como registro de dichas notificaciones en Telegram desde Home Assistant.

Hemos elegido la plataforma de Telegram por estar bien soportada en Home Assistant y ser un sistema bastante robusto.

Veremos también estrategias de notificación por prioridades, distinguiendo entre mensajes meramente informativos y aquellos que van a requerir alguna acción por nuestra parte.

También estaremos en disposición de incluir a otros miembros de la familia que lo necesiten en estas alertas Telegram.


Paso 1. Creación de un Bot de Telegram

Nuestro sistema domótico hablará por Telegram como un Bot. Para ello tendremos primero que crearlo con el siguiente procedimiento:

  • Desde un cliente Telegram (si lo tenemos ya en el móvil perfecto, si no debes crear previamente una cuenta e instalar la aplicación) buscaremos en contactos a BotFather, con un check azul que nos indicará que es el oficial:
Notificaciones en Telegram desde Home Assistant
  • En el chat con BotFater teclearemos /newbot para indicar que queremos crear un nuevo bot.
  • Nos preguntará por el nombre del Bot que queremos crear. Os aconsejo algo corto que identifique vuestro sistema con Home Assistant. Por ejemplo HA_MiCalle:
  • Y un nombre de usuario que debe acabar en «bot». Por ejemplo HA_MiCalle_bot:
  • Anotar el Token que nos muestra. Nos hará falta más tarde:

Por ahora ya está. Más tarde podréis personalizarlo con alguna foto por ejemplo.


Paso 2. Obtener identificadores de chats

Antes de crear los grupos, iniciaremos un chat directamente con el bot y pondremos cualquier cosa para activarlo.

Ahora vamos a crear 2 grupos distintos e incluimos a nuestro bot en dichos grupos:

  • Grupo para mensajes informativos: Le llamaremos por ejemplo MiCasa
  • Grupo para mensajes urgentes: Le llamamos por ejemplo MiCasa_URGENTE

Crearemos los grupos anteriores (MiCasa y MiCasa_URGENTE) incluyendo a nuestro bot. Os aconsejo que por ahora para pruebas no se incluya a nadie más, pero más tarde es tan fácil como meter en el grupo a cualquiera que necesite leer esos mensajes de Home Assistant.

La idea como habréis podido imaginar es que MiCasa_URGENTE tenga un tono de notificación potente, mientras que el grupo MiCasa podemos tenerlo sin sonido.

Vamos a obtener los identificadores de chat que identificarán ambos grupos y que necesitaremos para poder diferenciar según el tipo de mensaje que generemos en Home Assistant.

En cada grupo, de forma temporal incluiremos a otro Bot existente llamado GetIDs Bot, y automáticamente nos dará la información que queremos. El identificador de un grupo siempre incluye un guión al principio de la numeración:


Paso 3. Parada para resumir y un café

Resumiendo, en este punto tendremos:

  • Un Bot creado
  • 2 grupos de Telegram con nuestro Bot como mienbro en cada uno de ellos.
  • Un Token
  • 2 Identificadores de grupo (Todos los identificadores de grupo comienzan con un guión)

Paso 4. Seguimos… Notificaciones a Telegram desde Home Assistant

En el fichero configuration.yaml debemos incluir el siguiente código:

telegram_bot:
  - platform: broadcast
    api_key: wicskdjfejr:-inventado-fRiWIW9CdqsZQhL2-qMP1BNlzHtGiO
    url: https://tuDominio.duckdns.org:80
    allowed_chat_ids: [-12345678,-98765432]
    # -12345678 = Grupo mensajes urgentes (con notificación), reemplaza con los tuyos
    # -98765432 = Grupo mensajes no urgentes (sin notificación), reemplaza con los tuyos

notify:
  - platform: telegram
    name: telegramnormal
    chat_id: -98765432
  - platfotm: telegram
    name: Telegramurgente
    chat_id: -12345678

Este fragmento tendréis que modificarlo indicando vuestro token (api_key), vuestros identificadores de grupo y vuestro dominio en DuckDNS (ver en este post cómo se hace: https://www.pacienciadigital.com/instalacion-de-duckdns-en-home-assistant-acceso-remoto-desde-internet/ )

En este otro post se indica cómo editar el fichero desde el propio Home Assistant.

Tendremos que resetear Home Assistant para que tome la nueva configuración: En las versiones de HA más modernas estará en el menú Developer Tools > YAML, y en las versiones anteriores en el menú Connfiguration, la opción Server Controls:

Siempre chequearemos primero que nuestro fichero configuration.yaml es correcto con la opción «CHECK CONFIGURATION» para luego resetear. Perderemos la conexión un momento mientras vuelve a arrancar.


Paso 5. Pruebas de alertas telegram

Vamos a configurar una automatización de ejemplo muy simple, pero que os dará una idea de cómo usar las notificaciones a Telegram desde Home Assistant.

Si simplement quieres probar el servicio, lo haremos desde Developer Tools > Services:

Os paso unos pantallazos. El sistema de interface gráfica es muy intuitivo:

Y con esto tendremos un mensaje en el grupo de emergencia que especifiquemos en el campo target indicando el identificador correspondiente cuando se detecte movimiento en una zona determinada entre las horas y días que le hemos indicado.

Por suerte, para el caso de las automatizaciones, no será necesario reiniciar Home Assistant, simplemente tendremos que ir al menú Configuration y en la opción Server Controls podremos recargar AUTOMATIONS sin reiniciar.

Podemos probar la automatización recién creada con la opción RUN ACTIONS

Extra: Identificando al emisor en notificaciones de Telegram

Cuando se use el servicio de envío de mensajes a Telegram desde una automatización, y sobre todo cuando ya tengamos muchas de esas notificaciones, os será de mucha utilidad acceder a los atributos de la automatización y enviarlos en el propio mensaje.

Cuando configuremos una automatización, y de manera opcional, podremos identificar cada trigger (cada condición que puede hacer que se ejecute el automatismo) con un texto único que queramos (es el llamado trigger.id) . De esta manera podremos identificar en la notificación por cuál de los triggers ha saltado.

También usaremos el propio nombre de la automatización (será el atributo friendly_name)

La ventaja de tener un modelo genérico de mensaje de Telegram es que podréis usarlo tal cual en cualquier otra automatización.

Vamos a verlo de nuevo con un ejemplo: Vamos a crear un modo de alarma general, que nos envíe un mensaje (vía Telegram) identificando cuál de nuestros sensores la ha activado y por supuesto que ha sido por tener el modo alarma activado:

Lo llamaremos General. Modo alarma :

Modo alarma Home Assistant

En los Trigger ID pondremos algún texto no muy largo identificativo de cada iniciador:

Iniciadores automatización

Y por último en la acción pondremos nuestro mensaje de Telegram con el editor de yaml:

Os lo dejamos también en código listo para copiar y pegar en cualquiera de vuestras automatizaciones (recordad cambiar el target):

service: telegram_bot.send_message
data:
  title: '{{this.attributes.friendly_name}}'
  message: 'Origen: {{trigger.id}}'
  target: -12345678

Y esto es lo que nos saldrá al recibir una notificación:


6 comentarios en «Las notificaciones son importantes en un hogar inteligente, pero cuando unimos Home Assistant y Telegram, el resultado supera todo lo esperado. Fiabilidad y flexibilidad»

  1. Hola
    Muchas gracias. he conseguido que funcione todo excepto, que a la hora de meter los triggers para que me de el nombre , no consigo hacerlo funcionar.
    mi version de HA solo tiene id y meta lo que meta entre los {{}} siempre se manda vacio.
    sabrias que podria estar pasandome?
    muchas gracias.

    Responder
    • Hola Javier, gracias por el comentario. La funcionalidad de Trigger ID solo aparece a partir de la release 2021.7. Si tu version es anterior puede que sea el motivo.
      Tambien prueba a poner otros datos a ver si te llega bien la notificacion, como por ejemplo {{states(‘sun.sun’)}}
      Espero que te ayude.
      Saludos.

      Responder
  2. Hola
    tengo la ultima version que ha salido para mi rp3
    Home Assistant 2022.11.0b1
    Supervisor 2022.10.2
    Operating System 9.3
    Frontend 20221027.0 – latest

    me sale el siguiente error, ponga lo que ponga:
    template value should be a string for dictiorary value @ data[0][‘data’]
    este me sale con el que me has puesto del sun.

    Muchas gracias
    ps: por cierto, no se si sabras tu algo…despues de actualizar ayer, me ha desaparecido la opcion de scripts donde me salia antes (ajustes/automatizaciones/) solo me aparecen las automatizaciones, las escenas y planos…
    y los script que tenia creados me dice al intentar ejecutarlos que no existen.
    muchas gracias!!

    Responder
    • Hola Javier, el error que indicas en el template, al parecer aparece al intentar probar la automatizacion pero al ejecutar de manera real queda bien. No sabemos si sera tu caso, pero aqui lo explican bien. Con respecto al error de scripts con nuestra version actual en la maquina de pruebsa (2022.10.4) no vemos el problema que indicas.

      Responder
  3. Muchas gracias!
    voy a mirar el link que me indicas para ver si consigo solucionarlo.
    respecto a lo de los scripts, me pasa desde ayer como te decia y la maquina la he reiniciado un par de veces y nada….seguiré investigando.

    muchas gracias!

    Responder
  4. Hola.
    finalmente consegui meter estados de mis sensores con
    {{states(‘nombre_sensor’)}}
    lo unico que no he conseguido aun es que me diga que dispositivo ha disparado la automatización, pero seguiré haciendo pruebas.
    Muchas gracias.

    Responder

Deja un comentario