Материал из for iRidium developers
Перейти к: навигация, поиск
Эта страница является переводом страницы Drivers API. Перевод выполнен на 100%.

Other languages:

API iRidium. Драйверы

функции, методы, свойства для работы с оборудованием, настроенным в проекте: создание и управление драйверами, отправка команд, обработка входящих данных

Методы


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

IR.CreateDevice

создать драйвер в проекте iRidium. Вы можете создать только драйвер типа AV & Custom Systems. Работа с другими драйверами производится после добавления их в проект из базы данных.
Внимание! В iRidium V2 функция имела другой синтаксис. Поддержка старого синтаксиса есть в iRidium V3, но его использование не рекомендуется.

Синтаксис

IR.CreateDevice(type, name, {properties})

на входе значение описание
type IR.DEVICE_CUSTOM_TCP type: object
тип драйвера
name "AV Driver 1" type: string
уникальное имя драйвера
properties Host: '192.168.0.47', Port: 80 type: array
набор параметров драйвера через запятую
на выходе
Object [object DevicePrototype] type: object
ссылка на драйвер, как на объект


Пример

var driver = IR.CreateDevice(IR.DEVICE_CUSTOM_TCP, "AV Device (TCP)",	
			{Host: "192.168.0.47",
			Port: 80,
			SSL: false,
			SendMode: IR.ALWAYS_CONNECTED,
			ScriptMode: IR.DIRECT_AND_SCRIPT,
			SendCommandAttempts: 0,
			ConnectWaitTimeMax: 3000,
			ReceiveWaitTimeMax: 5000,
			Login: "admin",
			Password: "admin"
});
IR.Log(driver); // [object DevicePrototype]

набор параметров отличается для разных драйверов
если параметр не указан в списке, то его значение будет задано по умолчанию (т.е. можно указать только Host и Port при создании драйвера)
если вы создаете драйвер не при запуске приложения, а позже, необходимо вызвать метод .Connect() для этого драйвера, чтобы он подключился к оборудованию. Драйверы, создаваемые по старту приложения, подключаются автоматически. В случае необходимости, их можно отключить методом .Disconnect()


Параметры AV & Custom Systems

AV & Custom Systems (TCP):

var driver = IR.CreateDevice(IR.DEVICE_CUSTOM_TCP, "AV Device (TCP)",	
			{Host: "192.168.0.47",
			Port: 80,
			SSL: false,
			SendMode: IR.ALWAYS_CONNECTED,
			ScriptMode: IR.DIRECT_AND_SCRIPT,
			SendCommandAttempts: 0,
			ConnectWaitTimeMax: 3000,
			ReceiveWaitTimeMax: 5000,
			Login: "",
			Password: "",
			DisableQueue: false
});

AV & Custom Systems (UDP):

var driver = IR.CreateDevice(IR.DEVICE_CUSTOM_UDP, "AV Device (UDP)",	
			{Host: "192.168.0.47",
			Port: 80,
			LocalPort: 80,  // port on iRidium side for data receiving
			Group: null,  // null - broadcast, "host" - multicast group
			Multicast: false,  // false - broadcast, true - multicast (if multicast group added)
			ScriptMode: IR.DIRECT_AND_SCRIPT
});

AV & Custom Systems (HTTP):

var driver = IR.CreateDevice(IR.DEVICE_CUSTOM_HTTP_TCP, "AV Device (HTTP)",	
			{Host: "192.168.0.47",
			Port: 8080,
			SSL: false,
			Login: "",
			Password: "",
			DisableQueue: false,
			SendCommandAttempts: 0,
			ConnectWaitTimeMax: 3000,
			ReceiveWaitTimeMax: 5000,
			UserAgent: ""
});

AV & Custom Systems (RS232):

var driver = IR.CreateDevice(IR.DEVICE_CUSTOM_RS232, "AV Device (HTTP)",	
			{PortName: "\\.\COM1",
			BaudRate: 9600,
			DataBits: 8,
			Parity: 0,
			StopBits: 0,
			Use485: false  // works with 485, not 232
});

AV & Custom Systems (TCP Server):

var driver = IR.CreateDevice(IR.DEVICE_CUSTOM_SERVER_TCP, "iRidium TCP Server",	
			{Port: 2323,
			MaxClients: 10  // maximum of clients connected at the same time
});

AV & Custom Systems (UDP Server):

var driver = IR.CreateDevice(IR.DEVICE_CUSTOM_SERVER_UDP, "iRidium UDP Server",	
			{Port: 2323,
			MaxClients: 10,  // maximum of clients connected at the same time
			ClientTimeOut: 100 // (ms) when the Client will be disconnected if it doesn't send data
});

Константы в настройках драйверов


Send Mode

  • IR.ALWAYS_CONNECTED = 0; - драйвер всегда остается подключенным, может получать и отправлять данные.
  • IR.CONNECT_WHEN_SENDING = 1; - драйвер подключается в момент отправлки, после отключается, может только отправлять данные.



Script Mode

  • IR.DIRECT_AND_SCRIPT = 0; // Можно отправлять команды через скрипт и через каналы редактора
  • IR.SCRIPT_ONLY = 1; // Можно отправлять команды только через скрипт



Background Mode

  • IR.BACKGROUND_OFF = 0; // Драйвер работает только при развернутом приложении
  • IR.BACKGROUND_ON = 1; // Драйвер работает как при развернутом приложении, так и при свернутом


IR.GetDevice

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

Синтаксис

IR.GetDevice(name)

на входе значение описание
name "Driver 1" type: string
имя драйвера в проекте iRidium
на выходе
Object [object DevicePrototype] type: Object
ссылка на драйвер


