Knx

Добрый день. Решил создать тему, т.к. многочисленные попытки решить вопрос в чате ни к чему не привели. Тема достаточно большая и серьезная. В виду позиционирования WB как устройства для конечных покупателей и энтузиастов, которые редко когда используют оборудование KNX информации о настройке и совместимости крайне мало. И это сильно ограничивает нас как интеграторов, которые большую часть проектов строят на KNX использовать решения WB в своих проектах. Надеюсь эта тема поможет “сдвинуть” вопрос с мертвой точки. Итак, с лирикой все, теперь к делу:

Адаптер KNX выключен, вопрос пока не актуален
  1. На объекте установлен WB6 с knx модулем, ввиду невозможности полноценно настроить и оттестировать работу WB с KNX в офисе (это вообще отдельная тема) контроллер проста висит затычкой в силовом шкафу.
  1. Наш офисный WB6 так же с KNX модулем, вообще не получает данные с шины, хотя благополучно может в нее слать телеграммы. Несколько раз поднимал вопрос в чате поддержки, но так ни разу вопрос не был доведен до конца. Ниже немного скриншотов и вставок с чата:

команды на вкл/выкл проходят нормально, а статусы не приходят. в ETS подключаюсь к WB там тоже статусы не видно, только команды управления

вот если подключен к WB

а вот при подключении к нашему шлюзу

вот из WB выключил/включил свет. свет отработал, выключился и потом включился
image

и почему он вот это устройство “видит”, а выключатели нет?
/devices/knx/controls/data i:1/1/1 g:4/2/0 GroupValueWrite 0x0c 0x42
/devices/knx/controls/data i:1/1/1 g:4/2/0 GroupValueWrite 0x0c 0x3d
/devices/knx/controls/data i:1/1/1 g:4/2/0 GroupValueWrite 0x0c 0x3e

А покажите еще и адреса контроллера.

Адрес какой? ip? knx?
ip - 192.168.137.21
EIB address 1.1.255
Client-addrs 1.1.5:50

Нам ждать поддержки? или пытаться самостоятельно разобраться в вопросе?

Можете завтра дать anydesk, посмотрю сам?

Могу, только лучше в телеграм писать, тут могу пропустить.

Ок. Напишу.

Новые водные, при быстром включении-выключении лампы через виртуальный адрес
/devices/knx_group_addrs/controls/1-0-11 происходит циклическое зависание данного реле. Как этого избежать? Скрипт такой:

(function() {
    var knx_vdev_obj = {
        title: "KNX Group Addresses",
        cells: {
            "0-0-1": {
                type: "switch",
                value: false
            },
            "0-0-4": {
                type: "switch",
                value: false
            },          
            "1-0-11": {
                type: "switch",
                value: false
            },          
            "1-0-12": {
                type: "switch",
                value: false
            },          
            "1-0-13": {
                type: "switch",
                value: false
            },          
            "1-0-21": {
                type: "switch",
                value: false
            },          
            "1-0-22": {
                type: "switch",
                value: false
            },          
            "1-0-31": {
                type: "switch",
                value: false
            },          
            "1-0-32": {
                type: "switch",
                value: false
            },          
            "1-0-33": {
                type: "switch",
                value: false
            },          
            "1-0-34": {
                type: "switch",
                value: false
            },          
            "1-0-35": {
                type: "switch",
                value: false
            },          
            "1-0-41": {
                type: "switch",
                value: false
            },          
            "1-0-42": {
                type: "switch",
                value: false
            },          
            "1-0-51": {
                type: "switch",
                value: false
            },          
            "1-0-52": {
                type: "switch",
                value: false
            },          
            "1-0-61": {
                type: "switch",
                value: false
            },          
            "1-0-61": {
                type: "switch",
                value: false
            },
            "1-0-71": {
                type: "switch",
                value: false
            },
//            "1-1-33": {
//                type: "value",
//                value: "0"
//            },
//            "1-1-53": {
//                type: "value",
//                value: "0"
//            },
            "2-0-11": {
                type: "switch",
                value: false
            },
            "2-0-12": {
                type: "switch",
                value: false
            },
            "2-0-13": {
                type: "switch",
                value: false
            },
            "2-0-21": {
                type: "switch",
                value: false
            },
            "2-0-22": {
                type: "switch",
                value: false
            },
            "2-0-31": {
                type: "switch",
                value: false
            },
            "2-0-32": {
                type: "switch",
                value: false
            },
            "2-0-33": {
                type: "switch",
                value: false
            },
            "2-0-34": {
                type: "switch",
                value: false
            },
            "2-0-35": {
                type: "switch",
                value: false
            },
            "2-0-41": {
                type: "switch",
                value: false
            },
            "2-0-42": {
                type: "switch",
                value: false
            },
            "2-0-51": {
                type: "switch",
                value: false
            },
            "2-0-52": {
                type: "switch",
                value: false
            },
            "2-0-61": {
                type: "switch",
                value: false
            },
            "2-0-71": {
                type: "switch",
                value: false
            },
//            "2-1-33": {
//                type: "value",
//                value: "0"
//            },
//            "2-1-53": {
//                type: "value",
//                value: "0"
//            },
            "3-2-0": {
                type: "switch",
                value: false
            }
        }
    };

// в
    var vdev_when_changed = [];
    var vdev_devid = "knx_group_addrs";

    for (var control_id in knx_vdev_obj.cells) {
        if (knx_vdev_obj.cells.hasOwnProperty(control_id)) {
            vdev_when_changed.push("knx_group_addrs/" + control_id);
        }
    }

    defineVirtualDevice(vdev_devid, knx_vdev_obj);

    defineRule("knx_vdev_feedback", {
        whenChanged: vdev_when_changed,
        then: function(newValue, devName, cellName) {
            var group_address = cellName.split("-").join("/");
            var value = +newValue;
            var write_str = "";


            if (knx_vdev_obj.cells[cellName].knx_type == "wide") {
                while (value > 0) {
                    var rem = value % 256;
                    value = Math.floor(value / 256);
                    write_str = rem + " " + write_str;
                }
                write_str = "0 " + write_str;
            } else {
                write_str = "" + value;
            }

            if (write_str) {
                dev["knx/data"] = "g:{} GroupValueWrite {}".format(group_address, write_str);
            }
        }
    });

    defineRule("knx_vdev_incoming", {
        whenChanged: "knx/data",
        then: function(newValue, devName, cellName) {
            var arr = newValue.split(/\s/);
            var sourceAddr = arr[0].split(/i\:|\,/);
            var groupAddr = arr[1].split(/g\:|\,/);
            var arr1 = newValue.split(/GroupValueWrite/);
            var value = arr1[1];
            if ((sourceAddr[1] == "0/0/0") || (sourceAddr[1] == "1/1/255")) { // skip local echo
                return;
            }
            dev[vdev_devid][groupAddr[1].split("/").join("-")] = !!parseInt(value, 16);
        }
    });

})()



function knxConvertToFloat16(value) {
    var sign = 0;
    var exp = 0;
    if (value < 0) {
        sign = 1;
    }

    var mant = Math.floor(value * 100);
    while ((mant < -2048) || (mant > 2047)) {
        mant = mant >> 1;
        exp += 1
    }

    var data = (sign << 15) | (exp << 11) | (mant & 0x07ff);
    return data;
};

попробовал обвязать логами, получилось вот так:

2021-11-03 17:28:43knx_vdev_feedback: knx_group_addrs 1-0-21 true

2021-11-03 17:28:43knx_vdev_feedback. write_str 1/0/21 1

2021-11-03 17:31:58knx_vdev_feedback: knx_group_addrs 2-0-42 true

2021-11-03 17:31:58knx_vdev_feedback. write_str 2/0/42 1

2021-11-03 17:31:58knx incoming: knx data i:1/1/7 g:2/0/42 GroupValueWrite 0x01

2021-11-03 17:31:58knx_vdev_feedback: knx_group_addrs 1-0-42 true

2021-11-03 17:31:58knx_vdev_feedback. write_str 1/0/42 1

