Записки Node-RED

Имеется система домашней автоматизации ЛеДжо (фр. ленивая джопа) на базе Node-RED и метеорологическая станция Emax-W6.

Я использую данные метеостанции в собственных целях, но почему бы не поделится ими с сообществом, тем более что для меня это ничего не стоит?

Регестрируюсь и начинаю изучать вопрос. Согласно документации на сайте narodmon.ru есть вариант HTTP(S) POST.
Им и воспользуюсь.

Буду отправлять строку вида:

http://narodmon.ru/post?ID=MAC&mac1=value1&...&macN=valueN[&time=UnixTime][&name=название][&owner=владелец][&lat=широта][&lon=долгота][&alt=высота_над_морем]

Не самый очевидный момент и не раскрытый в документации - что такое "ID=MAC", и откуда этот MAC взять?
MAC - это просто уникальный идентификатор. В момент создания проекта narodmon.ru требовалось обеспечить уникальность поступающих данных, для отделения их друг от друга. Использовать в этих целях локальный IP который может поменяться и точно повторится в локалке у другого пользователя? Использовать внешний IP который может изменится в любой момент по прихоти провайдера, или совпасть с IP другого абонента провайдера или с моим собственным вторым датчиком.Это никуда не годится!
Значит нужно использовать некий, заведомо уникальный идентификатор. Если не выдавать такие идентификаторы самому (что привело бы к необходимости придумывать систему и тратить время на поддержание её работы) - то разумно взять то, что есть под рукой - MAC address сетевой карты. Его уникальностью занимается целый консорциум и, не смотря на попытки отдельных производителей, успешно справляется.

Я прописал (в узле "Форматирование") MAC адрес домашнего сервера, но в принципе мог взять MAC от любого устройства из домашней сети. Практически невероятно, что бы этот MAC адрес повторился в какой-то другой сети, и совсем невероятно если он повторится на устройстве отправляющем данные на сайт narodmon.ru. Прописывание адреса вручную позволяет мне, при необходимости, перенести мониторинг на другой сервер и отправлять данные не делая лишних настроек на сайте narodmon.ru, переноса данных и подобных преобразований.

Следующая непонятка - что такое

"&mac1=value1&...&macN=valueN"
Нутром чую что это имена и значения переменных, но почему тоже "macX" - объяснить не могу.
Зато могу понять почему короткое имя - проект narodmon.ru начинася и ориентировался в то время на датчики с распространенными в то время микроконтроллерам, у которых были единицы килобайт памяти. приходилось выкручиваться и экономит каждый байт. В том числе на именах переменных.
Однако, я считаю что "компьютер для Человека а не Человек для компьютера!" и по этому, если нет явной необходимости в экономии, даю удобочитаемые имена переменным (в узле "Форматирование").

Следующий момент - с метеостанции поступают (и будут отправлены) следуюшие данные

  • 1. Температура.
  • 2. Относительная влажность.
  • 3. Скорость ветра.
  • 4. Направление ветра.
  • 5. Осадки.
Но хочется дополнить их
  • 6. Атмосферное давление
(что за погода без давления?) которое, из-за отсутствия в метеостанции, придется брать с другого датчика.
Итого - 5 топиков данных с метеостанции поступают 2 раза в минуту, 1 барометр (ESP8266 + BMP280 + Tasmota firmware) присылает раз в минуту а narodmon.ru принимает раз в 5 минут (или реже).

Node-RED narodmon.ru meteostation

В Node-RED есть узел Join который отлично подходит для решения задачи "Сборка данных"
Настраиваю его на отправку сообщения, после получения на вход 7 разных топиков. Первые 6 топиков могут приходить много раз (и будет запоминатся последнее (самое новое) значение пейлоада) но на выходе сообшение появится только в момент прихода 7 го. В моем случае это "тик" от Таймера, задающего период отправки.
Из полученого цельного уже набора данных узел "Форматирование" формирует строку POST запроса для отправки в сервис narodmon.ru (именно здесь задается MAC, username=login в сервис, человекочитаемые названия переменных).
Перед применением откройте и измените узел соответсвено своим учетным данным.в сервисе.
Узел "Отправка" соответственно отправляет.

Файл с кодом потока nodered-narodmon-sensors-send-v1-flow.json Скачать бесплатно, без регистрации и СМС.

P.S. Узлы "Контроль" и группы узлов "Имитататор датчика атм.давления" и "Имитатор метеостанции" для работы не нужны и приведены для демонстрации. Их можно нужно удалять из своего проекта смело и без последствий.

P.P.S. Для примера приведены функции:
конвертации значения атмосферного давления из гектопаскалей в миллиметры ртутного столба,
округления температуры до значимых двух знаков после запятой,
конвертации скорости ветра из километров в час в метры в секунду.

(c) 2025