narodmon
Author |
Message |
Written on: 09. 01. 2019 [22:43]
|
arcsin
Аркадий Кисель
Contributor
Topic creator
registered since: 17.02.2017
Posts: 77
|
Добрый вечер форумчане! существует интересный проект: narodmon в котором на карту можно выгружать показания датчиков(температура, влажность, давление, скорость и направление ветра, освещенность, радиацию, кВт*ч, водокубы, uptime сисемы, количество данных, пользовательский ) метеодатчики на улице можно открывать для всех, остальные закрытые. источники должны быть медленные, т.к. бесплатный интервал 5 минут, платный 1 минута. с сайта можно на свое устройство отправить команды, которые сайт передаст в следующую открытую сессию (даже на серый IP!)
у меня получилось из OpenSCADA данные брать с BME280, передавать на сайт и принимать управляющие сигналы.
используется транспорт сокет narodmonTCP по адресу "narodmon.ru:8283"
Код шаблона параметра
/*
Формат пакета данных:
#MAC\n
#mac1#value1[#time1][#name1]\n
...
#macN#valueN[#timeN][#nameN]\n
##
формат ответа:
"OK"
или команда начинающаяся с #, через ";" присваиваются переменным значения "#gpio=0;a=start;ip=192.168.10.10"
или строка ошибки
*/
req = "#"+MAC+"\n"+
"#T1#"+Temperature+"\n"+
"#H1#"+Humidity+"\n"+
"#P1#"+Pressure+"\n"+
"##";
rez = SYS.Transport.Sockets.out_narodmonTCP.messIO(req);
answer = SYS.XMLNode("answer");
error="";
if(rez!="OK" && rez.charAt(0)!="#")
{
error=rez;
SYS.messInfo("narodmon",error);
}
else
if (rez.charAt(0)=="#")
{
control = rez.replace("#","").replace("\n","").split(";"); //удаляем первый # и \n, режем по ";"
for(i = 0; i < control.length; i++)
answer.setAttr(control[i].split("=")[0],control[i].split("=")[1]); //режем каждую команду по "=", добавляем атрибуты
gpio = answer.attr("gpio"); //реагируем на команды, или выводим сигнал
a=answer.attr("a");
ip=answer.attr("ip");
}
в приложении база данных с транспортом и функцией. а так же описание API.
Можно реализовать выгрузку данных из архива скады на сайт, а также передавать координаты в сообщении в случае подвижных датчиков.
формат нестандартный, но не сложный. есть ли смысл выносить его в Пользовательский протокол, а в шаблоне генерировать просто XML с названиями датчиков, значениями и т.д. и принмать из Пользовательского протокола готовое XML с командами (как в этом коде answer)?
PS1 подложка для narodmon.ru из карт Яндекса; narodmon.com из карт google. первый вариант быстрее даже с VPN (для обхода блокировок).
PS2 можно установить на сайте sms / email (в будущем viber) оповещения выхода значения датчика за пределы, или "замолкание устройства"
Attachment
narodmon.db (File type: application/octet-stream, Size: 11 kilobytes) — 1443 downloads
API для передачи.odt (File type: application/vnd.oasis.opendocument.text, Size: 31.48 kilobytes) — 1693 downloads
|
Written on: 11. 01. 2019 [11:05]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"arcsin" wrote:
Добрый вечер форумчане! существует интересный проект: narodmon в котором на карту можно выгружать показания датчиков(температура, влажность, давление, скорость и направление ветра, освещенность, радиацию, кВт*ч, водокубы, uptime сисемы, количество данных, пользовательский ) метеодатчики на улице можно открывать для всех, остальные закрытые. источники должны быть медленные, т.к. бесплатный интервал 5 минут, платный 1 минута. с сайта можно на свое устройство отправить команды, которые сайт передаст в следующую открытую сессию (даже на серый IP!)
Мне не интересен, поскольку на WEB у меня сейчас OpenSCADA сама и прямо выгружает сенсоры, в перспективе может и будет выгружать на карту, чего пока и не нужно, но для чего скоро добавлю чтение геопозиции как прямо с сенсора так и gpsd.
И что также можно предоставлять, как сервис для размещения пользовательской информации.
Т.е. если это в тему форума "Разработка OpenSCADA" то делать это тут, а не где-то на стороне, чему я знаю и ряд других примеров с трекинговыми системами!
Learn, learn and learn better than work, work and work.
|
Written on: 17. 01. 2019 [14:55]
|
arcsin
Аркадий Кисель
Contributor
Topic creator
registered since: 17.02.2017
Posts: 77
|
"roman" wrote:
Мне не интересен
Мне нравится проект как социально-географический. посмотреть на свой город, сколько датчиков рядом,сколько в соседних городах, какая радиация возле ЧАЭС, влажность на берегу моря и т.д. Опять же постройка домашней метеостанции на базе OpenSCADA или других продуктов это как Hello world в программировании.
"roman" wrote:
Т.е. если это в тему форума "Разработка OpenSCADA" то делать это тут, а не где-то на стороне, чему я знаю и ряд других примеров с трекинговыми системами!
Я опубликовал это здесь: Обсуждение и организация разработки проекта OpenSCADA и расширений к нему, т.к. хочу оформить в библиотеку с несколькими функциями, транспортами. Если не угадал с направлением, то могу продолжить здесь: Внедрение и разработка в OpenSCADA.
|
Written on: 14. 02. 2019 [00:39]
|
arcsin
Аркадий Кисель
Contributor
Topic creator
registered since: 17.02.2017
Posts: 77
|
доброй ночи, форумчане!
в приложении модуль,
описание API narodmon с новыми коментариями
функциональная схема модуля.
видео о использовании модуля.
если нужно более подробное объяснение работы с коментариями кода и примерами отладки пишите в коментариях здесь или под видео.
возможности модуля:
Выгрузка без программирования
Гарантированная доставка
Несколько датчиков на одно устройство
Несколько устройств в одном проекте
Переключение протокола TCP-POST «на лету»
Гибкое добавление(нужен перезапуск контроллера)/{от,в}ключение(«на лету») датчиков
Оправка имени устройства
Отправка имени датчика (только для TCP, не гарантировано)
Выгрузка не отправленных архивных данных в «фоне» (приоритет текущим).
Отдельная функция для разбора команд управления
Единоразовая выгрузка исторических данных из архива OpenSCADA
Attachment
narodmon.db (File type: application/octet-stream, Size: 144 kilobytes) — 1426 downloads
API для передачи.odt (File type: application/vnd.oasis.opendocument.text, Size: 37.68 kilobytes) — 3097 downloads
2logo.pdf (File type: application/pdf, Size: 192.02 kilobytes) — 1422 downloads
|
|
|