Пользовательские протоколы

Здравствуйте. Написали драйвер для получения данных с газового корректора на основе документации производителя. Язык Python. Теперь задача подключить это файл опроса.
Мы видим 2 пути.

  1. Создать вручную топик в WirenBoard, опубликовать его в модбас. А в этот топик уже из файла опроса публиковать данные со корректора газового.
  2. Создать шаблон в WirenBoard, каким-то образом подключить к шаблону файл опроса.
    По первому варианту нет вопросов, а возможно ли сделать второй вариант? Можно ли прикрутить самописный протокол?

Добрый день.
Протокол корректора - Modbus? Предполпгаю что нет. Тут есть два пути:
Создание “устройства” средствами python’а (собственно, надо описать, опубликовать, meta для каждого топика)
Включение в wb-mqtt-serial как отдельного протокола. Но - только дописыванием, выход внешних программ с передачей им порта не предусмотрен.
Исходники открыты, можете попробовать самостоятельно, в принципе - и даже реализовать выхов “внешней” программе. То есть дописать в драйвер вызов вашего пинон-скрипта с передачей ему в stdin того, что приходит на порт и пересылкой из stdout в порт. То есть “прокси-режим”.

Где лежат скрипты опроса счетчиков?

Описывать виртуальные устройства через правила и defineVirtualDevice?

Чуть не понял. Скрипты опроса чего?

Виртуальное - да, в скрипте создать.

Сейчас сделал следующим образом.

  1. Создал виртуальное устройство в правилах через метод defineVirtualDevice. Определил поля данных и их типы.
  2. Написал скрипт опроса счетчика на Питоне. Сделал из него демона и запустил. Скрипт публикует в соответствующие топики виртуального устройства.
    Все работает, но есть моменты.
  3. Осложнено масштабирование. Каждый раз надо лезть в консоль чтобы добавить новый счетчик.
  4. Непонятно поведение метода defineVirtualDevice. Файл ведь работает в цикле. Т.е. получается каждый цикл он создает заново устройства и затирает предыдущие. Если обновить страницу с топиками Mqtt, то данные обнуляются, пока скрипт опроса счетчика заново не пройдет цикл опроса и не опубликует новые данные.

Хочется сделать универсальное решение. Т.е. добавить скрипт как шаблон опроса и просто в Гуе выбирать этот шаблон. Для этого надо понять следующие вещи:

  1. Каков механизм запуска скрипта шаблона (цикл).
  2. Каков механизм добавления нового шаблона.
  3. Каков механизм передачи данных из скрипта в топики и каков механизм получения данных из конфига в скрипт (о данных устройства, его адрес, теги для чтения и пр.)

Зачем? Ведь можно проще, например обернуть создание фиртуального устройства в функцию и вызвать ее нужное количество раз, как тут:
https://wirenboard.com/wiki/Rule_Examples#Создание_однотипных_правил
Тот же скрипт может создавать при запуске конфиг для демона на питоне и перезапускать его.

Какой файл в цикле? Нет, скрипт выполняется один раз, если в нем не организовать цикл специально. При выполнении скрипта создаются объекты такие как правила, таймеры - и они продолжают работать.

А публикуете в /on топики?
И формат топиков - установлен ли readOnly?

Чуть не понял…

Про шаблоны тут: Как подключить Modbus RTU-устройство стороннего производителя к контроллеру Wiren Board? — Wiren Board
Но шаблон сам по себе - просто список, содержащий адреса регистров и формат изх публикации в MQTT.

Вот тут описано полно: MQTT в контроллерах Wiren Board — Wiren Board

В какой момент он запускается?

Или в момент запуска(перезапуска) движка, wb-rules. То есть в процессе загрузки контроллера или в момент сохранения скрипта. Можно добавить вывод в лог и посмотреть.
То есть стандартный JS только с расширениями для простого управления MQTT
https://wirenboard.com/wiki/Wb-rules
Можете набрать меня в телеграмме @brainroot в понедельник и задать вопросы голосом.

Что такое /on топики?

Меня интересует не модбас устройство. А шаблон для устройства с нестандартным протоколом, которого нет в списке. Мы написали опрос счетчика на питоне. Как его подключить теперь к ВБ? Простой вариант создать из скрипта демона. Но хочется более изящный вариант предусмотреть.

https://wirenboard.com/wiki/MQTT#Структура_сообщения_—_команды_на_изменение_состояния

Можно и демона. Я бы сделал опрос запуском из питоновского скрипта из wb-rules, по таймеру. Как раз удобно - парсить вывод и публиковать в топики сразу.