Пример

var myDriver = IR.GetDevice("AMX");
var myDriver1 = IR.GetDevice("HDL-BUS Pro Network (UDP)");
IR.Log(myDriver); // [object DevicePrototype]
IR.Log(myDriver1); // [object DevicePrototype]

HDL, Domintell: при обращении используйте имя сети "HDL-BUS Pro Network (UDP)" / "Domintell Network (UDP)", а не имя конкретного устройства сети.

Далее описаны методы, которые можно применить к ссылке на драйвер, полученной с помощью IR.GetDevice.


.Connect

установить соединение с оборудованием

Синтаксис

IR.GetDevice(name).Connect()

на входе значение описание
name "Driver 1" type: string
имя драйвера в проекте iRidium
на выходе
успешность type: Boolean
успешность


Пример

IR.GetDevice("AV & Custom Systems (TCP)").Connect();

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


.Disconnect

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

Синтаксис

IR.GetDevice(name).Disconnect()

на входе значение описание
name "Driver 1" type: string
имя драйвера в проекте iRidium
на выходе
успешность type: Boolean
успешность


Пример

IR.GetDevice("AV & Custom Systems (TCP)").Disconnect();





.Send

метод можно использовать только с драйверами AV & Custom Systems и Global Cache. Позволяет отправить оборудованию произвольный набор данных (строку, число, массив)

Синтаксис

IR.GetDevice(name).Send([data])
IR.GetDevice(name).Send(array)
IR.GetDevice(Global Cache).Send([data], transport)

на входе значение описание
name "Driver 1" type: string
имя драйвера в проекте iRidium
data a, b, c type: string
список переменных или строк: инструкций для отправки
array [a, b, c] type: array
массив переменных или строк: инструкций для отправки
transport 0 type: number
идентифкатор транспорта. Используется с драйвером Global Cache, когда нужно отправить данные адресно:
  • 0 - порт 4998 (ИК команды, реле, сенсоры, система)
  • 1 - порт 4999 (СОМ 1)
  • 2 - порт 5000 (СОМ 2)


Также используется на iRidium Server и в драйвере Custom TCP Server. Позволяет выбрать, какому из подключенных клиентов отправить данные: 0 - всем, 1..n (ID клиента, полученный в IR.ACCEPT_CLIENT) - конкретному подключенному клиенту

на выходе
успешность type: Boolean
успешность


Пример

// AV & Custom Systems (TCP, UDP, RS232)
IR.GetDevice("AV Device").Send(['instruction', '\r\n']);
// AV & Custom Systems (HTTP)
// <Type or request>,<URI>,<Data> devided by "," so u cannot use "," inside of <URI> and <Data>
IR.GetDevice("AV Device").Send(['GET,URI']); // GET 
IR.GetDevice("AV Device").Send(['POST,URI,Data']); // POST 
IR.GetDevice("AV Device").Send(['PUT,URI,Data']); // PUT
// Global Cache:
// IR.GetDevice("Global Cache").Send(<DATA>, <TRANSPORT ID>)
IR.GetDevice("Global Cache").Send(['setstate,1:1,1', '\r\n'], 0)
// iRidium Server:
// IR.GetServer().Send(<DATA>, <TRANSPORT ID>)
IR.GetServer().Send(['command', '\r\n'], 1)

HTTP: при отправке команды HTTP драйверу, укажите в начале метод отправки: GET, POST, PUT, через запятую укажите URI команды и Data для POST и PUT. Внутри URI и Data запятые использовать нельзя. Если ваш протокол использует в HTTP командах запятые, отправляйте их через AV & Custom Systems (TCP), формируя запросы целиком.
Global Cache: обязательно указывайте ID транспорта куда должны уйти данные


.SendEx

метод можно использовать только с драйверами AV & Custom Systems (HTTP). Позволяет отправить оборудованию массив данных с указанием на родительский объект (контекст исполнения). Внутри SendEx можно добавить ряд событий, передающих в фукнции данные о своей работе. События позволяют следить за получением данных от НТТР сервера и обрабатывать различые этапы работы с сервером.

Синтаксис

IR.GetDevice(name).SendEx(array, object)

на входе значение описание
name "Driver 1" type: string
имя драйвера в проекте iRidium
array [a, b, c] type: string
массив данных для отправки
object this type: object
объект родитель
на выходе
успешность type: Boolean
успешность


Пример

   IR.GetDevice("Server REST").SendEx({ 
      Type: "POST",        															
      Url:  "/html/login",
      Data: ["Password=2007&name=authform&Login=admin"],
      Headers: {"Content-Type": "application/x-www-form-urlencoded"},       
      cbReceiveText:       function(text, code, headers)    {IR.Log("cbReceiveText "+text+code+headers);},
      cbReceiveData:       function(text, code, headers)    {IR.Log("cbReceiveData "+text+code+headers);},
      cbReceiveCode:       function(code)                   {IR.Log("cbReceiveCode "+code);},
      cbReceiveKey:        function(key,value)              {IR.Log("cbReceiveKey "+key+value);},
      cbReceiveStartBody:  function(stream)                 {IR.Log("cbReceiveStartBody "+stream);},
      cbReceivePartBody:   function(stream)                 {IR.Log("cbReceivePartBody "+stream);},
      cbReceiveEndBody:    function(size)                   {IR.Log("cbReceiveEndBody "+size);}, 
      cbTimeOut:           function()                       {IR.Log("cbTimeOut");},
      cbReceiveStream:     function(stream, code, headers)  {IR.Log("cbReceiveStream "+stream+code+headers);}   
   });
