Ваши комментарии
брррр... непоняток стало больше - не вижу логики пока.
у нас есть feedback по KNX драйверу Outside light value. на него стоит модификатор "умножить на 10".
по каналу приходит значение 100. Что и в каком случае мы получим? Рассматриваем только серверный проект.
по вашему утверждению любой листенер передает value "сырое", до модификатора, так?
IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetDevice("KNX IP Router"), function(name, value)
{
IR.Log(name + ": " + value); //100 - (* спорно, думаю здесь модифицированное значение 1000 должно быть*)
});
а если мы считаем feedback:
IR.GetVariable("Server.Tags.KNX IP Router.Outside light value"); - это tag сервера, он ДОЛЖЕН быть обработан модификатором. те значение 1000
IR.GetVariable("Drivers.KNX IP Router.Tags.Outside light value"); - а здесь я так понимаю драйверный feedback, он не обработан модификатором, те значение 100.
ведь модификатор указан на серверном теге. сервер должен "увидеть" его уже модифицированным
я так думаю. прав - неправ?
тогда вообще непонятно, в листенере до модификации, а в переменых, которые на кнопки приклеены - уже модифицированы. где этот неуловимый момент модификации?
нет, вопрос немного другой:
IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetDevice("Modbus TCP"), function(name, value)
{
IR.Log(name + ": " + value);
});
value в логе будет до модификации или после? судя по всему до модификатора.
а в варианте:
IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetServer(), function(name, value) { IR.Log(name + ": " + value); });
Value в логе будет уже модифицированным?
тогда вопрос встречный - если мы слушаем драйвер, а не сервер, то value в листенере будет до применения модификаторов?
это очень важное дополнение, комуто может быть и так понятно с начала, но не мне. теперь яснее стало
прошу резюмировать: я правильно понял, что работа листенера IR.EVENT_TAG_CHANGE отличается в зависимости от того на что подписаны?
до этого я имел информацию, что только Global_Tag_Change реагирует на новые значения, а для Event мы даже писали код с запоминаем прошлого значения. оказывается надо было на сервер подписываться?
Хочу сказать, шта с помощью тестового проекта по сип соединению, в моем случае с моботиксом, выявлено ужасное качество звука привключении любой из улучшалок. Выключив все - получил хорошее качество при одностороннем звуке - от камеры к панели. Остальное еще не пробовал
Сервис поддержки клиентов работает на платформе UserEcho
Добрый день,
вы пишите правильные вещи. Но немного не о том. Здесь ключевое слово - ПЕРЕЗАГРУЗКА. Программа на js прекрасно ведет себя в продолжительной работе, но что происходит при перезаливке проекта или перезагрузке по питанию?
я провел несколько тестов и вот что выяснил - довольно неожиданные вещи, которые любой инсталлятор iRidi должен хорошо знать, - однако этой информации не нашел.
Вывод: так делать нельзя, но для этого нужно знать. Переменная в модбасе не менялась, но выполнился дважды вызов функции.
Решение: Подписываемся на переменные с задержкой - зависит от шины: модбас секунды, Knx - минуты. Тогда запуск сервера проходит без изменений по этой переменной и не будет ложных tag change.
Тот же эксперимент, но с битовой переменной на модбасе.
Результат - при запуске сервера global tag change получает сначала 1, потом 0, если был 0 в переменной. ВСЕГДА сначала проходит 1. Если сеттаймаутом не убрать это значение - будет ошибка!