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

Составляющие Сервера
Драйверы- подключаются к оборудованию, хранят список переменных, которыми можно управлять. Они связаны с каналами сервераКаналы сервера- промежуточные переменные между панелями управления и каналами драйверов. Каналы сервера объединяют переменные всех драйверов в единое пространствоВиртуальные переменные- хранят данные сервера и результаты работы JavaScript, не связанные с реальными переменными драйверовБаза данных- ведет запись истории изменения переменных сервераJavaScript- описывает сценарии, логику, расписания (интеллектуальные функции сервера), позволяет модифицировать данные при прохождении через серверWeb сервер- позволяет подключиться к iRidium Server через веб-интерфейс для просмотра состояния и настройки. Обеспечивает работу REST API , с помощью которого сторонние приложения и системы могут управлять функциями сервера по НТТР
Управление сервером
i3 pro- приложение-клиент iRidium, который запускает визуализацию управления сервером. Включает:-
- драйвер iRidium Server в i3 pro - этот драйвер устанавливает соединение с сервером по TCP
-
- JavaScript в i3 pro - позволяет создать сценарии, которые работают на панели управления (например, управляют графическим интерфейсом)
-
- Графический интерфейс в i3 pro - визуальный интерфейс управления оборудованием автоматизации
Web-интерфейс- интерфейс управления настройками сервера, который можно открыть в браузере. Он не отображает пользовательскую визуализациюСторонние приложения- приложения и устройства, которые могут управлять сервером, отправляя ему HTTP команды, настроенные в соответствии с REST API сервера
Шаги настройки серверного проекта зависят от поставленных задач автоматизации, поэтому могут отличаться (какие-то шаги можно пропустить).
Общим является то, что сервер подключается к определенному оборудованию автоматизации, поэтому связь с оборудованием мы настроим в первую очередь.
I/O. Связь с оборудованием
В простейшем случае применения сервера требуется подключение к оборудованию с нескольких панелей управления. Настроим передачу данных через сервер, обеспечив работу нескольких панелей управления
В процессе решения этой задачи, мы выполним несколько действий:
- создадим серверный проект
- добавим в него список драйверов, которыми нужно управлять
- настроим команды и каналы обратной связи для этих драйверов
- создадим проект для i3 pro на базе серверного проекта
Добавление драйвера
Создайте новый проект для сервера: File > New > New Server Project.... Откройте вкладку I/O
- информацию о настройке каждого драйвера и его каналов вы найдете в разделе Управление оборудованием
Создайте проект для сервера:
Из базы данных
Перетяните драйвер из Device Panel в окно I/O > DRIVERS:

Настройте драйвер: укажите Host, Port и др. параметры подключения
Импорт из файла конфигурации
iRidium поддерживает импорт из файлов:
ETS Project (.pr3, *.pr4, *.pr5, *.knxproj) - импорт групповых адресов из ETS (KNX) Simpl project (.smw) - импорт джоинов Crestron Clipsal project (.xml) - импорт групп Clipsal iRidium Archive Project (.irpz) – импорт драйверов из проектов iRidium iRidium Server Project (.sirpz) – импорт драйвера iRidium Server из проекта iRidium Modbus CSV Files (.csv) - импорт регистров Modbus из csv таблицы
Поиск устройств в локальной сети
iRidium поддерживает сканирование локальной сети для обнаружения оборудования определенного типа. Сканирование позволяет быстро создать список устройств и команд для них:
*HDL-BUS Pro Net (UDP) – оборудование в системе HDL-BUS Pro *Lutron Net (UDP) – оборудование в системе Lutron *DuoTecno (TCP) – оборудование системе DuoTecno *Domintell (UDP) – оборудование в системе Domintell
На основе проекта визуализации
Если у вас уже есть проект для панели управления (.irpz), созданный в iRidium V2 или V3, вы можете автоматически сформировать проект для сервера. В результате, вы получите проект для панели управления, который подключается к серверу, и проект для сервера, который подключается к оборудованию, настроенному ранее в проекте визуализации. Такая конвертация - самый быстрый способ получить серверное решение.

