Telegram-бот

Создание Telegram-бота для управления освещением с помощью Home Assistant

  • Окт, 14, 2025
Создание Telegram-бота для управления освещением с помощью Home Assistant

1. Зачем нужен Telegram-бот для управления освещением

Telegram-бот в Home Assistant предоставляет удобный способ удалённого управления освещением без необходимости открывать веб-интерфейс или использовать сторонние приложения. Это особенно полезно:

  • При отсутствии дома — включить свет для имитации присутствия
  • В экстренных ситуациях — быстро выключить всё освещение
  • Для пользователей без смартфона — управление через любой Telegram-клиент
  • Как резервный канал управления при недоступности основного интерфейса

Преимущества Telegram:

  • Работает через любой интернет-канал (мобильный, Wi-Fi)
  • Поддерживает кнопки, команды, медиа
  • Шифрование трафика (MTProto)
  • Бесплатен и не требует SMS-верификации для бота

2. Подготовка: требования и компоненты

Для реализации потребуется:

Компонент Требование
Home Assistant Версия 2023.10 или новее (рекомендуется Home Assistant OS)
Освещение Любые устройства, интегрированные в Home Assistant: Zigbee (Sonoff, Aqara), Wi-Fi (Tasmota), KNX, Modbus
Интернет Доступ к серверу Home Assistant извне (через Nabu Casa, Cloudflare Tunnel или проброс портов)
Telegram Аккаунт в Telegram и доступ к BotFather
⚠️ Если Home Assistant недоступен из интернета, бот работать не будет — Telegram должен иметь возможность отправлять webhook-запросы на ваш сервер.

3. Создание Telegram-бота через BotFather

BotFather — официальный бот Telegram для создания и управления ботами.

Шаг 1: Запуск BotFather

  1. Откройте Telegram и найдите @BotFather
  2. Нажмите Start

Шаг 2: Создание нового бота

  1. Отправьте команду: /newbot
  2. Введите имя бота (например, MyHomeLight) — отображается в списке чатов
  3. Введите username бота (например, MyHomeLight_bot) — должен быть уникальным и оканчиваться на _bot

Шаг 3: Получение токена

BotFather выдаст сообщение вида:

Done! Congratulations on your new bot. You will find it at t.me/MyHomeLight_bot.
Use this token to access the HTTP API:
123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ

Сохраните токен — он понадобится для настройки в Home Assistant. Никому не передавайте его.

Шаг 4: Настройка (опционально)

Вы можете улучшить внешний вид бота:

  • /setuserpic — установить аватар
  • /setdescription — описание бота
  • /setabouttext — информация «О боте»

4. Интеграция Telegram в Home Assistant

Home Assistant имеет встроенную интеграцию с Telegram через компонент telegram_bot.

Шаг 1: Добавление интеграции

  1. В веб-интерфейсе Home Assistant перейдите: Настройки → Устройства и службы → Интеграции
  2. Нажмите + Добавить интеграцию
  3. Найдите и выберите Telegram

Шаг 2: Ввод параметров