IR.GetDevice("Server REST").SendEx({ 
      Type: "GET",        															
      Url:  "/json/ok/server/channel",
      Headers: {"Cookie":"ir-session-id=o8lKdEvw2ZlU"},
      cbReceiveText:   function(text, code, headers)    {IR.Log("cbReceiveText "+text);}
   });





.Set

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

Синтаксис

IR.GetDevice(driver).Set(command, value)

на входе значение описание
driver "Driver 1" type: string
имя драйвера в проекте iRidium
command "Channel 1" type: string, number
индекс или имя команды
value 100 type: string, number
число или строка, которую нужно передать команде для отправки оборудованию
на выходе
успешность type: Boolean
успешность


Пример

//KNX. 0 - first Commands in project Tree; 100 - value to send, "Dimming" - command name
IR.GetDevice("KNX Router (KNXnet/IP)").Set(0, 100);
IR.GetDevice("KNX Router (KNXnet/IP)").Set("Dimming", 100);
//Global Cahe. "Command 1" - name of command on GC output, "" - empty data
IR.GetDevice("Global Cache").Set("Command 1", "")
//HDL. "HDL-BUS Pro Network (UDP)" - name of network
//"Dimmer" - name of Device in Network, "Channel 1" - name of Channel, 100 - value to send
IR.GetDevice("HDL-BUS Pro Network (UDP)").Set("Dimmer:Channel 1", 100);
//Domintell. "Domintell Network (UDP)" - name of network
//"DDIM01" - name of Device in Network, "Channel 1" - name of Channel, 100 - value to send
IR.GetDevice("Domintell Network (UDP)").Set("DDIM01:Channel 1", 100);
//Set data to virtual tag in iRidium Server project
IR.GetDevice("iRidium server").Set("Virtual 1", 100); 
//Set data to channel in iRidium Server project
IR.GetDevice("iRidium Server").Set("KNX Router.Address 1", 1);

HDL, Domintell: при обращении используйте имя сети "HDL-BUS Pro Network (UDP)" / "Domintell Network (UDP)", а не имя конкретного устройства сети.


.SetFeedback

записать значение в канал обратной связи драйвера. Канал должен быть заранее создан в Project Device Panel. Применяется для отображения данных, полученных от оборудования при работе скриптов.

Синтаксис

IR.GetDevice(driver).SetFeedback(name, value)

на входе значение описание
driver "Driver 1" type: string
имя драйвера в проекте iRidium
name "Channel 1" type: string
имя канала обратной связи (Feedbacks)
value "data" type: string, number
строка или число, которую нужно записать в канал
на выходе
успешность type: Boolean
успешность


Пример

IR.GetDevice("MyDevice").SetFeedback("Value 1", 100);





.GetFeedback

получть значение из канала обратной связи драйвера. Канал должен быть заранее создан в Project Device Panel. Применяется для получения доступа к данным, ранее записанным в канал.

Синтаксис

IR.GetDevice(driver).GetFeedback(name)

на входе значение описание
driver "Driver 1" type: string
имя драйвера в проекте iRidium
name "Channel 1" type: string
имя канала обратной связи (Feedbacks)
на выходе
value "data" type: string, number
строка или число, полученное из канала обратной связи


Пример

IR.GetDevice("MyDevice").GetFeedback("Value 1"); // 100





.SetParameters

изменить указанные параметры подключения драйвера к управляемому оборудованию. Типичный пример: переключение между локальным и Интернет соединением. Возможно выборочное изменение параметров.
Новые настройки подключения не меняют исходные параметры драйвера, и не сохраняются при перезапуске приложения.
Любой TCP, UDP, HTTP драйвер всегда имеет стандартный набор параметров: Host, Port, Login, Password (даже, если логин и пароль драйвером не используются), и в зависимости от типа драйвера существуют наборы уникальных параметров.

Синтаксис

IR.GetDevice(driver).SetParameters({Host: host, Port: port, <other>});

на входе значение описание
driver "Driver 1" type: string
имя драйвера в проекте iRidium
host "192.168.0.100" type: string
IP адрес или доменное имя для подключения к оборудованию
port 8080 type: number
порт подключения
LogLevel 4 type: number
Уровень лога. Список значений
other type: -
другие параметры, характерные для драйвера. Если параметр не указан, будет сохранено предыдущее значение или значение по умолчанию
на выходе
успешность type: Boolean
успешность


Пример

IR.GetDevice("KNX").SetParameters({Host: "215.110.10.22", Port: 8080});

Текущие настройки драйвера доступны как Свойства драйвера


.GetCookies

получть массив Cookies через драйвер AV & Custom Systems (HTTP)

Синтаксис

IR.GetDevice(driver).GetCookies()

на входе значение описание
driver "Driver 1" type: string
имя HTTP драйвера в проекте iRidium
на выходе
array type: array
массив Cookies


Пример

var num = IR.GetDevice("MyDevice").GetCookies()





.SetCookie

отравляет Cookie вместе с остальной header-информацией через драйвер AV & Custom Systems (HTTP)

Синтаксис

IR.GetDevice(driver).SetCookie(key, value)

на входе значение описание
driver "Driver 1" type: string
имя HTTP драйвера в проекте iRidium
key type: string
ключ
value type: string
значение
на выходе
успешность type: Boolean
успешность


Пример

IR.GetDevice("MyDevice").SetCookie("TestCookie", "value")





.GetLogin

получить логин соединения с любым драйвером

Синтаксис

IR.GetDevice(driver).GetLogin()

на входе значение описание
driver "Driver 1" type: string
имя драйвера
на выходе
login 'admin' type: string
логин драйвера


