Добавляем Telegram бота через Node-RED

Ну а почему бы и нет.

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

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

Установка и настройка компонента

  1. Установить собственно клиента Telegram на свой телефон, зарегистрироваться (настроить свой профиль по желанию), тут думаю, все справятся. Те, у кого уже есть аккаунт, данный шаг пропускают.
  2. Находим в телеграмме @BotFather и запускаем. Вводим команду /newbot, далее задаем имя своего бота, после задаем имя пользователя, которое должно оканчиваться на _bot. Если имя уже занято, надо ввести другое уникальное имя. В сообщении об успешном создании Вы найдете токен (рекомендую токен сохранить отдельно)и кликнув на ссылку t.me/»Имя вашего бота» запускаете его, после чего он появится в списке ваших контактов. (настраиваем профиль бота по желанию).
  3. Идем в Node-red. устанавливаем плагин node-red-contrib-telegrambot. Открываем пустое флоу и добавляем две ноды Telegram и ноду debug, как на картинке снизу.

Она нам понадобится для получения значения chatId, необходимого для формирования отправляемого сообщения. Заходим в ноду Sender,

выбираем add new telegram bot и заполняем поля Имя бота, Токен бота, update mode — polling, polling interval – 1000.

Деплоим – и вместо безграничной радости получаем ошибку подключения, привет от роскомнадзора. Те кому повезло и подключился пропускают следующий шаг.

Пример работы

  1. А нам с вами не повезло, поэтому сейчас мы будем обходить данное ограничение провайдера. Для этого, ищем любой бесплатный SOCKS прокси сервер.
  2. Возвращаемся к нашему боту вписываем данные прокси. И все работает, получаем chatID и сохраняем. Наш Бот настроен подключен остается только грузить его полезной нагрузкой.
  3. Разберем пример уведомлений о низком уровне воды, во все тех же увлажнителях. По моему опыту при 10% воды он перестает работать. Итого не сложная математика, 1% воды он испаряет в 10 минут. Возьмём время на прочтение и реакцию, граничное показание для отправки уведомления будет 15%.
  4. Воспользуемся тем что создавали в предыдущих статьях, и продолжим от интересующего нас выхода, а именно уровень воды.
  5. Использовать будем ноду «switch» блока «function» и настраиваем ее на разделении потока согласно принятому критерию в пункте 6 
  6. Затем используем ноду «change», 1 выход предыдущей ноды  обрываем, нам он не интересен, а вот выход из второго настраиваем следующим образом: причем написать вы можете все что угодно, именно это сообщение и будет отправлено в бот. 
  7. Следующим кубиком используем «function» блока «function», записав следующую формулу
    msg.payload = {chatId :ВАШЕЗНАЧЕНИЕ, type : 'message', content : msg.payload};
    
    return msg;
    
  8. И последним используем уже созданный ранее в третьем шаге кубик «Telegram sendler» и получаем вот такое сообщение каждые 5 секунд
  9. Чтоб этого избежать используем кубик «rbe» блока «function», и выбираем второе значение, «игнорировать , если значение не меняется». 
  10. В итоге получаем вот такой флоу

На этом на сегодня все. Данным образом можно реализовать уведомления любого формата.

Подобное и многое другое обсуждается в нашем telegram чате  https://t.me/inhomekit_chat. Заходите.

Подписывайтесь на канал inHomeKit в Telegram и Яндекс.Дзен, чтобы у вас всегда было что почитать: новости мира умного дома, обзоры новых устройств, инструкции по подключению.

Приходите в наш чат в Telegram

Так же у нас отличные паблики VK, Facebook, Instagram и Twitter.

Добавить комментарий