Главная страницаHome AssistantИнтеграции в Home AssistantПодключаем Telegram к Home Assistant
Подключаем Telegram к Home Assistant

Подключаем Telegram к Home Assistant

Для отправки уведомлений из Home Assistant есть несколько способов. Одним из таких является Telegram. Если вы пользуетесь каждый этим мессенджером, то есть возможность настроить удобное получение уведомлений. Настройка довольно легкая и не потребует больших знаний.

Если у вас Home Assistant не имеет удаленного доступа, то переживать не стоит. Уведомления из телеграма все равно будут присылаться. Для интеграции требуется только доступ в интернет. А она в свою очередь напрямую связывается с Telegram. Более подробное описание интеграции можно найти в документации.

Создание Telegram бота

Для создания своего бота необходимо перейти по ссылке https://t.me/BotFather и нажать на кнопку «Старт». Бот выведет список доступных команд с описанием, но удобней воспользоваться мини-приложением, которое открывается по кнопке «Open» или «Открыть».

Введите любое имя бота, например «Домашний бот» и имя пользователя бота, по которому он будет доступен.

Имя пользователя бота обязательно должно заканчиваться на bot, т.е. должно быть либо myHomeBot или myHome_bot

После успешного создания бота можно будет получить его API-ключ, этот ключ можно будет посмотреть в любое другое время.

Получение ID пользователя Telegram

Чтобы бот понял кому необходимо отправлять сообщения надо получить ваш ID пользователя или ID чата. В приложении Telegram для компьютера перейдите в НастройкиОбщие, в самом низу найдите и включите опцию «Показывать ID чатов в профиле».

Теперь на экране профиля пользователя или группы появится новое поле PEER ID. Для того чтобы узнать свой ID перейдите в НастройкиМой профиль.

В режиме отладки так же можно узнать ID чатов от который приходят сообщения.

Активация бота

Для того чтобы бот мог писать вам или другим пользователям, которые будут его использовать, необходимо в поиске найти бота по имени и нажать «Старт». Если вы планируете отправляться сообщения нескольким пользователям, то проще всего добавить вашего бота в чат или канал, тогда для отправки сообщений вам нужен только ID этого чата.

Действия выше обязательны. Если вы этого не сделаете бот не сможет отправлять вам сообщения. Каждый пользователь которому вы хотите отправлять сообщения должен активировать бота.

Настройка Home Assistant

Установите интеграцию, для этого в Home Assistant перейдите в НастройкиУстройства и службы. Справа внизу нажмите Добавить интеграцию, в поиске введите и выберите Telegram, на втором шаге выберите Telegram Bot.

На следующем шаге в разделе Платформа выберите Pooling, введите API-ключ бота, который вы получили и завершите настройку.

  • Broadcast — только отправка сообщений
  • Pooling — отправка и обработка сообщений
  • Webhooks — отправка и обработка сообщений, требующая чтобы ваш Home Assistant был доступен из интернета

В режиме Pooling API ключ может использоваться только в одном боте, т.е. другой бот с использованием этого ключа уже не сможет подключиться.

Добавление пользователей

В Home Assistant перейдите в НастройкиУстройства и службыTelegram bot и нажмите Добавить разрешенный ID чата. В открывшемся окне введите ID пользователя или чата.

Важно! Если вы получаете ошибку «Чат не найден», то в первую очередь конечно проверьте правильность ID, а во вторых убедитесь что вы активировали бота как описано выше.

Важно для чатов и каналов! ID чата или канала нужно вводить со знаком минуса, т.е. если PEER ID чата 123456789, то в окне нужно ввести -123456789. Так же проверьте что вы добавили бота в нужные чат или канал. Еще замечена интересная особенность, если экспериментировали добавляя и удаляя бота из чата, тогда при добавлении в интеграцию нужно добавить -100, т.е. если PEER ID чата 123456789, то в окне нужно ввести -100123456789.

После добавления ID через меню Три точки можно переименовать запись, для более удобного поиска в интеграциях.

Проверка отправки уведомлений

В Home Assistant перейдите в Панель разработчика → Действия

Через стандартные уведомления

После того как в интеграции Telegram вы добавили разрешенные ID чатов она создала стандартные объекты уведомлений в Home Assistant. Этот способ подходит для простых текстовых уведомлений без дополнительных настроек.

В Панели разработчика в поиске введите notify.send_message. В разделе Цели вы можете выбрать конкретные цели, т.е. отдельно пользователя или чат, если у вас их несколько. Можно выбрать Устройство и тогда сообщение будет отправлено всем пользователям, которые добавлены к этому боту.

