VR-007 mqtt (продолжение)

143 views
Skip to first unread message

Philipe Karera

unread,
Nov 21, 2024, 1:42:03 PM11/21/24
to Электросчетчики Меркурий
Как я уже писал, хочу применить VR-007 для технического учёта ээ на производстве. Всего у нас 9 ТП и общее количество счётчиков немного более чем 200. Сейчас они опрашиваются через OPC INSAT. В ТП расположены PDS-720 образующие виртуальные COM порты. OPC на нерезервированных PC, там же самописный перекладывальщик в нерезервированную БД. Это хозяйство закреплено за АСУТП.
Но АСТУП это АСУТП, а не операционные системы, сервера и базы данных. В ОИТ есть две расположенные в разных локациях серверные в которых блейд системы виртуализации. Так же есть специально обученные люди умеющие это облуживать.
Цель - технический учёт ээ должен переехать на нормальную инфраструктуру. И коллеги из отдела информационных технологий совсем не против этого, готовы предоставить вычислительные ресурсы в обоих серверных для резервированного сбора данных (это их обязательное требование) и кластеризованную базу данных.
То есть тупо перенести то что есть не получиться: нет резервированного "общения с полем", OPC сервера INSAT не работают в виртуальной среде. На сайте INSAT об этом честно сказано, мы проверили - так и есть.
Рассматриваю два варианта:
1. в каждой серверной по одному node-Red которые опрашивают счётчики через существующие виртуальные COM-порты и складывают прочитанное в кластеризованную базу данных. Чтобы не конфликтовали между собой опросчики между собой за виртуальный COM порт реализован принцип TDMA. То есть один node-Red опрашивает в нечётные минуты, а другой в чётные.
2. опять же, в каждой серверной по одному node-Red которые подписаны на данные у MQTT брокера который доустанавливается на VR-007 устанавливаемый вместо PDS-720 которые образуют виртуальные COM-порты на местах. То есть в ТП.

Вариант 1 мне не очень нравиться, именно из-за TDMA, хотя и он уже почти готов для тестирования. Но сегодня, поскольку получил VR-007 я начал тестировать вариант 2.

В VR-007 "из коробки" оказалась OpenWrt 23, сконфигурирован один интерфейс для забриджованных Wi-Fi  и LAN интерфейсов, при этом радио интерфейс AP c SSID OpenWrt как обычно по умолчанию в OpenWrt. В Firewall конфиг как для роутера с VPN, хотя пакетов установленных для поддержки VPN не обнаружил. В общем ничего особенного. Для моей задачи надо доустановить пакет mosquitto-nossl поэтому я разделил бридж. Радио интерфейс стал клиентом сети интернет что я раздал с телефона. Пакет установил и тут меня ждала засада - настроить конфигурационные файлы не могу, не доступа по SSH к VR-007. Алё, почему?
Это очень странно - dropbear в процессах есть, а порт закрыт хотя в firewall никаких запретов на этот счёт, в системных настройкак SSH включен. Не смог пока разобраться почему нет SSH.
Ну что ж придётся воспользоваться Люсей для Mosquitto. Последний раз пытался пользоваться Люсей для Mosquitto года два назад и понял что очень она ущербная, но тут первое что пришло в голову в такой ситуации, всё-таки воспользоваться ей. Доустановил пакет Luci для Mosquitto. Всё та же знакомая уже ущербность!
Мне тупо надо сконфигурировать доступ к Mosquitto по логину и паролю. Это требование отдела информационных технологий. Нет таких полей у Люси. Ну ладно, протестирую хотя бы анонимный доступ. Работает MQTT. Оставил всё в работающем виде на столе на ночь. Завтра продолжу тестировать если будет время. До обеда точно не будет. Мне то надо всего-то пару конфигурационных файлов поправить, для Mosquitto и позже для OpenVPN. Я думаю для этого можно будет и без SSH обойтись - поправить то что нужно в бекапе и вернуть бекап на место. Но это костыль конечно. 
Итак по итогу первого общения с устройством пока один вопрос: что с SSH?

Vlad Rusanov

