Tu casa ya sabe cuándo se abrió una puerta, cuándo subió la temperatura del living o cuándo detectó movimiento en la entrada. La pregunta es: cuando eso pasa, ¿cómo te enteras si estás en la pega o en la calle? Hay apps de notificaciones, alertas por correo y avisos por voz, pero ninguna es tan cómoda ni tan inmediata como Telegram.
En este tutorial vas a convertir un bot de Telegram en el control remoto de tu Home Assistant. No solo para recibir avisos: vas a poder mandar comandos desde el chat, escribir frases tipo "buenas noches" para que la casa reaccione, y armar botones interactivos que disparan acciones con un toque. Todo corriendo sobre un Raspberry Pi como servidor, sin VPN, sin abrir puertos y sin pagar una sola suscripción.

Por qué Telegram y no otra cosa
Antes de meter mano, vale la pena entender la decisión técnica. Telegram tiene tres ventajas concretas para domótica casera:
- Es gratis y multiplataforma: corre en el celular, en el computador y en la web. La misma cuenta recibe tus alertas en todos lados.
- Funciona en modo Polling: Home Assistant abre una conexión saliente hacia los servidores de Telegram y se queda escuchando. Eso significa que NO necesitas IP pública, ni redireccionar puertos en el router, ni exponer tu casa a internet. Para una red doméstica chilena con IP dinámica de tu proveedor, esto es justo lo que quieres.
- El canal es bidireccional: a diferencia de un correo, acá la casa te habla y tú le respondes. Esa ida y vuelta es la que transforma un simple aviso en un panel de control.
Lo que necesitas
- Home Assistant OS (o Supervised), idealmente versión 2025.7 o superior. Desde esa versión la integración de Telegram se configura entera por la interfaz, sin tocar archivos YAML a mano.
- Un Raspberry Pi 5 (o un servidor equivalente) corriendo como host de Home Assistant.
- Una cuenta de Telegram en tu celular.
- Acceso a internet para Home Assistant, o al menos que esté en la misma red local.
Si todavía no tienes Home Assistant instalado, primero resuelve eso y después vuelve acá. El bot asume que ya tienes entidades funcionando (sensores, luces, clima).
Paso 1: crear el bot con BotFather
Abre Telegram y busca la cuenta @BotFather. Es el bot oficial de Telegram para fabricar bots, y tiene el tilde azul de verificado.

Inicia el chat y manda:
/newbot
BotFather te va a pedir un nombre para mostrar (por ejemplo "Mi Casa") y un nombre de usuario único, que obligatoriamente tiene que terminar en _bot (por ejemplo micasa_bot). Cuando termines, te entrega un token de API con esta pinta:
1234567890:ABCdefGhIJKlmNoPQRsTUVwxYZ
Ese token es la llave del bot: cualquiera que lo tenga puede controlarlo, así que cópialo y guárdalo en un lugar seguro. Lo vas a usar en un par de minutos.

Paso 2: encontrar tu Chat ID
Home Assistant necesita saber a qué chat mandar los mensajes. Primero escríbele cualquier cosa a tu bot (un "Hola" basta) para que el chat exista. Después abre esta URL en el navegador, reemplazando EUER_TOKEN por tu token:
https://api.telegram.org/botEUER_TOKEN/getUpdates
En la respuesta JSON, dentro de result[0].message.chat.id, vas a ver tu Chat ID: un número como 123456789 si es tu chat personal, o un número negativo si es un grupo. Anótalo. A veces tarda unos segundos en aparecer, así que si sale vacío, mándale otro mensaje al bot y recarga.

Paso 3: configurar la integración en Home Assistant
Desde HA 2025.7 ya no hay que editar configuration.yaml a mano: todo se hace por la interfaz. Anda a:
Ajustes → Dispositivos y servicios → Agregar integración → busca "Telegram Bot"

Elige el tipo de bot "Polling" (el recomendado para redes domésticas sin IP pública). Ingresa tu token de API y pon tu Chat ID en el campo "Allowed Chat IDs". Al guardar, aparece una nueva entidad de notificación en Home Assistant.
La integración crea automáticamente un servicio de notificación que vas a usar en tus automatizaciones. El nombre del servicio sigue el esquema telegram_bot.send_message.
Paso 4: mandar el primer mensaje de prueba
En Home Assistant anda a Ajustes → Herramientas para desarrolladores → Acciones, elige el servicio telegram_bot.send_message y manda un mensaje de prueba:
message: "Home Assistant ist verbunden!"
Si el mensaje aparece en tu chat de Telegram, está todo bien configurado y puedes seguir con la parte entretenida.

