Особенности настройки Telegram_Bot в Hass.io

13 октября 2018, 21:54

После обновления, в hass.io появился штатный инструмент polling для использования прокси в настройках telegram_bot. (Официальная инструкция по его настройке бота в НА находится здесь)

Вкратце основные действия которые нужно совершить для создания собственного бота заключаются в следующих шагах:

  1. Открываем Telegram
  2. Ищем пользователя @BotFather
  3. Пишем ему /newbot
  4. Отвечаем на вопросы относительно Имени и юзернейма для бота (Имя это то, как бот будет выглядеть в списке пользователей)
  5. Получаем сообщение с API ключом нашего бота.

Далее мы идем в браузер и вводим следующий текст в адресную строку:

Получаете ответ в виде:


<span style="font-size: 16px; background-color: rgb(255, 255, 255); color: rgb(51, 51, 51);">{</span>    "ok": true,
    "result": [{
        "update_id": 254199982,
        "message": {
            "message_id": 27,
            "from": {
                "id": 123456789,
                "first_name": "YOUR_FIRST_NAME YOUR_NICK_NAME",
                "last_name": "YOUR_LAST_NAME",
                "username": "YOUR_NICK_NAME"
            },
            "chat": {
                "id": 123456789,
                "first_name": "YOUR_FIRST_NAME YOUR_NICK_NAME",
                "last_name": "YOUR_LAST_NAME",
                "username": "YOUR_NICK_NAME",
                "type": "private"
            },
            "date": 1678292650,
            "text": "test"
        }
    }]
}

Где id: в разделе "chat" и есть искомый "chat_id" необходимый для конфигурирования бота.

Однако есть ряд особенностей.

Для того чтобы у вас открылась эта строка в браузере, нужно чтобы ваш браузер обходил блокировки телеграма. Для этого можно поставить браузерный прокси, например Proxy SwitchyOmega для Google Chrome. (Это кстати решит и проблему постоянного отваливания официального сайта Home Assistant)

Также можно воспользоваться ботами, сообщающими ваш ID @myidbot или @get_id_bot

Далее приступим к настройке

Чтобы быть последовательным, приведу базовую конфигурацию бота, которая проверена и работает:

telegram_bot:
  - platform: polling
    proxy_url: !secret telegram_proxy_url
    proxy_params:
      username: !secret telegram_proxy_username
      password: !secret telegram_proxy_password
    api_key: !secret telegram_bot_api_key
    allowed_chat_ids:
      - !secret telegram_bot_chat_id

notify:
  - name: telegram
    platform: telegram
    chat_id: !secret telegram_bot_chat_id

Данная конфигурация содержит в себе ссылки на разные данные хранящиеся в файле secrets.yaml, инструкцию по использованию которого можно прочитать в официальной документации.

В файл Secrets.yaml мы вносим все полученные ранее данные (API Key и chat_id)

Настройка Proxy

Как мы видим, для того чтобы бот работал из России, необходимо использовать прокси. Тип прокси для корректной работы - SOCKS5.

Перечень рабочих прокси можно найти в интернете. Например идем по этой ссылке и ищем там список прокси. Если скопировать ссылку из списка, то мы получим строку содержащую в себе:

Адрес прокси, порт, логин и пароль для прокси (обычно это telegram|telegram) но есть исключения.

Строка url для конфигурации должна выглядеть в итоге так:

socks5://адрес_прокси_сервера:порт

Чтобы проверить работоспособность прокси, нужно установить ее в свое приложение на десктопе и что-нибудь написать самому себе (установка обычно осуществляется кликом на ссылку, но можно и вручную в разделе Настройки приложения Telegram)

ВАЖНО !!!

Надо понимать, что использование сторонних бесплатных прокси серверов, влечет за собой возможность использования технологии Men In The Middle (MiTM что означает "Человек посередине"). НО! В официальном FAQ от Telegram указано, что перехват сообщений невозможен как при использовании обычных так и секретных чатов. (Будем надеяться что все таки это факт)

Проверка работы

После того как мы все настроили, нужно проверить работоспособность бота. Для этого мы идем в раздел Инструменты разработчика -> Службы

Далее выбираем службу notify.telegram и вводим следующий текст: {"message":"test"} и отправляем.

И тут мы подошли к самому важному

Несмотря на то, что вроде бы все настроено, прокси работает и все должно быть замечательно, но ничего не приходит, нужно учесть один маленький нюанс:

IP адрес сервера Telegram 149.154.167.220, но некоторые провайдеры (например Дом.ру точно) подменяют этот адрес на свой адрес блокировки.

Поэтому для того, чтобы все корректно работало, надо прописать этот IP адрес в раздел HOSTS вашего роутера в виде:

149.154.167.220                api.telegram.org

На тот случай если адрес сменится, вот вам заграничный ресурс, который выдаст актуальный IP адрес сервера. 

После всех этих этапов все должно заработать.


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Алексей Новосельцев (novo)

    За статью спасибо! Только для новичка голопом по Европам. Куда конфигурацию Телеграма в Home Assistant вставлять, в какой файл? Дальше не продвинулся.

    И как его потом использовать?

  2. Олег Челбаев (sprut)

    Спасибо за развитие темы ХА =)

  3. Евгений Селянин (Shico)
    Евгений Селянин (Shico) 7 месяцев назад

    Спасибо за статью. 
    У меня как раз провайдер Дом.Ру. А можете разъяснить поконкретнее, что за раздел HOSTS на роутере(у меня ASUS роутер), все вкладки перерыл, не нашел куда это прописать.

    Может хотя бы на примере своего роутера дадите пояснения?

  4. (Varrcan)
    (Varrcan) отредактировано 7 месяцев назад

    Дай бог тебе здоровья! :D

    Около часа мучился, не мог понять, почему не работает, прописал ip в локальный hosts и все пошло ) Домру, конечно, знатно гадит ))

    Спасибо большое за статью!

    • Виталий Никольский (bigmanekb)

      да всегда пожалуйста :))) надо наверное переименовать статью "настройка телеграм бота для тех у кого домру" :))))))

  5. (Mioze)
    (Mioze) 6 месяцев назад

    я так понимаю это все возможно только для канала? т.е. отправка данных от сервера HA-клиенту в телеграмм, а вот с ботом такое уже не прокатит. так как прокси работают только в одностороннем режиме.

    • Виталий Никольский (bigmanekb)

      Всмысле ? Это бот жеж. То есть связь двухсторонняя. Можно как и уведомления от НА получать так и управлять НА через команды боту. Прокси работает в обе стороны.

      • (Mioze)
        (Mioze) 6 месяцев назад

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

  6. (Mioze)
    (Mioze) отредактировано 6 месяцев назад
    Комментарий был удален
  7. (Fonderat)
    (Fonderat) отредактировано 5 месяцев назад
    Комментарий был удален
  8. (Fonderat)
    (Fonderat) 5 месяцев назад

    Спасибо. Все получилось. Хоть и не сразу...

К списку статей

Похожие статьи

15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
24 августа 2018, 10:15
Краткий экскурс в настройку Home Assistant
11 мая 2019, 19:57
Как активировать русский язык в Google Assistant для Google Home
14 сентября 2018, 19:34
Изучаем автоматизации в Home Assistant