2021-11-03 17:31:58knx incoming: knx data i:1/1/8 g:1/0/42 GroupValueWrite 0x01

2021-11-03 17:31:58knx incoming: knx data i:1/1/2 g:2/0/42 GroupValueWrite 0x01

2021-11-03 17:32:02knx_vdev_feedback: knx_group_addrs 2-0-42 false

2021-11-03 17:32:02knx_vdev_feedback. write_str 2/0/42 0

2021-11-03 17:32:03knx incoming: knx data i:1/1/9 g:2/0/42 GroupValueWrite 0x00

2021-11-03 17:32:03knx_vdev_feedback: knx_group_addrs 1-0-42 false

2021-11-03 17:32:03knx_vdev_feedback. write_str 1/0/42 0

2021-11-03 17:32:03knx incoming: knx data i:1/1/10 g:1/0/42 GroupValueWrite 0x00

2021-11-03 17:32:03knx incoming: knx data i:1/1/2 g:2/0/42 GroupValueWrite 0x00

2021-11-03 17:32:33knx incoming: knx data i:1/1/2 g:2/0/13 GroupValueWrite 0x00

2021-11-03 17:32:33knx_vdev_feedback: knx_group_addrs 2-0-13 false

2021-11-03 17:32:33knx_vdev_feedback. write_str 2/0/13 0

2021-11-03 17:32:33knx_vdev_feedback: knx_group_addrs 1-0-13 false

2021-11-03 17:32:33knx_vdev_feedback. write_str 1/0/13 0

2021-11-03 17:32:33knx incoming: knx data i:1/1/11 g:2/0/13 GroupValueWrite 0x00

2021-11-03 17:32:33knx incoming: knx data i:1/1/12 g:1/0/13 GroupValueWrite 0x00

2021-11-03 17:32:33knx incoming: knx data i:1/1/2 g:2/0/13 GroupValueWrite 0x00

2021-11-03 17:33:59knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:33:59knx_vdev_feedback: knx_group_addrs 2-0-21 false

2021-11-03 17:33:59knx_vdev_feedback. write_str 2/0/21 0

2021-11-03 17:33:59knx_vdev_feedback: knx_group_addrs 1-0-21 false

2021-11-03 17:33:59knx_vdev_feedback. write_str 1/0/21 0

2021-11-03 17:33:59knx incoming: knx data i:1/1/13 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:33:59knx incoming: knx data i:1/1/14 g:1/0/21 GroupValueWrite 0x00

2021-11-03 17:33:59knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:33:59knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x01

2021-11-03 17:33:59knx_vdev_feedback: knx_group_addrs 2-0-21 true

2021-11-03 17:33:59knx_vdev_feedback. write_str 2/0/21 1

2021-11-03 17:34:00knx_vdev_feedback: knx_group_addrs 1-0-21 true

2021-11-03 17:34:00knx_vdev_feedback. write_str 1/0/21 1

2021-11-03 17:34:00knx incoming: knx data i:1/1/15 g:2/0/21 GroupValueWrite 0x01

2021-11-03 17:34:00knx incoming: knx data i:1/1/16 g:1/0/21 GroupValueWrite 0x01

2021-11-03 17:34:00knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x01

2021-11-03 17:34:00knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:34:00knx_vdev_feedback: knx_group_addrs 2-0-21 false

2021-11-03 17:34:00knx_vdev_feedback. write_str 2/0/21 0

2021-11-03 17:34:00knx_vdev_feedback: knx_group_addrs 1-0-21 false

2021-11-03 17:34:00knx_vdev_feedback. write_str 1/0/21 0

2021-11-03 17:34:00knx incoming: knx data i:1/1/17 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:34:00knx incoming: knx data i:1/1/18 g:1/0/21 GroupValueWrite 0x00

2021-11-03 17:34:00knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:34:00knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x01

2021-11-03 17:34:00knx_vdev_feedback: knx_group_addrs 2-0-21 true

2021-11-03 17:34:00knx_vdev_feedback. write_str 2/0/21 1

2021-11-03 17:34:00knx_vdev_feedback: knx_group_addrs 1-0-21 true