- Будьте внимательны, iRidium server в отличие от i3 pro не поддерживает:
- графический интерфейс,
- токены проекта и
- большинство системных токенов.
Поэтому обращения к графическим элементам и токенам приведут к сбою работы скрипта. Следует вручную исправить скрипт: удалить ошибочные обращения, обращения к токенам проекта можно заменить на обращения к виртуальным каналам и тегам.
Переменные драйвера и сервера
Вкладка I/O серверного проекта визуально разделена на две части: DRIVERS и IRIDIUM SERVER:
- во вкладке
DRIVERSвы видите настройки подключения к оборудованию автоматизации. - во вкладке
IRIDIUM SERVERвы видите проекцию переменных оборудования автоматизации на переменные сервера. С помощью переменных сервера мы объединяем все каналы оборудования в единое пространство имен. Панель управления будет обращаться к переменным сервера, а те, в свою очередь, передадут данные на оборудование.
Проекция драйвера на переменные IRIDIUM SERVER состоит из вкладок:
Driver Tokens- переменные драйвера. Отображают статус подключения к оборудованиюChannels- переменные, которыми можно управлятьTags- переменные, от которых можно получить обратную связь
Записывая значение в канал Сервера, мы активируем команду оборудованию. То же с обратной связью - она будет передана из Feedback драйвера в соответствующий тег Сервера.
- Переменные сервера можно записывать, читать и модифицировать с помощью JavaScript. Модификация означает промежуточное преобразование данных на сервере - перед отправкой команды оборудованию, или перед передачей обратной связи на панель управления.
Переменные драйвера. Отображают статус подключения к оборудованию

- Online - состояние подключения к управляемой системе (Online/Offline = 1/0)
- Status - статус подключения к системе (Offline/Connecting/Online/Waiting = 0...3)
- Host - доменное имя удаленной системы
- HostPort - порт на удаленной системе, к которому подключается i3 pro
- IP - IP-адрес управляющей панели
- HostIP - IP-адрес удаленной системы, к которой подключен i3 pro
- Port - локальный порт клиента, через который осуществляется связь с удаленным устройством
Токены драйвера хранят информацию о подключении сервера к управляемому оборудованию. Их можно сохранить в базу данных и использовать для построения графиков или вывода лога.
Commands / Channels - переменные, с помощью которых можно управлять оборудованием.
Virtual Channels - виртуальные переменные сервера, которыми можно управлять. Не связаны напрямую с управляемым оборудованием. Вы можете создать такие переменные вручную и записать в них результаты работы приложения: числа, строки, массивы. Данные для записи формируются в JavaScript на сервере, или с панели управления.
Работа с Virtual идентична работе с Project Tokens, использует те же правила и функции API.
Commands / Channels
Virtual Channels
- Name - короткое имя канала
- Full Name - полное имя канала сервера, используйте для обращения к переменной из JS на сервере. Будет отображаться в панельном проекте.
- Description - описание переменной, опционально
- Script Modifier - скриптовая функция-модификатор, которая позволяет выполнить промежуточное преобразование значений перед отправкой их в канал драйвера или после получения их с панели управления и скрипта.
Feedbacks / Tags - переменные, от которых нужно получить обратную связь.
Virtual Tags - виртуальные переменные сервера, от которых можно получить обратную связь. Не связаны напрямую с управляемым оборудованием.
Feedback / Tags
Virtual Tags
- Name - короткое имя
- Full Tag Name - полное имя для обращения из скрипта
- Description - описание (опционально)
- Access - тип переменной:
-
- Public - можно изменить с панели управления,
-
- Private - можно изменить только с сервера
- Script Modifier - выполнить JavaScript функцию каждый раз при активации тега - это позволяет модифицировать полученные данные перед передачей на панель управления
- Persist - восстановить последнее значение переменной в случае перезагрузки сервера
- Store In DB - сохранение всех измененных значений в базу данных
- Load on Start - при запуске сервера, берет из базы данных последнее значение этого тега (настройка появляется, если значение сохраняется в базу данных).
Создание панельного проекта
Когда драйверы в серверном проекте настроены, вы можете создать проект для панели управления - визуализацию управления сервером.
Проект генерируется на базе серверного, т.к. должен содержать информацию о переменных сервера.
Есть несколько способов добавить драйвер iRidium Server в проект панели управления.
Быстрое создание проекта
Правой кнопкой мыши нажмите на проект Сервера и выберите пункт "Create Panel Project"

