Покажите пожалуйста как настроен мост, его конфиг.
А возможно проблема в другом. Вот конфиг моста:
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, все мета-топики пришли через бридж. Похоже в вашей версии москито эта ошибка не исправлена.
Да, будем менять на более свежую версию.