Перейти к основному содержимому

iRidium Server

документация обновлена 01.01.2024

Для начала работы с iRidium Server необходимо:

  1. Создать новый серверный проект;

iRidium Studio > File > New > **New server project**

Server1.png

  1. Создать панельный проект и привязать его к серверному проекту *;

  2. Загрузить серверный проект на сервер *;

  3. Загрузить панельный проект на панель управления *;

Создание серверного проекта состоит из этапов:

  1. Сформировать на сервере список оборудования, которым нужно управлять: настроить драйверы, создать список команд и каналов обратной связи *;

  2. Настроить скрипты: создать функции-модификаторы для преобразования информации в переменных сервера и др *;

  3. По необходимости настроить перенаправление значений переменных сервера *;

  4. При синхронизации проектов все команды и каналы обратной связи будут автоматически спроецированы на переменные сервера (в драйвер iRidium Server). К этим переменным сможет обратиться панель управления iRidium *.

Проект для iRidium Server

В этом разделе описана работа с iRidium Studio при создании проекта для iRidium Server. iRidium Server обрабатывает данные от оборудования автоматизации, сохраняет их в базу данных и передает информацию панелям управления. Серверный проект не включает графической части - это набор скриптов и список оборудования, с которым необходимо работать.

Взаимодействие сервера и панели управления

ServerPrincipalSceemDriverLayer.png

Составляющие Сервера:

  • Драйверы - подключаются к оборудованию, хранят список переменных, которыми можно управлять. Они связаны с каналами сервера;
  • Каналы сервера - промежуточные переменные между панелями управления и каналами драйверов. Каналы сервера объединяют переменные всех драйверов в единое пространство;
  • Виртуальные переменные - хранят данные сервера и результаты работы JavaScript, не связанные с реальными переменными драйверов;
  • База данных - ведет запись истории изменения переменных сервера;
  • JavaScript - описывает сценарии, логику, расписания (интеллектуальные функции сервера), позволяет модифицировать данные при прохождении через сервер;
  • Web сервер - позволяет подключиться к iRidium Server через веб-интерфейс для просмотра состояния и настройки. Обеспечивает работу REST API , с помощью которого сторонние приложения и системы могут управлять функциями сервера по НТТР.

Управление сервером

  • i3 pro - приложение-клиент iRidium, который запускает визуализацию управления сервером. Включает:
    • драйвер iRidium Server в i3 pro - этот драйвер устанавливает соединение с сервером по TCP;
    • JavaScript в i3 pro - позволяет создать сценарии, которые работают на панели управления (например, управляют графическим интерфейсом);
    • Графический интерфейс в i3 pro - визуальный интерфейс управления оборудованием автоматизации;
  • Web-интерфейс - интерфейс управления настройками сервера, который можно открыть в браузере. Он не отображает пользовательскую визуализацию;
  • Сторонние приложения - приложения и устройства, которые могут управлять сервером, отправляя ему HTTP команды, настроенные в соответствии с REST API сервера.

Рабочая область серверного проекта

После запуска iRidium Studio и создания нового серверного проекта, вы увидите рабочую область, состоящую из:

Server2.png

  1. Drivers - список устройств и сервисов, к которым подключается i3 pro или iRidium server для управления и получения данных (здесь могут отражаться не все устройства, т.к. возможно создание устройств через JavaScript).
  2. System tokens - переменные, которые позволяют получить информацию об устройстве, на котором запущен i3 pro или iRidium server (время, тип ОС, параметры сети, экрана и др.).
  3. Project tokens - переменные, в которых можно хранить пользовательские данные между запусками i3 pro или iRidium server.
  4. Schemes - программирование логики работы iRidium server при помощи логических блоков.
  5. Script editor - JavaScript редактор, доступен для i3 pro или iRidium server. При разработке скриптов важно учитывать окружение - сервер или интерфейс визуализации, т.к. окружение определяет набор доступных методов и доступные способы обращения к данным.
  6. Routines - правила (последовательности команд и условия их запуска), которые можно запускать по расписанию или событию.
  7. Schedule - расписание событий, у которых можно настроить время срабатывания и периодичность повторения.
  8. ETS import - импорт групповых адресов из проекта ETS5 (*.knxproj).
  9. GC cloud - онлайн-база инфракрасных команд для управления аудио-видео оборудованием по ИК. Команды хранятся в формате для оборудования Global Cache.

Настройки серверного проекта

Открытие окна настроек

Чтобы открыть настройки вы можете воспользоваться любым предложенным вариантом:

Studio2019_ServerSettings_Open_1.png

  1. Нажмите правой кнопкой мыши на вкладку с именем проекта в iRidium studio и выберите пункт Settings (Настройки).

Settings5.png

  1. Нажмите на иконку "шестеренка" в панели управления iRidium Studio.

Категории настроек

В окне настроек проекта iRidium Server вы можете указать: настройки и способ подключения к серверу, координаты (для работы астротаймера), настроить уровень логирования или указать информацию о заказчике и проекте.

Setting (Настройки)