2021-11-03 17:34:00knx_vdev_feedback. write_str 1/0/21 1

2021-11-03 17:34:00knx incoming: knx data i:1/1/19 g:2/0/21 GroupValueWrite 0x01

2021-11-03 17:34:00knx incoming: knx data i:1/1/20 g:1/0/21 GroupValueWrite 0x01

2021-11-03 17:34:00knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x01

2021-11-03 17:34:01knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:34:01knx_vdev_feedback: knx_group_addrs 2-0-21 false

2021-11-03 17:34:01knx_vdev_feedback. write_str 2/0/21 0

2021-11-03 17:34:01knx_vdev_feedback: knx_group_addrs 1-0-21 false

2021-11-03 17:34:01knx_vdev_feedback. write_str 1/0/21 0

2021-11-03 17:34:01knx incoming: knx data i:1/1/21 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:34:01knx incoming: knx data i:1/1/22 g:1/0/21 GroupValueWrite 0x00

2021-11-03 17:34:01knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:34:01knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x01

2021-11-03 17:34:01knx_vdev_feedback: knx_group_addrs 2-0-21 true

2021-11-03 17:34:01knx_vdev_feedback. write_str 2/0/21 1

2021-11-03 17:34:01knx_vdev_feedback: knx_group_addrs 1-0-21 true

2021-11-03 17:34:01knx_vdev_feedback. write_str 1/0/21 1

2021-11-03 17:34:01knx incoming: knx data i:1/1/23 g:2/0/21 GroupValueWrite 0x01

2021-11-03 17:34:01knx incoming: knx data i:1/1/24 g:1/0/21 GroupValueWrite 0x01

2021-11-03 17:34:01knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x01

2021-11-03 17:34:01knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:34:01knx_vdev_feedback: knx_group_addrs 2-0-21 false

2021-11-03 17:34:01knx_vdev_feedback. write_str 2/0/21 0

2021-11-03 17:34:01knx_vdev_feedback: knx_group_addrs 1-0-21 false

2021-11-03 17:34:01knx_vdev_feedback. write_str 1/0/21 0

2021-11-03 17:34:01knx incoming: knx data i:1/1/25 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:34:01knx incoming: knx data i:1/1/26 g:1/0/21 GroupValueWrite 0x00

2021-11-03 17:34:01knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:34:01knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x01

2021-11-03 17:34:02knx_vdev_feedback: knx_group_addrs 2-0-21 true

2021-11-03 17:34:02knx_vdev_feedback. write_str 2/0/21 1

2021-11-03 17:34:02knx_vdev_feedback: knx_group_addrs 1-0-21 true

2021-11-03 17:34:02knx_vdev_feedback. write_str 1/0/21 1

2021-11-03 17:34:02knx incoming: knx data i:1/1/27 g:2/0/21 GroupValueWrite 0x01

2021-11-03 17:34:02knx incoming: knx data i:1/1/28 g:1/0/21 GroupValueWrite 0x01

2021-11-03 17:34:02knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x01

2021-11-03 17:34:02knx incoming: knx data i:1/1/1 g:2/0/22 GroupValueWrite 0x00

2021-11-03 17:34:02knx_vdev_feedback: knx_group_addrs 2-0-22 false

2021-11-03 17:34:02knx_vdev_feedback. write_str 2/0/22 0

2021-11-03 17:34:02knx_vdev_feedback: knx_group_addrs 1-0-22 false

2021-11-03 17:34:02knx_vdev_feedback. write_str 1/0/22 0

2021-11-03 17:34:02knx incoming: knx data i:1/1/29 g:2/0/22 GroupValueWrite 0x00

вот этот момент в messagesWB-KNX-LOG.txt (791.1 КБ)

Так, и еще сам скрипт, с добавленными строчками лога бы.