unread,
Nov 22, 2024, 1:19:39 AM11/22/24
to Электросчетчики Меркурий
Очень много всего смешано, не знаю в чем необходимость.
VR-007.4 сам опрашивает счетчики и хранит базу данных по ним. Хотите ее зачерпнуть, можете например  GET запросом получить либо  весь объем данных по любому счетчику, либо срез (в конце инструкции есть пример запросов).
Второй способ по Mqtt. Никаких настроек в luci не надо и в ssh тоже. В правом верхнем углу интерфейса VR-007.4 есть настройки и вторая вкладка это настройки MQTT, где вводится адрес сервера, порт, логин, пароль.
Как поставите там галочку, каждый срез данные начнут кидаться в ваш брокер.
Третий способ роутер из себя представляет уже сквозной канал связи, можете отключить в нем автоматический опрос и можно любым ПО через сокет вести опрос счетчиков.
Также в инструкции не описал, только вчера выложил версию ПО, которая поддерживает сокеты в опрсе (т.е. не только через преобразователи USB-RS485 теперь можно вести опрос, но и по сокетам например ставим ethernet-RS485 и их опрашиваем роутером).
SSH в этих способах не нужен. Он закрыт, т.к. многие меняют скрипты и возникает огромное количество вопросов и коллизий, к которым ПО никакого отношения не имеет.
В крайнем случае я внедрю команду для установки необходимой конфигурации, вы мне на почту напишите если понадобится. 


четверг, 21 ноября 2024 г. в 21:42:03 UTC+3, zov...@gmail.com:

Philipe Karera

unread,
Nov 22, 2024, 2:49:54 PM11/22/24
to Электросчетчики Меркурий
Сегодня смог уделить времени не более полчаса. Чтобы ничего не перемешалось буду нумеровать.
1. На счёт SSH понял, закрыт специально :(
2. GET запрос возможно это то решение что мне нужно, то есть забирать данные из VR007 из двух разных независимых друг от друга мест. Проработаю этот вопрос.
3. Я хотел сделать получение данных в два или более независимых места установив на роутер пакет mosquitto. Для публикации "в себя". Это не работает - виснет, в логе просто пропадают обращения к mosquitto на публикацию. Максимум работало что-то около двух часов. Надо будет проверить с внешним брокером, может и с внешним такая же фигня.
4. Если всё же надо поправить конфигурационные файлы, то способ с правкой в бекапе с последующим восстановлением бекапа работает.


пятница, 22 ноября 2024 г. в 09:19:39 UTC+3, vladr...@gmail.com:

Philipe Karera

unread,
Nov 28, 2024, 2:43:45 PM11/28/24
to Электросчетчики Меркурий
1. Проверил работу MQTT. Работает не в соответствии с ГОСТ-ом. VR-007.4 запрашивает у брокера подключение, получает, публикует данные и тут же запрос на отключение. Это не очень хорошо. Возможно не со всеми брокерами будет работать  или подписанные клиенты будут отваливаться. Что я и наблюдал. Наверное не стоит заявлять поддержку MQTT как стабильный релиз.
2. Проработал получение данных GET запросом от котроллера Сименс S7-1200. Это работает. Без странностей не обошлось. Например на один запрос приходит два ответа О_о. Или на неправельный запрос можно получить пустой ответ. Много лишней информации. Но работает. Запросы из двух разных мест не мешают друг другу. То есть с сокетсенсетив всё нормально. Завтра вечером выложу проект и исходники. Это я для дома делаю. Может и на работе пригодиться когда-то.
3. Завтра буду делать получение данных GET запросом от Node-RED. А это для работы.

пятница, 22 ноября 2024 г. в 22:49:54 UTC+3, Philipe Karera:

Vlad Rusanov

unread,
Nov 28, 2024, 3:13:38 PM11/28/24
to Электросчетчики Меркурий
1) Не понял какой пункт госта нарушен. У MQTT несколько уровней публикаций, я использую без подтверждения доставки (хотя это вопрос к обсуждению, т.к. сейчас идет отладка облачного сервиса). Исхожу из логики, что пропажа одного двух мгновенных значений ни на что глобально не влияет. В тоже время сейчас обкатывается функция, которая раз в час может бросать все данные за сутки из базы VR-007 в строноу брокера  и это решит вопросы даже если был провал со связью (например нестабильный wifi). Я отвлекся, там есть еще два уровня доставки с подтверждениями пакетов, но я их не использую, они усложняют систему и ведут к непрогнозируемому расходу ОЗУ (в случае отсутствия соединения идет непрерывное накопление пакетов в буфере).
2) Про два ответа ни разу не встречал, по крайней мере в отладчике браузера. Сейчас системные скрипты становятся сложными, т.к. уже есть супервизор, который следит за зависшими процессами, возможно он перезапустил какой-то зависший из-за ошибки скрипт. 
3) Если у вас устройство на основе микро-ПК OrangePi, то в любом случае это одно из первых выпущенных. На начальном этапе ведутся работы над добавлением функций и исправлений кода. Пользователи лучшие тестеры. Напишите на почту мне, я выдам постоянную ссылку на обновление прошивки и алгоритм. 