Заполните поля:

  • API token: вставьте токен, полученный от BotFather
  • Allowed chat IDs: оставьте пустым на этом этапе (настроим позже)
  • Mode: webhooks (рекомендуется для мгновенной доставки)
  • Webhook URL: укажите внешний URL вашего Home Assistant (например, https://your-domain.duckdns.org)
🔌 Если используете Nabu Casa Cloud — webhook настраивается автоматически, поле URL можно оставить пустым.

Шаг 3: Получение Chat ID

  1. Найдите своего бота в Telegram и отправьте любое сообщение (например, /start)
  2. В Home Assistant откройте Инструменты разработчика → События
  3. Подпишитесь на событие telegram_command
  4. Отправьте /start снова — в логах появится событие с полем chat_id

Запишите этот chat_id — он уникален для вашего аккаунта.

Шаг 4: Обновление интеграции

  1. Удалите текущую интеграцию Telegram
  2. Добавьте её снова, но теперь в поле Allowed chat IDs укажите ваш chat_id

Теперь бот будет принимать команды только от вас.

5. Настройка автоматизации для управления светом

Управление реализуется через автоматизации, реагирующие на команды Telegram.

Пример 1: Включение всех светильников

Создайте автоматизацию:

  • Триггер: Событие → telegram_command → команда: light_on
  • Действие: Вызвать службу → light.turn_on → сущность: group.all_lights
  • Ответ боту: Вызвать службу → telegram_bot.send_message → текст: ✅ Все светильники включены

Пример 2: Выключение освещения в гостиной

  • Триггер: Событие → telegram_command → команда: living_off
  • Действие:
    1. light.turn_off → сущность: light.living_room
    2. telegram_bot.send_message → текст: 🛋️ Свет в гостиной выключен

Группировка светильников

Рекомендуется создать группы в configuration.yaml:

light:
  - platform: group
    name: "Все светильники"
    entities:
      - light.kitchen
      - light.living_room
      - light.bedroom

После перезагрузки появится сущность light.vse_svetilniki, которую можно использовать в автоматизациях.

6. Добавление команд и кнопок

Для удобства можно настроить меню команд и интерактивные кнопки.

Настройка меню команд

  1. В BotFather отправьте /mybots → выберите вашего бота → Edit BotEdit Commands
  2. Введите команды в формате:
    light_on - Включить весь свет
    light_off - Выключить весь свет
    living_on - Включить гостиную
    living_off - Выключить гостиную

Теперь при вводе / в чате с ботом будет появляться список команд.

Интерактивные кнопки

Для создания кнопок используйте службу telegram_bot.send_message с параметром keyboard:

service: telegram_bot.send_message
data:
  message: "Управление освещением:"
  keyboard:
    - ["Включить всё", "Выключить всё"]
    - ["Гостиная: Вкл", "Гостиная: Выкл"]

Каждая строка — массив кнопок в ряду. При нажатии кнопки её текст отправляется как команда, на которую можно создать триггер.

7. Безопасность: ограничение доступа

Безопасность критична, так как бот даёт прямой доступ к управлению домом.

  • Allowed chat IDs: всегда указывайте только доверенные chat_id. Никогда не оставляйте поле пустым в продакшене.
  • Двухфакторная аутентификация: включите 2FA в Telegram для защиты аккаунта.
  • Ограниченные права: не давайте боту доступ к критичным системам (отопление, замки) без подтверждения.
  • Логирование: включите запись всех команд в журнал Home Assistant для аудита.
  • Регулярная ротация токена: раз в 6 месяцев меняйте токен через BotFather и обновляйте его в Home Assistant.

8. Расширенные сценарии

Возможности можно расширить:

Сценарий «Уход из дома»

Команда /leave выполняет:

  • Выключает всё освещение
  • Включает охранную сигнализацию
  • Отправляет фото с камеры
  • Уведомляет: «Дом закрыт. Освещение выключено. Сигнализация включена.»

Управление яркостью

Команда /brightness 50 передаёт значение в автоматизацию:

trigger:
  platform: event
  event_type: telegram_command
  event_data:
    command: brightness
action:
  - service: light.turn_on
    data:
      entity_id: light.bedroom
      brightness_pct: "{{ trigger.event.data.args[0] | int }}"

Статус освещения

Команда /status отправляет текущее состояние:

service: telegram_bot.send_message
data:
  message: >
    {% if is_state('light.living_room', 'on') %}
      🏠 Гостиная: ВКЛ
    {% else %}
      🏠 Гостиная: ВЫКЛ
    {% endif %}

9. Типичные ошибки и решения

Ошибка Причина Решение
Бот не отвечает на команды Home Assistant недоступен из интернета Проверить проброс портов, DNS, сертификат SSL
Команда не распознаётся Нет автоматизации с триггером на эту команду Создать автоматизацию с событием telegram_command
«Access denied» Chat ID не добавлен в Allowed chat IDs Получить chat_id и обновить интеграцию
Кнопки не отображаются Неправильный синтаксис keyboard Проверить формат: список списков строк
Сообщения приходят с задержкой Используется polling вместо webhooks Переключить режим на webhooks и указать URL

10. Заключение

Telegram-бот — это простой, но мощный инструмент для удалённого управления освещением в Home Assistant. Он не требует сложной инфраструктуры и работает на любом устройстве с Telegram.

Ключевые шаги:

  1. Создайте бота через BotFather и получите токен.
  2. Настройте интеграцию Telegram в Home Assistant с webhook и вашим chat_id.
  3. Создайте автоматизации для команд включения/выключения света.
  4. Добавьте меню и кнопки для удобства.
  5. Обеспечьте безопасность через ограничение chat_id и логирование.

Это решение особенно актуально для российских пользователей, так как Telegram широко распространён и не блокируется, а Home Assistant поддерживает большинство локальных устройств (Sonoff, Wiren Board, ОВЕН).