Событие whenChanged для KNX контрола

Добрый день, расскажите, пожалуйста, почему не срабатывает событие whenChanged, когда я меняю в UI значение переключателя, например. Вот здесь написано, что правило будет срабатывать на приход телеграм, но ничего про ручное изменение контрола - Быстрый старт работы с KNX на контроллере Wiren Board — Wiren Board

Здравствуйте.

Покажите пожалуйста:

  1. Свое правило
  2. Что в логах wb-rules? режим отладки не забудьте включить, на вкладке с устройствами.
  3. Какое устройство управляющее и какое управляемое? Какие контролы у них?

Понял. Соберу информацию ближе к выходным. С картинками. А пока вот еще дополнительная информация.

Когда приходит информация из KNX шины - контрол меняет состояние и правило whenChanged срабатывает - вижу по логам - вставил отладочные сообщения.

Видимо, вы меняете разные контролы - из KNX и из интерфейса.

Я рекомендую сравнить что публикуется в mqtt в обоих случаях. Ну и: если контрол readOnly - в него публиковать может только и исключительно сервис описанный в meta/driver контрола.

Точно нет. Всего один контрол.

В итоге я поступил следующим образом - добавил виртуальное устройство. Это решило проблему.

И все же - решил переоткрыть тему - мне не дает покоя этот вопрос ))

Вот больше деталей.

Есть KNX-контрол, настроил на нем групповой адрес, к которому привязал свойство блокировки клавиши на физической панельке.

Прописал в настройках групповой адрес (1/1/52)

вот, что вижу в панели “Устройства” WB

Когда переключаю temp_increase_lock - телеграмы нормально уходят в шину - на физическом устройстве - меняется статус все ок.

В логах это выглядит так

|03-08-2025 13:11:37.042|DEBUG: Sent to knxd: to:1/1/52 tpdu(2):00 80|
|03-08-2025 13:11:34.076|DEBUG: Sent to knxd: to:1/1/52 tpdu(2):00 81|

Далее, для простоты объяснения - в правилах по определенному событию пытаюсь менять значение temp_increase_lock - вот так

defineRule({
  whenChanged: "my-virtual-TOSHIBA/xlock_increase_knx",
  then: function (newValue, devName, cellName) {
    getControl("temp_by_wall/temp_increase_lock").setValue(newValue);
  }
});

или вот так

defineRule({
  whenChanged: "my-virtual-TOSHIBA/xlock_increase_knx",
  then: function (newValue, devName, cellName) {
    dev["temp_by_wall/temp_increase_lock"]	= newValue;
  }
});

В итоге - телеграммы отсылаются в шину - физическое устройство реагирует. В логах все есть

|03-08-2025 13:37:06.944|DEBUG: Sent to knxd: to:1/1/52 tpdu(2):00 81|
|03-08-2025 13:37:06.331|DEBUG: Sent to knxd: to:1/1/52 tpdu(2):00 80|

но “ползунок” - в устройстве не меняется

Это создает неудобство, т.к. по сути происходит рассинхрон между значениями на физическом устройстве и в устройстве в WB. Можно, конечно, синхронизовать эти значения через вот эту настройку

но кажется, это не тот вариант

Да, вот еще - в каналах MQTT значение не меняется

Никто не подскажет?