После начала выпуска уже добавлены каналы опроса в виде сокетов (раньше были только соединения, через виртуальные USB-COM) и ведутся работы над добавлением в список однофазных счетчиков Меркурий.
Далее пойдет работа над более детальной отладкой облака и подключением СПОДЭс счетчиков (а это уже все производители).


четверг, 28 ноября 2024 г. в 22:43:45 UTC+3, zov...@gmail.com:

Philipe Karera

unread,
Nov 29, 2024, 4:04:10 PM11/29/24
to Электросчетчики Меркурий
Полной информацией я не владею, но скорее всего вот что:
1. При подключению к брокеру используется QoS0, Clear Session=true, Keep Alive = 0.
2. Правильное поведение паблишера, не только при указанных выше настройках, а вообще: подключился, если есть что опубликовать - опуюликовал, если нет то бросается в брокера keepalive-ами. Если Keep Alive = 0 секунд, то есть не используется и паблишеру нечего публиковать, то брокер выкинет его из списка по неактивности для тех кто без keepalive-а, обычно несколько часов. Если Keep Alive есть, обычно около минуты,  то брокер выкинет паблишера из списка активных при неактивности полтора keepalive-а.
3. При использовании авторизации логин-пароль брокер идентифицирует паблишеров на основании логина и пароля. И пока зарегистрированный пользователь с такой парой логин-пароль по мнению брокера активен, никакой другой с такой же парой не сможет подключиться. Смотрим пункт 2 про несколько часов.
4. При неиспользовании авторизации логин-пароль, то есть брокер пускает анонимусов, сообщения этих анонимусов при QoS0, Clear Session=true, при их отключении по собственному желанию могут брокером удаляться. Строка 423 оригинального описания MQTT v3.1.1. Здесь ключевое слово "могут". Это следует понимать буквально. Не какой-то релиз брокера удаляет, а какой-то нет, а один и тот же, скажем как в моём случае Mosquitto, может удалить, а может и нет.
5. Как ведёт себя VR007.4 в качестве паблишера. Подключается, публикует и отключается по собственному желанию.
---------------------------------------------------------- тут я возьму паузу чтобы все желающие имели возможность самостоятельно догадаться насколько стабильной будет связь при использовании VR007.4 авторизации и при не использовании VR007.4 авторизации. 

четверг, 28 ноября 2024 г. в 23:13:38 UTC+3, vladr...@gmail.com:

Vlad Rusanov

unread,
Nov 29, 2024, 6:29:32 PM11/29/24
to Электросчетчики Меркурий
Я открыт к обсуждению и могу откорректировать недочеты если найдем.
Параметры, которые были использованы по умолчанию:

1) QoS0, Clear Session=true, Keep Alive = 10 
  • QoS0  означает, что подписчики получат сообщение только если они подключены в момент публикации 
  • Keep Alive=10 — задается в секундах и отвечает за интервал времени в течении которого брокер проверит подключение клиента .  Если подписчик подключен, то он получит данные. У меня этот параметр не равен нулю.
  • Clear Session=true: Если установлен этот флаг, брокер будет очищать сессию клиента при его отключении. Это означает, что подписки и сообщения, ожидающие  клиента, будут удалены при его отключении.   
    Таким образом все клиенты, которые были подписаны на сообщения и подключены, получат сообщения.
    Возможно нужно увеличить  Keep Alive до 60, не исследовал этот вопрос.
    Если использовать  Clear Session=false брокер сохранит данные для клиента, но это актуально только для уровней QoS1, OqS2 (уровни с гарантированной доставкой). У меня QoS0 и не используется эта настройка, данные при отключении будут удалены. Со своей стороны VR-007 просто кидает сообщение брокеру и ему все равно, что будет дальше. В своем облаке c;oud-mqtt.ru,  я ловлю сообщения и кладу в базу, визуализирую. Проблем не вижу. Если коннект с публикацией прошел, то и данные в базу попали.  

    Вопрос к обсуждению. При броске данных могу изменить уровень на QoS1 и поставить  Clear Session=false, тогда брокер их сохранит и будет пытаться дослать подписчику. (время будет оговорено в конфиге mosquitto)

    2) Поведение зависит от заложенной логики. Сейчас клиенты-подписчики поддерживающие соединение с брокером, получат данные. Если они отключены, то не получат.Почему я думаю, что это не важно, т.к. в интерфейсе роутера VR-007 эти данные останутся и их можно поглядеть, в облаке тоже, а в Mqtt клиенте на телефоне например, как только он подключится, то сразу отобразиться напряжение, ток, мощность, энергия. Обычно этого достаточно.
    3) Не вижу никаких нарушений логики.
    4) У меня  нет анонимусов, используется логин пароль
    5) Если нужны другие параметры давайте опробуем, протестируем и поймем необходимость.









суббота, 30 ноября 2024 г. в 00:04:10 UTC+3, zov...@gmail.com:

Vlad Rusanov

unread,
Nov 29, 2024, 6:47:49 PM11/29/24
to Электросчетчики Меркурий
Ошибся в предыдущем сообщении. Облако которое пытаюсь сделать cloud-mqtt.ru в него собираюсь складывать данные от роутеров vr-007 rev.430, заход по логин паролю с центрального сайта incotex-counter.ru.
Сейчас идет тестирование технологии, сделать все в одни руки достаточно сложно, если учитывать скорость выборки от нескольких тысяч счетчиков и многие миллионы записей.
Выглядеть будет примерно также как и в VR-007.

2024-11-30_02-40-50.png

2024-11-30_02-45-25.png
2024-11-30_02-46-36.png
суббота, 30 ноября 2024 г. в 02:29:32 UTC+3, Vlad Rusanov:

Philipe Karera

unread,
Nov 30, 2024, 2:06:46 AM11/30/24
to vladr...@gmail.com, Электросчетчики Меркурий

Немного не так. Обратите внимание на строку 423 оригинального описания MQTT 3.1.1. Там ещё большими буквами написано слово MAY.
Именно поэтому когда я использовал брокер пускающий анонимов связь была неустойчивой. При использовании логина и пароля связь была устойчивой.
Но лучше всё-таки чтобы VR007.4 вёл себя так как задумано стандартом, уже говорил, не буду повторяться. То есть не отключался от брокера. В отключениях-подключениях нет никакого смысла, это только создаёт дополнительную нагрузку и лишний трафик. Кроме того это понижает безопасность. То есть, пока VR007.4 отключен от брокера, злоумышленник с такими же логином и паролем может подключиться и пока он по мнению брокера будет активен, брокер никого с такими же логином и паролем не пустит.


сб, 30 нояб. 2024 г., 02:47 Vlad Rusanov <vladr...@gmail.com>:
--
Вы получили это сообщение, поскольку подписаны на одну из тем в группе "Электросчетчики Меркурий".
Чтобы отменить подписку на эту тему, перейдите по ссылке https://groups.google.com/d/topic/VladRusanov/zfUxuX5RmDc/unsubscribe.
Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на электронный адрес VladRusanov...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/VladRusanov/140476c6-6a23-41b1-815e-a9af7eacd72en%40googlegroups.com.

