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

iRidium Server API

Уникальные функции, методы, свойства, которые можно использовать в серверном проекте iRidium (*.sirpz)

Методы

Объект IR - глобальный объект, содержащий в себе все функции и константы API iRidium. Методы объекта IR для сервера позволяют обратиться к свойствам сервера в проекте iRidium Server.

IR.GetServer

Метод работает только в серверном проекте (*.sirpz), используется для работы с внутренним пространством переменных сервера. Позволяет получить доступ к iRidium Server, как к драйверу и обратиться к любой переменной по ее полному имени. Возвращает объект, к которому применимы методы, поддерживаемые IR.GetDevice.

Синтаксис

IR.GetServer()

на входезначениеописание
-
на выходе
Object[object DevicePrototype]type: Object
ссылка на драйвер

Пример

var server = IR.GetServer();  // [object DevicePrototype]
server.Set("Virtual 1", 1); // set 1 to Virtual Channel
server.Set("KNX.Address 1", 1); // set 1 to the Address of KNX driver
IR.AddListener(IR.EVENT_TAG_CHANGE , IR.GetServer(), function(name,value)
{
if (name == "KNX.Address 1") IR.Log("KNX Address Changed");
if (name == "Virtual 1") IR.Log("Virtual Tag Changed");
});
Подсказка
  • работает только в серверном проекте
  • к объекту, полученному с помощью метода, можно применить те же методы, что к другим драйверам (см. методы, применимые к IR.GetDevice)

События

Событие - процесс, проброшенный в скрипты и имеющий идентификатор для отслеживания.

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

Добавьте слушатель с помощью метода IR.AddListener

IR.AddListener(event, input, action);

  • event - идентификатор события, за которым следит слушатель
  • input - входной параметр, необходимый для создания слушателя. Если параметра нет, укажите 0
  • action - не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия
  • pointer - указатель на контекст вызова слушателя (не обязательный). Обратиться к контексту можно с помощью оператора this. Контекст может меняться во время работы программы

Пример:

// functions inside of listener
IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetDevice("Driver"), function (name, value)
{
IR.Log("changes: "+name+" > "+value); // changes: Feedback 1 > 100
});

IR.EVENT_ACCEPT

идентификатор события, которое срабатывает при любой попытке подключения к серверу. Вернет сетевые параметры устройства, которое сделало попытку подключения к серверу. После подключения начнется процесс авторизации устройства на сервере. По завершению авторизации, сработает событие IR.EVENT_AUTHORIZE, которое означает, что авторизация успешно пройдена. Сочетание данных о панели, полученных в событиях ACCEPT и AUTHORIZE дает полную информацию о панели. Связать эти два события можно, опираясь на ID - идентификатор соединения.

Синтаксис

IR.AddListener(IR.EVENT_ACCEPT, IR.GetServer(), function (ID, LocalIP, LocalPort, HostIP, HostPort) {});

на входезначениеописание
driverIR.GetServer()type: object
ссылка на драйвер iRidium Server
на выходе
ID1type: string
порядковый номер панели управления в списке подключенных к серверу
LocalIP192.168.0.100type: string
локальный IP адрес панели управления
LocalPort30464type: string
порт на панели управления, открытый для получения данных от сервера
HostIP192.168.0.100type: string
IP-адрес удаленной системы, из которой панель подключилась к серверу
HostPort30464type: string
порт удаленной системы, открытый для получения данных от сервера

Пример

IR.AddListener(IR.EVENT_ACCEPT, IR.GetServer(), function (ID, LocalIP, LocalPort, HostIP, HostPort)
{
var time = IR.GetVariable("System.Time.24");
IR.Log("Accept Client: "+time+", "+ID+", "+LocalIP+", "+LocalPort+", "+HostIP+", "+HostPort);
});

IR.EVENT_AUTHORIZE

Важно

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

идентификатор события, которое срабатывает при успешном подключении панели управления к серверу. Событие срабатывает после IR.EVENT_ACCEPT и возвращает подробную информацию о подключенном устройстве: идентификатор соединения, HWID панели управления, логин пользователя, идентификатор объекта автоматизации и имя проекта визуализации, запущенного на панели. Сочетание данных о панели, полученных в событиях ACCEPT и AUTHORIZE дает полную информацию о панели. Связать эти два события можно, опираясь на ID - идентификатор соединения.

Синтаксис

IR.AddListener(IR.EVENT_AUTHORIZE, IR.GetServer(), function (ID, ObjectId, Login, ProjectName, HWID) {});

