+1
Not a bug

IR.SetVariable в скрипте на iRidium Server

Эмиль Боев 10 months ago in Server Solutions • updated by Ekaterina (head of support) 10 months ago 2

Выполняю данный небольшой скрипт на iRidium server (после старта, с небольшой задержкой):

IR.SetVariable("Server.Channels.AllTVs", 1);

По данному событию срабатывают слушатель:

IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function (name, value){
    ...
});
IR.SubscribeTagChange("Server.Channels.AllTVs");

Что видно по логу сервера.


Однако, изменение виртуального канала не приходит в проект визуализации, подключенный к серверу.


Также, изменение значения канала не видно в web gui iRidium server:


В чем может быть проблема?

+1

Проблема решена!


Со стороны проекта irpz, Virtual Tag (Virtual Feedback) - это переменная обратной связи, значение которой мы получаем от iRidium Server.

Со стороны проекта sirpz, Virtual Tag (Virtual Feedback) - это переменная обратной связи, значение которой получат проекты визуализации при изменении / начальном старте.


Поэтому значение, которое мы хотим отправить с сервера на визуализацию, нужно записывать в Tags:

IR.SetVariable("Server.Tags.AllTVs", 1);

Из документации не очевиден факт: виртуальный Tag и виртуальный Channel никак не связаны.

Это означает, что:

Панель отправляет в некоторый Virtual Channel значение. Это значение приходит на iRidium Server. Но оно не сохраняется ни в один из Virtual Tag на iRidium Server.

Если в качестве feedback на кнопку привязан Tag с тем же именем, что и отправляемый Channel, то перезапустив проект визуализации мы увидим старое состояние кнопки, потому что значение Tag осталосб неизменно.


Необходимо программно связать Tag и Channel, настроив для Channel функцию-модификатор (Script Modifier):

function channel_to_tag_wire (in_Type, in_Name, in_Value) {
   IR.SetVariable("Server.Tags."+in_Name, in_Value);
   return in_Value;
}