(function() {
    var knx_vdev_obj = {
        title: "KNX Group Addresses",
        cells: {
            "0-0-1": {
                type: "switch",
                value: false
            },
            "0-0-4": {
                type: "switch",
                value: false
            },          
            "1-0-11": {
                type: "switch",
                value: false
            },          
            "1-0-12": {
                type: "switch",
                value: false
            },          
            "1-0-13": {
                type: "switch",
                value: false
            },          
            "1-0-21": {
                type: "switch",
                value: false
            },          
            "1-0-22": {
                type: "switch",
                value: false
            },          
            "1-0-31": {
                type: "switch",
                value: false
            },          
            "1-0-32": {
                type: "switch",
                value: false
            },          
            "1-0-33": {
                type: "switch",
                value: false
            },          
            "1-0-34": {
                type: "switch",
                value: false
            },          
            "1-0-35": {
                type: "switch",
                value: false
            },          
            "1-0-41": {
                type: "switch",
                value: false
            },          
            "1-0-42": {
                type: "switch",
                value: false
            },          
            "1-0-51": {
                type: "switch",
                value: false
            },          
            "1-0-52": {
                type: "switch",
                value: false
            },          
            "1-0-61": {
                type: "switch",
                value: false
            },          
            "1-0-61": {
                type: "switch",
                value: false
            },
            "1-0-71": {
                type: "switch",
                value: false
            },
//            "1-1-33": {
//                type: "value",
//                value: "0"
//            },
//            "1-1-53": {
//                type: "value",
//                value: "0"
//            },
            "2-0-11": {
                type: "switch",
                value: false
            },
            "2-0-12": {
                type: "switch",
                value: false
            },
            "2-0-13": {
                type: "switch",
                value: false
            },
            "2-0-21": {
                type: "switch",
                value: false
            },
            "2-0-22": {
                type: "switch",
                value: false
            },
            "2-0-31": {
                type: "switch",
                value: false
            },
            "2-0-32": {
                type: "switch",
                value: false
            },
            "2-0-33": {
                type: "switch",
                value: false
            },
            "2-0-34": {
                type: "switch",
                value: false
            },
            "2-0-35": {
                type: "switch",
                value: false
            },
            "2-0-41": {
                type: "switch",
                value: false
            },
            "2-0-42": {
                type: "switch",
                value: false
            },
            "2-0-51": {
                type: "switch",
                value: false
            },
            "2-0-52": {
                type: "switch",
                value: false
            },
            "2-0-61": {
                type: "switch",
                value: false
            },
            "2-0-71": {
                type: "switch",
                value: false
            },
//            "2-1-33": {
//                type: "value",
//                value: "0"
//            },
//            "2-1-53": {
//                type: "value",
//                value: "0"
//            },
            "3-2-0": {
                type: "switch",
                value: false
            }
        }
    };

// в
// в
    var vdev_when_changed = [];
    var vdev_devid = "knx_group_addrs";

    for (var control_id in knx_vdev_obj.cells) {
        if (knx_vdev_obj.cells.hasOwnProperty(control_id)) {
            vdev_when_changed.push("knx_group_addrs/" + control_id);
        }
    }

    defineVirtualDevice(vdev_devid, knx_vdev_obj);

    defineRule("knx_vdev_feedback", {
        whenChanged: vdev_when_changed,
        then: function(newValue, devName, cellName) {
            var group_address = cellName.split("-").join("/");
            var value = +newValue;
            var write_str = "";

      log.info("knx_vdev_feedback: ", devName, cellName, newValue);
            if (knx_vdev_obj.cells[cellName].knx_type == "wide") {
                while (value > 0) {
                    var rem = value % 256;
                    value = Math.floor(value / 256);
                    write_str = rem + " " + write_str;
                }
                write_str = "0 " + write_str;
            } else {
                write_str = "" + value;
            }

            if (write_str) {
        log.info("knx_vdev_feedback. write_str", group_address, write_str);
                dev["knx/data"] = "g:{} GroupValueWrite {}".format(group_address, write_str);
            }
        }
    });

    defineRule("knx_vdev_incoming", {
        whenChanged: "knx/data",
        then: function(newValue, devName, cellName) {
            var arr = newValue.split(/\s/);
            var sourceAddr = arr[0].split(/i\:|\,/);
            var groupAddr = arr[1].split(/g\:|\,/);
            var arr1 = newValue.split(/GroupValueWrite/);
            var value = arr1[1];
            if ((sourceAddr[1] == "0/0/0") || (sourceAddr[1] == "1/1/255")) { // skip local echo
                return;
            }
      log.info("knx incoming:", devName, cellName, newValue);
            dev[vdev_devid][groupAddr[1].split("/").join("-")] = !!parseInt(value, 16);
        }
    });

})()



