Создание Telegram-бота для управления освещением с помощью Home Assistant
Оглавление
- 1. Зачем нужен Telegram-бот для управления освещением
- 2. Подготовка: требования и компоненты
- 3. Создание Telegram-бота через BotFather
- 4. Интеграция Telegram в Home Assistant
- 5. Настройка автоматизации для управления светом
- 6. Добавление команд и кнопок
- 7. Безопасность: ограничение доступа
- 8. Расширенные сценарии
- 9. Типичные ошибки и решения
- 10. Заключение
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
- Откройте Telegram и найдите
@BotFather - Нажмите Start
Шаг 2: Создание нового бота
- Отправьте команду:
/newbot - Введите имя бота (например,
MyHomeLight) — отображается в списке чатов - Введите 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: Добавление интеграции
- В веб-интерфейсе Home Assistant перейдите: Настройки → Устройства и службы → Интеграции
- Нажмите + Добавить интеграцию
- Найдите и выберите 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
- Найдите своего бота в Telegram и отправьте любое сообщение (например,
/start) - В Home Assistant откройте Инструменты разработчика → События
- Подпишитесь на событие
telegram_command - Отправьте
/startснова — в логах появится событие с полемchat_id
Запишите этот chat_id — он уникален для вашего аккаунта.
Шаг 4: Обновление интеграции
- Удалите текущую интеграцию Telegram
- Добавьте её снова, но теперь в поле 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 - Действие:
light.turn_off→ сущность:light.living_roomtelegram_bot.send_message→ текст:🛋️ Свет в гостиной выключен
Группировка светильников
Рекомендуется создать группы в configuration.yaml:
light:
- platform: group
name: "Все светильники"
entities:
- light.kitchen
- light.living_room
- light.bedroom
После перезагрузки появится сущность light.vse_svetilniki, которую можно использовать в автоматизациях.
6. Добавление команд и кнопок
Для удобства можно настроить меню команд и интерактивные кнопки.
Настройка меню команд
- В BotFather отправьте
/mybots→ выберите вашего бота → Edit Bot → Edit Commands - Введите команды в формате:
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.
Ключевые шаги:
- Создайте бота через BotFather и получите токен.
- Настройте интеграцию Telegram в Home Assistant с webhook и вашим chat_id.
- Создайте автоматизации для команд включения/выключения света.
- Добавьте меню и кнопки для удобства.
- Обеспечьте безопасность через ограничение chat_id и логирование.
Это решение особенно актуально для российских пользователей, так как Telegram широко распространён и не блокируется, а Home Assistant поддерживает большинство локальных устройств (Sonoff, Wiren Board, ОВЕН).
