Dialogue avec Telegram

Cet article présente comment intégrer Telegram à Home Assistant et communiquer avec lui. Il est primordial de recevoir des notifications de son système domotique, et d'y accompagner des images ou des vidéos. Et s'il est possible d'y répondre, c'est encore mieux.
Dialogue avec Telegram

Sommaire

L’utilisation de notifications est primordiale pour un système domotique efficient.

Exemple de notifications :

  • “Vous partez alors que la fenêtre du salon est restée ouverte”
  • “Le taux de CO2 est trop fort, il faut aérer le salon”
  • “Une consommation anormale d’eau a été détectée cette nuit”
  • “La température du congélateur est trop élevée.”
  • “Pas de consommation électrique de la pompe de la piscine. Vérifier son bon fonctionnement”
  • ….

Home Assistant intègre un système de notification, mais qui a ses limites. Il est souvent préférable de le réserver aux notifications techniques, comme les demandes mises à jour.

Telegram est alors une solution de choix pour permettre à toute la famille de recevoir des notifications sur la maison.

Il est également très intéressant de pouvoir répondre à ces notifications pour déclencher une ou des actions via des boutons sous le message. L’exemple ci-dessous est la demande de fermeture du volet de la piscine quant l’air est plus froid que l’eau (cela permet de garder l’eau chaude et éviter l’évaporation).

Boutons de commandes du volet de la piscine avec Telegram

Nous vous proposons ici un tutoriel complet pour implémenter simplement Telegram avec les automatisations de Home Assistant.

Les étapes suivantes seront détaillées :

  • Créer un bot Telegram et obtenir un token et un ID de discussion,
  • Connecter Telegram a Home Assistant via l’intégration Telegram Bot,
  • Créer une notification que l’on utilisera de manière standard dans nos automatisations et nos scripts.

Installer un bot Telegram

Création du bot

Il va falloir vous créer un bot pour que ce soit lui qui vous envoie des messages.

Rendez-vous sur Telegram sur votre Navigateur ou via votre application mobile.

  1. Rechercher @botfather dans le champ de recherche des contacts puis cliquer dessus.
  2. Lancer le BotFather Telegram et cliquer sur Démarrer (ou start si en anglais).
Ajout de Botfather a votre Telegram
  1. Une liste d’options vous sont proposées. Cliquer sur /newbot
  2. Choisir un nom pour votre bot et un nom d’utilisateur (HACF_bot dans l’exemple)).
Création d’un bot Telegram avec Botfather

Votre token apparaît, gardez le bien précieusement.

Vous avez maintenant votre Bot Telegram.

  1. Reste enfin à l’activer. Retrouver votre bot dans la recherche (@HACFx_bot par exemple), cliquer dessus, puis dans le fil de discussion, cliquer sur Démarrer (ou /start). Sans cette dernière opération, votre bot ne sera pas actif.
Démarrage du bot Telegram
💡
A tout moment vous pouvez retourner sur BotFather, lancer /mybots puis cliquer votre bot pour le gèrer, le supprimer, voir son token, etc.

L’étape suivante est de retrouver l’ID du fil de discussion ou envoyer les messages : soit seulement vous (voir 1.2) ou alors un groupe (voir 1.3).

Récupérer votre ID pour VOUS envoyer des messages

Cette partie permet de retrouver votre ID de discussion, si vous choisissez de n’envoyer des messages qu’à vous (et pas à un groupe de personnes).

Pour récupérer l’ID de votre USER, rechercher @getids bot dans le champ de recherche des contacts puis cliquer sur Démarrer.

💡
Notez bien cet ID référençant le bot qui émettra les messages.
Récupérer BotId d’un utilisateur sur Telegram

Récupérer l’ID pour les envois à un GROUPE

La création d’un groupe vous permettra d’envoyer des messages aux utilisateurs de ce groupe. Vous pouvez par exemple créer un groupe appelé Maison, et y ajouter les membres de votre famille.

Voici comment en récupérer l’ID de discussion.

  1. Cliquer sur le menu de Telegram puis Nouveau groupe

Donnez-lui un nom puis CREATE GROUP.

  1. Sélectionner les utilisateurs devant appartenir au groupe ainsi que votre bot.

Cliquer sur votre Groupe en haut puis Ajouter des membres. Important : n’oubliez pas d’ajouter votre bot (autrement, il ne pourra pas envoyer de messages dans le groupe).**

Creation d’un groupe avec Telegram
  1. Récupérer votre ID du groupe en invitant @getids bot à votre groupe. Une fois ajouté, vous pouvez voir votre ID qui s’affiche dans le fil de discussion.> Notez bien cet ID référençant le groupe qui recevra les messages.

Une fois l’ID noté, vous pouvez éjecter GetIds Bot du groupe en cliquant sur les 3 points en haut à droite, puis Gérer le groupe.

