Обнуление значений mqtt топиков при (пере-)запуске wb-mqtt-serial

Покажите пожалуйста как настроен мост, его конфиг.

А возможно проблема в другом. Вот конфиг моста:

connection ***
address **.**.**.**:**
clientid ***
try_private false

topic /devices/# both 2 "" /**
topic /config/#  both 2 "" /**
topic /rpc/#  both 2 "" /**

Почему-то на тот брокер, на который настроен мост, попадают не все топики со свойством retained.
Подписываемся непосредственно с контроллера на локальный брокер:

root@wirenboard-AMNRGCDG:/etc/mosquitto/conf.d# mosquitto_sub -v -q 2 -d -t '/devices/wb-map12e_29/controls/Ch 4 Ipeak L2/#'
Client mosqsub|30289-wirenboar sending CONNECT
Client mosqsub|30289-wirenboar received CONNACK
Client mosqsub|30289-wirenboar sending SUBSCRIBE (Mid: 1, Topic: /devices/wb-map12e_29/controls/Ch 4 Ipeak L2/#, QoS: 2)
Client mosqsub|30289-wirenboar received SUBACK
Subscribed (mid: 1): 2
Client mosqsub|30289-wirenboar received PUBLISH (d0, q1, r1, m1, '/devices/wb-map12e_29/controls/Ch 4 Ipeak L2/meta/order', ... (3 bytes))
Client mosqsub|30289-wirenboar sending PUBACK (Mid: 1)
/devices/wb-map12e_29/controls/Ch 4 Ipeak L2/meta/order 119
Client mosqsub|30289-wirenboar received PUBLISH (d0, q1, r1, m2, '/devices/wb-map12e_29/controls/Ch 4 Ipeak L2/meta/readonly', ... (1 bytes))
Client mosqsub|30289-wirenboar sending PUBACK (Mid: 2)
/devices/wb-map12e_29/controls/Ch 4 Ipeak L2/meta/readonly 1
Client mosqsub|30289-wirenboar received PUBLISH (d0, q1, r1, m3, '/devices/wb-map12e_29/controls/Ch 4 Ipeak L2/meta/type', ... (5 bytes))
Client mosqsub|30289-wirenboar sending PUBACK (Mid: 3)
/devices/wb-map12e_29/controls/Ch 4 Ipeak L2/meta/type value
Client mosqsub|30289-wirenboar received PUBLISH (d0, q1, r1, m4, '/devices/wb-map12e_29/controls/Ch 4 Ipeak L2', ... (5 bytes))
Client mosqsub|30289-wirenboar sending PUBACK (Mid: 4)
/devices/wb-map12e_29/controls/Ch 4 Ipeak L2 -0.02

Подписываемся с контроллера на брокер, куда настроен мост:

root@wirenboard-AMNRGCDG:/etc/mosquitto/conf.d# mosquitto_sub -v -q 2 -d -h **.**.**.** -p ** -t '/***/devices/wb-map12e_29/controls/Ch 4 Ipeak L2/#'
Client mosqsub|30294-wirenboar sending CONNECT
Client mosqsub|30294-wirenboar received CONNACK
Client mosqsub|30294-wirenboar sending SUBSCRIBE (Mid: 1, Topic: /***/devices/wb-map12e_29/controls/Ch 4 Ipeak L2/#, QoS: 2)
Client mosqsub|30294-wirenboar received SUBACK
Subscribed (mid: 1): 2
Client mosqsub|30294-wirenboar received PUBLISH (d0, q1, r1, m1, '/***/devices/wb-map12e_29/controls/Ch 4 Ipeak L2/meta/readonly', ... (1 bytes))
Client mosqsub|30294-wirenboar sending PUBACK (Mid: 1)
/***/devices/wb-map12e_29/controls/Ch 4 Ipeak L2/meta/readonly 1
Client mosqsub|30294-wirenboar received PUBLISH (d0, q1, r1, m2, '/***/devices/wb-map12e_29/controls/Ch 4 Ipeak L2', ... (5 bytes))
Client mosqsub|30294-wirenboar sending PUBACK (Mid: 2)
/***/devices/wb-map12e_29/controls/Ch 4 Ipeak L2 -0.02

Настроил мост на свежеподнятый брокер (mosuitto под Debian’ом 10) - не воспроизводится.
serial 2.6.8~fix+32062-values+1+e1548ce
mosquitto 1.3.4-2+deb8u4
У вас какой брокер?

Только что удалось повторить на другом контроллере. Wb-mqtt-serial нужно взять из experimental ветки, насчёт релиза был не прав, сейчас ещё разбираемся как она попала на только что сброшенный к заводским контроллер.

wb-mqtt-serial: Version: 2.7.1
mosquitto: 1.4.15-1+wb7-3

mosquitto на который настроен мост: 1.4.15-2ubuntu0.18.04.3

Появилось ещё немного подробностей. Похоже, что последняя версия wb-mqtt-serial, в которой всё в порядке - 1.63.0. В последующих версиях начинается чехарда, возможно с retained сообщениями. Не все meta-топики попадают на основной брокер, на который настроен bridge. Это явно проявляется, если много устройств с большим количеством контролов, например, несколько wb-map’ов. Получается у вас повторить ситуацию?

Пока не получается. А в логе брокера на который настроен bridge у вас ошибки какие-нибудь есть? Например “Socket error on client”?

Нет, ошибок на стороне брокера, на который настроен мост, нет.

Нам при решении другой проблемы на контроллере пришлось использовать экспериментальную ветку и у нас проявился тот же нюанс на модуле wb-homa-gpio, не все meta-топики появились на брокере через мост. Очевидно в обоих пакетах работает по одному алгоритму. Хотя возможно ранее просто не замечали, обычно контролов не очень много.

Попробуйте собрать стенд, подключить 2-3 wb-map12, несколько датчиков и/или wb-mir’ов, обновите wb-mqtt-serial до последней версии, настройте bridge на какой-нибудь хост с mosquitto и посмотрите meta-топики - точно будут пропуски. Удобно смотреть mqtt-explorer’ом. Для наглядности можно сервис wb-mqtt-serial рестартонуть.

Занялся, собираю.

Мы перед перезапуском wb-mqtt-serial отключаем wb-mqtt-db.

Посмотрите, пожалуйста по ссылке, похоже мы наткнулись именно на эту проблему. Как раз у нас стоял qos=2, и при рестарте сервиса передаётся большое количество retained-топиков. Сейчас на стенде попробовал поменять qos на 0, все мета-топики пришли через бридж. Похоже в вашей версии москито эта ошибка не исправлена.

2 лайка

Да, будем менять на более свежую версию.