Ss_Setting.png

  1. Settings - способ подключения i3 pro к iRidium server - по IP-адресу или через промежуточный сервер (Cloud Gate), когда нужна возможность удаленной работы с сервером:
  • Type: Direct connetion - подключение i3 pro к серверу напрямую, по IP-адресу сервера. В настройках сервера укажите СОБСТВЕННЫЙ IP-адрес сервера, порт подключения (30464), при необходимости - логин и пароль подключения, которые нужно будет прописать в i3 pro для установки соединения с сервером. Debug Level определяет, насколько подробная информация будет отображена в логе сервера, где "Debug" - наиболее подробная информация.
  • Type: Remote cloud control - подключение i3 pro к iRidium server через промежуточный сервер Cloud Gate, который обеспечивает связь с сервером через интернет без настроек на роутере объекта автоматизации. Как настроить Cloud Gate?
  1. Location - широта и долгота размещения сервера для настройки астротаймера Расписаний.

Debug (Отладка)

Ss_Debug.png

  1. Когда сервер работает на аппаратной платформе, его лог нельзя увидеть так же, как в консоли на ПК. Но, лог можно переслать на ПК по протоколу SMTP. Для этого установите подходящий вам SMTP сервер на ПК, а в настройках интерфейса укажите адрес SMTP сервера.
  2. Установите необходимый уровень логирования для получения лога. От уровня логирования зависит в каком количестве и какая информация будет проходить в лог от EMERGENCY (чрезвычайная ситуация) до DEBUG (подробная информация). Более подробная информация по отладке проектов описана здесь.
  3. Так же можно задать разный уровень логирования для отдельных компонентов серверного проекта (ядро, база данных, скрипт, веб сервер). Если один из уровней логирования отдельных компонентов превышает общий уровень логирования (п.2), то общий уровень логирования принимает значение наибольшего уровня логирования отдельных компонентов.

Info (Информация)

Ss_Information.png

В информации о проекте укажите адрес и телефон заказчика, номер заказа, описание содержимого. Через какое-то время они могут пригодиться!

Связь с оборудованием

В простейшем случае применения сервера требуется подключение к оборудованию с нескольких панелей управления. Настроим передачу данных через сервер, обеспечив работу нескольких панелей управления.

В процессе решения этой задачи, мы выполним несколько действий:

  1. Создадим серверный проект;

  2. Добавим в него список драйверов, которыми нужно управлять;

  3. Настроим команды и каналы обратной связи для этих драйверов;

  4. Создадим проект для i3 pro на базе серверного проекта.

Добавление драйвера

Драйвер можно добавить в интерфейс iRidium server несколькими способами:

  • импортом файла конфигурации вашего оборудования, сканированием локальной сети. Поддерживаются (актуальный список см. в iRidium studio):
    • DuoTecno – сканирование сети;
    • HDL-BUS Pro – сканирование сети;
    • KNX (ETS, *.knxproj) – импорт файла, формирует список IP интерфейсов и групповых адресов;
    • Modbus (*.csv) – импорт файла во внутреннем формате iRidium, см. документацию для Modbus. Формирует список регистров;
    • Crestron (Simpl, *.smw) – импорт файла, формирует список джоинов;
    • iRidium JavaScript (iRidium studio, *.js) – импорт файла, позволяет добавить скрипты из одного проекта в другой;
    • iRidium project (iRidium studio, *.irpz, *.sirpz) – импорт файла, позволяет добавить драйверы из одного проекта в другой;
    • Domintell - сканирование сети;
    • Velbus - сканирование сети;
    • AMX (TPDesign, *.TP4, *.TP5) – не отображается в импорте драйверов, но проект TP4 можно открыть в студии так же, как *.irpz - файл *.TP4 будет автоматически конвертирован в формат i3 pro;
  • из базы данных , где хранится список драйверов разного типа, которые можно использовать в проекте. Команды и фидбеки необходимо будет формировать вручную;
  • создать через JavaScript . В таком случае он не будет отображаться в дереве драйверов, но будет работать при запуске i3 pro, способом, который определил разработчик. См. JS API.

Studio2019_SidePanel_Drivers_onServer.png

добавить драйвер в конфигурацию для iRidium server

Переменные в iRidium server

Переменные в iRidium server делятся на переменные драйвера и виртуальные переменные.

Переменные драйвера – это набор адресов-команд, куда можно записывать значения для отправки оборудованию, и набор адресов-фидбеков, куда драйвер будет сохранять значения, полученные от оборудования. В зависимости от протокола, драйверы имеют различную систему адресации, и настроенные команды и фидбеки позволяют удобно взаимодействовать с адресами оборудования:

Driver2.png

  1. Commands (команды) – список переменных устройства, которым нужно отправлять команды. Например, чтобы управлять реле KNX с адресом "1/0/1", нужно записать значение 0 или 1 в команду драйвера KNX с этим адресом.
  2. Feedbacks (фидбеки) – список переменных для сортировки и хранения полученных от оборудования данных. Например, реле KNX вернет значение 0 или 1 при переключении; в драйвере это значение будет доступно как фидбек с адресом "1/0/1". Значение можно отобразить в интерфейсе.
  3. Tokens (токены драйвера) – это фидбеки, которые сообщают статус соединения драйвера с устройством и важную информацию о параметрах соединения (адрес, порт подключения и др.)

