+2
Voting

drag&drop at project creation

evg 8 years ago in Applications / Studio (Server editor) updated by Oksana (expert) 8 years ago 13

For me it is very important in the server to have the function of transferring everything from IP to KNX and back. That is why I think it is very important to implement the drag&drop function for connection of different drivers with each other. I.e. if you want to send the status of a receiver working via IP in KNX somewhere else, you just drag it there and everything works .

Now, besides writing 2 drivers (or using the ready ones) - 1 for each device of the link, you need to write the 3d one which transfers the data

Waiting for user's reply

Здравствуйте, Евгений


А можно подробнее, где хотелось бы такое видеть и в каком виде? В редакторе? Где отображаются такие связи? Откуда и куда тащаться?

Waiting for user's reply

А можно уточнить, зачем вам формировать подобную связь? Какую проблему хочется решить?


Для каждого драйверного тега уже есть автоматически созданный серверный тег. Он находится слева от него.

Хочется, например, звук от ресивера, полученный по IP, отправить в KNX. Или наоборот, выключить IP ресивер, при вызове сцены "выключить все" в KNX.

Я специально нарисовал стрелки по диагонали между разными драйверами.

Сейчас это возможно сделать через скрипт, а это гораздо затратнее по времени. Тем более такой фунционал сделает из сервера удобнонастраиваемый шлюз из всего во все.

Каждую переменную приходится подписывать на событие отдельно

IR.AddListener(IR.EVENT_START,0,function()
{
//Запускаем слушатель на основе глобального срабатывания тега.
IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
{
if (name == "Server.Tags.Denon1.Volume") //Server.Channels.KNX Serial.Volume
{
IR.SetVariable("Server.Channels.KNX Serial.Volume - feedback", value)
}

if (name == "Server.Tags.KNX Serial.Volume") //Server.Channels.KNX Serial.Volume
{
IR.SetVariable("Server.Channels.Denon1.Set Volume (p)", value)
}


});
//Блок подписи на необходимые для нас теги
IR.SubscribeTagChange("Server.Tags.Denon1.Volume");
IR.SubscribeTagChange("Server.Tags.KNX Serial.Volume");
});

И так для каждой. А если их 100, то эта работа превращается в каторгу.

так а в чем проблема сделать массив и через него все реализовать? Автоматически. Работа программиста заключается в том, чтоб рутинную работу превратить в наслаждение.

Мне кажется, что в данном случае возможно решение вообще без программирования. Об этом и прошу.

Евгений, интерфейс настройки шлюзования без скриптов уже запланирован, но тема пока на голосовании, т.к. приоритет задачи еще не определен.


Пока что могу посоветовать такой способ:


Если переменные в драйверах, между которыми настроено шлюзование, назвать одинаково, достаточно создать одну функцию модификатор и привязать к каналам драйвера, данные из которого нужно передавать в другой:

function gate_to_modbus (in_Type, in_Name, in_Value) 
{
   var namepart = in_Name.split(".");  
   IR.SetVariable("Server.Channels.Modbus TCP 2." + namepart[1], in_Value);
   return in_Value;
}

Пример

Глобальная штука, но сейчас стало понятная проблема, которую хочется решить.

Выставляю на голосование

Приоритет максимальный :)

+1

Зовите друзей поддержать идею ;)