Работа с mqtt-mbgate (Шлюз Modbus TCP)

Добрый день!
Есть контроллер WirenBoard 5 и диммер WB-MDM2 / 400W
Задача - управлять диммером и получать обратную связь по ModBusTCP
Диммер через /etc/wb-mqtt-serial.conf подключил. Из веб-интерфейса контроллера WB управляется корректно, все хорошо.
Поставил пакет wb-mqtt-mbgate, настроил, разрешил нужный мне регистр “wb-mdm2_108/Channel 1” (к нему подцеплена лампочка). При попытке передать значение (0-100) через программу ModBus Poll на выбранный SlaveID и регистр лампока не загорается, но что самое интересное, в интерфейсе контроллера WB слайдер встаёт в переданное из Modbus Poll значение и цифра рядом отображает его корректно. Если обновить интерфейс, он видимо, опрашивает сам диммер и значение становится 0.
Подскажите, как быть?

apt-get update && apt-get upgrade делал

Добрый день, Djuffin!
У вас все устроено следующим образом: Wiren Board, на нем wb-mqtt-serial, работает с mqtt-брокером и модулем WB-MDM2 по Modbus. Дальше вы настроили в wb-mqtt-mbgate канал "wb-mdm2_108/Channel 1”, и, подключаясь по TCP, пытаетесь изменить его значение с помощью ModBus Poll , верно?
Попробуйте для управления использовать канал "wb-mdm2_108/Channel 1/on”.

Да, вроде бы все верно, но все равно не работает ) Давайте чуть подробнее напишу.
При вот такой конфигурации wb-mqtt-mbgate

   {
    "scale": 1, 
    "byteswap": false, 
    "format": "signed", 
    "max": 0, 
    "address": 51342, 
    "enabled": true, 
    "topic": "wb-mdm2_108/Channel 1", 
    "meta_type": "range", 
    "unitId": 104, 
    "wordswap": false, 
    "size": 2
   }, 

через modbus poll на соответствующий ID и порт отправляю значение 35, при этом на консоли вижу, что команда прилетает, но ничего не происходит:

root@wirenboard-AITWMGFU:/etc# mosquitto_sub -t "/devices/wb-mdm2_108/controls/Channel 1/#" -v
/devices/wb-mdm2_108/controls/Channel 1/meta/type range
/devices/wb-mdm2_108/controls/Channel 1/meta/max 100
/devices/wb-mdm2_108/controls/Channel 1/meta/order 2
/devices/wb-mdm2_108/controls/Channel 1 0
/devices/wb-mdm2_108/controls/Channel 1 35
/devices/wb-mdm2_108/controls/Channel 1 35
^C
root@wirenboard-AITWMGFU:/etc# mosquitto_sub -t "/devices/wb-mdm2_108/controls/Channel 1/#" -v
/devices/wb-mdm2_108/controls/Channel 1/meta/type range
/devices/wb-mdm2_108/controls/Channel 1/meta/max 100
/devices/wb-mdm2_108/controls/Channel 1/meta/order 2
/devices/wb-mdm2_108/controls/Channel 1 0

При этом, если изменить яркость из веб-интерфейса, она меняется и в консоли видно:

root@wirenboard-AITWMGFU:/etc# mosquitto_sub -t "/devices/wb-mdm2_108/controls/Channel 1/#" -v
/devices/wb-mdm2_108/controls/Channel 1/meta/type range
/devices/wb-mdm2_108/controls/Channel 1/meta/max 100
/devices/wb-mdm2_108/controls/Channel 1/meta/order 2
/devices/wb-mdm2_108/controls/Channel 1 0
/devices/wb-mdm2_108/controls/Channel 1/on 12
/devices/wb-mdm2_108/controls/Channel 1 12
/devices/wb-mdm2_108/controls/Channel 1/on 49
/devices/wb-mdm2_108/controls/Channel 1 49
/devices/wb-mdm2_108/controls/Channel 1/on 0
/devices/wb-mdm2_108/controls/Channel 1 0

Соответственно, если из консоли сделать:

root@wirenboard-AITWMGFU:/etc# mosquitto_pub -t "/devices/wb-mdm2_108/controls/Channel 1/on" -m 35

то работает, а если

root@wirenboard-AITWMGFU:/etc# mosquitto_pub -t "/devices/wb-mdm2_108/controls/Channel 1" -m 35