Виртуальные переменные - виртуальные переменные сервера, которыми можно управлять. Не связаны напрямую с управляемым оборудованием. Вы можете создать такие переменные вручную и записать в них результаты работы приложения (числа, строки) или получить обратную связь. Данные для записи формируются в JavaScript на сервере, или с панели управления.

Для создания связи между виртуальной командой и виртуальным фидбеком (как будто есть оборудование) можно использовать параметр «Forward Value to».

Для этого:

  1. Создайте виртуальные команду и фидбек.
  2. Задайте в параметре Forward Value to виртуального фидбека ту виртуальную команду, которую хотите с ним связать

Также создание Виртуальных фидбеков возможно через инструмент массового создания на базе виртуальных команд с тем же именем, что и у команд.

При выделении нужных нужных команд в Virtual (массовое выделение через shift/ctrl) в контекстном меню доступна операция “Добавить фидбэк(и) ” с несколькими опциями:

Driver03.png

  • с Forward Value to ” - после создания фидбэка, он прописывается в “Forward Value to” команды, от которой был создан
  • без Forward Value to ” - автоматическое создание связи не происходит

Новые фидбеки создаются, в зависимости от того, в какой папке находятся изначальные команды:

  • Если изначальные команды находятся в папке “Commands” - созданные фидбэки создаются в системной папке “Feedbacks”

  • Если изначальные команды находятся в папке, созданной пользователем - созданные фидбэки создаются в той же папке, в которой находятся изначальные команды.

  • При наличии в конечной папке фидбэка с таким же именем как и создаваемый выводится окно предупреждения:

Driver04.png

  • Заменить - старый фидбэк с папке назначения удаляется, сценарий создания нового фидбэка выполняется дальше.

  • Добавить - новый фидбэк создаётся со следующим доступным порядковым номером, сценарий продолжает работать с новым фидбэком.

  • Отмена - операция прерывается, все уже сделанные изменения откатываются.

  • При наличии значения “Forward Value to” у родительской команды, выводится окно предупреждения

Driver05.png

  • Да - “FVt” родительской команды очищается и заменяется на новый фидбэк.
  • Нет - “FVt” родительской команды не меняется.
  • Отмена - операция прерывается, все уже сделанные изменения откатываются.

Работа с Virtual идентична работе с Project Tokens , использует те же правила и функции API.

Созданные в серверном проекте виртуальные переменные можно скопировать в другой серверный проект. Для этого необходимо выделить драйвер Virtual в дереве драйверов, с помощью горячих клавиш (Ctrl+C) или в меню ПКМ (Copy) скопировать и вставить виртуальные переменные в дерево драйверов в другом серверном проекте (Ctrl+V / ПКМ > Past).

  • Если в проекте назначения есть совпадающие имена переменных, то появится диалоговое окно с выбором параметров импорта:
  • Вставить только новые каналы и теги (пункт по умолчанию) - в проект будут добавлены только виртуальные переменные без повторяющихся имен.
  • Вставить все каналы и теги, заменяя параметры у повторяющихся - в проект будут добавлены все виртуальные переменные с заменой настроек. Исключения могут составлять: Forward value to (нет драйвера или команд и фидбэков с тем же именем), Script Modifier (если нет указанной функции в новом проекте). Эти настройки будут стерты при переносе.

Virtual3.png

Commands / Virtual Commands

Server3.png

Основные параметры настройки команд:

  • Name - имя канала;
  • Path to server tag - путь к каналу для обращения из скрипта;
  • Script Modifier - скриптовая функция-модификатор, которая позволяет выполнить промежуточное преобразование значений перед отправкой их в канал драйвера или после получения их с панели управления и скрипта;
  • Description - описание переменной, опционально;
  • Forward value to - перенаправление значения из одного тега в другой (подробнее здесь);
  • On Server - включить / выключить связь команды с панельным проектом (в выключенном состоянии команда не будет отображаться в панельном проекте).

Feedbacks / Virtual Feedbacks

Server4.png

  • Name - имя тега;

  • Path to server tag - путь к тегу для обращения из скрипта;

  • Script Modifier - выполнить JavaScript функцию каждый раз при активации тега - это позволяет модифицировать полученные данные перед передачей на панель управления;

  • Access - тип переменной:

    • Public - можно изменить с панели управления;
    • Private - можно изменить только с сервера;
  • Persist - восстановить последнее значение переменной в случае перезагрузки сервера;

  • Description - описание (опционально);

  • Store In DB – включить сохранение переменной в базу данных, выбрать формат данных

    • None – запись в базу выключена
    • Signed 32bit – записывать как целое число со знаком
    • Float 64bit – записывать как число с плавающей запятой
    • String UTF8 – записывать как строку
  • Load On Start - записать последнее значение переменной из базы данных в фидбек при запуске сервера;

  • DB Save Strategy - стратегия сохранения данных: выберите тип события, при котором создается запись в базу:

    • Deadband – сохранение при изменении переменной на значение, отличное от предыдущего на указанную величину или больше.
      • Deadband (значение) – минимальное изменение переменной, при котором производится запись в базу. В стратегии Deadband: 0, новая запись формируется при любом отличии получаемых значений, и не формируется, если в переменную повторно приходит одно и то же число.
    • Interval – периодическое сохранение. Запись создается с указанным временным интервалом;
      • Interval (значение) – выберите интервал записи от 5 секунд до 1 часа, или укажите вручную (Custom) в мс. Если в Store In DB указана строка (String UTF8), запись будет формироваться 1 раз в минуту, настроить более частое сохранение нельзя (используйте стратегию Deadband);
      • Interval Value - значение интервала (минимально 1);
      • Interval Units - единицы измерения;
  • Forward value to - перенаправление значения из одного тега в другой (подробнее здесь);

  • On Server - включить / выключить связь тега с панельным проектом (в выключенном состоянии тег не будет отображаться в панельном проекте и учитываться в лицензии).