Пример

var login = IR.GetDevice("MyDevice").GetLogin()
IR.Log(login) // admin





.GetPassword

получить пароль соединения с любым драйвером

Синтаксис

IR.GetDevice(driver).GetPassword()

на входе значение описание
driver "Driver 1" type: string
имя драйвера
на выходе
login 'admin' type: string
пароль драйвера


Пример

var pass = IR.GetDevice("MyDevice").GetPassword()
IR.Log(pass) // password





.AddChannel

*функция в разработке* добавить канал драйверу

Синтаксис

IR.GetDevice(driver).AddChannel(name, data)

на входе значение описание
driver "Driver 1" type: string
имя драйвера
name "Channel 1" type: string
имя команды
data type: array
массив данных, специфичный для каждого драйвера
на выходе

-


Пример

/* under development */





.AddTag

*функция в разработке* добавить канал обратной связи драйверу

Синтаксис

IR.GetDevice(driver).AddTag(name, data)

на входе значение описание
driver "Driver 1" type: string
имя драйвера
name "Channel 1" type: string
имя канала обратной связи
data type: array
массив данных, специфичный для каждого драйвера
на выходе

-


Пример

/* under development */





.GetCommandsCount

получть количество команд, настроенных в драйвере AV & Custom System (HTTP, TCP, UDP, RS232)

Синтаксис

IR.GetDevice(driver).GetCommandsCount()

на входе значение описание
driver "Driver 1" type: string
имя драйвера в проекте iRidium
на выходе
CommandsCount 52 type: number
количество команд устройства


Пример

var num = IR.GetDevice("MyDevice").GetCommandsCount(); 
IR.Log(num); // number of commands





.GetCommandAtName

получить данные из поля Data команды драйвера AV & Custom System (HTTP, TCP, UDP, RS232). Обращение к команде производится по имени или идентификатору.

Синтаксис

IR.GetDevice(driver).GetCommandAtName(name/ID)

на входе значение описание
driver "Driver 1" type: string
имя драйвера в проекте iRidium
name/ID "Command 1" type: string/number
имя команды / численный идентификатор команды
на выходе
object [object Object] type: object
ссылка на команду драйвера
object.id 1 type: number
свойство объекта: численный идентификатор команды (начинается с 1)
object.name Command 1 type: string
свойство объекта: имя команды
object.data 74,65,73,74 type: array
свойство объекта: данные из поля Data команды в виде байтового массива


Пример

   var Command = IR.GetDevice("AV").GetCommandAtName("Command 1");
   IR.Log("id: " + Command.id + ", name: " + Command.name + ", data: " + Command.data);   
   // id: 1, name: Command 1, data: 74,65,73,74





.GetCommandAtPos

получить данные из поля Data команды драйвера AV & Custom System (HTTP, TCP, UDP, RS232). Обращение к команде производится по ее порядковому номеру, начиная с 0.

Синтаксис

IR.GetDevice(driver).GetCommandAtPos(position)

на входе значение описание
driver "Driver 1" type: string
имя драйвера в проекте iRidium
position 0 type: number
порядковый номер команды (начинается с 0)
на выходе
object [object Object] type: object
ссылка на команду драйвера
object.id 1 type: number
свойство объекта: численный идентификатор команды (начинается с 1)
object.name Command 1 type: string
свойство объекта: имя команды
object.data 74,65,73,74 type: array
свойство объекта: данные из поля Data команды в виде байтового массива


Пример

   var Command = IR.GetDevice("AV").GetCommandAtPos(0);
   IR.Log("id: " + Command.id + ", name: " + Command.name + ", data: " + Command.data);   
   // id: 1, name: Command 1, data: 74,65,73,74





.GetFeedbacksCount

получть количество каналов обратной связи, настроенных в драйвере AV & Custom System (HTTP, TCP, UDP, RS232)

Синтаксис

IR.GetDevice(driver).GetFeedbacksCount()

на входе значение описание
driver "Driver 1" type: string
имя драйвера в проекте iRidium
на выходе
FeedbacksCount 52 type: number
количество каналов устройства


Пример

var num = IR.GetDevice("MyDevice").GetFeedbacksCount(); 
IR.Log(num); // number of feedbacks





.GetFeedbackAtName

получить данные из поля Data канала обратной связи драйвера AV & Custom System (HTTP, TCP, UDP, RS232). Обращение к каналу обратной связи производится по имени или идентификатору.

Синтаксис

IR.GetDevice(driver).GetFeedbackAtName(name/ID)

на входе значение описание
driver "Driver 1" type: string
имя драйвера в проекте iRidium
name/ID "Feedback 1" type: string/number
имя канала / идентификатор канала
на выходе
object [object Object] type: object
ссылка на объект: канал обратной связи
object.id 1 type: number
свойство объекта: численный идентификатор канала (начинается с 1)
object.name Command 1 type: string
свойство объекта: имя канала
object.data 74,65,73,74 type: array
свойство объекта: данные из поля Data канала в виде байтового массива


Пример

   var Feedback = IR.GetDevice("AV & Custom System (TCP)").GetCommandAtName("Feedback 1");
   IR.Log("id: " + Feedback.id + ", name: " + Feedback.name + ", data: " + Feedback.data);   
   // id: 1, name: Feedback 1, data: 74,65,73,74





.GetFeedbackAtPos

получить данные из поля Data канала обратной связи драйвера AV & Custom System (HTTP, TCP, UDP, RS232). Обращение к команде производится по ее порядковому номеру, начиная с 0.

Синтаксис