Будет создан панельный проект с пустой страницей и драйвером iRidium Server, в который перейдут все теги сервера. С ними можно будет работать как с командами и каналами обратной связи - привязывать к элементам для управления и отображения, обрабатывать с помощью iRidium Script.
При внесении изменений в серверный проект, вы можете быстро синхронизировать его с панельным проектом. Выберите драйвер iRidium Server и нажмите Sinc with Source .
Файл серверного проекта, с которым будет синхронизироваться драйвер, можно заменить в строке Source Project
Добавление iRidium Server в готовый проект визуализации
Если вы уже создали проект визуализации, и хотите добавить в него связь с Сервером:

- добавьте драйвер iRidium Server из базы данных
- укажите путь к проекту *.sirpz, с которым нужно синхронизировать проект визуализации
- вы получите драйвер iRidium Server с актуальным списком команд и каналов обратной связи.
- Когда основа для проекта визуализации готова, можно перейти к разделу Визуализация управления iRidium Server - в нем описаны настройки управления переменными сервера.
Если сервер, в вашем случае, должен не только предавать данные на панели управления, но и модифицировать их, запускать сценарии, сохранять базу данных и т.д, изучите остальные разделы инструкции:
Schedule. Расписания
Раздел Schedule в серверном проекте - это планировщик, реализованный в виде расписания с событиями. События могут срабатывать однократно или с заданной периодичностью.
События планировщика используют для инициации команд, созданных в разделе Routine (в списке сценариев). Событие в расписании может повторяться с периодичностью от 1 дня до 1 раза в несколько лет.
Нажмите на вкладку Schedule в проекте iRidium Server - окно настройки событий в расписании. В расписании можно создать любое число событий:

- добавить событие
- удалить событие. При этом перестанут работать сценарии, для которых это событие использовалось как условие срабатывания
- изменить настройки события
Настройки
-
Name - название события
-
Description - краткое описание (не обязательно)
-
Start - дата и время начала события
-
Finish - дата и время завершения события. Галочка "Specify the Date" по умолчанию снята, это значит, что событие закончится в тот же день, что началось. Поставив галочку, вы можете указать дату окончания события.
-
Repeat - нужно ли повторять событие. Если нужно, указывается интервал повторения события. Примеры и описание настроек повторения см. ниже
-
End - когда завершить повторение события (если включено повторение)
-
- Never - никогда
-
- Date - в указанную дату
Астротаймер
Астротаймер предназначен для создания расписаний и правил, связанных с восходом и закатом Солнца. Например, Вам необходимо создать расписание, по которому уличное освещение будет включаться на закате и отключаться на рассвете.
В таком случае можно использовать простое фотореле, но у него есть ряд недостатков:
- за состоянием фотодатчика надо следить (если загрязнится, то свет будет гореть и днем)
- если появится паразитная засветка датчика, то освещение не включится, когда это необходимо
- нельзя включать свет с опережением\запаздыванием относительно уровня освещения
Астротаймер лишен всех этих недостатков.
Далее рассмотрим, как настроить данный пример.
- Для работы с астротаймером не требуется подключение к интернету.
Настройка астротаймера
- Создайте серверный проект или откройте уже имеющийся.
- В разделе Config , в полях Latitude и Longitude укажите свои координаты в виде десятичной дроби и нажмите кнопку Save .

- Добавьте оборудование, с которым будете работать и настройте его.
- В разделе Schedule создайте расписание, по которому будут работать устройства освещения. Началом события укажите закат (Sunset), а окончанием – восход (Sunrise) следующего дня.

- В разделе Routine создайте правила:
Правило 1:
WHEN → Event start
THEN → отправить значение в канал устройства, чтобы оно включилось

Правило 2:
WHEN → Event finish
THEN → отправить значение в канал устройства, чтобы оно отключилось
BUT ONLY IF → устройство в данный момент включено (Feedback == 1)

