Имеется система домашней автоматизации ЛеДжо (фр. ленивая джопа) на базе 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 есть узел Join который отлично подходит для решения задачи "Сборка данных"
Настраиваю его на отправку сообщения, после получения на вход 7 разных топиков.
Первые 6 топиков могут приходить много раз (и будет запоминатся последнее (самое новое) значение пейлоада)
но на выходе сообшение появится только в момент прихода 7 го. В моем случае это "тик" от Таймера,
задающего период отправки.
Из полученого цельного уже набора данных узел "Форматирование" формирует строку POST запроса
для отправки в сервис narodmon.ru (именно здесь задается MAC, username=login в сервис, человекочитаемые названия переменных).
Перед применением откройте и измените узел соответсвено своим учетным данным.в сервисе.
Узел "Отправка" соответственно отправляет.
Файл с кодом потока nodered-narodmon-sensors-send-v1-flow.json Скачать бесплатно, без регистрации и СМС.
P.S. Узлы "Контроль" и группы узлов "Имитататор датчика атм.давления" и "Имитатор метеостанции"
для работы не нужны и приведены для демонстрации. Их можно нужно удалять
из своего проекта смело и без последствий.
P.P.S. Для примера приведены функции:
конвертации значения атмосферного давления из гектопаскалей в миллиметры ртутного столба,
округления температуры до значимых двух знаков после запятой,
конвертации скорости ветра из километров в час в метры в секунду.
(c) 2025