function knxConvertToFloat16(value) {
    var sign = 0;
    var exp = 0;
    if (value < 0) {
        sign = 1;
    }

    var mant = Math.floor(value * 100);
    while ((mant < -2048) || (mant > 2047)) {
        mant = mant >> 1;
        exp += 1
    }

    var data = (sign << 15) | (exp << 11) | (mant & 0x07ff);
    return data;
};

Добавлю. Возможно это важно. В правилах есть еще один скрипт для штор, выглядит так:

(function() {
    var knx_win_obj = {
        title: "KNX Group windows",
        cells: {
           "1-1-33": {
                type: "range",
                max: 100,
                value: 0,
                knx_type: "wide"
            },
          "1-1-53": {
                type: "range",
                max: 100,
                value: 0,
                knx_type: "wide"
            },
          "2-1-33": {
                type: "range",
                max: 100,
                value: 0,
                knx_type: "wide"
            },
          "2-1-53": {
                type: "range",
                max: 100,
                value: 0,
                knx_type: "wide"
            }
        }
    };

// в
    var vdev_when_changed = [];
    var vdev_win = "knx_win_addrs";

    for (var control_id in knx_win_obj.cells) {
        if (knx_win_obj.cells.hasOwnProperty(control_id)) {
            vdev_when_changed.push("knx_win_addrs/" + control_id);
        }
    }

    defineVirtualDevice(vdev_win, knx_win_obj);

    defineRule("knx_vdev_feedback", {
        whenChanged: vdev_when_changed,
        then: function(newValue, devName, cellName) {
            var group_address = cellName.split("-").join("/");
            var value = +newValue;
            var write_str = "";


            if (knx_win_obj.cells[cellName].knx_type == "wide") {
                while (value > 0) {
                    var rem = value % 256;
                    value = Math.floor(value / 256);
                    write_str = rem + " " + write_str;
                }
                write_str = "0 " + write_str;
            } else {
                write_str = "" + value;
            }

            if (write_str) {
                dev["knx/data"] = "g:{} GroupValueWrite {}".format(group_address, write_str);
            }
        }
    });

    defineRule("knx_vdev_incoming", {
        whenChanged: "knx/data",
        then: function(newValue, devName, cellName) {
            var arr = newValue.split(/\s/);
            var sourceAddr = arr[0].split(/i\:|\,/);
            var groupAddr = arr[1].split(/g\:|\,/);
            var arr1 = newValue.split(/GroupValueWrite/);
            var value = arr1[1];
            if ((sourceAddr[1] == "0/0/0") || (sourceAddr[1] == "1/1/255")) { // skip local echo
                return;
            }
            dev[vdev_win][groupAddr[1].split("/").join("-")] = parseInt(value, 16);
        }
    });

})()



function knxConvertToFloat16(value) {
    var sign = 0;
    var exp = 0;
    if (value < 0) {
        sign = 1;
    }

    var mant = Math.floor(value * 100);
    while ((mant < -2048) || (mant > 2047)) {
        mant = mant >> 1;
        exp += 1
    }

    var data = (sign << 15) | (exp << 11) | (mant & 0x07ff);
    return data;
};

Его тоже нужно будет “запускать” в работу. Но предыдущие запуски показали, что он с 50% вероятностью вызывает коллапс сети

То есть контроллер получает от устройства 1/1/2 (из шины или из сети) телеграмму для устройства 2/0/21 с чередующимся 0 и 1,
и пишет в устройсво. Тут все верно,
А потом -начинает получать

2021-11-03 17:33:59knx incoming: knx data i:1/1/13 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:33:59knx incoming: knx data i:1/1/14 g:1/0/21 GroupValueWrite 0x00

2021-11-03 17:33:59knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x00