IR.GetDevice(driver).GetFeedbackAtPos(position)

на входе значение описание
driver "Driver 1" type: string
имя драйвера в проекте iRidium
position 0 type: number
порядковый номер канала (начинается с 0)
на выходе
object [object Object] type: object
ссылка на канал драйвера
object.id 1 type: number
свойство объекта: численный идентификатор канала (начинается с 1)
object.name Command 1 type: string
свойство объекта: имя канала
object.data 74,65,73,74 type: array
свойство объекта: данные из поля Data канала в виде байтового массива


Пример

   var Feedback = IR.GetDevice("AV & Custom System (TCP)").GetFeedbackAtPos(0);
   IR.Log("id: " + Feedback.id + ", name: " + Feedback.name + ", data: " + Feedback.data);   
   // id: 1, name: Feedback 1, data: 74,65,73,74





Конвертация данных из поля Data

Приведенные выше методы возвращают данные из поля Data в формате HEX. Чтобы преобразовать эти данные в ASCII строку, используйте следующую конструкцию:

// process an array of HEX bytes from Data field of Command or Feedback
function HexArrayToAsciiString(in_aArray) 
{
   // init string
   var l_sStr = '';
 
   // aray bypass
   for(var i = 0; i < in_aArray.length; i++)
      l_sStr += String.fromCharCode(parseInt(in_aArray[i], 16));
 
   // return string in ASCII format
   return l_sStr;
}
IR.AddListener(IR.EVENT_START, 0, function()  
{ 
    var l_pCommand =  IR.GetDevice("Driver").GetCommandAtName(1);
    IR.Log("data:" + HexArrayToAsciiString(l_pCommand.data)); // ASCII data
});


События


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

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

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

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


Пример:

// выполнение функции внутри слушателя
IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetDevice("Driver"), function (name, value)
{
    IR.Log("changes: "+name+" > "+value); // changes: Feedback 1 > 100
});

IR.EVENT_ONLINE

идентификатор события, которое срабатывает при соединении с оборудованием

Синтаксис

IR.AddListener(IR.EVENT_ONLINE, driver, function, [pointer]);

на входе значение описание
driver IR.GetDevice("MyDriver") type: object
ссылка на драйвер
function function() {} type: function
не именованная функция или обращение к функции
pointer - type: object
указатель на объект, который обслуживает функцию (опционально)
на выходе

-


Пример

IR.AddListener(IR.EVENT_ONLINE, IR.GetDevice("Global Cache"), function() 
{  
    IR.Log("Device online");
});





IR.EVENT_OFFLINE

идентификатор события, которое срабатывает при отключении от оборудования

Синтаксис

IR.AddListener(IR.EVENT_OFFLINE, driver, function, [pointer]);

на входе значение описание
driver IR.GetDevice("MyDriver") type: object
ссылка на драйвер
function function() {} type: function
не именованная функция или обращение к функции
pointer - type: object
указатель на объект, который обслуживает функцию (опционально)
на выходе

-


Пример

IR.AddListener(IR.EVENT_OFFLINE, IR.GetDevice("Global Cache"), function() 
{  
    IR.Log("Device offline");
});





IR.EVENT_TAG_CHANGE

идентификатор события, которое срабатывает при изменении статуса канала обратной связи нативного драйвера. Событие не работает с драйвером AV & Custom Systems.

Синтаксис

IR.AddListener(IR.EVENT_TAG_CHANGE, driver, function, [pointer]);

на входе значение описание
driver IR.GetDevice("MyDriver") type: object
ссылка на драйвер
function function(name, value) {} type: function
не именованная функция или обращение к функции
pointer - type: object
указатель на объект, который обслуживает функцию (опционально)
на выходе
name "Feedback 1" type: string
имя изменившегося канала
value 100 type: number
новое значение


Пример

// Subscribe to driver
IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetDevice("KNX Router (KNXnet/IP)"), function(name, value) 
{  
    IR.Log(name+": "+value); // Feedback 1: 100
});
// subscribe to iRidium Server variables (in Server project)
IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetServer(), function(name, value) 
{  
    IR.Log(name+": "+value);
});

слушатель не работает с драйвером AV & Custom Systems! Используйте IR.EVENT_RECEIVE_DATA или IR.EVENT_RECEIVE_TEXT для разбора данных этого драйвера
HDL: вместо имени драйвера укажите имя HDL Network, по умолчанию это "HDL-BUS Pro Network (UDP)". Измененное значение канала возвращается в виде "device:channel"; device - имя исполняющего устройства HDL, channel - канал в настройках этого устройства.
Domintell: вместо имени драйвера укажите имя Domintell Network, по умолчанию это "Domintell Network (UDP)". Измененное значение канала возвращается в виде "device:channel"; device - имя исполняющего устройства Domintell, channel - канал в настройках этого устройства.


IR.EVENT_RECEIVE_DATA

идентификатор события, которое срабатывает при получении данных драйвером AV & Custom Systems и выводит данные в виде массива. Работает только для AV & Custom Systems.

Синтаксис

IR.AddListener(IR.EVENT_RECEIVE_DATA, driver, function, [pointer]);

на входе значение описание
driver IR.GetDevice("MyDriver") type: object
ссылка на драйвер
function function(data) {} type: function
не именованная функция или обращение к функции
pointer - type: object
указатель на объект, который обслуживает функцию (опционально)
на выходе
data type: array
массив данных


Пример

IR.AddListener(IR.EVENT_RECEIVE_DATA, IR.GetDevice("AV & Custom Systems (TCP)"), function(data) 
{  
    IR.Log(data);
});

работает только с AV & Custom Systems


