Коллеги, оброго дня!
Пытаюсь реализовать синхронизацию значения на физическом устройстве с knx-панелью через wb-rules.
Задача: при изменении одного топика вписать это значение в другой топик без сработки сторонних правил.
Есть следующий код:
(function() {
function addSyncChannel(source, destination) {
defineAlias('debug', 'wbrules/Rule debugging');
defineRule('knx-sync.js: {} -> {}'.format(source, destination), {
whenChanged: source,
then: function(current) {
if (debug) log.info('1: {} >> {}', source, current);
var target = destination.split('/');
getDevice(target[0]).getControl(target[1]).setValue({value: current, notify: false});
if (debug) log.info('1: {}/{} << {}', target[0], target[1], current);
}
});
defineRule('knx-sync.js: {} -> {}'.format(destination, source), {
whenChanged: destination,
then: function(current) {
if (debug) log.info('2: {} >> {}', destination, current);
var target = source.split('/');
getDevice(target[0]).getControl(target[1]).setValue({value: current, notify: false});
if (debug) log.info('2: {}/{} << {}', target[0], target[1], current);
}
});
}
// Добавление связей между физическими устройствами и адресными каналами от knx-панелей.
// Параметры: топик от knx, топик устройства, опционально - таблица перевода значений,
addSyncChannel('room/switch_lamp', 'buzzer/enabled'); // работа с вирт. устройством
addSyncChannel('room/switch_socket', 'wb-gpio/A1_OUT'); // работа с gpio
})();
При его работе происходит двойная сработка, в логе это выглядит так:
2025-06-13 01:04:07 2: buzzer/enabled >> false
2025-06-13 01:04:07 2: room/switch_lamp << false
2025-06-13 01:04:07 1: room/switch_lamp >> false
2025-06-13 01:04:07 1: buzzer/enabled << false
Подскажите как можно решить эту проблему? Есть ли альтернативы setValue
?