Skip to content
> 0x2d.dev
Назад

Настройка уведомлений из Home Assistant в Telegram


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

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

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

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

Список доступных команд бота BotFather в Telegram Создание нового Telegram бота в мини-приложении

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

Tip

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

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

Информация о Телеграм боте в мини-приложении

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

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

Включение настройки Телеграм "Показывать ID чатов в профиле" Информация о чате в Telegram

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

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

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

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

Warning

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

Настройка Home Assistant

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

Поиск интеграции Telegram в Home Assistant Выбор опции интеграции Telegram в Home Assistant

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

Добавление записи в интеграцию Telegram в Home Assistant

Tip

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

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

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

Список записей интеграции Telegram в Home Assistant

Warning

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

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

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

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

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

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

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

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

Проверка отправки уведомлений через стандартный notify.send_message в Home Assistant

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

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

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

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

Проверка отправки уведомлений через интеграцию Telegram в Home Assistant

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

После всех действий выше в 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

Отладка

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

Отладка Telegram бота в Home Assistant Отладка Telegram бота в Home Assistant


Предыдущая запись
SFTP для обмена файлами между компьютером и Linux-сервером
Следующая запись
Подключение к удалённому серверу по SSH