Récupérer BotId d’un groupe sur Telegram

Configuration dans Home Assistant

Configuration du bot

Depuis la version HA core 2025.5, la configuration se fait directement dans l'UI.

Allez dans Paramètres > Appareils et services > Ajouter une intégration, puis sélectionnez Telegram puis Telegram bot.

Choisissez la plateforme : BroadcastPolling et Webhooks.

  • Broadcast : Si vous voulez juste envoyer des notifications/alertes (ex. capteurs domotique) sans commandes entrantes, et que HA n'est pas exposé.
  • Polling : Pour envoi + réception de commandes (ex. "/allumer lumière" via chat), sans ouvrir HA à internet ; adapté à la plupart des setups domestiques.
  • Webhooks : Pour réception la plus réactive (idéal multi-utilisateurs ou bots avancés), mais seulement si HA est accessible publiquement (HA Cloud, NGINX avec certif valide). Ajoutez 127.0.0.1 aux trusted networks si via Cloud.

Je conseille de choisir Polling, qui permet un pilotage de Home Assistant sans exposition d'URL (webhook). Renseignez ensuite l'ID de votre BOT.

Vous avez ainsi créé le lien vers votre bot.

Configuration de discussion (Chat ID)

Maintenant, il faut maintenant référencer les ID de discussion (vous ou un groupe, comme présentée précédemment).

Aller dans les paramètres de l'intégration telegram_bot et cliquer sur "Ajouter l'ID de discussion autorité"

