Не уходит команда из веб-интерфейса контроллера в KNX шину

Думаю можно оживить тему, т.к. столкнулся с похожей ситуацией.

KNXD и WB-mqtt-knx работают корректно. изредка в логах ошибки TPU.
Контроллер отлично “проливает” устройства и с"слушает" шину.

Все правила, где тригерами являются ГА отрабатывают как положено, в т.ч. и с nodered где использую стороние ноды и в качестве шлюза использую WB.

Но ни одна команда со стороны сервисом и web-интерфейса WB в шину KNX уходить не хочет. Какое то время через Nodered получалось отправить значения датчиков температуры подключенные к MAI6. Но теперь и уже ничего не получается.

Адрес контроллера в knx менял. отключал/включал маршрутизацию - ничего не помогает.

Контролы настроенные в сервисе “групповых адресов knx” отлично идят значения с шины и принимают оттуда значения. Но если я выставляю значения из интерфейса WB - то кроме как в web отображении значения никуда не уходят.

Также отмечу что в ETS5 через WB не получается пролить частичную заливку устройства - выдает ошибку. - работает только полная заливка с кнопкой.

Диагархив прилагаю. Ожидаю дальнейшие вопросы/рекомендации.

приложен диагностический архив, доступен только сотрудникам поддержки
(350,5 КБ)

Покажите пожалуйста что отправляется в шину KNX при нажатии кнопки, например, в web-интерфейсе контроллера.

Пока ожидал ответа решил обновится на testing) И пока вроде как работать начало

Единственное - не могу понять как правильно реализовать проброс датчиков температуры с WB в KNX для запроса по команде от конкретного KNX устройства.
В шине KNX это происходит командой GroupValueRead и т.к. в этот момент в шине ничего не читается - происходит временное обнуление показаний.
Поэтому мне приходится эти значения принудительно циклом отправлять в шину по таймеру. Но и это не дает гарантии пропадания показаний на несколько секунд

Так, а вот тут бы немного подробнее. Шина KNX - тоже событийная.
То есть изменилось значение температуры - измененное ушло в шину. Ну и будет получено всеми устройствами которые слушают ГА с температурой.

Не совсем понятно.
Почему “обнуление”?
Вот приходит запрос, как описано: Описание сервиса wb-mqtt-knx — Wiren Board
и что его обрабатывает? Какое-то правило (скрипт)?

Устройство KNX (в данном случае термостат) по своей логике периодически само пытается запросить показания температуры внешнего датчика из шины.
В этот момент в шину приходит запрос значений ГА от этого устройства с типом команды
GroupValueRead.

Т.е. получается При появлении в шине такого запроса должно отработать некое правило на стороне WB которое переправит значение mqtt датчика в шину на запрашиваемый адрес.

Т.о. получается нужно делать кастомные правила на каждый такой запрос.

Пока писал подумал что такое можно реализовать через Nodered черед ноду WB-get

Подтвердите пожалуйста правильность моих мыслей.

В сервисе групповых адресов я накидываю список нужных ГА датчиков с галочкой “только чтение”. Далее в NR делаю цепочки вида
“WB-in (ГА датчика) - WB-get (реальный топик датчика WB) - WB-out(снова ГА датчика)”

Но как будто бы на вид закольцовка получается

А в ответ оно ожидает обычной телеграммы в ГА со значением?

Да. В самом простом случае - правило срабатывает на каждую публикацию в “/devices/knx/controls/data”. Уже в функции правила сравнивается - что именно пришло. Если APCI и ГА совпадают с условием - то возможно два варианта

  • первый, если ГА уже описан как контрол: правило публикует значение в этот контрол - ну и оно отправляется штатным методом.
  • второй, не требует описывать контрол в wb-mqtt-knx. Правило просто публикует в “‘/devices/knx/controls/data/on’” ответ.

Нет, правило-то может быть и одно, со списками условий или вообще вызывать внешгние функции.

Нет. Отправленные собой в принятые не попадают.

Спасибо! Тогда остановлюсь на этом более наглядном варианте

В общем теория не сработала, и при отправке значения сам на себя через ноду NR WB происходит зацикливание.

Пока решил проблему таким образом (но это касается только сенсоров на стороне WB которые требуются по запросу в шине KNX.

  1. указал в контроллере ГА датчики в таком виде

  2. Далее в Nodered дополнительно установил ноду KNX-easy в In-ноде которой указал ГА датчиков и тип тригера на команду GroupValueRead. Нода тригерит Get-ноду WB с реальным каналом датчика и далее шлет значение в WB-knx контрол, который указан в контроллере ГА WB

В результате в шине KNX при запросе состояния датчика KNX-термостатом - приходит нужный ответ. и потерь значений не происходит (1.1.217 - термостат, 1.1.19 - ответ от WB)

При этом в интерфейсе WB сами датчики отображаются как отключенные

Напомню что это все на свежем testing.

В итоге с датчиками кое как проблему для себя решил. но теперь предстоит обрабатывать обратную связь с диммеров и реле которые в KNX также должны быть привязаны к топикам WB.

Поэтому хотелось бы разобраться с тем что я делаю не так либо выловить проблему в WB

Добавлю скрин из сервиса wb-mqtt-knx

Покажите пожалуйста результат подписки на топик, с подтопиками.
Неожиданно для меня подобное.

А как они описаны? И что в них публикуется?

Описаны в контроллере ГА вот так. Адрес для чтения специально неп указан, т.к. эти ГА сделаны для конвертации значений датчиков температуры с WB в KNX.

Связка сделана в Nodered. По команде GroupValueRead с данного адреса KNX - get-нодой WB переправляется значение с MAI6.

Сейчас после какойто перезагрузки ошибок больше нет - просто нули стоят. Но схема Nodered отрабатывает как положено значения перенаправляются по запросу
image

Поэтому остается только проблема по зацикливанию значений сам на себя при использовании связок в nodered

Проверяю.
Подписываюсь на топик:

mosquitto_sub -v -t '/devices/knx/controls/data/#'
/devices/knx/controls/data/meta {"order":0,"readonly":false,"title":{"en":"Message","ru":"\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435"},"type":"text"}
/devices/knx/controls/data/meta/order 0
/devices/knx/controls/data/meta/readonly 0
/devices/knx/controls/data/meta/type text
/devices/knx/controls/data i:0/0/0 i:0/0/0 GroupValueRead 0x00
/devices/knx/controls/data/on g:1/1/65 GroupValueWrite 0x01
/devices/knx/controls/data/on g:1/1/65 GroupValueWrite 0x00

И вот примерно так публикую.
публикую

root@wirenboard-ANHVBI4B:~# mosquitto_pub -t /devices/knx/controls/data/on -m "g:1/1/65 GroupValueWrite 0x01"
root@wirenboard-ANHVBI4B:~# mosquitto_pub -t /devices/knx/controls/data/on -m "g:1/1/65 GroupValueWrite 0x00"

Как видно то что ушло в шину с самого контроллера никак не публикуется в data.
Screenshot_20251111_193735

Также проверил - в “/devices/knx/controls/data” тоже не публикуется отправленное с контроллера из настроенных в wb-mqtt-knx контролов ГА. Что и ожидается.
Если у вас не так - покажите пожалуйста результат подписки.