+2
Идет голосование

Drag&drop при создании проекта

Евгений Лешкив 5 лет назад в Приложения / Studio (Server editor) обновлен Oksana (expert) 5 лет назад 13
Для меня в сервере очень важен функционал передачи всего из IP в KNX и обратно, поэтому, мне кажется, что просто необходимо, реализовать функцию drag&drop для связи различных драйверов между собой. Т.е. захотел передать статус включения ресивера, работающего по IP в KNX, либо куда-то еще, перетащил одно на другое и вуаля, все работает.

Сейчас же помимо того, что нужно написать (либо использовать готовые) 2 драйвера (по 1 на оконечные устройства связки) так еще и написать третий, передающий эти данные

Ожидает ответа пользователя

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


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

Ожидает ответа пользователя

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


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

Хочется, например, звук от ресивера, полученный по 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

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

Сервис поддержки клиентов работает на платформе UserEcho