Conectar Telegram con Home Assistant

¿Cuál es la mejor manera de recibir notificaciones personales o compartidas, y enviar comandos? En mi opinión, conectar Telegram con Home Assistant.

¿Por qué conectar Telegram con Home Assistant?

En primer lugar esta integración te va a permitir enviar notificaciones desde Home Assistant como parte de tus automatizaciones, lo cuál es muy útil cuando quieres que te reporte cierta información. Destacar que te va a llegar la información, incluso aunque estés fuera de casa y no tengas habilitado el acceso a HA desde el exterior.

Además, estas notificaciones pueden enviarse de forma personalizada a uno de los usuarios de la casa, pero también vas a poder crear grupos con varios miembros. Esto es muy útil cuando se trata de información compartida, o el objetivo es que alguien lleve a cabo una acción en casa (y da igual quién).

Por último, pero no menos importante, puedes enviar comandos directamente desde Telegram, y utilizarlo como disparador de tus automatizaciones. Puedes construir diálogos estructurados con HA, de forma que la comunicación sea más intuitiva para todos los miembros del hogar y puedan manejarlo teniendo una simple conversación.

Integración con Home Assistant

Sigue los siguientes pasos para conectar Telegram con Home Assistant:

  1. Abre la web de Telegram y haz log in.
  2. Lo primero que tenemos que hacer es crear el ‘bot’ con el que nos vamos a comunicar con HA. Para ello busca entre los contactos ‘BotFather‘ y abre una conversación. Introduce el comando ‘/start’ y luego ‘/newbot’. Ahora le tienes que indicar el nombre del ‘bot’ (por ejemplo, Aguacatec). A continuación te pedirá que le asignes un nombre de usuario (que debe ser único en Telegram y acabado en bot). Puedes probar con el mismo nombre (por ejemplo, Aguacatec_bot), y en caso de que ya esté en uso modificarlo.
  3. Hecho esto te aparecerá en pantalla el token de tu ‘bot’ que debes copiar y conservar. Antes de continuar, haz clic sobre el enlace a tu ‘bot’ que te proporciona y pulsa el botón de “Iniciar”. Puedes ponerle una imagen al ‘bot’ si te apetece, ahora o en cualquier momento.
  4. Ahora vamos a identificar los chats en los que hablaremos con el ‘bot’ (tanto las conversaciones con cada usuario, como los grupos que creemos). Para ello tienes que buscar entre los contactos ‘Chat ID Bot‘ (@chat_id_echo_bot). Pulsa el botón de “Iniciar” para que te devuelva el ID de tu usuario, que debes copiar y conservar. Repite el proceso desde la aplicación del resto de usuarios de tu casa para obtener su ID y poder mandarle notificaciones personalizadas.
chat id bot
  1. Hecho esto, crea un nuevo grupo y agrega como usuario a ‘Chat ID Bot‘ para que te devuelva el ID del grupo (que empieza por ‘-‘). Agrega también al ‘bot’ que hemos creado para hablar con HA, así como a los usuarios que quieres que formen parte del grupo (tus compañeros de piso, tu pareja, tus hijos…). También puedes crear varios grupos, y ponerle una imagen si quieres, ahora o en cualquier momento.
  2. Finalmente ve a Home Assistant y copia el siguiente código en tu fichero ‘configuration.yaml’, sustituyendo las ‘ids’ de usuarios y grupos. Una vez hecho reinicia HA.
telegram_bot:
  - platform: polling
    api_key: TOKEN-DE-TU-BOT
    allowed_chat_ids:
      - ID-USUARIO-1 # por ejemplo: 0000000001
      - ID-USUARIO-2 # por ejemplo: 0000000002
      - ID-GRUPO-1 # por ejemplo: 000000000-1

notify:
  - platform: telegram
    name: USUARIO-1
    chat_id: ID-USUARIO-1

  - platform: telegram
    name: GRUPO-1
    chat_id: ID-GRUPO-1

Si quieres comprobar que todo ha ido correctamente, accede a Herramientas para desarrolladores > Servicios y busca el servicio ‘notify’. Verás que te aparecen todos usuarios que has añadido en el código anterior. Selecciona cualquiera de ellos e introduce algún texto en el campo ‘Message’. Pulsa el botón ‘Llamar servicio’ e inmediatamente recibirás la notificación en Telegram.

Notificaciones sencillas

Como acabas de comprobar ya puedes utilizar el servicio ‘notify’ en tus automatizaciones. Para ello lo único que tienes que hacer cuando crees un ‘script’ o una automatización es incluir entre las acciones la opción “Llamar servicio” y buscar ‘notify’. De la lista que aparezca, debes seleccionar el usuario (o grupo) al que va dirigida la notificación.