IR.EVENT_RECEIVE_TEXT

идентификатор события, которое срабатывает при получении данных драйвером AV & Custom Systems и выводит данные в строковом формате. Работает только для AV & Custom Systems.

Синтаксис

IR.AddListener(IR.EVENT_RECEIVE_TEXT, driver, function, [pointer]);

на входе значение описание
driver IR.GetDevice("MyDriver") type: object
ссылка на драйвер
function function(text) {} type: function
не именованная функция или обращение к функции
pointer - type: object
указатель на объект, который обслуживает функцию (опционально)
на выходе
text type: string
полученные данные в строковом формате


Пример

IR.AddListener(IR.EVENT_RECEIVE_TEXT, IR.GetDevice("AV & Custom Systems (TCP)"), function(text) 
{  
    IR.Log(text);
});

работает только с AV & Custom Systems


IR.EVENT_ERROR

идентификатор события, которое срабатывает, если при отправке НТТР запроса ресурс не доступен, или доступен, но не ответил за установленное время. Выводит результат в виде кода ошибки

Синтаксис

IR.AddListener(IR.EVENT_ERROR, driver, function, [pointer]);

на входе значение описание
driver IR.GetDevice("AV & Custom Systems (HTTP)") type: object
ссылка на драйвер
function function(transport_id, local_ip, local_port, host_ip, host_port, errorCode) {} type: function
не именованная функция или обращение к функции, обработает результаты срабатывания слушателя
pointer - type: object
указатель на объект, который обслуживает функцию (опционально)
на выходе
transport_id 0 type: number
идентификатор транспорта, 0 для любого AV драйвера, кроме Global Cache: 0 - IR, система, 1 - COM1, 2 - СОМ2
local_ipt 192.168.0.100 type: string
локальный адрес отправителя команды
local_port 80 type: number
локальный порт отправителя команды
host_ip 200.200.10.10 type: string
адрес получателя команды
host_port 80 type: number
порт получателя команды
errorCode 1 type: number
код ошибки:
  • 1 - не удалось отправить запрос (ресурс недоступен)
  • 2 - ресурс доступен, но за установленное время не пришел ответ


Пример

var driver = IR.CreateDevice(IR.DEVICE_CUSTOM_HTTP_TCP, "AV Device (HTTP)", {
   Host: "ResourceUnavailable.net", Port: 80
});
 
driver.SendEx({ 
   Type: "GET",  Url:  "/request", Headers: {},
   cbReceiveText:   function(text, code, headers)    {IR.Log("cbReceiveText (code) = "+code);}
});
 
IR.AddListener(IR.EVENT_ERROR, driver, function(transport_id, local_ip, local_port, host_ip, host_port, errorCode) {
   IR.Log("IR.EVENT_ERROR (code) = "+errorCode);
});

работает только с AV & Custom Systems (HTTP)
не сработает, если от ресурса пришел ответ, даже с ошибкой. Для обработки ошибок используйте SendEx


IR.EVENT_CHANNEL_SET

идентификатор события, которое срабатывает при активации команды драйвера

Синтаксис

IR.AddListener(IR.EVENT_CHANNEL_SET, driver, function, [pointer]);

на входе значение описание
driver IR.GetDevice("MyDriver") type: object
ссылка на драйвер
function function(name, value) {} type: function
не именованная функция или обращение к функции
pointer - type: object
указатель на объект, который обслуживает функцию (опционально)
на выходе
name "Command 1" type: string
имя команды, которая была активирована
value 100 type: number
значение, записанное в команду


Пример

IR.AddListener(IR.EVENT_CHANNEL_SET, IR.GetDevice("AV & Custom Systems (TCP)"), function(name, value) {  
   switch(name) {
      case "Volume": 
         IR.Log("Volume set: "+value)
         break;
      case "Play":
         IR.Log("Play")
         break;
   }
});

событие сработает только для драйверов AV & Custom Systems и Global Cache


UPnP

.InvokeAction

отослать инструкцию на устройство с поддержкой UPnP

Синтаксис

IR.GetDevice(driver).InvokeAction(action_name, service_type, [arguments, callback])

на входе значение описание
driver "Driver 1" type: string
имя драйвера в проекте iRidium
action_name "Play" type: string
имя команды
service_type "service:AVTransport:1" type: string
используемый сервис
arguments {InstanceID: 0, Speed: 1} type: string
список аргументов команды
callback type: object
функция обратного вызова
на выходе
успешность type: Boolean
успешность


Пример

IR.GetDevice("Sonos").InvokeAction("Play", "service:AVTransport:1", {InstanceID: 0, Speed: 1});





.Subscribe

подписаться на событие устройства, поддерживающего UPnP

Синтаксис

IR.GetDevice(driver).Subscribe(service_type)

на входе значение описание
driver "Driver 1" type: string
имя драйвера в проекте iRidium
service_type "urn:schemas-upnp-org:service:AVTransport:1" type: string
используемый сервис
на выходе
true true type: Boolean
успешность


Пример

IR.GetDevice("Sonos").Subscribe("urn:schemas-upnp-org:service:AVTransport:1");





.Unsubscribe

отписаться от события устройства, поддерживающего UPnP

Синтаксис

IR.GetDevice(driver).Unsubscribe(service_type)

на входе значение описание
driver "Driver 1" type: string
имя драйвера в проекте iRidium
service_type "urn:schemas-upnp-org:service:AVTransport:1" type: string
используемый сервис
на выходе
true true type: Boolean
успешность


Пример

IR.GetDevice("BAOS").Unsubscribe("urn:schemas-upnp-org:service:AVTransport:1");