На этом настройка завершена. Сервер автоматически рассчитает время восхода и заката Солнца, в зависимости от Вашего расположения.
Настройки повторения (Repeat)
Repeat - периодичность повторения созданного события. Варианты настройки:
- Never - не повторять событие
- Every Day - каждый день, в указанное время
- Every Week - в тот же день недели, что началось, каждую неделю. Например, каждый Пн
- Every 2 Weeks - в тот же день недели, что началось, каждую 2ю неделю. Например, каждое второе Вс
- Every Monts - в ту же дату, что началось, каждый месяц. Например, каждое 23е число
- Every Year - в ту же дату и месяц, что началось, каждый год. Например, каждое 1 января

- Custom - позволяет настроить повторение по дням, неделям, месяцам, годам, но с большим периодом. Например, каждые 3 дня, или каждый 2й понедельник указанных месяца.
-
- Repeat Settings: (только для Repeat: Custom)
-
- Periodicity - периодичность повторения
-
-
- By Days - повторять каждый N-й день, начиная с даты начала события. Например, каждый 2й день
-
-
-
-
- Every: Days - интервал повторения в днях, от 1 до 365
-
-
-
-
- By Weeks - повторять каждую N-ю неделю, в указанные дни недели, начиная с даты начала события. Например, четверг каждой 2й недели
-
-
-
-
- Every: Weeks - интервал повторения в неделях, от 1 до 52
-
-
-
-
-
- On specified days of week - укажите дни недели, в которые нужно повторять событие
-
-
-
-
- By Months - повторять каждый N-й месяц. Выберите принцип повторения: в указанные числа месяца / в указанные дни месяца. Например, каждый 2й месяц, 23 число. Или каждый 1й понедельник месяца.
-
-
-
-
- Every: Months - интервал повторения в месяцах, от 1 до 12
-
-
-
-
-
- On specified dates of month - повторение в указанные числа месяца. Можно выбрать несколько чисел
-
-
-
-
-
- On specified days of month - повторение в указанные дни месяца: 1й понедельник, 4е воскресенье, ...
-
-
-
-
- By Years - повторять каждый N-й год
-
-
-
-
- Every: Years - интервал повторения в годах
-
-
-
-
-
- On specified months -месяцы года, когда событие будет повторяться. Оно сработает в дату начала события
-
-
-
-
-
- On specified days - для повторения в указанный день недели, а не дату месяца, поставьте галочку "At specified Day". Например, можно настроить срабатывание в 1й понедельник месяца
-
-
Routine. Сценарии (рутины)
Routine - это сценарий, который автоматически запускается при возникновении определенного события. Событием может быть получение данных от оборудования, или Event из расписания сервера.
Настройки
Нажмите на вкладку Routine в проекте iRidium Server - окно настройки сценариев:

- добавить сценарий
- удалить сценарий
- изменить настройки сценария
Добавить сценарий:

- Name - название события
- Description - краткое описание (не обязательно)
- WHEN - условие, за которым следит сценарий. При его выполнении, последовательно выполнятся команды, заданные в THEN. Условий может быть несколько, к срабатыванию сценария приведет выполнение любого из них (OR). В качестве условия WHEN можно выбрать:
-
- Feedback - изменение канала драйвера
-
- Event - начало или завершение события в расписании
- THEN - когда сработало условие WHEN, все команды, настроенные в THEN будут выполнены друг за другом, как последовательность
- BUT ONLY IF - исключающие условия. Если условия, настроенные в BUT ONLY IF не выполнены, сценарий не сработает. Если уловий несколько, должны выполниться они все (AND)
-
- Feedback - выполняется условие по сравнению канала драйвера со значением
-
- Event - событие в расписании сейчас происходит или не происходит
Настройка условий WHEN, THEN, BUT ONLY IF:

- Сценарии работают на основе событийной логики: условие WHEN считается активным однократно только в тот момент, когда это условие изменило своё состояние с ложного на истинное. В последующих истинных состояниях условие WHEN уже не будет активным. В связи с этим последовательность действий THEN будет выполнено только один раз после активации WHEN .
Если при запуске iRidium server условие WHEN сразу же приняло истинное значение, то действия THEN не будут выполнены, так как не было зафиксировано предварительное ложное состояние условия WHEN - обязательное условие активации сценария.
Использование расписания в сценариях
WHEN. Для запуска сценариев используют статусы событий расписания:
- Start - событие началось
- Finish - событие закончилось
BUT ONLY IF. Как проверочное условие при выполнении сценария используют состояния:
- In process - событие происходит сейчас
- Not in process - событие не происходит сейчас
Модификация данных на сервере
Модификация - изменение полученных данных перед отправкой по назначению: оборудованию или на панели управления.
Модификация производится с помощью скриптовой функции модификатора, которая настраивается в параметрах серверного канала или тега (виртуальные переменные модифицируются по тем же принципам):
- Если функция модифицирует канал сервера: значение, полученное каналом от панели управления будет пересчитано в скрипте, и только потом отправлено драйверу
- Если функция модифицирует тег сервера: значение, полученное тегом от драйвера будет пересчитано в скрипте, и только потом отправлено на панель управления.
Пример: графические элементы на панели управления регулируют переменную в диапазоне от 0 до 100. Сервер приводит эти значения к 0...255 с помощью модификаторов, и только потом отправляет драйверу (оборудованию автоматизации):

Функцию-модификатор нужно создать в редакторе скриптов и указать в свойствах переменной, строка Script:
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;
}
Канал или тег, вызвавший функцию, передает ей аргументы:
in_Type- тип переменной, 0 - канал, 1 - тег обратной связиin_Name- полное имя команды или тегаin_Value- значение команды или тега
Таким образом, мы производим обработку данных при прохождении через сервер в обе стороны (от панели управления к оборудованию и обратно).
-
модифицированное значение (in_Value) возвращаем переменной с помощью команды
return in_Value; -
возвращать модифицированное значение не обязательно - можно просто выполнить разовое действие. Тогда начальное значение, полученное функцией, не попадет к адресату, а только приведет к выполнению функции.
-
В веб-интерфейсе сервера отображаются модифицированные значения тегов и каналов, то есть:
-
значения тегов в веб-интерфейсе получаются в результате работы функции Script Modifier,
-
значения, заданные в веб-интерфейсе командой "Set", отправляются на вход функции Script Modifier перед отправкой в канал на физическое устройство.
Примеры модификаторов
Driver Tokens отображают статус подключения к оборудованию автоматизации - они доступны только на чтение.
/*
Токен Online любого драйвера может вернуть только значение 1 = Online и 0 = Offline.
Заменим 1 на текущее время и фразу " Connection established"; 0 на время и " Connection closed"
Вернем результат преобразования тому, кто вызвал функцию
*/
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;
}
}
Чтобы выбрать, какую переменную будет обрабатывать функция-модификатор, укажите имя функции в настройках переменной:

В переменную Сервера, а из нее на панель управления, приходет только результат модификации, но не реальное значение переменной.
Каналы и теги драйверов связаны с переменными сервера, которые можно модифицировать. Привязать модификатор к команде драйвера нельзя - можно привязать его только к связанному с ней каналу сервера.
При выполнении команды, ей нужно передать значение (иногда значение не нужно, в этом случае передается пустая строка). Это значение модифицируется перед отправкой оборудованию:
/*
В канал приходит значение в диапазоне 0-100
Приведем это значение к диапазону 0-255, округлим и отправим оборудованию
*/
function rangeModify (in_Type, in_Name, in_Value)
{
in_Value *= 255/100;
return in_Value.toFixed(0);
}
Чтобы выбрать, какой канал будет обрабатывать функция-модификатор, укажите имя функции в настройках переменной:

Driver Tags
/*
Канал принимает значения в диапазоне 0-255
Приведем значение к диапазону 0-100, округлим и вернем в канал обратной связи
*/
function rangeModifyBack (in_Type, in_Name, in_Value)
{
in_Value *= 100/255;
return in_Value.toFixed(0);
}
Чтобы выбрать, какой тег будет обрабатывать функция-модификатор, укажите имя функции в настройках переменной:

Тег будет выдавать только результат модификации, но не исходное значение.
Виртуальные переменные сервера на стороне панели управления выглядят как каналы и теги сервера. В переменную можно отправить значение value, на основе которого вы можете сформировать команду и отправить ее оборудованию автоматизации:
/*
команда DVD плейеру имеет вид: "VOLUME XX", ХХ - это громкость от 00 до 100
Громкость может состоять из двух или трех симовлов, т.е. 00, 01, 02, ... 100 (ASCII)
Получим значение 0-100 с панели управления (с обычного Level Item), сформируем и отправим команду
*/
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
Виртуальные теги сервера на панели управления они выглядят как каналы обратной связи. В них можно записать значение из скрипта, а затем обработать его функцией модификатором. Финальное значение будет доступно для чтения с панели управления.
/*
Виртуальный тег не получает значений напрямую от оборудования
Поэтому мы запишем значение в тег из скрипта, когда это необходимо
*/
IR.SetVariable("Server.Tags.Virtual 1", 100)
/*
обработаем значение с помощью функции модификатора
*/
function value (in_Type, in_Name, in_Value)
{
in_Value = "brightness: "+in_Value+"%";
return in_Value; // brightness: 100%
}
Чтобы выбрать, какую переменную модифицировать, укажите имя функции в настройках переменной:

Запись и чтение переменных
Переменные сервера - это Driver Tokens, Channels, Tags, а также Virtual Channels и Virtual Tags. Их состояние можно изменять и запрашивать с панелей управления и из скриптов, размещенных на Сервере.
Запись и чтение производится с помощью JavaScript команд:
IR.GetVariable(name)*IR.SetVariable(name, value)
Для панели управления переменные сервера выглядят как команды и каналы драйвера. Поэтому для них применимы методы API iRidium для драйверов
Записать значение в переменную
- Скопируйте полное имя переменной из вкладки
IRIDIUM SERVER - Используйте метод IR.SetVariable, чтобы записать в переменную значение:
Синтаксис
IR.SetVariable("Server.Path.Name", value)
| на входе | значение | описание |
|---|---|---|
| Server.Path.Name | Server.Channels.Virtual 1 | type: string полное имя переменной сервера |
| value | 100 | type: string значение для записи в переменную сервера, number, boolean |
| на выходе | ||
|---|---|---|
| успешность | true | type: boolean успешность записи |
Пример

IR.AddListener(IR.EVENT_START, 0, function()
{
IR.SetVariable("Server.Channels.Virtual 1", 100);
});
Примечания
- метод можно применить к каналам и тегам сервера
Прочитать значение переменной
- Скопируйте полное имя переменной из вкладки
IRIDIUM SERVER - Используйте метод IR.GetVariable, чтобы прочитать из переменной значение:
Синтаксис
IR.GetVariable("Server.Path.Name")
| на входе | значение | описание |
|---|---|---|
| Server.Path.Name | Server.Channels.Virtual 1 | type: string полное имя переменной сервера |
| на выходе | ||
|---|---|---|
| value | 100 | type: string, number, boolean значение в переменной сервера |
Пример

IR.AddListener(IR.EVENT_START, 0, function()
{
IR.GetVariable("Server.Channels.Virtual 1");
});
Примечания
- метод можно применить к каналам и тегам сервера
Шлюзование данных между виртуальным каналом и тегом
Виртуальная команда Virtual Channel (Server.Channels.Virtual 1) изначально не связана с виртуальным тегом обратной связи Virtual Tag (Server.Tags.Virtual 1), поэтому вы можете изменить значение виртуальной переменной на сервере, но оно не вернется на панель в виде значения обратной связи.
Чтобы вернуть в i3 pro значение, отправленное из i3 pro на сервер, вам нужно создать скриптовую функцию (Script Modifier). Эта функция возьмет значение, отправленное из i3 pro и запишет в виртуальный тег обратной связи сервера. Именно это изменение увидит панель управления.