Paso 5: notificaciones push con 5 ejemplos listos para usar
El caso más simple: Home Assistant te manda un mensaje cuando pasa algo. Acá van cinco automatizaciones que puedes copiar directo. Para que disparen necesitas sensores; más abajo, en la sección de Chile, te cuento qué hardware del catálogo local cumple cada rol.
1. Se activa el sensor de movimiento. Sirve un sensor de movimiento Zigbee. Como coordinador Zigbee para Home Assistant necesitas un dongle USB que reciba esas señales.
alias: Telegram - Bewegung erkannt
trigger:
- platform: state
entity_id: binary_sensor.bewegungsmelder_eingang
to: "on"
action:
- service: notify.telegram_smarthome
data:
message: >
Bewegung erkannt!
Eingang – {{ now().strftime('%H:%M Uhr') }}
2. Ventana o puerta abierta demasiado tiempo. Combina con un sensor de contacto de puerta y ventana Zigbee. La gracia del bloque for: es que solo avisa si la condición se mantiene 20 minutos, no en el instante en que se abre.
alias: Telegram - Fenster offen (20 Min)
trigger:
- platform: state
entity_id: binary_sensor.fenster_wohnzimmer
to: "on"
for:
minutes: 20
action:
- service: notify.telegram_smarthome
data:
message: >
Fenster Wohnzimmer ist seit 20 Minuten offen!
Bitte schließen oder Heizung reduzieren.
3. Aviso de temperatura. El valor de temperatura lo entrega, por ejemplo, un sensor Zigbee de temperatura y humedad enlazado directo a Home Assistant, sin nube de por medio.
alias: Telegram - Keller zu warm
trigger:
- platform: numeric_state
entity_id: sensor.temperatur_keller
above: 28
action:
- service: notify.telegram_smarthome
data:
message: >
Temperaturalarm Keller!
Aktuell: {{ states('sensor.temperatur_keller') }} °C
4. Sensor de agua / alarma de inundación. Un sensor de agua Zigbee (idealmente IP67) avisa apenas detecta una fuga, antes de que el problema crezca.
alias: Telegram - Wasseralarm
trigger:
- platform: state
entity_id: binary_sensor.wassermelder_keller
to: "on"
action:
- service: notify.telegram_smarthome
data:
message: >
ALARM: Wassermelder hat angesprochen!
Sofort prüfen – {{ now().strftime('%d.%m.%Y %H:%M') }}
5. Enviar foto de la cámara al tocar el timbre. Si tienes una cámara en la puerta, Home Assistant saca una foto y te la manda cuando alguien toca el timbre.
alias: Telegram - Türklingel mit Foto
trigger:
- platform: state
entity_id: binary_sensor.tuerklingel
to: "on"
action:
- service: camera.snapshot
target:
entity_id: camera.haustuer
data:
filename: /config/www/snapshot_tuer.jpg
- delay:
seconds: 1
- service: telegram_bot.send_photo
data:
chat_id: "123456789"
file: /config/www/snapshot_tuer.jpg
caption: "Jemand an der Tür – {{ now().strftime('%H:%M Uhr') }}"
Paso 6: enviar comandos a Home Assistant
Acá se pone realmente útil: tú le mandas mensajes al bot y Home Assistant ejecuta acciones. Los comandos de Telegram empiezan con /. Home Assistant escucha el evento telegram_command.
/status: resumen de la casa por mensaje.
alias: Telegram - /status Abfrage
trigger:
- platform: event
event_type: telegram_command
event_data:
command: "/status"
action:
- service: notify.telegram_smarthome
data:
message: >
Haus-Status {{ now().strftime('%H:%M') }}:
Temperatur Wohnzimmer: {{ states('sensor.temperatur_wohnzimmer') }} °C
Heizung: {{ states('climate.heizung') }}
Alle Lichter aus: {{ is_state('light.alle_lichter', 'off') }}
Fenster offen: {{ states('binary_sensor.fenster_wohnzimmer') }}
/licht_aus: apagar todas las luces.
alias: Telegram - /licht_aus
trigger:
- platform: event
event_type: telegram_command
event_data:
command: "/licht_aus"
action:
- service: light.turn_off
target:
area_id: all
- service: notify.telegram_smarthome
data:
message: "Alle Lichter ausgeschaltet."
/alarm_an y /alarm_aus: controlar la alarma.
alias: Telegram - /alarm_an
trigger:
- platform: event
event_type: telegram_command
event_data:
command: "/alarm_an"
action:
- service: alarm_control_panel.alarm_arm_away
target:
entity_id: alarm_control_panel.haus
- service: notify.telegram_smarthome
data:
message: "Alarmanlage scharf gestellt."
Paso 7: reconocer texto libre con palabras clave
Además de los /comandos formales, Home Assistant también reacciona a texto libre. El evento se llama telegram_text y entrega el texto del mensaje en trigger.event.data.text. Con eso armas disparadores en lenguaje natural.
"Voy llegando a la casa": modo bienvenida.
alias: Telegram - Ankunft erkennen
trigger:
- platform: event
event_type: telegram_text
condition:
- condition: template
value_template: >
{{ 'nach hause' in trigger.event.data.text | lower or
'komme heim' in trigger.event.data.text | lower }}
action:
- service: climate.set_temperature
target:
entity_id: climate.heizung
data:
temperature: 21
- service: light.turn_on
target:
entity_id: light.eingang
- service: notify.telegram_smarthome
data:
message: "Willkommen! Heizung auf 21°C gestellt, Licht im Eingang an."
"Buenas noches": activar modo nocturno.
alias: Telegram - Gute Nacht Modus
trigger:
- platform: event
event_type: telegram_text
condition:
- condition: template
value_template: >
{{ 'gute nacht' in trigger.event.data.text | lower or
'schlafenszeit' in trigger.event.data.text | lower }}
action:
- service: light.turn_off
target:
area_id: all
- service: climate.set_temperature
target:
entity_id: climate.heizung
data:
temperature: 18
- service: alarm_control_panel.alarm_arm_home
target:
entity_id: alarm_control_panel.haus
- service: notify.telegram_smarthome
data:
message: "Gute Nacht! Alle Lichter aus, Heizung auf 18°C, Alarm im Heimodus."
El truco está en el filtro | lower: con eso la automatización reacciona igual a "Gute Nacht", "gute nacht" o "GUTE NACHT". Las mayúsculas y minúsculas dejan de importar, lo que evita el típico problema de que el comando no dispare porque escribiste distinto.
Varias palabras clave en una misma automatización. Puedes combinar todas las que quieras e incluso verificar quién mandó el mensaje, para que no cualquier Chat ID dispare tus automatizaciones:
condition:
- condition: template
value_template: >
{{ trigger.event.data.chat_id == 123456789 and
('heizung aus' in trigger.event.data.text | lower or
'alles aus' in trigger.event.data.text | lower) }}
Paso 8: botones interactivos (inline buttons)
El plato fuerte: Home Assistant manda un mensaje con botones directo en el chat. Tocas un botón y la casa ejecuta la acción correspondiente. Ideal para confirmar alarmas o para control rápido.
Mensaje de alarma con Confirmar / Ignorar.
alias: Telegram - Alarm mit Buttons
trigger:
- platform: state
entity_id: binary_sensor.bewegungsmelder_eingang
to: "on"
action:
- service: telegram_bot.send_message
data:
chat_id: "123456789"
message: "Bewegung im Eingang! Was möchtest du tun?"
inline_keyboard:
- - ["Licht an", "/licht_eingang_an"]
- ["Ignorieren", "/ignorieren"]
- - ["Kamerabild anzeigen", "/snapshot_eingang"]
Por cada botón necesitas una automatización separada que reaccione al evento telegram_callback_query:
alias: Telegram - Button Licht Eingang
trigger:
- platform: event
event_type: telegram_callback_query
event_data:
data: "/licht_eingang_an"
action:
- service: telegram_bot.answer_callback_query
data:
callback_query_id: "{{ trigger.event.data.id }}"
message: "Licht eingeschaltet!"
- service: light.turn_on
target:
entity_id: light.eingang
El answer_callback_query no es opcional: confirma al cliente de Telegram que el toque se procesó. Si lo omites, el botón se queda girando con la ruedita de carga para siempre. A nivel de protocolo, Telegram espera ese acuse de recibo, y mientras no llega, el callback queda "pendiente" en su lado.
Seguridad: solo chats autorizados
Tu bot es público: en principio cualquiera que conozca su nombre podría mandarle mensajes. Home Assistant ya filtra los mensajes entrantes mediante "Allowed Chat IDs" en la integración. Aun así, conviene verificar el Chat ID dentro de las automatizaciones críticas:
value_template: "{{ trigger.event.data.chat_id == 123456789 }}"
Como capa extra, puedes poner el bot en modo "privado" desde @BotFather (/setprivacy y luego enable): así solo procesa mensajes directos de usuarios que ya iniciaron el bot.
Variantes y mejoras
Una vez que tengas lo básico andando, estas tres extensiones te suben el proyecto de nivel (ninguna viene en el tutorial original):
- Menú permanente con
/menu: en lugar de recordar cada comando de memoria, arma un único comando/menuque devuelve un teclado inline con los botones más usados (Estado, Apagar luces, Alarma ON, Alarma OFF). Reutiliza la estructura deinline_keyboarddel Paso 8 apuntando cada botón a un/comandoque ya tengas. - Grupo familiar: agrega el bot a un grupo de Telegram y pon el Chat ID negativo del grupo en Home Assistant. Así toda la familia recibe las mismas alertas y cualquiera puede mandar comandos, útil si quieres que más de una persona pueda apagar la alarma.
- Reportes programados: combina el servicio
notify.telegram_smarthomecon un disparador de tiempo (platform: time) para recibir cada mañana a las 8:00 un resumen del estado de la casa, o un aviso si dejaste alguna ventana abierta antes de dormir.
Personalización para Chile
El gran cuello de botella de este proyecto no es el software (es gratis), sino el hardware de sensores. En Chile puedes armar la base en MechatronicStore:
- Módulo Coordinador Red ZigBee CC2531 (Domótica Home Assistant), SKU GL2-9, alrededor de $9.690. Este es el equivalente local del dongle Zigbee que recomienda el tutorial: se conecta por USB al Raspberry Pi y actúa como coordinador para recibir todos los sensores Zigbee (movimiento, contacto, temperatura, agua). Es la pieza clave que conecta los sensores con Home Assistant.
- Raspberry Pi 5: es el cerebro que hospeda Home Assistant. En MechatronicStore figura en el catálogo, aunque suele agotarse rápido; si no hay stock al momento de armar tu proyecto, cualquier mini PC o servidor equivalente cumple el rol de host.
- Sensores Zigbee (movimiento, contacto de puerta/ventana, temperatura y humedad, fuga de agua): son los que disparan las automatizaciones del Paso 5. El tutorial usa sensores de la familia Aqara y SONOFF; cualquier sensor Zigbee compatible con ZHA o Zigbee2MQTT funciona con el coordinador CC2531 sin necesidad de un hub propietario.
La gracia es que, teniendo el coordinador Zigbee andando, vas sumando sensores de a poco según tu presupuesto: parte con uno de movimiento, después agrega el de temperatura, y así.
Cierre
El bot de Telegram es mucho más que un canal de avisos. Con comandos controlas Home Assistant directo desde el chat, con reconocimiento de palabras clave la casa reacciona a frases naturales, y con botones inline el celular se transforma en un dashboard de control completo para cuando estás afuera, sin VPN ni puertos abiertos. La combinación de notificación push con botones de acción clicables es la que de verdad hace la diferencia en el día a día.
Recursos
- Tutorial original (alemán): Home Assistant Telegram Bot: Benachrichtigungen senden und Aktionen auslösen, por Philipp Schweizer en raspberry.tips.
- Documentación oficial de la integración: Telegram Bot en Home Assistant.
- API de bots de Telegram: core.telegram.org/bots/api.
Versión chilena basada en el tutorial de raspberry.tips, con hardware en stock local en MechatronicStore.