Сохранение по интервалу удобно использовать для переменных, которые изменяются плавно и достаточно инертны, например – температура и влажность воздуха.

Сохранение "по изменению" подходит для переменных, у которых важно не пропустить момент изменения. Например, можно записать в базу включения и выключение света, изменения скорости вращения вентилятора.

Device Tokens

Server5.png

Токены отображают статус подключения к оборудованию:

  • Online - состояние подключения к управляемой системе (Online/Offline = 1/0);
  • Status - статус подключения к системе (Offline/Connecting/Online/Waiting = 0...3);
  • Host - доменное имя удаленной системы;
  • HostPort - порт на удаленной системе, к которому подключается i3 pro;
  • IP - IP-адрес управляющей панели;
  • HostIP - IP-адрес удаленной системы, к которой подключен i3 pro;
  • Port - локальный порт клиента, через который осуществляется связь с удаленным устройством.
  • CPU - % загрузки процессора сервера;
  • RAM - % загрузки оперативной памяти сервера;
  • Storage - % загрузки дискового пространства сервера;
  • GCrate (Garbage Collector Rate) - параметр, характеризующий работу garbage collector: количество срабатываний за последние 24 часа. Если garbage collector не срабатывает, обновляется каждый час;
  • GCtime (Garbage Collector Time) - параметр, характеризующий работу garbage collector: длительность работы GC во время последнего его срабатывания, в секундах;
  • ClientCount - кол-во подключенных панелей (сколько онлайн);
  • License - статус лицензии (0 - No License Found / 1 - Commercial / 2 - Trial / 3 - Test mode / 4 - Offline / 5 - License is expired).

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

Модификация данных на сервере

Модификация - изменение полученных данных перед отправкой по назначению: оборудованию или на панели управления.

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

  • Если функция модифицирует канал сервера: значение, полученное каналом от панели управления будет пересчитано в скрипте, и только потом отправлено драйверу;
  • Если функция модифицирует тег сервера: значение, полученное тегом от драйвера будет пересчитано в скрипте, и только потом отправлено на панель управления.

Пример: графические элементы на панели управления регулируют переменную в диапазоне от 0 до 100. Сервер приводит эти значения к 0...255 с помощью модификаторов, и только потом отправляет драйверу (оборудованию автоматизации): ModifyJS.png

Функцию-модификатор нужно создать в редакторе скриптов и указать в свойствах переменной, строка Script Modifier:

function modify_send (in_Type, in_Name, in_Value)
{
in_Value *= 255/100;
return in_Value;
}
function modify_receive (in_Type, in_Name, in_Value)
{
in_Value *= 100/255;
return in_Value;
}

Server12.png

Канал или тег, вызвавший функцию, передает ей аргументы:

  • in_Type - тип переменной, 0 - канал, 1 - тег обратной связи;
  • in_Name - полное имя команды или тега;
  • in_Value - значение команды или тега.

Таким образом, мы производим обработку данных при прохождении через сервер в обе стороны (от панели управления к оборудованию и обратно).

  • Модифицированное значение (in_Value) возвращаем переменной с помощью команды return in_Value;

  • Возвращать модифицированное значение не обязательно - можно просто выполнить разовое действие. Тогда начальное значение, полученное функцией, не попадет к адресату, а только приведет к выполнению функции.

  • В веб-интерфейсе сервера отображаются модифицированные значения тегов и каналов, то есть:

  • Значения тегов в веб-интерфейсе получаются в результате работы функции Script Modifier;

  • Значения, заданные в веб-интерфейсе командой "Set", отправляются на вход функции Script Modifier перед отправкой в канал на физическое устройство.


Примеры модификаторов

Driver Tokens отображают статус подключения к оборудованию автоматизации - они доступны только на чтение.

/*<translate>
<!--T:59-->
Токен Online любого драйвера может вернуть только значение 1 = Online и 0 = Offline.
Заменим 1 на текущее время и фразу " Connection established"; 0 на время и " Connection closed"
Вернем результат преобразования тому, кто вызвал функцию</translate>
*/
function onlineModify (in_Type, in_Name, in_Value)
{
if (in_Value == 1)
{
in_Value = IR.GetVariable("System.Time.24")+" Connection established";
return in_Value;
} else
{
in_Value = IR.GetVariable("System.Time.24")+" Connection closed";
return in_Value;
}
}

Каналы и теги драйверов связаны с переменными сервера, которые можно модифицировать. Привязать модификатор к команде драйвера нельзя - можно привязать его только к связанному с ней каналу сервера.

