(function() {
var save = [];
function addSyncChannel(source, destination) {
defineRule('knx-sync.js: {} -> {}'.format(source, destination), {
whenChanged: source,
then: function(value) {
log.debug('1: {} == {}', source, value);
save[source] = value;
if (save[destination] !== value) {
dev[destination] = save[destination] = value;
log.debug('1: {} << {}', destination, value);
}
}
});
save[source] = dev[source];
defineRule('knx-sync.js: {} -> {}'.format(destination, source), {
whenChanged: destination,
then: function(value) {
log.debug('2: {} == {}', destination, value);
save[destination] = value;
if (save[source] !== value) {
dev[source] = save[source] = value;
log.debug('2: {} << {}', source, value);
}
}
});
save[destination] = dev[destination];
}
// Добавление связей между физическими устройствами и адресными каналами от knx-панелей
addSyncChannel('room/switch_lamp', 'buzzer/enabled'); // работа с вирт. устройством
addSyncChannel('room/switch_socket', 'wb-gpio/A1_OUT'); // работа с gpio
})();
Вроде получилось искомое. Надо проверить на реальном объекте ![]()