Чтобы настроить передачу данных от виртуальной команды тегу:
- Создайте новый проект для iRidium Server
- Создайте виртуальный канал (команду) и тег (канал обратной связи) с одинаковыми именами. Например, "Virtual 1"
- Откройте редактор скриптов (кнопка 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;
}
- Вернитесь к виртуальной команде "Virtual 1" (Server.Channels.Virtual 1), выберите в выпадающем списке параметра Script Modifier функцию virtual_to_virtual
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.Scenario 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.Scenario 1");
Чтобы выполнить такой сценарий, отправьте с панели управления значение 1 в канал сервера "Server.Channels.Scenario 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 - переменные сервера. Поэтому и настройки сохранения есть только у переменных сервера. Если хотите сохранить канал драйвера - выберите его проекцию на переменные сервера - вы увидите настойки сохранения в базу:
- Name - имя переменной сервера
- Full Tag Name - полное имя переменной, можно использовать для обращения из скрипта и определения типа
- Description - описание переменной для упрощения ее идентификации (не обязательно)
- Access - доступ к переменной с панелей управления:
-
- Public - разрешен,
-
- Private - запрещен
- Script - JavaScript функция-модификатор, обрабатывает переменную перед отправкой на панели управления
- Persist - вернуть последнее значение переменной в случае перезагрузки сервера
- Store In DB - формат сохранения переменной в базу данных
-
- None - не сохранять
-
- Signed 32bit - сохранять как целое число
-
- Float 64bit - сохранять как число с плавающей запятой
-
- String UTF8 - сохранять как строку
- DB Save Strategy - событие, при котором создается запись в базу
-
- Deadband - минимальное изменение. Запись создается, если переменная изменилась больше, чем на указанное значение
-
- Interval - периодическая фиксация. Запись создается с указанным временным интервалом
-
-
- Deadband (Value) - минимальное изменение переменной, требующее записи в базу
-
-
-
- Interval (sec) - интервал записи в секундах
-
- Load On Start - восстановить значение переменной из базы данных в случае перезагрузки сервера (в отличие от параметра Persist = Yes будет восстановлено не самое последнее значение, а последнее значение, сохранённое в базе данных).
Сохранение можно настроить по двум принципам:
- с определенной периодичностью по времени
- при изменении переменной более, чем на указанное значение - целое или дробное.
Первый способ удобно использовать для переменных, которые изменяются плавно и достаточно инертны, например, температура и влажность воздуха. Второй способ идеален для переменных, которые меняются нечасто, но значительно. Например, можно писать в базу факт включения и выключения света. При этом, запись по изменению сформирует гораздо меньше записей в базе и не позволит пропустить событие.
Доступ к базам данных Сервера производится с помощью специализированных SQL запросов. Запросы позволяют получать данные по заданным условиям.
Пользовательская база данных:
Редактируемую базу данных можно создать с помощью JavaScript. Запись, чтение, редактирование данных в пользовательской базе производится с помощью SQL запросов.
Доступ к пользовательской базе через JavaScript:
Руководство предоставляет инструкции по работе с системной и пользовательской базами данных.
Справочник включает список всех методов для работы с базами.
Построение графиков
Для возможности отображения графиков изменения переменных, iRidium сохраняет значения этих переменных в базу данных SQL, которая хранится на iRidium Server.
Когда нужно построить график изменения переменной, приложение i3 pro формирует запрос к базе за определенный период времени, и отображает результат на графике.
Когда сохранение в базу настроено, вы можете отразить переменную в i3 pro в виде графика.
Синхронизация панели управления и Сервера
Интерфейс визуализации лучше всего создавать, когда готов серверный проект: настроена связь с оборудованием автоматизации, сформированы виртуальные теги и скрипты для них на стороне сервера. Импорт серверного проекта позволит быстро получить полный набор управляемых переменных для проекта визуализации. Останется привязать переменные к графическим элементам.
См. Как создать проект для панели управления
Загрузка проекта на Сервер
Загрузка серверного проекта (*.sirpz) на сервер осуществляется аналогично загрузке проекта в клиент i3 pro, т.е. при помощи приложения iRidium Transfer на вашем ПК.
Transfer находит и отображает в своем интерфейсе все запущенные Серверы в пределах IP подсети. С помощью Transfer вы передаете проект конфигурации и лицензию на iRidium Server.