Через интеграцию

Отправка через интеграцию имеет гораздо больше настроек и возможностей: отправка сообщений, стикеров, файлов и т.п. Единственный минус в том что вводить ID чатов нужно вводить вручную.

В Панели разработчика в поиске введите telegram_bot.send_message и выберите Отправить сообщение. Введите текст сообщения и в разделе Цели введите ID пользователей или чатов.

В Целях должны быть указаны ID, которые были добавлены в список разрешенных ID в настройках интеграции. Для отправки в чат или канал ID нужно указывать со знаком минус.

Отправка сообщения из автоматизации

После всех действий выше в Home Assistant появился новый сервис notify.telegram_bot_123456789_123456789 (у вас будут другие ID в конце). С помощью которого можно автоматизировать отправку сообщений.

Отправлять уведомления можно точно так же как в Панели разработчика, в визуальном редакторе ищите действия notify.send_message или telegram_bot.send_message. Для примера давайте добавим небольшую автоматизацию, которая при включении переключении света будет присылаться уведомление. В примере приведена одновременная отправка сообщений через оба способа.

alias: Test telegram notify
description: Тестовая отправка сообщений в телеграм
triggers:
  - type: turned_on
    device_id: e7a6629e6f8d1a2a47a924694cca72aa
    entity_id: e08e337107c5228d564e7eb22426376b
    domain: light
    trigger: device
conditions: []
actions:
  - action: telegram_bot.send_message
    metadata: {}
    data:
      message: Люстра переключается
      target:
        - "-123456789"
        - "123456789"
    enabled: true
  - action: notify.send_message
    metadata: {}
    data: {}
    target:
      entity_id: notify.telegram_bot_123456789_123456789
mode: single

На самом деле вариантов, когда может понадобиться уведомление в Telegram множество. Например, когда у вас случилась протечка и нужно быстро среагировать. Или допустим все ушли из дома и происходит оповещение вас или всех пользователей Home Assistant.

Форматирование текста

Для отправки форматированного текста можете использовать разметку Markdown

  • жирный — например *жирный текст*
  • курсив — например _текст курсивом_
  • моноширный текст — например `моноширный текст`

Обработка команд

В режиме Pooling бот в Home Assistant может обрабатывать команды, команды должны начинаться с /, например /temperature. Команды можно отправлять боту напрямую или в чат, в который он добавлен. Получение команд может выступать в качестве триггера в автоматизациях. Напишем простую автоматизацию, которая берет температуру и влажность с датчика и в ответ отправляет сообщение с этими данными.

Перейдите в НастройкиАвтоматизация и сцены и добавьте новую автоматизацию по кнопке Создать автоматизацию. Переключитесь на текстовый режим: в меню Три точки, сверху справа выберите Текстовый редактор и введите следующий текст автоматизации:

alias: test bot
description: ""
triggers:
  - trigger: event
    event_type: telegram_command
    event_data:
      command: /climate
conditions: []
actions:
  - action: telegram_bot.send_message
    metadata: {}
    data:
      message: |-
        *Температура:* {{states('sensor.temperature')}}
        *Влажность:* {{states('sensor.humidity')}}
      target:
        - "{{ trigger.event.data.chat_id }}"
mode: single
  • в поле triggers.trigger.event_data.command замените название команды на свою. команда обязательно должна начинаться с /
  • в поле actions.action.data.message замените sensor.temperature и sensor.humidity на идентификаторы своих сенсоров
  • в поле actions.action.data.target подставляется ID чата из, которого пришло сообщение

Отладка

Если что-то не работает вы можете подписаться на событие обработки команд и посмотреть срабатывает ли это событие и какие данные приходят. Тут так же можно узнать ID чатов из которых приходят сообщения. Перейдите в Панель разработчикаСобытия, в разделе Подписаться на событие введите telegram_command и нажмите Подписаться.

Был ли полезен материал?

Нам очень важно получать обратную связь. Пожалуйста, оцените материал. Так мы поймем в какую сторону его стоит изменить.