на входезначениеописание
driverIR.GetServer()type: object
ссылка на драйвер iRidium Server
на выходе
ID1type: string
порядковый номер панели управления в списке подключенных к серверу
ObjectId7071type: number
идентификатор объекта автоматизации в iRidium Cloud, из которого на панель управления загружен проект
Loginuser@my.mailtype: string
логин пользователя, авторизованного на панели управления
ProjectNameProject Hometype: string
имя проекта визуализации, запущенного на панели управления
HWID69538...a7acftype: string
уникальный идентификатор панели управления (иногда он может меняться, не используйте HWID как постоянный идентификатор панели!)
NameDESKTOP-1type: string
имя устройства, на котором была подключена панель к серверу.
ModelWindows 6.2 build 9200 sp 0.0type: string
модель устройства, на котором была подключена панель к серверу.
ProducerMicrosoft Windows 8 x64type: string
операционная система устройства, на котором была подключена панель к серверу.
Version0.0.3type: string
версия операционной системы устройства, на котором была подключена панель к серверу.
Group2type: number
группа клиента, который подключается к серверу.
Channel1type: number
переменные, которыми можно управлять.
Tags1type: number
переменные, от которых можно получить обратную связь

Пример

IR.AddListener(IR.EVENT_AUTHORIZE, IR.GetServer(), function (ID, ObjectId, Login, ProjectName, HWID, in_oFullInfo)
{
var time = IR.GetVariable("System.Time.24");
IR.Log("Client Authorized: " + time + ", " + ID + " " + ObjectId + " " + Login + " " + ProjectName + " " + HWID)
IR.Log(JSON.Stringify(in_oFullInfo))
});

IR.EVENT_RELEASE

идентификатор события, которое срабатывает при отключении панели i3 pro от сервера, и возвращает информацию об этой панели.

Синтаксис

IR.AddListener(IR.EVENT_RELEASE, IR.GetServer(), function (ID, LocalIP, LocalPort, HostIP, HostPort) {});

на входезначениеописание
driverIR.GetServer()type: object
ссылка на драйвер iRidium Server.
на выходе
ID1type: string
порядковый номер панели управления в списке подключенных к серверу.
LocalIP192.168.0.100type: string
локальный IP адрес панели управления.
LocalPort30464type: string
порт на панели управления, открытый для получения данных от сервера.
HostIP192.168.0.100type: string
IP-адрес удаленной системы, из которой панель подключалась к серверу.
HostPort30464type: string
порт удаленной системы, открытый для получения данных от сервера.

Пример

IR.AddListener(IR.EVENT_RELEASE, IR.GetServer(), function (ID, LocalIP, LocalPort, HostIP, HostPort)
{
var time = IR.GetVariable("System.Time.24");
IR.Log("Release Client: "+time+", "+ID+", "+LocalIP+", "+LocalPort+", "+HostIP+", "+HostPort);
});

IR.EVENT_SCHEDULE_EVENT_CHANGE

событие начала или окончания любого события из расписания.

Важно

Событие доступно только на сервере.

Синтаксис

IR.AddListener(IR.EVENT_SCHEDULE_EVENT_CHANGE, 0, function(scheduleName, eventName, status){}, [pointer]);

на входезначениеописание
function()function(){}type: function
не именованная функция или обращение к функции
pointer-type: object
указатель на объект, который обслуживает функцию (опционально)
на выходе
scheduleName'Schedule 1'type: string
имя расписания
eventName'Event N'type: string
имя события
status1type: number
состояние события:
1 - IR.SCHEDULE_EVENT_STATE_START - началось,
2 - IR.SCHEDULE_EVENT_STATE_RUN - работает,
3 - IR.SCHEDULE_EVENT_STATE_FINISH - завершилось

Пример

IR.AddListener(IR.EVENT_SCHEDULE_EVENT_CHANGE, 0, function(scheduleName, eventName, status)
{
if (eventName == "Light" && status == IR.SCHEDULE_EVENT_STATE_START)
{
IR.Log("Light on");
}
if (eventName == "Light" && status == IR.SCHEDULE_EVENT_STATE_FINISH)
{
IR.Log("Light off");
}
if (eventName == "Heating" && status == IR.SCHEDULE_EVENT_STATE_START)
{
IR.Log("Heater on");
}
if (eventName == "Heating" && status == IR.SCHEDULE_EVENT_STATE_FINISH)
{
IR.Log("Heater off");
}
});