2021-11-03 17:33:59knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x01

А вот этих адресов - уже нет. Или есть еще скрипты, которые работают с KNX?

На WB только эти два скрипта, main-knx.js и knx-windows.js
Других скриптов в WB нет.

По сети (ethernet) ничего не ходит от KNX? Если контроллер физически отключить от сети - воспроизводится? Лог при этом что содержит?

физически нет доступа отключить ethernet. но вот что удалось обноружить.

-------------ручное--------------
превое включение
2021-11-03 18:40:50knx_vdev_feedback: knx_group_addrs 1-0-32 true
2021-11-03 18:40:50knx_vdev_feedback. write_str 1/0/32 1
первое выключение
2021-11-03 18:40:51knx_vdev_feedback: knx_group_addrs 1-0-32 false
2021-11-03 18:40:51knx_vdev_feedback. write_str 1/0/32 0
2021-11-03 18:40:56knx_vdev_feedback: knx_group_addrs 1-0-33 false
2021-11-03 18:40:56knx_vdev_feedback. write_str 1/0/33 0
второе включение
2021-11-03 18:44:00knx_vdev_feedback: knx_group_addrs 1-0-33 true
2021-11-03 18:44:00knx_vdev_feedback. write_str 1/0/33 1
2021-11-03 18:44:00knx incoming: knx data i:1/1/9 g:1/0/33 GroupValueWrite 0x01
второе выключение
2021-11-03 18:44:09knx_vdev_feedback: knx_group_addrs 1-0-33 false
2021-11-03 18:44:09knx_vdev_feedback. write_str 1/0/33 0
2021-11-03 18:44:09knx incoming: knx data i:1/1/10 g:1/0/33 GroupValueWrite 0x00
третье включение
2021-11-03 18:44:20knx_vdev_feedback: knx_group_addrs 1-0-33 true
2021-11-03 18:44:20knx_vdev_feedback. write_str 1/0/33 1
2021-11-03 18:44:20knx incoming: knx data i:1/1/11 g:1/0/33 GroupValueWrite 0x01
третье выключение
2021-11-03 18:44:25knx_vdev_feedback: knx_group_addrs 1-0-33 false
2021-11-03 18:44:25knx_vdev_feedback. write_str 1/0/33 0
2021-11-03 18:44:25knx incoming: knx data i:1/1/12 g:1/0/33 GroupValueWrite 0x00
-------------ручное--------------


