Проблема с KNX

Добрый день. У меня контроллер шестой. Прошивка 6.7. Проблема с KNX. Покупал уже с установленным модулем.
1 - ETS 5 не хочет видеть его через IP WI-FI.
2 При получении по проводу, ETS его видит, но через раз. Один раз удалось все настроить, все работало. Но как только отключил роутер, и переключился на вайфай контроллера, то все перестало работать. И чтоб снова запустить, приходится несколько раз перезапустить контроллер. Использую вспомогательный код в js правилах, настроил свои адреса.
3. При изменении адресов в js правиле, в веб интерфейсе после перезагрузки возвращаются старые адреса, хотя проверяю правило, там адреса новые. Приходиться постоянно удалять из веб интерфейса блок с моими переключателями KNX, и снова перезаписывать правило. Но после перезагрузки та же проблема.
Сегодня решил обновить прошивку. После чего сразу записал нужные мне адреса.
При входе в веб интерфейс через вайфай, ничего не работает. После подключения к роутеру, и входа через назначенный роутером IP, программа начинает отправлять сообщения в шину, (Это видно через топик knx/data) Но само устройство не реагирует, плюс при переключении устройства топик knx/data ничего не показывает.

Добрый день.

К каому сетевому сервису контроллера обращается программа?

Так, термин “видит” не совсем корректен, к чему именно обращаетесь?
Про какие адреса речь, пример скрипта?

Покажите, что изменяется в топике, подписавшись на него.

Добрый день, Сейчас работает стабильно. Получается что если интернетовский кабель не подключать, то KNX не работает. То есть если нет IP адреса, то и нет KNX. В инструкциях нет такой информации. Попробую одному из интернет портов назначить статичный IP, может так будет работать.
В ETS 5 - IP wi-fi (192.168.42.1) не работает. Только через IP проводного интернета.

Если менять адреса (например 1.1.5) То система начинает глючить, и после перезапуска в веб интерфейсе возвращается старый адрес, хотя в коде все нормально. Решение - это сброс до заводских настроек. (тут в смысле если сначала установить одни адреса, а поом в процессе разработки их менять, удалять, или добавлять то после перезагрузки всегда возвращаются те адреса, которые я назначил первый раз. )
А здесь код который я использую.
(function() {
var knx_vdev_obj = {
title: “KNX Group Addresse”,
cells: {
“1-1-5”: {
type: “value”,
value: “0”,
readonly: false
},
“1-1-6”: {
type: “range”,
max: 100,
value: 0,
knx_type: “wide”
},
“1-1-7”: {
type: “value”,
value: “0”
},
“1-1-8”: {
type: “value”,
value: “0”,
readonly: 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;

};

Статичный IP помог. Теперь все работает и без шнура интернета.

Не должно влиять. Впорбуйте в скрипте написать цикличное изменение параметров KNX устройства (пнапример) и отключить сеть.

Программа “ETS 5” - обращается к чему? брокеру, веб-интерфейсу?

Программа ETS 5 обращается к контролеру как интерфейсу связи с шиной KNX. То есть для связи ETS 5 и шины KNX я вводил ip контроллера. Так вот здесь работает только IP проводного подключения. Через ip wi-fi программа ETS 5 выдает ошибку что интерфейс не найден.
В целом у меня сейчас все работает, и я не буду на этом долго останавливаться. Главное что стабильно без збоев работает. В дальнейшем я скорее всего совсем откажусь от KNX, это дорого, лучше буду использовать ModBus. Тем более у вас линейка устройств тоже расширяется.
Кстати было бы не плохо сделать блок расширения в котором есть как выходы, так и входы. Например для фанкойлов. Чтоб можно было управлять двигателем через 0-10v, и клапаном воды(вкл/выкл), получать значение датчика температуры. И добавить ему порт ModBus. Плюс сделать питание от 220v. Такое устройства обычно устанавливают на корпус фанкоила, чтоб управлять им.
Например:

Благодарю, добавлю для обсуждения. То есть в одном устройства:

  • выход 0-10 или PWM (или пара выходов)
  • реле NO (два?)
  • 18b20 входы для пары датчиков
  • несколько входов “сухой контакт”

Для фанкойла с трема фиксированными скоростями нужно

  1. Три реле NO с обще клеммой. Для управления трехскоростным вентилятором, на него нужно на необходимый контакт подать фазу или ноль, в зависимости от модели. При этом два остальных должны выключиться.
  2. Управление сервоприводом (подача холодной воды) - отдельное реле, лучше переключатель. Так как клапан может быть нормально закрытый, или нормально открытый. То есть на сервопривод в одном случае при подаче питания, клапан откроется, и бывает наоборот, что клапан открывается при отсутствии питания. При этом он может управляться нолем или фазой.
    3 датчик температуры. Ну тут не сложно, просто просто нужно подключить к нему датчик 1-wire DS18B20, и продавать как опцию.
    4 еще одно реле для управления сервоприводом ( для четырехтрубных фанкойлов) Не обязательно. Для двухтрубных он не нужен. У меня например в офисах все двухтрубные.

Для фанкойлов у которых управление вентилятором производиться через 0-10v, нужно в место 3 реле, один выход 0-10v.
Было бы не плохо в каждый такой модуль зашивать програму управления, чтоб подключил настроил, и пользуйся. Понятное дело это будет дороже, но гораздо дешевле чем KNX. они за такие модули дерут по 20000 - 60000 тыс.