Доброго дня!
Есть 5 контроллеров WB7 из которых один является головным.
Настроил на головном контроллере бриджи на все остальные контроллеры, пробовал 2 варианта.
Вариант 1. С размещением данных в корень
# wb-02
connection wb_2
address 192.168.1.48
remote_username wb-02
remote_password ********************
notifications true
notification_topic /client/wb_2/bridge_status
keepalive_interval 20
restart_timeout 20
topic /# in 0
Вариант 2. Считаю более верным, с размещением данных в отдельную директорию с названием контроллера откуда мы их забираем.
#wb-03
connection wb_3
address 192.168.1.52
remote_username wb-03
remote_password ********************
notifications true
notification_topic /client/wb_3/bridge_status
keepalive_interval 20
restart_timeout 20
topic /# in 0 /wb03 /devices
По итогу в первом варианте вижу в Web панели датчики температур кроме IO, во втором варианте вообще ничего в панели не вижу.
Через MQTT Explorer я все топики наблюдаю.
В Web панели топиков не вижу.
Отображается только, то что добавлено в корень и то не все (скорее всего это не правильно), как добавить отображение устройств и топиков в Web панель? Чтобы в можно было забирать данные в панели вида /wb$/# (где $ номер slave контроллера), требуется для настройки дашброда.
Добрый день!
Чтобы наладить отображение топиков в веб-интерфейсе при использовании MQTT-моста, убедитесь, что настройки выполнены корректно. Ниже приведены основные рекомендации:
- Проверьте указание топиков в настройках моста.
Убедитесь, что в конфигурации указаны именно те топики, которые необходимо перенаправлять. Неверные или слишком общие топики могут не отображаться.
- Убедитесь, что префиксы заданы правильно.
Добавленные префиксы в конфигурации моста должны соответствовать структуре, которую ожидает веб-интерфейс. Ошибки в префиксе могут привести к тому, что устройства не будут видны.
- Проверьте подписку веб-интерфейса на топики.
Веб-интерфейс Wiren Board отображает только те устройства и каналы, которые присутствуют в настройках MQTT Channels. Убедитесь, что контроллер подписан на нужные топики.
- Сравните поведение с MQTT Explorer.
Если топики видны в MQTT Explorer, но не отображаются в веб-интерфейсе, скорее всего, проблема в отображении или структуре топиков, не распознаваемой интерфейсом.
Подробности по настройке моста описаны в документации:
https://wirenboard.com/wiki/MQTT#Настройка_MQTT_моста_(bridge)
Документацию уже несколько раз всю прошерстил и пробовал различные варианты передачи топиков, при настроеном бридже нужно ли подписываться на топик головным контроллером? (п.3)
- /wb_02/devices - забираем сюда данные из подчиненных контроллеров, вот это дело хотелось бы увидеть в MQTT Channels.
- /devices и все дефолтные топики основного контроллера - оставляем без изменений.
Собственно не получается увидеть MQTT Channels и веб интерфейсе топки вида /контроллер_№/devices/# пока не очень понимаю как это сделать, буду рад если поможете с этим.
# wb-02
connection wb_2
address 192.168.1.48
remote_username wb-02
remote_password *****************
notifications true
notification_topic /client/wb_2/bridge_status
keepalive_interval 20
restart_timeout 20
#topic /wb02/# in 0
**topic /devices/# in 0 /devices/wb_02**
В такой конфигурации получилось увидеть устройства в MQTT Channels
Однако в устройства и в виджеты почему то залетело одним куском.
Добрый день!
Топик формируется некорректно — не происходит разделения по устройствам, из-за чего данные не отображаются должным образом.
Рекомендую ознакомиться с данной статьёй и привести структуру топиков к требуемому формату.
С датчиками температуры разобрался, их получается возможным прокинуть, а вот входы и выходы GPIO не выходит, так как у головного контроллера топики в каталоге wb-gpio полностью повторяют топики на других контроллерах.
Можно ли как то обойти эту коллизию, например переименовать топики IO на суб.контроллерах? К примеру к наименованием входов/выходов добавить суффикс с именем или ID контроллера?
Добрый день!
Да, вы можете создать виртуальные устройства с нужными названиями. Это самый простой способ убрать коллизию.
Спасибо, данный вариант подходит, в планах переименовать все IO входы/выходы на конечных контроллерах, а далее подписаться на них через бридж.
В данной схеме виртуальное устройство постит MQTT топик и отображается в Web UI.
Единственное пока не разобрался, почему то значения контрола IO не постится в ранее созданное виртуальное устройство.
defineVirtualDevice('wb02', {
title: {en: 'Controller WB02', ru: 'Контроллер WB02'} ,
cells: {
EXT1_IN1: {
readonly: true,
title: "EXT1_IN1",
type: "switch",
value: false
},
EXT1_IN2: {
readonly: true,
title: "EXT1_IN2",
type: "switch",
value: false
},
}
});
defineRule({
whenChanged: "wb-gpio/EXT1_IN1",
then: function (newValue, devName, cellName) {
dev["wb02/EXT1_IN1"] = newValue;
}
});
defineRule({
whenChanged: "wb-gpio/EXT1_IN2",
then: function (newValue, devName, cellName) {
dev["wb02/EXT1_IN2"] = newValue;
}
});
Код элементарный, возможно здесь неуместно использовать whenChanged, так как правило срабатывает при изменении.
Буду рад если натолкнете в нужное направление, значение контрола wb-gpio/EXT1_IN1 не присваивается контролу wb02/EXT1_IN1.
Добрый день!
Если подписаться на соответствующие топики, данные поступают?