Азы Node Red: настройка мессенджера Telegram и работа с сообщениями

01 декабря 2019, 11:13

В качестве предисловия

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

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

Установка Telegram

Если Вы читаете статью, то скорее всего, мессенджер у Вас уже установлен и нужно установить своего собственного бота. 

Находим в телеграмме @BotFather и запускаем. Вводим команду /newbot, далее задаем имя своего бота, после задаем имя пользователя, которое должно оканчиваться на _bot. Если имя уже занято, надо ввести другое уникальное имя. В сообщении об успешном создании Вы найдете токен и кликнув на ссылку t.me/"Имя вашего бота" запускаете его, после чего он появится в списке ваших контактов.

Через вкладку manage palette устанавливаем плагин node-red-contrib-telegrambot. Открываем пустое флоу и добавляем две ноды Telegram и ноду debug, как на картинке снизу. Она нам понадобится для получения значения chatId, необходимого для формирования отправляемого сообщения.

Заходим в ноду Sender, выбираем add new telegram bot и заполняем поля Имя бота, Токен бота, update mode - polling, polling interval - 1000. Если хотите использовать Socks5, то поставьте галочку и введите необходимые данные. Далее в ноде Receiver выбираем тоже имя бота, которое ввели в ноде Sender. После чего делаем deploy.

Теперь можно отправить сообщение с вашего Мессенджера и вы должны получить ответ в качестве эха, причем в debag ноде будет цифровое значение chatId, которое надо будет ввести в функции Telegramm, ссылка на тестовое флоу. Принцип работы этой функции прост - она посылает текстовое сообщение, которое вы сформируете в msg.payload и перешлете на вход этой функции.

Пример работы с сообщениями

Так выглядит тестовое флоу для работы с сообщениями. Левый верхний угол занимает установка глобальных данных погоды при старте Node-Red, на тот случай, если у Вас нет датчика Aqara или вы его не пробросили в Node-Red. Правая часть - это, собственно, проброс датчика Aqara через Deconz с записью показаний в глобальные данные. Выход данных функций можно смело заводить прямо на Китовые ноды, но при этом надо помнить, что давление в Кит здесь проброшено как датчик освещенности.

Средняя часть  - работа датчика открытия двери с возможностью симуляции, если пока датчика нет в наличии. Нода inject "Переключатель" меняет состояние каждый раз на противоположное. Ноды change содержат в себе необходимый текст. И конечно, если вы открыли дверь и не закрыли в течении 30 секунд, то получите сообщение о незакрытой двери.

Нижняя часть - непосредственно работа с Telegram. На вход функции Telegramm отправляете все необходимые сообщения в текстовом формате, предварительно не забываем исправить номер chatId на ваш собственный. Более детально остановлюсь на функции Weather. Ее необходимость возникла при отправке не только текстовых данных, но и числовых значений, а также если я хочу отправить несколько предложений одним блоком. Она считывает показатели Температуры, влажности и давления и формирует блок данных, можно также добавлять эмоджи в текстовое поле, предварительно их скопировав. Если воспользоваться нодой inject "Погода", то получите сообщение одним блоком. Эта же нода настроена на отправку данных каждый час. Switch TelegrammIn позволяет пропускать события, если будет отправлено сообщение "Погода" с вашего бота и как результат, вы получите сообщение, сформированное функцией Weather. Обязательно загрузите тестовое флоу, там много комментариев, среди которых Вы найдете возможность надежно отправлять сообщения, а также можно сразу тестировать альтернативный способ доставки сообщений и управления через мессенджер.

В дополнение ко всему сказанному: если у Вас нет желания получать сообщения при определенных условиях (Вы дома, временной интервал или что-то еще) вы всегда можете воспользоваться логическими нодами, которые будут пропускать или не пропускать сообщения по вашему желанию. Если очень нужно, то можете пробросить в HomeKit виртуальный переключатель, который будет включать/выключать отправку сообщений. Как работать с логическими нодами и глобальными данными Вы найдете в статье по ссылке.


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @Soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Виталий Никольский (bigmanekb)
    Однозначный лайк. Именно это флоу я дербанил чтобы понять как работать с телегой в НР. За что большая благодарность.

    Правда одно замечание :) перед экспортом желательно все параметры серверов деконза и т.п. устанавливать в "Add new server" а то приезжают серверы с настройками автора и потом система постоянно на них ругается

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

    Кроме телеграмма (в семье (не без урода) я один им пользуюсь) вообще есть халявный способ слать уведомления в другие месенджеры?

    • (alexgavr54)
      (alexgavr54) 5 месяцев назад

      Например, Slack. Пока нашему РКН не интересен, поэтому работает без бубнов.

  3. Евгений Лузин (EvLuz)
    Евгений Лузин (EvLuz) 5 месяцев назад

    Телеграмм интересен еще тем, что можно организовать управление устройствами через него с менюшками, как резервный канал. Получать информацию по запросу.

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

    Ubuntu Docker Node RED. Вечер потрачен впустую. Не удалось завести сие чудо. И сокс через прокси пробовал. Глушняк полный! Были проскоки сообщений в обратку(пару раз), но чаще горит Polling error. Tor порт слушал, нода не коннектится. Думаю это все Ростелеком.

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

    Спасибо за труд. Чтобы всё это заработало пришлось изучить еще тему поднятия VPN и SOCKS сервера))
    Теперь очень жду продолжения с темой Telegram команд, inline keyboard и т.д. В чате уже проскакивают примеры и поэтому хочется уже построить свое взаимодействие через Telegram

  6. (wisesokol)
    (wisesokol) отредактировано 5 месяцев назад
    Комментарий удален
  7. Евгений Пирогов (eug314)
    Евгений Пирогов (eug314) 4 месяца назад

    Здравствуйте.

    у меня постоянная ошибка на обоих нодах "polling error". в поле  Polling установлено значение  1000

    Подскажите в чем может быть проблема...

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

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

30 августа 2019, 07:28
Несколько нетривиальных способов использования датчика открытия окон/дверей от Xiaomi/Aqara.
09 января 2019, 17:34
Небольшая статья о том, зачем нужна малина, почему автоматизации в HomeKit это не очень хорошо и чем USB стик лучше отдельного шлюза.
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.
06 сентября 2019, 17:03
Кладём на лопатки NodeRed и HomeAssistant с помощью iOS 13.1 и Siri Shortcuts.
23 сентября 2019, 08:52
Node-RED - пошаговая инструкция для новичков.
29 апреля 2019, 15:54
Siri Shortcuts теперь может с легкостью создать автоматизации, оперируя с любыми переменными Apple HomeKit
09 ноября 2018, 17:31
В данной статье рассматривается определенный подход инсталляции и конфигурации базовой среды, для последующей возможности простой, в плане настройки, автоматизации УД с помощью симбиоза HomeAssistant и Node-RED.
18 апреля 2019, 09:07
Раньше, я был глуп и уверен, что zigbee-модули не услышат датчики на больших расстояниях. Я ошибался…
15 марта 2019, 10:08
Расскажу как автоматизировать списки покупок, дел и т.д. через Home Assistant + TODOist и слать красивые списки в Telegram. Примеры из личной жизни прилагаются.
24 сентября 2019, 16:07
Цикл статей. Создание комфортного проживания в загородном доме по мнению дилетанта. Первая часть: "Управление климатом в комнате с радиаторным отоплением при помощи сенсорной панели термостата"