IR.EVENT_DEVICE_FOUND

идентификатор события, которое срабатывает при событии на UPnP устройстве

Синтаксис

IR.AddListener(IR.EVENT_DEVICE_FOUND, 0, function, [pointer]);

на входе значение описание
function function(name) {} type: function
не именованная функция или обращение к функции
pointer - type: object
указатель на объект, который обслуживает функцию (опционально)
на выходе
name "Device" type: string
имя найденного UPnP устройства


Пример

IR.AddListener(IR.EVENT_DEVICE_FOUND, 0, function(name) 
{  
    IR.Log(name);
});





IR.EVENT_RECEIVE_EVENT

идентификатор события, которое срабатывает при получении события от UPnP устройства

Синтаксис

IR.AddListener(IR.EVENT_RECEIVE_EVENT, driver, function, [pointer]);

на входе значение описание
driver IR.GetDevice("MyDriver") type: object
ссылка на UPnP драйвер
function function(type, text) {} type: function
не именованная функция или обращение к функции
pointer - type: object
указатель на объект, который обслуживает функцию (опционально)
на выходе
type type: string
тип события
text type: string
сообщение от устройства


Пример

IR.AddListener(IR.EVENT_RECEIVE_EVENT, IR.GetDevice("MyDriver")), function(type, text) {  
    IR.Log(text);
});





Свойства

Свойства драйверов

Параметры подключения драйвера доступны для чтения как свойства объекта Драйвер. Чтобы изменить параметры подключения, нужно использовать метод .SetParameters.

Основные свойства драйвера в проекте iRidium - это имя и тип. Их можно запросить у любого драйвера. :

driver.property

property:

Name Crestron 1 type: string
имя драйвера
Type Crestron (TCP) type: string
тип драйвера. Точное название типа вы можете видеть в параметре Driver Type, в окне настроек подключения
var driver = IR.GetDevice("Crestron 1");
IR.AddListener(IR.EVENT_START,0,function()
{
     var properties  = driver.Name + " (" + driver.Type + ") created";
     IR.Log(properties); 
});


Остальные параметры драйверов уникальны, и зависят от типа драйвера. Имена параметров драйвера можно посмотреть в системном меню i3 pro или взять из списка:

driver.property


AMX

Host 192.168.0.100 type: string
IP адрес или доменное имя
Port 1319 type: number
порт подключения
DeviceID 10001 type: number
уникальный идентификатор панели AMX
Login admin type: string
логин защищенной сессии
Password admin type: string
пароль защищенной сессии


AV & Custom Systems (UDP)

Host 192.168.0.100 type: string
IP адрес или доменное имя
Port 8080 type: number
порт подключения
LocalPort 80 type: number
локальный порт получения данных (на стороне iRidium)
Group null type: string
null - броадкаст, "host" - мультикаст группа
Multicast false type: string
false - броадкаст, true - мультикаст (если группа указана)
ScriptMode 0 type: number
послылать данные напрямую в драйвер и в скрипты (0) или только в скрипты (1)


AV & Custom Systems (HTTP)

Host 192.168.0.100 type: string
IP адрес или доменное имя
Port 8080 type: number
порт подключения
SSL false type: number
защищенное соединение
Login admin type: string
логин защищенной сессии
Password admin type: string
пароль защищенной сессии
DisableQueue 0 type: number
не добавлять команды в очередь, если их не удалось отправить
SendCommandAttempts 0 type: string
сколько раз повторить команду, если оптарвка не удалась (0 - не повторять, однократная отправка)
ConnectWaitTimeMax 3000 type: number
(мс) время ожидания соединения
ReceiveWaitTimeMax 5000 type: number
(мс) время ожидания ответа
UserAgent iRidium type: string
как iRidium представится HTTP серверу


AV & Custom Systems (RS232)

PortName \\.\COM1 type: string
имя СОМ-порта
BaudRate 19200 type: number
скорость обмена данными
DataBits 8 type: number
число информационных разрядов в кадре
Parity e type: string
контроль четности
StopBits 1 type: number
cтоповый бит в кадре
Use485 0 type: number
использовать транспорт RS485


AV & Custom Systems (TCP Server)

Port 8080 type: number
порт подключения
MaxClients 10 type: number
максимальное число подключенных клиентов


AV & Custom Systems (UDP Server)

Port 8080 type: number
порт подключения
MaxClients 10 type: number
максимальное число подключенных клиентов
ClientTimeOut 100 type: number
(мс) через указанное время клиент будет отключен, если не отправляет данные серверу


Clipsal

Host 192.168.0.100 type: string
IP адрес или доменное имя
Port 20023 type: number
порт подключения
Project PROJ type: string
имя проекта Toolkit


Crestron

Host 192.168.0.100 type: string
IP адрес или доменное имя
Port 41794 type: number
порт подключения
NetID 3 type: number
IP ID (IP Net Address) панели из проекта в SIMPL Windows
TelnetPort 41795 type: number
Telnet порт подключения (системный)
TelnetSSL 1 type: number
использование SSL подключения
TelnetLogin admin type: string
логин для SSL
TelnetPassword admin type: string
пароль для SSL


DVR

Host 192.168.0.100 type: string
IP адрес или доменное имя
Port 8080 type: number
порт подключения
Login admin type: string
логин защищенной сессии
Password admin type: string
пароль защищенной сессии


Domintell

Host 192.168.0.100 type: string
IP адрес или доменное имя
Port 17481 type: number
порт подключения
Password admin type: string
пароль подключения
PingTime 1000 type: number
(мс) частота обновления данных


EPSNET