Philipe Karera

unread,
Dec 25, 2024, 1:59:18 AM12/25/24
to Электросчетчики Меркурий
На сегодня имею следующие баги (поскольку номера версий невозможно посмотреть, буду называть версии условно ноябрьская и декабрьская):

1.  ноябрьская версия: пропадают добавленные счётчики при выключении питания.
2. декабрьская версия: некорректно работающий MQTT паблишер. (в ноябрьской не проверялось)
3. обе версии: не работают с USB-IRDA (VR-001). Чтобы сбор данных пошел, надо зайти по сокету конфигуратором Меркурий и потом быстренько, пока счётчик не закрыл канал, снова включить сканирование.
4. ноябрьская: не прошивается на свежую, пишет: "Сначала размонтируйте раздел".

Что делать, высылать всё обратно по гарантии?
суббота, 30 ноября 2024 г. в 10:06:46 UTC+3, Philipe Karera:

Vlad Rusanov

unread,
Dec 25, 2024, 4:43:10 AM12/25/24
to Электросчетчики Меркурий
Спорить смысла нет. До данного сообщения не видел версий у которых не добавляются приборы, а декабрьская версия работает у полутора сотен клиентов. Значит дело не в ней. 
Ошибка наверняка связана с некорректным обновлением, порчей флешки или ее секторов, о чем косвенно говорит фраза   "Сначала размонтируйте раздел". 
Вопросы возврата решаются обращением по адресу электронной почты vladr...@gmail.com или по тел. +79092833416, а не на форуме. Однозначно с VR-001 и с любым преобразователем на основе FT232/CH340/PL2303/CP2101 будет опрос без запусков конфигураторов.  На стенде сейчас стоят 7 счетчиков, в том числе М231, который опрашивается через USB-IRDA (VR-001).
Вам на выбор либо поменяю прибор, либо деньги, никаких согласования для этого не требуются. 

среда, 25 декабря 2024 г. в 09:59:18 UTC+3, zov...@gmail.com:

Philipe Karera

unread,
Dec 25, 2024, 6:35:42 AM12/25/24
to Электросчетчики Меркурий
Пункты 1 и 4 скорей всего были взаимосвязанными. На карточке микро SD была блокировка от записи. Снять её невозможно. Откуда она там взялась? Поэтому пришлось съездить за новой карточкой. На неё прошился нормально.
Прибор добавил, перезапустил, прибор не пропал. Это уже радует :)
Сегодня опять поменяю местами VR-007.4 тот что заказал на работе для тестирования и тот что купил для дома. Ну и отпишусь по пунктам 2 и 3.
Сделайте так чтоб версию можно было видеть внизу вэбморды. Пусть даже это не релиз, а ежедневный снэпшот, но чтобы было видно. А то даже обидно, занимаюcь тестированием вашего оборудования, а что именно тестируется непонятно никому. Какой тогда смысл в этом тестировании?

среда, 25 декабря 2024 г. в 12:43:10 UTC+3, vladr...@gmail.com:

Philipe Karera

unread,
Dec 26, 2024, 1:09:31 AM12/26/24
to Электросчетчики Меркурий
С новой прошивкой работает. Пункт 2, приведён ли MQTT в соответствие с ГОСТ, не проверял. Остальное работает.
Что по-хорошему удивило это то что счётчик хранит историю потребления энергии, а VR007 умеет её выкачивать и представлять красиво.


среда, 25 декабря 2024 г. в 14:35:42 UTC+3, Philipe Karera:

Vlad Rusanov

unread,
Dec 26, 2024, 5:29:50 AM12/26/24
to Электросчетчики Меркурий
Ревизию добавлю в ближайшее время, остальные обращения я тоже учитываю. 


четверг, 26 декабря 2024 г. в 09:09:31 UTC+3, zov...@gmail.com:
Reply all
Reply to author
Forward
0 new messages