Комментарии
  • Вова
    Вова
    01.04.2023 22:20

    Спасибо за автоматизацию, у меня переодически выключается Home Assistant. Сейчас хоть знать буду

  • VK
    VK
    02.09.2023 12:32

    А как на несколько ID отправить?

    • Alexander Pushkarev
      Alexander Pushkarev
      07.10.2023 20:00

      Создать несколько notify и вызывать все созданные notify в action

      • Алексей
        Алексей
        07.02.2024 16:56

        как создать несколько notify? в configuration.yaml не получается создавать несколько

    • Denis
      Denis
      21.02.2025 23:34

      Для отправки на несколько ID нужно создать для них отдельные notify, а потом создать в них группу: https://www.home-assistant.io/integrations/group/#notify-groups

  • Vlad
    Vlad
    14.11.2023 18:16

    Отправлять просто контакту всё получилось
    Но с семейным чатом — бьюсь уже сутки, id чата получил добавив в него GetIdsBot, менял с приватного на паблик и обратно. разрешения бота в BotFather все уже передёргал.. Да, то что id чата пишется с начальным дефисом тоже не помогло (
    Данила! Ай нид хэлп (

    • Alexander Pushkarev
      Alexander Pushkarev
      14.11.2023 18:20

      Надо добавить бота с которого будут уходить сообщения, как администратора канала. Тогда он сможет публиковать сообщения.

      Информация -> Администраторы -> Добавить администратора -> Выбрать бота

      • Vlad
        Vlad
        15.11.2023 10:12

        Да в том то и дело, что админом я его сразу сделал..
        Если не затруднит, можно кусок работающего кода с разделом notify именно для чата?

        • Андрей
          Андрей
          30.11.2023 14:58

          У меня вот так работает:

          # Telegram Bot
          telegram_bot:
          — platform: polling
          api_key: …
          allowed_chat_ids:
          — -1001501940122

          # Notifier
          notify:
          — platform: telegram
          name: «HA2TelegramGroup»
          chat_id: -1001501940122

        • Максим
          Максим
          02.12.2023 16:06

          Привет. Напиши мне на емэйл помогу.

        • Михаил
          Михаил
          08.12.2023 23:42

          Если получится, скиньте кусочек кода , типа же самая проблема

        • Олег
          Олег
          12.12.2023 21:43

          Получилось сделать?

        • Витюша Баунти хантер
          Витюша Баунти хантер
          21.12.2023 00:36

          Перед айди чата тире поставьте

        • Vova
          Vova
          19.08.2024 23:55

          Решили? Как?

        • Кирилл
          Кирилл
          28.09.2024 12:53

          Тоже не получалось сначала, оказывается группы имеют отрицательный id, его и надо указывать:
          telegram_bot:
          — platform: polling
          api_key: !secret telegram_token
          parse_mode: html
          allowed_chat_ids:
          — 339521111
          — -1002114411111

          notify:
          — name: group_tg
          platform: telegram
          chat_id: -1002114411111

        • Alex
          Alex
          20.11.2024 12:47

          вот рабочий код.. это группа (с дефисом)

          telegram_bot:
          — platform: polling
          api_key: 213068273:AAE2Xo1nq8nX4PGljmil8deom3ixU6MaVJE
          allowed_chat_ids:
          — -1002135792837

          notify:
          — name: telegram_notifier
          platform: telegram
          chat_id: -1002135792837

        • Дмитрий
          Дмитрий
          19.12.2024 09:57

          Получилось? У меня те же грабли.

  • Алексей
    Алексей
    21.12.2023 20:08

    Дополнение. Тот кто делает все с самого начала (даже создает бота), то тестовая инициация отправки из Служб ничего не даст. Надо проинициировать бота — найти в телеге этого бота по заданному вами имени и что-то туда написать — после этого отправка заработает.

    Источник — https://community.home-assistant.io/t/telegram-not-working/121569/8

  • Alex
    Alex
    27.02.2024 02:35

    Вопрос , а куда этот код вставлять
    — id: ‘Notify_Telegram_HA_Start’
    alias: «Уведомление о запуске HA в Telegram»
    trigger:
    — platform: homeassistant
    event: start
    action:
    — service: telegram_notifier
    data:
    message: «Home Assistant — включился»

    • Вячеслав
      Вячеслав
      13.04.2025 16:19

      То же не разобрался куда данный код вставлять.

    • simper
      simper
      23.05.2025 22:08

      В файл /homeassistant/automations.yaml или Настройки — автоматизация и сцены — Создать новую автоматизацию. Три точки вверху — текстовый редактор. Вставляем — сохраняем — перезагружаем HA.

  • Driverz
    Driverz
    03.03.2025 17:29

    день добрый! а цветовое оформление для сообщения существует? теги *Bold* _Italic_ и тд работают, а вот цветом как поиграться?

Оставить комментарий