При выполнении команды, ей нужно передать значение (иногда значение не нужно, в этом случае передается пустая строка). Это значение модифицируется перед отправкой оборудованию:

/*<translate>
<!--T:62-->
В канал приходит значение в диапазоне 0-100
Приведем это значение к диапазону 0-255, округлим и отправим оборудованию</translate>
*/
function rangeModify (in_Type, in_Name, in_Value)
{
in_Value *= 255/100;
return in_Value.toFixed(0);
}

Driver Tags

/*<translate>
<!--T:63-->
Канал принимает значения в диапазоне 0-255
Приведем значение к диапазону 0-100, округлим и вернем в канал обратной связи</translate>
*/
function rangeModifyBack (in_Type, in_Name, in_Value)
{
in_Value *= 100/255;
return in_Value.toFixed(0);
}

Виртуальные переменные сервера на стороне панели управления выглядят как каналы и теги сервера. В переменную можно отправить значение value, на основе которого вы можете сформировать команду и отправить ее оборудованию автоматизации:

/*<translate>
<!--T:65-->
команда DVD плейеру имеет вид: "VOLUME XX", ХХ - это громкость от 00 до 100
Громкость может состоять из двух или трех симовлов, т.е. 00, 01, 02, ... 100 (ASCII)
Получим значение 0-100 с панели управления (с обычного Level Item), сформируем и отправим команду</translate>
*/
var driver = IR.GetDevice("AV & Custom Systems (TCP)");
function volume (in_Type, in_Name, in_Value)
{
if (in_Value < 10)
{
in_Value = "0"+in_Value;
driver.Send(["VOLUME "+in_Value+"\r\n"]);
} else
{
driver.Send(["VOLUME "+in_Value+"\r\n"]);
}
}

Virtual Tags

Виртуальные теги сервера на панели управления они выглядят как каналы обратной связи. В них можно записать значение из скрипта, а затем обработать его функцией модификатором. Финальное значение будет доступно для чтения с панели управления.

/*<translate>
<!--T:67-->
Виртуальный тег не получает значений напрямую от оборудования
Поэтому мы запишем значение в тег из скрипта, когда это необходимо</translate>
*/
IR.SetVariable("Server.Tags.Virtual 1", 100)
/*<translate>
<!--T:68-->
обработаем значение с помощью функции модификатора</translate>
*/
function value (in_Type, in_Name, in_Value)
{
in_Value = "brightness: "+in_Value+"%";
return in_Value; // brightness: 100%
}

Запись и чтение переменных

Переменные сервера - это Tokens, Commands, Feedbacks, а также Virtual Commands и Virtual Feedbacks. Их состояние можно изменять и запрашивать с панелей управления и из скриптов, размещенных на Сервере.

Запись и чтение производится с помощью JavaScript команд:

  • IR.GetVariable(name) *IR.SetVariable(name, value)

Для панели управления переменные сервера выглядят как команды и каналы драйвера. Поэтому для них применимы методы API iRidium для драйверов.

Записать значение в переменную

  1. Скопируйте полное имя переменной из вкладки Devices;
  2. Используйте метод IR.SetVariable, чтобы записать в переменную значение:

Синтаксис

IR.SetVariable("Server.Path.Name", value)

на входезначениеописание
Server.Path.NameServer.Channels.Command 1type: string
полное имя переменной сервера.
value100type: string
значение для записи в переменную сервера., number, boolean
на выходе
успешностьtruetype: boolean
успешность записи.

Пример

![Server13.png](/img/dev-iridi/IRidium_studio_2019_iRidium_Server/Server13.png)

IR.AddListener(IR.EVENT_START, 0, function()
{
IR.SetVariable("Server.Channels.Command 1", 100);
});

Примечания

Подсказка

метод можно применить к каналам и тегам сервера.

Прочитать значение переменной

  1. Скопируйте полное имя переменной из вкладки Devices;
  2. Используйте метод IR.GetVariable, чтобы прочитать из переменной значение:

Синтаксис

IR.GetVariable("Server.Path.Name")

на входезначениеописание
Server.Path.NameServer.Channels.Command 1type: string
полное имя переменной сервера.
на выходе
value100type: string, number, boolean
значение в переменной сервера.

Пример

![Server13.png](/img/dev-iridi/IRidium_studio_2019_iRidium_Server/Server13.png)

IR.AddListener(IR.EVENT_START, 0, function()
{
IR.GetVariable("Server.Channels.Command 1");
});

Примечания

Подсказка

метод можно применить к каналам и тегам сервера.

Шлюзование данных между виртуальным каналом и тегом

Виртуальная команда Virtual Channel (Server.Channels.Virtual 1) изначально не связана с виртуальным тегом обратной связи Virtual Tag (Server.Tags.Virtual 1), поэтому вы можете изменить значение виртуальной переменной на сервере, но оно не вернется на панель в виде значения обратной связи.

Чтобы вернуть в i3 pro значение, отправленное из i3 pro на сервер, вам нужно создать скриптовую функцию (Script Modifier). Эта функция возьмет значение, отправленное из i3 pro и запишет в виртуальный тег обратной связи сервера. Именно это изменение увидит панель управления.

скачать пример

ModifyFunc_Scheme_server.png