Host 192.168.0.100 type: string
IP адрес или доменное имя
Port 61682 type: number
порт подключения
UpdateTime 1000 type: number
(мс) частота обновления данных
DeviceAddress type: string
по умолчанию не используется


Global Cache

Host 192.168.0.100 type: string
IP адрес или доменное имя
Port 4998 type: number
порт передачи системных команд - 4998
IrConfirm 0 type: number
подтверждать доставку ИК команд
SerialPort1 4999 type: number
СОМ порт 1 (serial 1), если есть
SerialPort2 5000 type: number
СОМ порт 2 (serial 2), если есть
SerialPort3 0 type: number
заразервирован
PingTime 0 type: number
(мс) периодически проверять, есть ли связь с GC. 0 - пинг выключен
DisableQueue 0 type: number
не добавлять команды в очередь, если их не удалось отправить
SendCommandAttempts 0 type: string
сколько раз повторить команду, если оптарвка не удалась (0 - не повторять, однократная отправка)
ConnectWaitTimeMax 3000 type: number
(мс) время ожидания соединения
ReceiveWaitTimeMax 5000 type: number
(мс) время ожидания ответа


HDL-Buspro

Host 255.255.255.255 type: string
IP адрес или доменное имя. В локальной сети - широковещательный адрес 255.255.255.255
Port 6000 type: number
порт подключения
SendTimeOut 20 type: number
(мс) принудительный интервал между командами
ConnectMode 0 type: number
0 - Local, 2 - Internet, 3 - Remote Server
Login User type: string
логин (для Internet и Remote Server)
Password User type: string
пароль (для Internet и Remote Server)
Project ir_proj type: string
имя проекта (для Internet и Remote Server)
ExtendedPort 6000 type: string
порт сервера (для Remote Server)
Group ir_group type: string
группа (для Remote Server)
// Local (ConnectMode=0)
IR.GetDevice("HDL Buspro UDP").SetParameters({Host: "255.255.255.255", Port: 6000, 
SendNeedConfirm: 0, SendTimeout: 20, ConnectMode: 0});
 
// Internet (ConnectMode=1)
IR.GetDevice("HDL Buspro UDP").SetParameters({Host: "215.110.10.10", Port: 6000, 
Login: "User", Password: "User", SendNeedConfirm: 0, SendTimeout: 20, ConnectMode: 2, 
Project: "ir_proj"});
 
// HDL Remote Server (ConnectMode=2)
IR.GetDevice("HDL Buspro UDP").SetParameters({Host: "215.110.10.10", Port: 9999, 
Login: "User", Password: "User", SendNeedConfirm: 0, SendTimeout: 20, ConnectMode: 3, 
ExtendedPort: 6000, Project: "ir_proj", Group: "ir_group"});


Helvar

Host 192.168.0.100 type: string
IP адрес или доменное имя (отсутствует у Net Internal UDP)
Port 50001 type: number
порт подключения


KNX

Host 192.168.0.100 type: string
IP адрес или доменное имя
Port 3671 type: number
порт подключения
ConnectionWaitTime 120000 type: number
(мс) время ожидания при аварийном обрыве соединения: 60000 или 120000 мс (зависит от KNX интерфейса)
SendWaitTime 0 type: number
(мс) пауза между отправкой команд в шину, вводится для снижения загруженности шины
PingTime 60000 type: number
(мс) частота отправки команды Ping для проверки связи с роутером
Nat 0 type: number
режим NAT (включите при работе через Интернет или с несколькими сетевыми интерфейсами)


KNX IP BAOS

Host 192.168.0.100 type: string
IP адрес или доменное имя
Port 12004 type: number
порт подключения
UpdateTime 0 type: number
(мс) частота отправки команды Ping для проверки связи с роутером


Modbus

Host 192.168.0.100 type: string
IP адрес или доменное имя
Port 502 type: number
порт подключения
UpdateTime 1000 type: number
(мс) частота обновления данных


Modbus Serial

Port 1 type: number
номер СОМ-порта
PortName \\.\COM1 type: string
имя СОМ-порта
BaudRate 19200 type: number
скорость обмена данными
DataBits 8 type: number
число информационных разрядов в кадре
Parity e type: string
контроль четности
StopBits 1 type: number
cтоповый бит в кадре
Use485 0 type: number
использовать транспорт RS485


SIP

Host 192.168.0.100 type: string
IP адрес или доменное имя SIP сервера
Port 502 type: number
порт подключения к SIP серверу
CallerID Ben type: string
псевдоним абонента
ID Ben type: number, string
номер абонента
Password Pwd type: number, string
пароль абонента
FirstRTPPort 40000 type: number
первый порт RTP диапазона
LastRTPPort 41000 type: number
последний порт RTP диапазона
ToneDTMF 1 type: number
отправлять DTMF тоны
ToneSIP 0 type: number
отправлять SIP тоны
ExternalIP type: string
внешний адрес абонента
PCMU 1 type: number
включить/выключить кодек
PCMA 1 type: number
включить/выключить кодек
GSM 1 type: number
включить/выключить кодек
H263 1 type: number
включить/выключить кодек
H263_1998 1 type: number
включить/выключить кодек


iRidium Server

Host 192.168.0.100 type: string
IP адрес или доменное имя
Port 30464 type: number
порт подключения
Login admin type: string
логин защищенной сессии
Password admin type: string
пароль защищенной сессии

Log Levels

  • 0 - Emergency
  • 1 - Alert
  • 2 - Critical
  • 3 - Error
  • 4 - Warning
  • 5 - Notice
  • 6 - Info
  • 7 - Debug
  • 8 - Never