Подключение Telegram bot к Home Assistant для доставки уведомлений и управления умным домом
Telegram является отличной платформой для доставки уведомлений, помимо этого из приложения можно управлять устройствами умного дома через команды.
- Создание нового бота в Telegram
- Конфигурация Home Assistant
- Настройка Proxy
- Безопасность
- Управление Home Assistant
Создание нового бота в Telegram
Для взаимодействия нам потребуется создать бота. В Telegram через поиск находим бота @BotFather и отсылаем ему команду:
/newbot
Первым сообщением нам предлагают придумать имя для бота, которое будет отображаться в чатах и контактах, это имя можно изменить в дальнейшем. Вторым предлагают придумать username, уникальное имя бота, которое должно заканчиваться на "bot". Допускаются буквы латинского алфавита, цифры и знак подчеркивания. В дальнейшем это имя изменить нельзя.
В сообщении после успешного создания бота будет написан токен для доступа к HTTP API.
Конфигурация Home Assistant
Через поиск находим нашего бота и отсылаем команду:
/start
Переходим в браузере по ссылке:
https://api.telegram.org/bot<strong>1321089928:AAE9PeyzE4s4C52vSCOh6nOlaa-hJwIQFgA</strong>/getUpdates
1321089928:AAE9PeyzE4s4C52vSCOh6nOlaa-hJwIQFgA
- токен созданного бота.
В ответ получаем следующее:
username - ваше имя пользователя.
chat_id - ID вашего с ботом чата.
В файл configuration.yaml
заносим настройку интеграции с Telegram и уведомления:
telegram_bot: - platform: polling api_key: <strong>1321089928:AAE9PeyzE4s4C52vSCOh6nOlaa-hJwIQFgA</strong> allowed_chat_ids: - <strong>41431138</strong> notify: - name: telegram_notifier platform: telegram chat_id: <strong>41431138</strong>
Проверяем файл настроек средствами Home Assistant и перезапускаем.
Проверяем работу сервиса:
Developer Tools -> Services
Настройка Proxy
При возникновении проблем с доступом к сервису Telegram необходимо внести настройки Proxy в интеграцию telegram_bot
:
telegram_bot: - proxy_url: <strong>socks5://proxy_address:port</strong> proxy_params: username: <strong>proxy_user</strong> password: <strong>proxy_password</strong>
Полная конфигурация будет выглядеть следующим образом:
telegram_bot: - platform: polling api_key: <strong>telegram_bot_token</strong> allowed_chat_ids: - <strong>chat_id</strong> proxy_url: <strong>socks5://proxy_address:port</strong> proxy_params: username: <strong>proxy_user</strong> password: <strong>proxy_password</strong>
Безопасность
Для безопасности данных токен, chat_id, имя пользователя и пароль от прокси рекомендуется хранить в файле secrets.yaml
. Доступ к файлу должен иметь только пользователь homeassistant
.
telegram_bot_token: <strong>telegram_bot_token</strong> telegram_bot_chat_id: <strong>chat_id</strong> telegram_bot_proxy_url: <strong>socks5://proxy_address:port</strong> telegram_bot_proxy_user: <strong>proxy_user</strong> telegram_bot_proxy_passwd: <strong>proxy_password</strong>
Тогда настройки в configuration.yaml
будут иметь следующий вид:
telegram_bot: - platform: polling api_key: !secret telegram_bot_token allowed_chat_ids: - !secret telegram_bot_chat_id proxy_url: !secret telegram_bot_proxy_url proxy_params: username: !secret telegram_bot_proxy_user password: !secret telegram_bot_proxy_passwd
Управление Home Assistant
Следующая автоматизация демонстрирует управление системой Home Assistant, при отправке боту команды /ping
система в ответ пришлет ответ pong
. В файл automations.yaml
добавляем автоматизацию:
- id: 'Home_Assistant_Check_State' alias: "Home Assistant check state" description: "Home Assistant проверка состояния системы" trigger: - platform: event event_type: telegram_command event_data: command: "/ping" condition: [] action: - service: telegram_bot.send_message data: message: "-> pong"