'''

Чтобы настроить передачу данных от виртуальной команды тегу:'''

  1. Создайте новый проект для iRidium Server.
  2. Создайте виртуальный канал (команду) и тег (канал обратной связи) с одинаковыми именами. Например, "Virtual 1".
  3. Откройте редактор скриптов (кнопка JS на панели инструментов), и создайте новый файл скрипта. Добавьте в него функцию модификатор:
function virtual_to_virtual (in_Type, in_Name, in_Value) 
{
var namepart = in_Name.split(".");
IR.SetVariable("Server.Tags." + in_Name, in_Value);
return in_Value;
}
  1. Вернитесь к виртуальной команде "Virtual 1" (Server.Channels.Virtual 1), выберите в выпадающем списке параметра Script Modifier функцию virtual_to_virtual .

Server14.png 5. Все готово, при записи значения в Server.Channels.Virtual 1, это значение автоматически будет передано в Server.Tags.Virtual 1, и может быть отображено панелью управления как канал обратной связи.


Шлюзование данных между драйверами

Задача сквозного шлюзования данных - передача информации между не связанными системами автоматизации. Выполнить шлюзование позволяют функции модификаторы.

скачать пример

Пример: при изменении регистра в контроллере Modbus передать его новое значение групповому адресу KNX. значение перед отправкой в можно модифицировать (например, умножить на 100):

function gate_to_modbus (in_Type, in_Name, in_Value) 
{
IR.SetVariable("Server.Channels.Modbus TCP 2.Channel 12", in_Value*100);
return in_Value;
}

Функция address_1 следит за изменением канала обратной связи Modbus драйвера, выберите её в поле Script серверного тега Modbus.

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

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;
}

Активация сценария с панели управления

Сценарий - это набор периодически выполняемых действий по активации необходимого события.

  • В качестве основного способа выполнения периодических действий, используйте Расписания и Правила . Но, если их функционал недостаточен, можно воспользоваться скриптами.

Активируем скриптовый сценарий при отправке значения с панели управления в виртуальный канал сервера. Для этого подпишемся на изменения канала в скриптах сервера:

Пример сценария:

IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function (name, value)
{
if (name == "Server.Channels.Scene 1" && value ==1)
{
IR.SetVariable("Server.Channels.KNX Router (KNXnet/IP).Address 1", 100);
IR.SetVariable("Server.Channels.KNX Router (KNXnet/IP).Address 2", 75);
IR.SetVariable("Server.Channels.KNX Router (KNXnet/IP).Address 3", 0);
}
});
IR.SubscribeTagChange("Server.Channels.Scene 1");

Чтобы выполнить такой сценарий, отправьте с панели управления значение 1 в канал сервера "Server.Channels.Scene 1".

  • В проекте можно создать только один глобальный слушатель.(IR.SetGlobalListener()). Все операции нужно производить внутри одного слушателя. Количество подписок практически не ограничено.

Периодические действия

  • В качестве основного способа выполнения периодических действий, используйте Расписания и Правила . Но, если их функционал недостаточен, можно воспользоваться скриптами.

Пример 1: самый простой вариант - периодические действия без возможности настройки. Создаем набор таймеров на сервере, их нельзя посмотреть в клиенте или изменить время срабатывания:

// if your another JS files includes  "IR.SetGlobalListener()"  
// you have to add the code inside of previous IR.SetGlobalListener() and delete the listener from this file!
// if you are not sure that you are able to do it yourself please contact to support@iridiummobile.ru
IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function (name, value)
{
if (name == "System.Time.Minutes")
{
// SET UP PERIODICAL ACTIONS:
// start hour, start minute, duration of process (ms), channel full name, start value, stop value
// if you don't want to stop process, add "no" instead of stop value
check_timer (10, 45, 60000, "Server.Channels.KNX Router (KNXnet/IP).Pump 1", 1, 0); // timer 1
check_timer (14, 30, 480000, "Server.Channels.KNX Router (KNXnet/IP).Pump 2", 1, "no"); // timer 2
// you can add more
}

// do not edit the other part, you need only to add the needed timers in above
function check_timer (hours, minutes, duration, channel, start_value, stop_value)
{
if (IR.GetVariable("System.Time.Hour") == hours && IR.GetVariable("System.Time.Minutes") == minutes)
{
function stop ()
{
IR.GetServer().Set(channel, stop_value);
IR.Log("process at "+hours+":"+minutes+" stopped");
}
IR.GetServer().Set(channel, start_value);
IR.Log("process at "+hours+":"+minutes+" started");
if (stop_value != "no")
{
IR.SetTimeout(duration, stop);
}
}
}
});

IR.SubscribeTagChange("System.Time.Minutes");

Пример 2: скрипт на сервере проверяет время каждую минуту. Если время совпало со временем будильника, настроенного на определенный час и минуту в приложении-клиенте, и если будильник активен, то скрипт выполнит набор действий в системе автоматизации (можно включить свет и начать воспроизведение музыки в комнате).

Для установки времени срабатывания, нужно с панели управления отправить значения в переменные сервера.

Чтобы все панели управления могли получить информацию о времени, на которое настроен будильник, и его состоянии, нужно записать установки будильника в виртуальные теги сервера.