Para una notificación puramente informativa basta con que cumplimentes el campo de ‘Message’ y/o ‘Title’, pudiendo dejar el resto en blanco. Quizás te interese saber que puedes incluir ’emojis’ en tus mensajes, y que el ‘Title’ se muestra en la primera línea y el ‘Message’ en la siguiente. Asimismo, puedes crear saltos de línea dentro de ambos campos, seleccionando “Editar en YAML” y añadiendo un par de saltos de línea entre un párrafo y otro.

Estas son notificaciones planas, cuyo propósito va a ser proporcionarte información. El uso que le puedes dar es tan variado como recibir una felicitación cuando alcances tu objetivo de actividad física, un aviso cuando tus criptomonedas alcancen cierto valor… En general cualquier cosa que se te ocurra.

Notificaciones con comandos

Las notificaciones informativas son de gran utilidad, pero esta crece exponencialmente cuando incluimos la posibilidad de enviar comandos. Es decir, a través de nuestros mensajes en Telegram vamos a poder darle una orden predefinida a Home Assistant. Veamos qué quiero decir con unos ejemplos sencillos.

Primero vamos a ver como HA responde a un comando enviado de forma espontánea, utilizando el tipo de evento ‘telegram_command‘. Crea una automatización y pega el siguiente código, seleccionando tu usuario.

alias: Prueba TG comando
description: Prueba TG comando
trigger:
  - platform: event
    event_type: telegram_command
    event_data:
      command: /prueba
action:
  - service: notify.USUARIO
    data:
      message: Funciona!
mode: single

Ahora abre la conversación con tu ‘bot’ y escribe /prueba. Verás que instantáneamente te responde “Funciona!”

En este caso la respuesta al comando es un nuevo mensaje, pero podría haber sido cualquier acción.

Veamos ahora como responde ante una orden elegida entre las opciones que nos proporciona. Si ejecutas el siguiente código desde Herramientas para desarrolladores > Servicios (Ir al modo YAML), vas a recibir una notificación con dos botones accionables. Pulsando el botón “Si” estarás enviando la orden ‘afirmativo’. Si por lo contrario pulsas el botón “No” estarás enviando la orden ‘negativo’.

service: notify.TU-USUARIO
data:
  message: ¿Quieres que encienda la luz?
  title: Notificación con comando
  data:
    inline_keyboard:
      - Si:/afirmativo, No:/negativo

La segunda parte de la comunicación consiste en hacer que Home Assistant entienda qué quieres que pase con tu respuesta. Para ello debes crear una automatización donde el disparador sea un “Evento” del tipo ‘telegram_callback’. En los datos deberás indicar el comando con la siguiente estructura ‘command: /afirmativo’. Compruébalo creando una automatización y pegando el siguiente código, seleccionando tu usuario.

alias: Prueba TG comando 2
description: Prueba TG comando
trigger:
  - platform: event
    event_type: telegram_callback
    event_data:
      command: /afirmativo
action:
  - service: notify.USUARIO
    data:
      message: Hecho!
mode: single

De nuevo, la acción desencadenada ha sido un mensaje, pero podría haber sido directamente el encendido de luz, o ambos (encendido de la luz + confirmación por mensaje).

También podría haber sido una nueva pregunta, con nuevas opciones. Por ejemplo, si cambias el código de la última automatización por el siguiente, te va a preguntar qué luz quieres encender.

alias: Prueba TG comando 2
description: Prueba TG comando
trigger:
  - platform: event
    event_type: telegram_callback
    event_data:
      command: /afirmativo
action:
  - service: notify.USUARIO
    data:
      message: ¿De qué habitación?
      title: Recibido!
      data:
        inline_keyboard:
          - Salon:/salon, Cocina:/cocina, Baño:/baño
mode: single

Si lo prefieres, puedes distribuir los botones en distintas líneas, y añadirles emojis.

alias: Prueba TG comando 2
description: Prueba TG comando
trigger:
  - platform: event
    event_type: telegram_callback
    event_data:
      command: /afirmativo
action:
  - service: notify.USUARIO
    data:
      message: ¿De qué habitación?
      title: Recibido!
      data:
        inline_keyboard:
          - 📺 Salon:/salon, 🥑 Cocina:/cocina
          - Baño:/baño, Dormitorio:/dormitorio
mode: single

Como te puedes imaginar, las conversaciones pueden ser tan complejas como tú quieras y las aplicaciones infinitas. Por ejemplo, puedes crear una automatización para que los domingos te pregunte qué quieres comer la próxima semana, y que te de distintas opciones para confeccionar tu menú y que cada vez que pulses uno de los botones se ejecute un ‘script’ que actualice automáticamente la lista de la compra con todo lo necesario.


¿Dudas?¿necesitas ayuda? entra aquí
Y si te ha gustado, compártelo! 🙂
Send this to a friend