Stupid House

Подключение Telegram bot к Home Assistant для доставки уведомлений и управления умным домом


Telegram является отличной платформой для доставки уведомлений, помимо этого из приложения можно управлять устройствами умного дома через команды.

 

 

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

Для взаимодействия нам потребуется создать бота. В Telegram через поиск находим бота @BotFather и отсылаем ему команду:

/newbot

Первым сообщением нам предлагают придумать имя для бота, которое будет отображаться в чатах и контактах, это имя можно изменить в дальнейшем. Вторым предлагают придумать username, уникальное имя бота, которое должно заканчиваться на "bot". Допускаются буквы латинского алфавита, цифры и знак подчеркивания. В дальнейшем это имя изменить нельзя.

В сообщении после успешного создания бота будет написан токен для доступа к HTTP API.

telegram bot created

 

Конфигурация Home Assistant

Через поиск находим нашего бота и отсылаем команду:

/start

 

Переходим в браузере по ссылке:

https://api.telegram.org/bot<strong>1321089928:AAE9PeyzE4s4C52vSCOh6nOlaa-hJwIQFgA</strong>/getUpdates

1321089928:AAE9PeyzE4s4C52vSCOh6nOlaa-hJwIQFgA - токен созданного бота.

В ответ получаем следующее:

telegram bot getupdate

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

telegram bot test service

 

Настройка 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"

Автор: muxa, 13.07.2020
Войдите или зарегистрируйтесь, чтобы иметь возможность оставлять комментарии