Азы 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) отредактировано 13 дней назад

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

    • (alexgavr54)
      (alexgavr54) 12 дней назад

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

  3. Евгений Лузин (EvLuz)
    Евгений Лузин (EvLuz) 12 дней назад

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

  4. (wisesokol)
    (wisesokol) 10 дней назад

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

  5. (Zero_ss)
    (Zero_ss) 6 дней назад

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

  6. (wisesokol)
    (wisesokol) отредактировано 4 дня назад
    Я видел подсказку. Скажите, а у вас HA в Docker или на PI шке?

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

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

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