Особенности настройки 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)
    Алексей Новосельцев (novo) 10 месяцев назад

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

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

  2. Олег Челбаев (sprut)
    Олег Челбаев (sprut) 10 месяцев назад

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
25 ноября 2018, 18:23
Умное зеркало добавляем модули Airplay и Google Calendar
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
24 августа 2018, 10:15
Краткий экскурс в настройку Home Assistant