скачать: проект для сервера и проект для клиента

Пример 3: опирается на использование функций IR.SetInterval() и IR.ClearInterval(): показывать напоминание каждые 5 секунд, пока событие не завершится:

скачать: проект для сервера и проект для клиента

  • не воспринимайте эти проекты как готовое решение, они призваны продемонстрировать взаимодействие сервера и приложения-клиента.

Запросы к базе данных

База данных SQL формируется на iRidium Server при создании серверного проекта.

Если вы работаете с несколькими проектами и заменяете их на сервере, в каждом проекте создается файл системной базы. Также можно создать свою, пользовательскую базу:

  • Системная база .

    • запись в базу производится только через настройки переменных сервера в iRidium Strudio;
    • можно читать с помощью специальных SQL запросов;
  • нельзя редактировать и удалять.

  • Пользовательская база

    • запись в базу производится только через JavaScript;
    • можно читать с помощью специальных SQL запросов;
    • можно редактировать и удалять с помощью JavaScript.

Где найти системную базу:

Путь к файлу базы можно найти через web-интерфейс Сервера, вкладка System > Database.

Как сохранить данные в системную базу:

Записать в базу можно Driver Channel, Driver Tags, Virtual Channel, Virtual Tag - переменные сервера. Поэтому и настройки сохранения есть только у переменных сервера. Если хотите сохранить канал драйвера - выберите его проекцию на переменные сервера - вы увидите настойки сохранения в базу:

Server15.png

  • Name - имя переменной сервера;
  • Path to server tag - полное имя переменной, можно использовать для обращения из скрипта и определения типа;
  • Script Modifier - JavaScript функция-модификатор, обрабатывает переменную перед отправкой на панели управления;
  • Access - доступ к переменной с панелей управления:
    • Public - разрешен,
    • Private - запрещен;
  • Persist - вернуть последнее значение переменной в случае перезагрузки сервера;
  • Description - описание переменной для упрощения ее идентификации (не обязательно);
  • Store In DB - формат сохранения переменной в базу данных:
    • None - не сохранять,
    • Signed 32bit - сохранять как целое число,
    • Float 64bit - сохранять как число с плавающей запятой,
    • String UTF8 - сохранять как строку;
  • Load On Start - восстановить значение переменной из базы данных в случае перезагрузки сервера (в отличие от параметра Persist = Yes будет восстановлено не самое последнее значение, а последнее значение, сохранённое в базе данных);
  • DB Save Strategy - событие, при котором создается запись в базу:
    • Deadband - минимальное изменение. Запись создается, если переменная изменилась больше, чем на указанное значение,
    • Interval - периодическая фиксация. Запись создается с указанным временным интервалом;
      • Interval Value - время интервала,
      • Interval Units - единица времени, в которой измеряем интервал (Ms, Sec и др.);
  • Forward value to - перенаправление значения из одного тега в другой (подробнее здесь).

Сохранение можно настроить по двум принципам:

  • с определенной периодичностью по времени;
  • при изменении переменной более, чем на указанное значение - целое или дробное.

Первый способ удобно использовать для переменных, которые изменяются плавно и достаточно инертны, например, температура и влажность воздуха. Второй способ идеален для переменных, которые меняются нечасто, но значительно. Например, можно писать в базу факт включения и выключения света. При этом, запись по изменению сформирует гораздо меньше записей в базе и не позволит пропустить событие.

Доступ к базам данных Сервера производится с помощью специализированных SQL запросов. Запросы позволяют получать данные по заданным условиям.

Пользовательская база данных:

Редактируемую базу данных можно создать с помощью JavaScript. Запись, чтение, редактирование данных в пользовательской базе производится с помощью SQL запросов.

Доступ к пользовательской базе через JavaScript:

Руководство предоставляет инструкции по работе с системной и пользовательской базами данных.

Справочник включает список всех методов для работы с базами.


Построение графиков

Для возможности отображения графиков изменения переменных, iRidium сохраняет значения этих переменных в базу данных SQL, которая хранится на iRidium Server.

Когда нужно построить график изменения переменной, приложение i3 pro формирует запрос к базе за определенный период времени, и отображает результат на графике.

Когда сохранение в базу настроено, вы можете отразить переменную в i3 pro в виде графика.

Синхронизация панели управления и сервера

Интерфейс визуализации лучше всего создавать, когда готов серверный проект: настроена связь с оборудованием автоматизации, сформированы виртуальные теги и скрипты для них на стороне сервера. Импорт серверного проекта позволит быстро получить полный набор управляемых переменных для проекта визуализации. Останется привязать переменные к графическим элементам.

Сервер может работать с несколькими панелями управления iRidium, на которые загружены разные, или один и тот же проект. Визуализация - графический интерфейс для управления оборудованием автоматизации, запускается только в приложении i3 pro на панели управления (подробнее о создании проекта визуализации в статье Инструменты визуализации).

Подключение

Настройте проект для сервера - сформируйте список управляемых устройств и переменных. Проект сервера нужно импортировать в проект визуализации iRidium и настроить графические элементы для управления переменными сервера.

Панели iRidium подключаются к iRidium Server и передают команды. Сервер выполняет команды, меняя состояние переменных оборудования автоматизации, к которому подключен:

ServerSceem.png


Импорт переменных из Server Project

Есть несколько способов добавить драйвер iRidium Server в проект панели управления.

Быстрое создание проекта

Правой кнопкой мыши нажмите на проект Сервера и выберите пункт "Create panel project":

Server8.png

Будет создан панельный проект с пустой страницей и драйвером iRidium Server, в который перейдут все теги сервера. С ними можно будет работать как с командами и каналами обратной связи - привязывать к элементам для управления и отображения, обрабатывать с помощью iRidium Script.

Server9.png

При внесении изменений в серверный проект, вы можете быстро синхронизировать его с панельным проектом. Выберите драйвер iRidium Server и нажмите Synchronize .

Файл серверного проекта, с которым будет синхронизироваться драйвер, можно заменить в строке Source Project.

Добавление iRidium Server в готовый проект визуализации

Если вы уже создали проект визуализации, и хотите добавить в него связь с Сервером:

Server10.png

  1. Добавьте драйвер iRidium Server из базы данных;
  2. Укажите путь к проекту *.sirpz, с которым нужно синхронизировать проект визуализации;
  3. Вы получите драйвер iRidium Server с актуальным списком команд и каналов обратной связи.
  • Если серверный проект был ранее создан, то открыть его можно, нажав ПКМ по панельному проекту и выбрав пункт Open Server Project .

OpenServerProject.png

  • Если в настройках драйвера iRidium Server не был указан необходимый серверный проект, то появится окно с предложением открыть его в iRidium Studio через проводник.

OpenServerProject2.png


Commands & Feedbacks

Как результат импорта мы имеем два уровня настроек:

  • iRidium Server - драйвер, объединяет в себе список переменных сервера. Здесь настроим IP адрес и другие параметры подключения к серверу;
  • Commands и Feedbacks - команды и каналы обратной связи, которые позволяют управлять переменными. Команды - переменные, доступные на запись, каналы - на чтение.

Команды и каналы обратной связи нужно привязать к графическим элементам проекта для управления оборудованием:

  • Команда привяжите к графическому элементу с указанием значения, которое нужно передать адресу в шине при нажатии на графический элемент;
  • Канал обратной привяжите к графическому элементу, чтобы отобразить состояние группового адреса.

Чтобы связать команду или канал с графическим элементом, используйте метод drag&drop - перетягивание.

Server6.png

Настройка подключения к серверу

Server7.png

Настройки подключения к iRidium Server:

  • Source Project - связанный серверный проект;
  • Log Level - уровень логирования: от EMERGENCY (только ошибки) до DEBUG (подробная информация);
  • Host - IP адрес сервера или доменное имя. Можно использовать Local host 127.0.0.1, если сервер и визуализация работают на одном устройстве;
  • Port - TCP порт подключения к серверу, по умолчанию: 30464 ;
  • Wait for Connect (ms) - время ожидания связи (иначе подключаемся еще раз);
  • '''Wait for Data (ms)" - время ожидания ответа от оборудования (иначе повторяем запрос и проверяем связь). Поставьте 0, если нужно, чтобы драйвер не отключался от оборудования при отсутствии данных;
  • Keep Alive - время удержание соединения в секундах;
  • Mode - локальное / удаленное управление (подробнее здесь).

Смена настроек подключения

Возможность смены параметров подключения нужна, если вы отключаетесь от Wi-Fi сети объекта автоматизации и начинаете использовать 3G или другую Wi-Fi сеть. Чтобы управление продолжило работать, нужно переключиться с локального на публичный IP адрес интернет-маршрутизатора.

Переключение не происходит автоматически, вам нужно будет нажать на клавишу выбора режима соединения. Для возможности удаленного доступа необходимо сделать порты управления системой автоматизации публичными. Для этого настраивают службу Port Forwarding на интернет-маршрутизаторе. Защищенное соединение может обеспечить VPN.

  1. Скачайте шаблон (*.js) (правая кнопка: "Сохранить объект как..."), добавьте шаблон в редактор скриптов клавишей (+) Add script from file .

  2. Настройте параметры скрипта, как показано в примере:

:**function**  Internal_1() {
::IR.GetDevice(Driver).SetParameters(Parameters1);
::}
:**function** External_1() {
::IR.GetDevice(Driver).SetParameters(Parameters2);
::}

Скопируйте имя драйвера (Devices > Name ), список параметров нужно скопировать из примера в точности.

  1. Выберите кнопку, которая будет отвечать за переключение Internal и External параметров. Откройте Macros Editor для события Release (Programming > Release (+) ), выберите команду Script Call и добавьте ее двойным кликом. Выберите имя функции, которую вызовет кнопка:

Server11.png

Теперь каждое нажатие на кнопку будет применять соответствующий набор настроек подключения.


Загрузка проекта на Сервер

Загрузка серверного проекта (*.sirpz) на сервер осуществляется аналогично загрузке проекта в клиент i3 pro, т.е. при помощи приложения iRidium Transfer на вашем ПК.

Transfer находит и отображает в своем интерфейсе все запущенные Серверы в пределах IP подсети. С помощью Transfer вы передаете проект конфигурации и лицензию на iRidium Server.

См. Как запустить проект на iRidium Server.