то нет

Логично предположить, что нужно заменить топик в конфиге /etc/wb-mqtt-mbgate.conf ‘wb-mdm2_108/Channel 1’ на ‘wb-mdm2_108/Channel 1/on’ , но если это сделать, то все остается без изменений и в конфиге не пойму откуда появляется новый топик:

   {
    "scale": 1, 
    "byteswap": false, 
    "format": "signed", 
    "max": 0, 
    "address": 51342, 
    "enabled": true, 
    "topic": "wb-mdm2_108/Channel 1/on", 
    "meta_type": "range", 
    "unitId": 104, 
    "wordswap": false, 
    "size": 2
   }, 
   {
    "scale": 1, 
    "byteswap": false, 
    "format": "signed", 
    "max": 0, 
    "address": 58421, 
    "enabled": false, 
    "topic": "wb-mdm2_108/Channel 1", 
    "meta_type": "range", 
    "unitId": 104, 
    "wordswap": false, 
    "size": 2
   }

Я пробовал меня и через веб-интерфейс, и через консоль с перезапуском /etc/init.d/wb-mqtt-mbgate restart
результат одиноковый:

    root@wirenboard-AITWMGFU:/etc# mosquitto_sub -t "/devices/wb-mdm2_108/controls/Channel 1/#" -v
    /devices/wb-mdm2_108/controls/Channel 1/meta/type range
    /devices/wb-mdm2_108/controls/Channel 1/meta/max 100
    /devices/wb-mdm2_108/controls/Channel 1/meta/order 2
    /devices/wb-mdm2_108/controls/Channel 1 0
    /devices/wb-mdm2_108/controls/Channel 1 35
    /devices/wb-mdm2_108/controls/Channel 1 35
    /devices/wb-mdm2_108/controls/Channel 1 35

При вот таком конфиге:

![wb-mdm|690x134](upload://6Z86Sng1WaN1TiF8AJkGRAQ8qKv.png)

Что еще можно попробовать сделать?

Добрый день!
Победить проблему так и не удалось.
Судя по всему, проблема в wb-mqtt-mbgate, т.к. при изменении канала в /etc/wb-mqtt-mbgate.conf с ‘wb-mdm2_108/Channel 1’ на ‘wb-mdm2_108/Channel 1/on’ ничего не меняется и значения прилетающие от modbus poll по сети все равно падают в /devices/wb-mdm2_108/controls/Channel 1 , как я и писал в предыдущем сообщении.
Могу предоставить доступ по ssh или teamveiwer’у.
Помогите решить проблему пожалуйста.

wb-mqtt-mbgate_0.1.4_armel.deb (56,0 КБ)

попробуйте пожалуйста вот этот пакет

При установке этого пакета возникает проблема с зависимостью.

root@wirenboard-AITWMGFU:/home# dpkg -i wb-mqtt-mbgate_0.1.4_armel.deb 
Выбор ранее не выбранного пакета wb-mqtt-mbgate.
(Чтение базы данных … на данный момент установлено 28425 файлов и каталогов.)
Подготовка к распаковке wb-mqtt-mbgate_0.1.4_armel.deb …
Распаковывается wb-mqtt-mbgate (0.1.4) …
dpkg: зависимости пакетов не позволяют настроить пакет wb-mqtt-mbgate:
wb-mqtt-mbgate зависит от liblog4cpp5, однако:
Пакет liblog4cpp5 не установлен.

Насколько я понял, пакета liblog4cpp5 нет в последней версии Debian. Вместо него liblog4cpp5v5. Можно попробовать заменить liblog4cpp5v5 на liblog4cpp5, но от liblog4cpp5v5 зависят другие пакеты, в том числе wb-mqtt-db. Не знаю для чего он, но мне кажется не надо его удалять :slight_smile:

wb-mqtt-mbgate_0.1.4_armel.deb (45,9 КБ)

а так?

А так отлично!
Заработало без проблем, даже канал wb-mdm2_108/Channel 1 на wb-mdm2_108/Channel 1/on не надо менять.

Я, в силу занятий, видел много димеров, в том числе KNX и других шинных систем и интегрировал их в разные системы управления. Поэтому небольшое пожелание на будущее - сделать регистр Coil на вкл/выкл канала и его статус. Это удобно.

Спасибо за помощь.

1 Like