📱 Умный дом в Telegram: полное руководство по подключению бота к Home Assistant
Главная идея подключения Telegram — удалённое управление умным домом, а также отправка различных уведомлений о процессах. Удобное управление можно сделать в связке с Node-RED, но в этой статье рассмотрим прямое подключение к Home Assistant. Это хорошее начало, чтобы понять возможности Telegram-бота, а также выявить ограничения, связанные с обновлениями HA и блокировками.
В статье рассмотрим: создание бота через BotFather, получение API-ключа и ID чата, настройку встроенной интеграции Telegram в HA, а также создание автоматизаций для отправки уведомлений и управления устройствами через кнопки.
Содержание статьи
1. Создание Telegram-бота через BotFather
- Перейдите по ссылке t.me/BotFather и нажмите кнопку «Старт»
- Отправьте команду
/newbotдля создания нового бота - Введите имя бота (например, «Домашний бот») — оно будет отображаться пользователям
- Введите username бота — он должен заканчиваться на
bot(например,myHomeBotилиmy_home_bot) - После успешного создания BotFather выдаст API-ключ — сохраните его, он понадобится позже. Ключ остаётся в чате с BotFather, к нему всегда можно вернуться и посмотреть заново
Активация бота: Найдите вашего бота в Telegram по его username (например, t.me/myHomeBot), перейдите в чат и нажмите кнопку «Старт» (или отправьте команду /start).
2. Получение ID чата
Чтобы бот мог отправлять сообщения конкретному пользователю или в чат, нужно узнать Chat ID.
- Найдите бота @getidsbot в Telegram
- Нажмите «Старт» (или отправьте команду
/start) - Бот сразу пришлёт информацию о вашем аккаунте, включая ID
/start в группе — бот также пришлёт ID чата.
3. Настройка интеграции в Home Assistant
Шаг 1. Добавление интеграции
- В Home Assistant перейдите в Настройки → Устройства и службы
- Нажмите кнопку «+ Добавить интеграцию»
- В поиске введите
Telegramи выберите Telegram - На втором шаге выберите тип платформы — от этого зависит функционал бота:
| Тип | Описание | Когда использовать |
|---|---|---|
| Pooling (рекомендуется) | Отправка и обработка сообщений через опрос сервера Telegram. Бот сам проверяет наличие новых команд. | ✅ Большинство случаев. Не требует открытого доступа из интернета. |
| Broadcast | Только отправка сообщений (без обработки входящих команд и callback-запросов). | ❌ Только если нужно просто слать уведомления, без управления. |
| Webhooks | Отправка и обработка сообщений через webhook. Telegram сам отправляет запросы на ваш HA. | ⚠️ Требует, чтобы Home Assistant был доступен из интернета (HTTPS, публичный IP). |
- Введите API-ключ бота, полученный от BotFather
- Завершите настройку
Шаг 2. Добавление разрешённого ID чата
- Перейдите в Настройки → Устройства и службы → Telegram bot
- Нажмите «Добавить разрешённый ID чата»
- Введите ID, полученный от @getidsbot
- Если бот не находит чат — убедитесь, что вы активировали бота (отправили ему
/start) - ID чата/канала нужно вводить со знаком минуса (например,
-123456789) - Если вы экспериментировали с добавлением/удалением бота из чата, попробуйте ID с префиксом
-100(например,-100123456789)
🔗 Официальная документация: home-assistant.io/integrations/telegram_bot
4. Пример автоматизации: отправка уведомлений
Создадим простую автоматизацию, которая отправляет уведомление в Telegram при срабатывании датчика или другого события.
Как создать автоматизацию через интерфейс:
- Перейдите в Настройки → Автоматизации и сценарии → Создать автоматизацию
- Выберите триггер (например, срабатывание датчика движения или изменение состояния устройства)
- В действии выберите Telegram bot → Send message
- В поле Message введите текст уведомления (можно использовать шаблоны Jinja2)
Форматирование сообщения (Markdown):
- Жирный текст:
*жирный текст* - Курсив:
_текст курсивом_ - Моноширный текст:
`моноширный текст`
5. Пример автоматизации: управление устройством через кнопки
Сценарий: Пользователь отправляет команду /lamp боту, получает текущее состояние лампочки и инлайн-кнопки для управления.
Как добавить код в текстовый редактор:
- Откройте Настройки → Автоматизации и сценарии
- Нажмите «Создать автоматизацию» → в правом верхнем углу нажмите на три точки (⋮) → выберите «Текстовый редактор»
- 1. Основная автоматизация — обрабатывает команду
/lampи показывает состояние лампочки с кнопками - 2. Автоматизация для включения — обрабатывает нажатие кнопки
/lamp_on - 3. Автоматизация для выключения — обрабатывает нажатие кнопки
/lamp_off
1. Основная автоматизация (обработчик команды /lamp):
alias: test bot
description: ""
triggers:
- trigger: event
event_type: telegram_command
event_data:
command: /lamp
conditions: []
actions:
- action: telegram_bot.send_message
metadata: {}
data:
message: |-
*Состояние лампочки:*
{% if states('light.test_product_2') == 'on' %}🔆 Включена{% else %}💡 Выключена{% endif %}
chat_id: "{{ trigger.event.data.chat_id }}"
inline_keyboard:
- "Включить:/lamp_on"
- "Выключить:/lamp_off"
mode: single
2. Автоматизация для включения лампочки (обработчик кнопки /lamp_on):
alias: lamp turn on
description: ""
triggers:
- trigger: event
event_type: telegram_callback
event_data:
data: "/lamp_on"
conditions: []
actions:
- action: light.turn_on
target:
entity_id: light.test_product_2
data: {}
- action: telegram_bot.answer_callback_query
data:
callback_query_id: "{{ trigger.event.data.id }}"
message: "✅ Лампочка включена"
- action: telegram_bot.edit_message
data:
message_id: "{{ trigger.event.data.message.message_id }}"
chat_id: "{{ trigger.event.data.chat_id }}"
message: |-
*Состояние лампочки:*
🔆 Включена
inline_keyboard:
- "Включить:/lamp_on"
- "Выключить:/lamp_off"
mode: single
3. Автоматизация для выключения лампочки (обработчик кнопки /lamp_off):
alias: lamp turn off
description: ""
triggers:
- trigger: event
event_type: telegram_callback
event_data:
data: "/lamp_off"
conditions: []
actions:
- action: light.turn_off
target:
entity_id: light.test_product_2
data: {}
- action: telegram_bot.answer_callback_query
data:
callback_query_id: "{{ trigger.event.data.id }}"
message: "✅ Лампочка выключена"
- action: telegram_bot.edit_message
data:
message_id: "{{ trigger.event.data.message.message_id }}"
chat_id: "{{ trigger.event.data.chat_id }}"
message: |-
*Состояние лампочки:*
💡 Выключена
inline_keyboard:
- "Включить:/lamp_on"
- "Выключить:/lamp_off"
mode: single
6. Особенности и ограничения встроенной интеграции
- Регулярно ломается при обновлениях HA (пример: 2026.3.1 — бот перестал инициализироваться, 2025.11.1 — перестали работать send_photo и send_video через WebSocket API)
- Не поддерживает несколько ботов корректно — возникает конфликт polling
- Автоматизации на шаблонах Jinja2 становятся громоздкими (для отправки разного сообщения на два Telegram ID нужно 4-5 вложенных условий)
- Node-RED позволяет «заворачивать» команды из Telegram в Assist и получать ответ обратно — встроенная интеграция HA так не умеет
Гибкое управление ботом через Node-RED с примерами и автоматизациями