Renseignez votre ID de discussion (par exemple l'ID du groupe Maison).

Si vous cliquez sur le détail (maison dans mon cas), vous allez sous "notificateurs" voir la future entité vous permettant d'envoyer les notifications :

Ouvrir l'entité sous Notificateurs et renommer son nom et son ID. Dans mon cas, j'ai mis Telegram Maison. J'ai renommé l'ID de l'entité notification telegram_maison.

Dans la suite de l'article, nous utiliserons l'entité "notificateur" telegram_maison pour référencer notre discussion Telegram. Cette entité sera à mettre en paramétre.

Test d'envoi d'un message

Il y a 2 méthodes pour envoyer un message via notre intégration :

  • soit avec l'action standard notify.send_message : pour juste envoyer du message texte. Méthode la plus simple et facile pour l'envoi de simples textes.
  • soit avec des actions de l'intégration telegram_bot, que nous verrons plus loin, permettant bien plus.

Pour tester notre bot, on va utiliser ici notify.send_message.

Rendez-vous dans Outils de développement, puis actions et saisir les informations suivantes :

  • Action : notify.send_message (ou votre user)
  • Cibles : telegram_maison
  • Message : votre message

Cliquez sur Effectuer une action. Vous devriez voir sur votre application Telegram le message arriver.

Voici un exemple de script en YAML avec la syntaxe :

sequence:
  - action: action: notify.send_message
    entity_id: notify.telegram_maison
    data:
      message: "Test de message"
    
⚠️
Une syntaxe avec target: après data: fonctionne, mais n'est plus supportée à partir de la version 2026.9

Utilisation des actions de telegram_bot

Si notify.send_message est simple à utiliser, son utilisation est limitée à l'envoi de simples messages texte. L'utilisation de l'utilisation des actions de telegram_bot permettront de faire tout ce qu'il est possible de faire avec Telegram.

La syntaxe YAML est alors légèrement différente. La voici pour envoyer un message :

sequence:
  - action: telegram_bot.send_message
    data:
      entity_id: notify.telegram_maison
      message: "Test de message"

Avec telegram_bot, vous pourrez également envoyer des images (voir plus loin dans l'article), des fichiers, des films, et plus généralement faire tout ce qu'il est possible via Telegram comme détruire ou modifier des messages.

Nous ne détaillerons pas toutes les possibilités de telegram_bot, mais vous pouvez consulter la documentation ici :

Telegram bot
Telegram bot support

Nous présentons dans la suite de l'article quelques exemples.

Utilisation de templates

Il ne faut pas hésiter à transmettre des données dans vos messages, par exemple ici la température de l’eau de l’air.

trigger: []
condition: []
action:
  - notify.send_message
    target:
      entity_id: notify.telegram_maison    
    data:
      message: >-
        Merci de fermer le volet.
        Température eau : {{states('sensor.fibaro_piscine_temperature_eau')}} °C
        Température abri : {{states('sensor.fibaro_piscine_temperature_abri')}} °C        

Il est aussi possible de rajouter une image, typiquement issue d’une capture (“snap”) d’une de vos caméras. Par exemple ici l’intérieur du poulailler pour vérifier que nos poules sont bien couchées quand la porte se ferme (ma femme adore cette fonction 🙂 ).

Inserer une image dans la notification Telegram avec Home Assistant
trigger: []
condition: []
action:
  service: notify.telegram_maison
  data:
    message: Coucou des poulettes : porte bien fermée
    data:
      photo:
        - file: /media/poules/snap.jpg

Vous trouverez dans la doc plus d’informations sur la gestion des images : Setting up local media sources

Vous pouvez par exemple créer un sous-répertoire /poules dans config/www qui est par défaut un répertoire avec des accès ouverts.

Puis déclarer ce répertoire dans votre fichier de configuration config.yaml pour qu’il soit accessible sous le nom “poules” depuis le répertoire multimédia ainsi que votre code YAML.

homeassistant:
  media_dirs:
    poules: /config/www/poules/

4. Rajout de boutons d’action après le message

Reprenons notre exemple du début de l’article :

Dialogue Telegram et Home Assistant - les boutons de commandes

Pour afficher les boutons, c’est très simple : il suffit de rajouter dans la section data du message la section inline_board avec libellé:/event à déclencher. Dans notre cas, les événements piscine_ferme et piscine_ignore_ferme seront déclenchés si respectivement un des boutons est pressé.

trigger: []
condition: []
action:
  - service: notify.message_warning_groupe
    data:
      message: >-
        Merci de fermer le volet....        
      data:
        inline_keyboard:
          - Ignore:/piscine_ignore_ferme, Ferme volet:/piscine_ferme

5. Traitement des actions des boutons

Il faut créer deux automatisations qui se déclenchent pour chaque événement piscine_ferme ou piscine_ignore_ferme et exécute une action en conséquence.

Par exemple, voici l’automatisation pour traiter l’événement de demande de fermeture :

alias: 'Piscine : fermeture par telegram'
description: Traite la réponse de demande de fermeture du volet par telegram
trigger:
  - platform: event
    event_type: telegram_callback
    event_data:
      command: /piscine_ferme
action:
  - service: cover.close_cover
    target:
      entity_id: cover.ipx800_volet_piscine
    data: {}
💡
En cas de problème avec les callbacks, vous pouvez vous rendre dans l’outil de développement, rubrique Evènements.Vous pouvez déclencher un événement qui simulera l’appui sur le bouton de télégram (Type d’évènement : telegram_callback et donnée command: /piscine_ferme par exemple).Vous pouvez aussi vous mettre à l’écoute des événements de type telegram_callback et écouter l’événement déclenché par l’appui sur un bouton dans telegram.

6. Confirmation que l’action a été bien effectuée

Une fois le bouton cliqué, il ne reste plus qu’à supprimer la barre de boutons, et confirmer à l’utilisateur que la demande d’action a été bien prise en compte.

Dialogue Telegram et Home Assistant - confirmation

Pour cela, on rajoute à l’automatisation précédente quelques lignes :

alias: 'Piscine : fermeture par telegram'
description: Traite la réponse de demande de fermeture du volet par telegram
trigger:
  - platform: event
    event_type: telegram_callback
    event_data:
      command: /piscine_ferme
action:
  - service: cover.close_cover
    target:
      entity_id: cover.ipx800_volet_piscine
    data: {}
  - service: telegram_bot.edit_replymarkup
    data:
      message_id: '{{ trigger.event.data.message.message_id }}'
      chat_id: '{{ trigger.event.data.chat_id }}'
      inline_keyboard: null
  - service: notify.message_warning_groupe
    data:
      message: Volet piscine fermé.
initial_state: true
mode: single

Pour l’événement cancel, On répond juste ok et on demande la suppression de la ligne de boutons qui s’affichait dans Telegram.

alias: 'Piscine : ignorer demande fermeture telegram'
description: Enlève bouton et réactive l'alerte sur fermeture
trigger:
  - platform: event
    event_type: telegram_callback
    event_data:
      command: /piscine_ignore_ferme
action:
  - service: input_boolean.turn_on
    target:
      entity_id: input_boolean.piscine_flag_fermeture_volet_actif
    data: {}
  - service: telegram_bot.answer_callback_query
    data:
      callback_query_id: '{{ trigger.event.data.id }}'
      message: Ok
  - service: telegram_bot.edit_replymarkup
    data:
      message_id: '{{ trigger.event.data.message.message_id }}'
      chat_id: '{{ trigger.event.data.chat_id }}'
      inline_keyboard: null
mode: single
💡
Il est intéressant de personnaliser votre bot dans Telegram, en particulier :- Modifier le logo par défaut et mettre celui de Home Assistant.- Paramétrer une purge des messages de plus de 8 jours. Pour cela, depuis l’écran du fil de discussion, cliquer sur le logo de votre bot, en haut à droite, puis cliquer sur modifier.

Conclusion

Voilà, vous pouvez maintenant “dialoguer” avec votre maison via Telegram, en intégrant potentiellement des données et des photos.

N’hésitez pas à partager sur le forum les choses originales ou amusantes que vous auriez automatisées.