-------------быстро несколько раз включил выключил и понеслась--------------
2021-11-03 18:44:39knx_vdev_feedback: knx_group_addrs 1-0-11 false
2021-11-03 18:44:39knx_vdev_feedback. write_str 1/0/11 0
2021-11-03 18:44:39knx incoming: knx data i:1/1/13 g:1/0/11 GroupValueWrite 0x00
2021-11-03 18:44:39knx incoming: knx data i:1/1/2 g:2/0/11 GroupValueWrite 0x00
2021-11-03 18:44:39knx_vdev_feedback: knx_group_addrs 2-0-11 false
2021-11-03 18:44:39knx_vdev_feedback. write_str 2/0/11 0
2021-11-03 18:44:39knx incoming: knx data i:1/1/14 g:2/0/11 GroupValueWrite 0x00
2021-11-03 18:44:44knx_vdev_feedback: knx_group_addrs 1-0-11 true
2021-11-03 18:44:44knx_vdev_feedback. write_str 1/0/11 1
2021-11-03 18:44:44knx incoming: knx data i:1/1/15 g:1/0/11 GroupValueWrite 0x01
2021-11-03 18:44:44knx incoming: knx data i:1/1/2 g:2/0/11 GroupValueWrite 0x01
2021-11-03 18:44:44knx_vdev_feedback: knx_group_addrs 2-0-11 true
2021-11-03 18:44:44knx_vdev_feedback. write_str 2/0/11 1
2021-11-03 18:44:44knx incoming: knx data i:1/1/16 g:2/0/11 GroupValueWrite 0x01
2021-11-03 18:44:55knx_vdev_feedback: knx_group_addrs 1-0-33 true
2021-11-03 18:44:55knx_vdev_feedback. write_str 1/0/33 1
2021-11-03 18:44:55knx incoming: knx data i:1/1/17 g:1/0/33 GroupValueWrite 0x01
2021-11-03 18:44:58knx_vdev_feedback: knx_group_addrs 1-0-33 false
2021-11-03 18:44:58knx_vdev_feedback. write_str 1/0/33 0
2021-11-03 18:44:58knx incoming: knx data i:1/1/18 g:1/0/33 GroupValueWrite 0x00
2021-11-03 18:47:00knx_vdev_feedback: knx_group_addrs 1-0-11 false
2021-11-03 18:47:00knx_vdev_feedback. write_str 1/0/11 0
2021-11-03 18:47:00knx incoming: knx data i:1/1/19 g:1/0/11 GroupValueWrite 0x00
2021-11-03 18:47:00knx incoming: knx data i:1/1/2 g:2/0/11 GroupValueWrite 0x00
2021-11-03 18:47:00knx_vdev_feedback: knx_group_addrs 2-0-11 false
2021-11-03 18:47:00knx_vdev_feedback. write_str 2/0/11 0
2021-11-03 18:47:00knx incoming: knx data i:1/1/20 g:2/0/11 GroupValueWrite 0x00
2021-11-03 18:47:13knx_vdev_feedback: knx_group_addrs 1-0-13 false
2021-11-03 18:47:13knx_vdev_feedback. write_str 1/0/13 0
2021-11-03 18:47:13knx incoming: knx data i:1/1/21 g:1/0/13 GroupValueWrite 0x00
2021-11-03 18:47:13knx incoming: knx data i:1/1/2 g:2/0/13 GroupValueWrite 0x00
2021-11-03 18:47:13knx_vdev_feedback: knx_group_addrs 2-0-13 false
2021-11-03 18:47:13knx_vdev_feedback. write_str 2/0/13 0
2021-11-03 18:47:13knx incoming: knx data i:1/1/22 g:2/0/13 GroupValueWrite 0x00
2021-11-03 18:47:18knx_vdev_feedback: knx_group_addrs 1-0-21 false
2021-11-03 18:47:18knx_vdev_feedback. write_str 1/0/21 0
2021-11-03 18:47:18knx incoming: knx data i:1/1/23 g:1/0/21 GroupValueWrite 0x00
2021-11-03 18:47:18knx incoming: knx data i:1/1/2 g:2/0/21 GroupValueWrite 0x00
2021-11-03 18:47:19knx_vdev_feedback: knx_group_addrs 2-0-21 false
2021-11-03 18:47:19knx_vdev_feedback. write_str 2/0/21 0
2021-11-03 18:47:19knx incoming: knx data i:1/1/24 g:2/0/21 GroupValueWrite 0x00
2021-11-03 18:47:20knx_vdev_feedback: knx_group_addrs 1-0-22 false
2021-11-03 18:47:20knx_vdev_feedback. write_str 1/0/22 0
2021-11-03 18:47:20knx incoming: knx data i:1/1/25 g:1/0/22 GroupValueWrite 0x00
2021-11-03 18:47:22knx_vdev_feedback: knx_group_addrs 1-0-51 false
2021-11-03 18:47:22knx_vdev_feedback. write_str 1/0/51 0
2021-11-03 18:47:22knx incoming: knx data i:1/1/26 g:1/0/51 GroupValueWrite 0x00
2021-11-03 18:47:22knx incoming: knx data i:1/1/2 g:2/0/51 GroupValueWrite 0x00
2021-11-03 18:47:22knx_vdev_feedback: knx_group_addrs 2-0-51 false
2021-11-03 18:47:22knx_vdev_feedback. write_str 2/0/51 0
2021-11-03 18:47:22knx incoming: knx data i:1/1/27 g:2/0/51 GroupValueWrite 0x00
2021-11-03 18:47:23knx_vdev_feedback: knx_group_addrs 1-0-52 false

и так далее…

Собрал. Пхожее воспроизводится только если контроллер начинает принимать свои же сообщения.

и что с этим делать? Фикс какой ни будь есть?