- Справочник
- Драйверы
API iRidium. Драйверы
Методы
Объект IR - глобальный объект, содержащий в себе все функции и константы API iRidium. Методы объекта IR для драйвера позволяют создать драйвер и обратиться к драйверу в проекте iRidium. Многие методы применяются к ссылке на существующий драйвер.
Ссылку на драйвер, команду, фидбэк или токен можно прописать вручную или получить её при перетягивании элемента в JS редактор (см. инструкцию.
IR.CreateDevice
создать драйвер в проекте iRidium. Вы можете создать только драйвер типа AV & Custom Systems. Работа с другими драйверами производится после добавления их в проект из базы данных. Внимание! В iRidium V2 функция имела другой синтаксис. Поддержка старого синтаксиса есть в iRidium V3, но его использование не рекомендуется.
Синтаксис
IR.CreateDevice([type](#IR.CreateDevice), [name](#IR.CreateDevice), {[properties](#IR.CreateDevice)})
| на входе | значение | описание |
|---|---|---|
| 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 ссылка на драйвер, как на объект |
Пример
IR.AddListener(IR.EVENT_START,0,function() {
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 при создании драйвера) драйвер не будет создан при попытке его создания до наступления события запуска приложения IR.EVENT_START. если вы создаете драйвер не при запуске приложения (не при наступлении события IR.EVENT_START), а позже, необходимо вызвать метод .Connect() для этого драйвера, чтобы он подключился к оборудованию. Драйверы, создаваемые по старту приложения, подключаются автоматически. В случае необходимости, их можно отключить методом .Disconnect(). на создание драйвера требуется некоторое время, поэтому в первые несколько миллисекунд отправка данных через этот драйвер будет недоступна; отправляйте данные по событию IR.EVENT_ONLINE.
Параметры 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_SERIAL, "AV Device (RS232)",
{PortName: "\\\\.\\COM1", // double slash "\\" will be converted
// to single slash "\". Result: "\\.\COM1"
BaudRate: 9600,
DataBits: 8,
Parity: 0,
StopBits: 0,
Use485: false // works with RS485, not RS232
});
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
});
Для создания сервера с SSL необходимо включить SSL после создания драйвера, с помощью метода SetParameters
var driver = IR.CreateDevice(IR.DEVICE_CUSTOM_SERVER_TCP, "iRidium TCP Server",
{Port: 2323,
MaxClients: 10 // maximum of clients connected at the same time
});
driver.SetParameters({SSL:3});
Сервер с SSL может работать только на iRidium Server
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](#IR.GetDevice))
| на входе | значение | описание |
|---|---|---|
| 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)).Connect()
| на входе | значение | описание |
| на выходе | ||
|---|---|---|
| успешность | type: Boolean успешность |
Пример
IR.GetDevice("AV & Custom Systems (TCP)").Connect();
Примечания
после создания драйвера соединение устанавливается автоматически
.Disconnect
разорвать соединение с оборудованием
Синтаксис
IR.GetDevice([name](#.Disconnect)).Disconnect()
| на входе | значение | описание |
|---|---|---|
| name | "Driver 1" | type: string имя драйвера в проекте iRidium |
| на выходе | ||
|---|---|---|
| успешность | type: Boolean успешность |
Пример
IR.GetDevice("AV & Custom Systems (TCP)").Disconnect();
.Send
метод можно использовать только с драйверами [AV & Custom Systems](AV & Custom Systems) и [Global Cache](Global Cache). Позволяет отправить оборудованию произвольный набор данных (строку, число, массив)
Синтаксис
IR.GetDevice([name](#.Send)).Send([data]([#.Send)])IR.GetDevice([name](#.Send)).Send([array](#.Send))IR.GetDevice(["Global Cache"](#.Send)).Send([data]([#.Send)], [transport](#.Send))
| на входе | значение | описание |
|---|---|---|
| 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](AV & Custom Systems) (HTTP). Позволяет отправить оборудованию массив данных с указанием на родительский объект (контекст исполнения). Внутри SendEx можно добавить ряд событий, передающих в функции данные о своей работе. События позволяют следить за получением данных от НТТР сервера и обрабатывать различные этапы работы с сервером.
Синтаксис
IR.GetDevice([name](#.SendEx)).SendEx([params](#.SendEx), [context](#.SendEx))
| на входе | значение | описание |
|---|---|---|
| name | "Driver 1" | type: string имя драйвера в проекте iRidium |
| params | {a, b, c} | type: object параметры для отправки |
| context | this | type: object объект (this) для вызова функции |
| на выходе | ||
|---|---|---|
| - |
Пример
//Example 1:
<!--T:304-->
var context = {
appleCount: 10,
key: 777,
}
</translate>
<translate>
<!--T:302-->
var params = {
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); IR.Log(this.key)},
cbReceiveData: function(data, code, headers) {IR.Log("cbReceiveData "+data+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(params, context)
<!--T:291-->
//Example 2:
<!--T:292-->
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);}
});
Params
Параметры для отправки задаются следующими переменными:
| Type | "GET" / "POST" / "PUT" | Тип формирования запроса. |
| Url | "/html/login" | Ссылка к обращаемому объекту. |
| Data | ["Password=2007&name=authform&Login=admin"] | Дополнительный параметр, доступен для POST и PUT запросов. |
| Header | "Cookie":"ir-session-id=o8lKdEvw2ZlU" | Создание стандартных и нестандартных заголовков HTTP-запросов. |
| cbReceiveData | cbReceiveData: function(data, code, headers) IR.Log("Получение данных в формате Data: \n Code ответа от сервера: " + code + "\n Данные: "+ data);, | Функция обработки ресива в формате DATA, с параметрами: data - данные, code - ответ от сервера, headers - заголовки. |
| cbRecieveText | cbReceiveText: function(text, code, headers) IR.Log("Получение данных в формате Text: \n Code ответа от сервера: " +code + "\n Данные: " + text + "\n Заголовки: " + headers);, | Функция обработки от ресива в формате TEXT, с параметрами: data - данные, code - ответ от сервера, headers - заголовки. |
| cbRecieveKey | cbReceiveKey: function(key, value) IR.Log("Заголовки : "+ key + "\n Значение заголовков: "+ value);, | Функция обработки заголовков, с параметрами: key - заголовок, value - значение заголовка. |
| cbReceiveCode | cbReceiveCode: function(code) IR.Log("Code ответа от сервера: "+code);, | Функция ответа от сервера, с параметрами: code - ответ от сервера. |
| cbRecieveStartBody | cbReceiveStartBody: function(), | Функция начала обработки работы с потоком. |
| cbRecievePartBody | cbReceivePartBody: function(stream) IR.Log("Получение данных в формате ByteStream(Обьект данных): "+stream);, | Функция "тела" обработки и получения потока. |
| cbRecieveEndBody | cbReceiveEndBody: function(size) IR.Log("Размер полученого потока (Stream): "+size); , | Функция окончания обработки работы с потоком. |
| cbTimeOut | cbTimeOut: function() IR.Log("cbTimeOut: TimeOut"), | Функция обработки, когда время ожидание ответа от сервера. |
| cbRecieveStream | cbReceiveStream: function(stream, code, headers) IR.Log("Получение данных в формате ByteStream: \n Code ответа от сервера: " +code + "\n Обьект данных: " + stream); | Функция обработки потоков. |
Метод SendEx() с помощью поля Headers: позволяет задавать стандартные и нестандартные заголовки HTTP-запросов. Ниже приведены некоторые стандартные заголовки и указаны их особенности при работе с методом SendEx().
| Заголовок | Значение по умолчанию или пример | Описание | Возможность задать (переопределить) в поле Header | Способ задания (переопределения) |
|---|---|---|---|---|
| Host | 192.168.0.100:123 | Доменное имя и порт хоста запрашиваемого ресурса | нет | В параметрах Host и Port драйвера AV & Custom Systems (HTTP) |
| Connection | Keep-Alive или close | Способ HTTP-соединения | нет | Определяется значением поля KeepAliveOut, передаваемым методу SendEx(): если KeepAliveOut = 0, то передаётся заголовок "Connection: close"; если KeepAliveOut > 0, то передаётся заголовок "Connection: Keep-Alive" |
| Transfer-Encoding | chunked | Самоопределение длины содержимого запроса | нет | Не задаётся, см. заголовок Content-Length |
| Content-Length | 0 | Длина содержимого запроса | нет | Не задаётся, вычисляется автоматически по содержимому запроса |
| Authorization | - | Данные для авторизации | нет | В параметрах Login и Password драйвера AV & Custom Systems (HTTP). Вычисляется автоматически (Basic Authorization) |
| Content-Type | application/x-www-form-urlencoded | Тип содержимого запроса | да | - |
| Accept | / | Список допустимых форматов ресурса | да | - |
| User-Agent | Iridium Server/x.x.x | Список названий и версий клиента и его компонентов с комментариями | да | В параметре User-Agent драйвера AV & Custom Systems (HTTP) |
Ниже описан пример написания блока Header (заголовок):
IR.GetDevice("AV & Custom Systems (HTTP)").SendEx({
Type: "GET",
Url: "/device/http",
Headers: {
"Content-Type": "application/json",
"Accept": "application/xml",
"User-Agent": "Project Server v2.0",
"Accept-Language": "en",
"Set-Cookie": "parameter=1",
},
KeepAliveOut: 0; // used for "Connection: close" header
cbReceiveText: function(text, code, headers) {IR.Log("Header: "+headers);}
});
Посмотреть как этот метод реализован в драйвере, можно в прикрепленном проект:
скачать:
.Set
выполнить команду нативного драйвера, заранее настроенную в дереве команд редактора. При выполнении команды вы передаете ей значение так же, как это происходит при нажатии на кнопку в интерфейсе. Работает только для нативных драйверов. Активировать команду можно по индексу (порядковый номер в дереве, начиная с единицы) или по имени. Если команда не настроена в дереве проекта, выполнить ее нельзя.
Синтаксис
IR.GetDevice([driver](#.Set)).Set([command](#.Set), [value](#.Set))
| на входе | значение | описание |
|---|---|---|
| driver | "Driver 1" | type: string имя драйвера в проекте iRidium |
| command | "Channel 1" | type: string индекс или имя команды, порядковый номер в дереве, начиная с 1, number |
| value | 100 | type: string число или строка, которую нужно передать команде для отправки оборудованию, number |
| на выходе | ||
|---|---|---|
| успешность | type: Boolean успешность |
Пример
//KNX. 1 - first Commands in project Tree; 100 - value to send, "Dimming" - command name
IR.GetDevice("KNX Router (KNXnet/IP)").Set(1, 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)).SetFeedback([name](#.SetFeedback), [value](#.SetFeedback))
| на входе | значение | описание |
|---|---|---|
| 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)).GetFeedback([name](#.GetFeedback))
| на входе | значение | описание |
|---|---|---|
| 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)).SetParameters({Host: [host](#.SetParameters), Port: [port](#.SetParameters), [[#.SetParameters|]]});
| на входе | значение | описание |
|---|---|---|
| driver | "Driver 1" | type: string имя драйвера в проекте iRidium |
| host | "192.168.0.100" | type: string IP адрес или доменное имя для подключения к оборудованию |
| port | 8080 | type: number порт подключения |
| LogLevel | 4 | type: number Уровень лога. LogLevel |
| 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)).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)).SetCookie([key](#.SetCookie), [value](#.SetCookie))
| на входе | значение | описание |
|---|---|---|
| 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)).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)).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)).AddChannel([name](#.AddChannel), [data](#.AddChannel))
| на входе | значение | описание |
|---|---|---|
| driver | "Driver 1" | type: string имя драйвера |
| name | "Channel 1" | type: string имя команды |
| data | type: array массив данных, специфичный для каждого драйвера |
| на выходе | ||
|---|---|---|
| - |
Пример
/* under development */
.AddTag
функция в разработке добавить канал обратной связи драйверу
Синтаксис
IR.GetDevice([driver](#.AddTag)).AddTag([name](#.AddTag), [data](#.AddTag))
| на входе | значение | описание |
|---|---|---|
| driver | "Driver 1" | type: string имя драйвера |
| name | "Channel 1" | type: string имя канала обратной связи |
| data | type: array массив данных, специфичный для каждого драйвера |
| на выходе | ||
|---|---|---|
| - |
Пример
/* under development */
.AddRelation
создать Relation - связь между объектами интерфейса и драйверами / переменными / другими объектами.
Синтаксис
IR.AddRelation([source](#.AddRelation), [destination](#.AddRelation))
| на входе | значение | описание |
|---|---|---|
| source | "Drivers.iRidium Server.Tags.KNX.1/0/1" | type: string источник данных |
| destination | "UI.Popup 1.Item 1.Value" | type: string получатель данных |
| на выходе | ||
|---|---|---|
| - |
Пример
var from = "Drivers.iRidium Server.Tags.KNX.1/0/1";
var to = "UI.Popup 1.Item 1.Value";
IR.AddRelation(from, to);
.RemoveRelation
удалить Relation - связь между объектами интерфейса и драйверами / переменными / другими объектами.
Синтаксис
IR.RemoveRelation([source](#.RemoveRelation), [destination](#.RemoveRelation))
| на входе | значение | описание |
|---|---|---|
| source | "Drivers.iRidium Server.Tags.KNX.1/0/1" | type: string источник данных |
| destination | "UI.Popup 1.Item 1.Value" | type: string получатель данных |
| на выходе | ||
|---|---|---|
| - |
Пример
var from = "Drivers.iRidium Server.Tags.KNX.1/0/1";
var to = "UI.Popup 1.Item 1.Value";
IR.RemoveRelation(from, to);
.GetCommandsCount
получить количество команд, настроенных в драйвере
Синтаксис
IR.GetDevice([driver](#.GetCommandsCount)).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 команды драйвера. Обращение к команде производится по имени.
Синтаксис
IR.GetDevice([driver](#.GetCommandAtName)).GetCommandAtName([name](#.GetCommandAtName))
| на входе | значение | описание |
|---|---|---|
| driver | "Driver 1" | type: string имя драйвера в проекте iRidium |
| name | "Command 1" | type: string имя команды |
| на выходе | ||
|---|---|---|
| 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)).GetCommandAtPos([position](#.GetCommandAtPos))
| на входе | значение | описание |
|---|---|---|
| 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)).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 канала обратной связи драйвера. Обращение к каналу обратной связи производится по имени или идентификатору.
Синтаксис
IR.GetDevice([driver](#.GetFeedbackAtName)).GetFeedbackAtName([name/ID](#.GetFeedbackAtName))
| на входе | значение | описание |
|---|---|---|
| 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)").GetFeedbackAtName("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)).GetFeedbackAtPos([position](#.GetCommandAtPos))
| на входе | значение | описание |
|---|---|---|
| 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
.AddEndOfString
Метод для указания строки, которая будет считаться концом сообщения в слушателе IR.EVENT_RECEIVE_TEXT. Метод работает только для AV & Custom System (TCP, UDP, RS232). При передаче больших по объему сообщений, устройства разбивают их на пакеты и в слушатель IR.EVENT_RECEIVE_TEXT сообщение приходит по частям (пакетами). С помощью описываемого метода, скрипт будет искать в пакетах указанную строку и автоматически склеивать все предыдущие пакеты в единое сообщение. Метод не работает с драйвером HTTP . Для драйвера HTTP рекомендуется использовать метод .SendEx, который сам умеет собирать полученные частями данные в одно сообщение.
Синтаксис
IR.GetDevice([driver](#.AddEndOfString)).AddEndOfString([string](#.AddEndOfString))
| на входе | значение | описание |
|---|---|---|
| driver | "Driver 1" | type: string имя драйвера в проекте iRidium |
| string | "happy" | type: string строка, определяющая конец сообщения |
| на выходе | ||
|---|---|---|
| object | [object Object] | type: object ссылка на канал драйвера |
| result | true | type: boolean результат выполнения метода. Если входным параметром указана строка, то метод вернет true, если любой другой тип данных, то вернется false |
Пример
var driver = IR.GetDevice("TCP");
IR.AddListener(IR.EVENT_START,0,function()
{
IR.Log(driver);
driver.AddEndOfString("happy");
})
.AddEndOfData
Метод для указания последовательности байт, которые будут считаться концом сообщения в слушателе IR.EVENT_RECEIVE_DATA. Метод работает только для AV & Custom System (HTTP, TCP, UDP, RS232). При передаче больших по объему сообщений, устройства разбивают их на пакеты и в слушатель IR.EVENT_RECEIVE_DATA сообщение приходит по частям (пакетами). С помощью описываемого метода, скрипт будет искать в пакетах указанную последовательность и автоматически склеивать все предыдущие пакеты в единое сообщение
Синтаксис
IR.GetDevice([driver](#.AddEndOfData)).AddEndOfData([data](#.AddEndOfData))
| на входе | значение | описание |
|---|---|---|
| driver | "Driver 1" | type: string имя драйвера в проекте iRidium |
| data | 0x0d,0x0a | type: string последовательность, определяющая конец сообщения |
| на выходе | ||
|---|---|---|
| object | [object Object] | type: object ссылка на канал драйвера |
| result | true | type: boolean результат выполнения метода. Если входным параметром указан массив байт, то метод вернет true, если любой другой тип данных, то вернется false |
Пример
var driver = IR.GetDevice("TCP");
IR.AddListener(IR.EVENT_START,0,function()
{
IR.Log(driver);
driver.AddEndOfData([0x0d,0x0a]);
})
.GetChannelURI
Метод для обращения из JS к полю URI в драйвере Custom AV HTTP. Это позволяет напрямую прочитать строку из поля URI.
Синтаксис
IR.GetDevice(["AV & Custom Systems (HTTP)"](#.GetChannelUR)).GetChannelURI(["AV Control Command"](#.GetChannelUR))
| на входе | значение | описание |
|---|---|---|
| name | "AV Control Command" | type: string имя команды |
| на выходе | ||
|---|---|---|
| URI in tag | http://YourURI | type: string стройка с URI |
Пример
IR.AddListener(IR.EVENT_START,0,function()
{
var device = IR.GetDevice("AV & Custom Systems (HTTP)");
var URI = device.GetChannelURI("AV Control Command");
IR.Log("************ " + URI);
});
.SendText
метод можно использовать только с драйверами AV & Custom Systems (WebSoket)%3A-,AV%20%26%20Custom%20Systems%20(WebSocket),-Драйвер%20применяется%20для). Позволяет отправить оборудованию данные (за исключением массивов) в формате текста (string).
| На выходе | Значение | Описание |
| name | "Driver 1" | type: String имя драйвера в проекте iRidium |
| context | "Hello, world!" / 1234 / true и т.д. | type: object (not array) / number / string/ boolean данные которые нужно передать |
| На выходе | |
| успешность | type: Boolean успешность |
Пример кода:
// Для того что-бы скрипт сработал в проекте должен быть добавлен и настроен драйвер AV & Custom Systems (WebSoket)
var value = 8.2;
function test_runner() {
IR.GetDevice("AV & Custom Systems (WebSocket)").SendText(value); // на оборудование уходит "8.2"
IR.GetDevice("AV & Custom Systems (WebSocket)").SendText(Math.ceil(value)); // на оборудование уходит "9"
};
IR.AddListener(IR.EVENT_START, 0, function () {
IR.SetTimeout(10000, test_runner)
});
Конвертация данных из поля 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.GetDevices()
получить массив всех драйверов в проекте iRidium.
Синтаксис
IR.GetDevices();
| на выходе | ||
|---|---|---|
| Object | [object DevicePrototype] | type: Object ссылка на массив драйверов |
Пример
var devices = IR.GetDevices();
var name_1 = devices[0].Name;
var name_2 = devices[1].Name;
IR.Log("First device: " + name_1);
IR.Log("Second device: " + name_2);
IR.IsModuleLicensed
Проверка драйвера на наличие лицензии Внимание! Чтобы функция работала для вашего драйвера, вам необходимо согласовать поддержку вашего драйвера с нами. Для того чтобы внести ваш драйвер с список поддерживаемых, напишите нам на contact@iridiummobile.ru
Синтаксис
IR.IsModuleLicensed(ID)
| на входе | значение | описание |
|---|---|---|
| ID | 452 | type: Number тип драйвера, согласованный с нашей компанией |
| на выходе | ||
|---|---|---|
| Result | true | type: boolean true - драйвер лицензирован, false - драйвер не лицензирован |
Пример
var hasLicense1= IR.IsModuleLicensed("6") // AV & Custom Systems
var hasLicense2= IR.IsModuleLicensed("14") // AV & Custom HTTP
События
Пример:
// выполнение функции внутри слушателя
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](#IR.EVENT_ONLINE), [function](#IR.EVENT_ONLINE), [pointer]([#IR.EVENT_ONLINE)]);
| на входе | значение | описание |
|---|---|---|
| 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](#IR.EVENT_OFFLINE), [function](#IR.EVENT_OFFLINE), [pointer]([#IR.EVENT_OFFLINE)]);
| на входе | значение | описание |
|---|---|---|
| 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
идентификатор события, которое срабатывает при изменении статуса канала обратной связи нативного драйвера.
Синтаксис
IR.AddListener(IR.EVENT_TAG_CHANGE, [driver](#IR.EVENT_TAG_CHANGE), [function](#IR.EVENT_TAG_CHANGE), [pointer]([#IR.EVENT_ITEM_OFFLINE)]);
| на входе | значение | описание |
|---|---|---|
| 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_TAG_CHANGE возникает:
- при каждом получении данных (даже если значение не изменилось) в случае прямого доступа к драйверу IR.GetDevice(),
- только при изменении данных в случае косвенного доступа через сервер IR.GetServer().
IR.EVENT_RECEIVE_DATA
идентификатор события, которое срабатывает при получении данных драйвером AV & Custom Systems и выводит данные в виде байт-массива - массива символов в ASCII-коде. Работает только с драйверами [AV & Custom Systems](AV & Custom Systems).
Синтаксис
IR.AddListener(IR.EVENT_RECEIVE_DATA, [driver](#IR.EVENT_RECEIVE_DATA), [function](#IR.EVENT_RECEIVE_DATA), [pointer]([#IR.EVENT_RECEIVE_DATA)]);
| на входе | значение | описание |
|---|---|---|
| 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](AV & Custom Systems).
IR.EVENT_RECEIVE_TEXT
идентификатор события, которое срабатывает при получении данных драйвером AV & Custom Systems и выводит данные в строковом формате. Работает только с драйверами [AV & Custom Systems](AV & Custom Systems).
Синтаксис
IR.AddListener(IR.EVENT_RECEIVE_TEXT, [driver](#IR.EVENT_RECEIVE_TEXT), [function](#IR.EVENT_RECEIVE_TEXT), [pointer]([#IR.EVENT_RECEIVE_TEXT)]);
| на входе | значение | описание |
|---|---|---|
| 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](AV & Custom Systems).
IR.EVENT_ERROR
идентификатор события, которое срабатывает, если при отправке НТТР запроса ресурс не доступен, или доступен, но не ответил за установленное время. Выводит результат в виде кода ошибки
Синтаксис
IR.AddListener(IR.EVENT_ERROR, [driver](#IR.EVENT_ERROR), [function](#IR.EVENT_ERROR), [pointer]([#IR.EVENT_ERROR)]);
| на входе | значение | описание |
|---|---|---|
| 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)](AV & Custom Systems) не сработает, если от ресурса пришел ответ, даже с ошибкой. Для обработки ошибок используйте SendEx
IR.EVENT_CHANNEL_SET
идентификатор события, которое срабатывает при активации команды драйвера
Синтаксис
IR.AddListener(IR.EVENT_CHANNEL_SET, [driver](#IR.EVENT_CHANNEL_SET), [function](#IR.EVENT_CHANNEL_SET), [pointer]([#IR.EVENT_CHANNEL_SET)]);
| на входе | значение | описание |
|---|---|---|
| driver | IR.GetDevice("MyDriver") | type: object ссылка на драйвер |
| function | function(name, value) {} | type: function не именованная функция или обращение к функции |
| pointer | - | type: object указатель на объект, который обслуживает функцию (опционально) |
| на выходе | ||
|---|---|---|
| name | "Command 1" | type: string имя команды, которая была активирована |
| value | 100 | type: number значение Value, записанное в команду при отправке |
| data | 'string' | type: string значение, сохраненное в поле Data вызванной команды – есть только у драйверов AV & Custom Systems |
Пример
IR.AddListener(IR.EVENT_CHANNEL_SET, IR.GetDevice("AV & Custom Systems (TCP)"), function(name, value, data) {
switch(name) {
case "Volume":
if (data) IR.Log("Volume set: " + data + " " + value)
else IR.Log("Volume set: " + value)
break;
case "Play":
IR.Log("Play")
break;
}
});
Примечания
событие сработает только для драйверов AV & Custom Systems и Global Cache
IR.EVENT_TAG_UPDATE_START
Слушатель срабатывает по началу опроса KNX шины
Синтаксис
IR.AddListener(IR.EVENT_TAG_UPDATE_START, [driver](#IR.EVENT_TAG_UPDATE_START), [function](#IR.EVENT_TAG_UPDATE_START), [pointer]([#IR.EVENT_TAG_UPDATE_START)]);
| на входе | значение | описание |
|---|---|---|
| driver | IR.GetDevice("MyDriver") | type: object ссылка на драйвер |
| function | function(name, value) {} | type: function не именованная функция или обращение к функции |
| pointer | - | type: object указатель на объект, который обслуживает функцию (опционально) |
Пример
IR.AddListener(IR.EVENT_TAG_UPDATE_START, IR.GetDevice("KNX Router (KNXnet/IP) / Serial (UMC) 1"), function () {IR.Log("EVENT_TAG_UPDATE_START")});
IR.EVENT_TAG_UPDATE_END
Слушатель срабатывает по окончанию опроса KNX шины.
Синтаксис
IR.AddListener(IR.EVENT_TAG_UPDATE_END, [driver](#IR.EVENT_TAG_UPDATE_END), [function](#IR.EVENT_TAG_UPDATE_END), [pointer]([#IR.EVENT_TAG_UPDATE_END)]);
| на входе | значение | описание |
|---|---|---|
| driver | IR.GetDevice("MyDriver") | type: object ссылка на драйвер |
| function | function(name, value) {} | type: function не именованная функция или обращение к функции |
| pointer | - | type: object указатель на объект, который обслуживает функцию (опционально) |
Пример
IR.AddListener(IR.EVENT_TAG_UPDATE_END, IR.GetDevice("KNX Router (KNXnet/IP) / Serial (UMC) 1"), function () {IR.Log("EVENT_TAG_UPDATE_END")});
UPnP
.InvokeAction
отослать инструкцию на устройство с поддержкой UPnP
Синтаксис
IR.GetDevice([driver](#.InvokeAction)).InvokeAction([action_name](#.InvokeAction), [service_type](#.InvokeAction), [arguments]([#.InvokeAction), [callback](#.InvokeAction)])
| на входе | значение | описание |
|---|---|---|
| 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)).Subscribe([service_type](#.Subscribe))
| на входе | значение | описание |
|---|---|---|
| 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)).Unsubscribe([service_type](#.Unsubscribe))
| на входе | значение | описание |
|---|---|---|
| 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](#IR.EVENT_DEVICE_FOUND), [pointer]([#IR.EVENT_DEVICE_FOUND)]);
| на входе | значение | описание |
|---|---|---|
| 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](#IR.EVENT_RECEIVE_EVENT), [function](#IR.EVENT_RECEIVE_EVENT), [pointer]([#IR.EVENT_RECEIVE_EVENT)]);
| на входе | значение | описание |
|---|---|---|
| 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|string|имя драйвера |Type|Crestron (TCP)|string|тип драйвера. Точное название типа вы можете видеть в параметре Driver Type, в окне настроек подключения |LogLevel|Debug|number|уровень логирования:0 - Emergency1 - Alert2 - Critical3 - Error4 - Warning5 - Notice6 - Info7 - Debug8 - Never
var driver = IR.GetDevice("Crestron 1");
IR.AddListener(IR.EVENT_START,0,function()
{
var properties = driver.Name + " (" + driver.Type + ") created";
IR.Log(properties);
});
Остальные параметры драйверов уникальны, и зависят от типа драйвера. Имена параметров драйвера можно посмотреть в системном меню или взять из списка:
driver.property
AMX
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя |
| Port | 1319 | number | порт подключения |
| DeviceID | 10001 | number | уникальный идентификатор панели AMX |
| Login | admin | string | логин защищенной сессии |
| Password | admin | string | пароль защищенной сессии |
AV & Custom Systems (UDP)
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя |
| Port | 8080 | number | порт подключения |
| LocalPort | 80 | number | локальный порт получения данных (на стороне iRidium) |
| Group | null | string | null - броадкаст, "host" - мультикаст группа |
| Multicast | false | string | false - броадкаст, true - мультикаст (если группа указана) |
| ScriptMode | 0 | number | посылать данные напрямую в драйвер и в скрипты (0) или только в скрипты (1) |
AV & Custom Systems (HTTP)
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя |
| Port | 8080 | number | порт подключения |
| SSL | false | number | защищенное соединение |
| Login | admin | string | логин защищенной сессии |
| Password | admin | string | пароль защищенной сессии |
| DisableQueue | 0 | number | не добавлять команды в очередь, если их не удалось отправить |
| SendCommandAttempts | 0 | string | сколько раз повторить команду, если отправка не удалась (0 - не повторять, однократная отправка) |
| ConnectWaitTimeMax | 3000 | number | (мс) время ожидания соединения |
| ReceiveWaitTimeMax | 5000 | number | (мс) время ожидания ответа |
| UserAgent | iRidium | string | как iRidium представится HTTP серверу |
AV & Custom Systems (RS232)
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| PortName | \.\COM1 | string | имя СОМ-порта |
| BaudRate | 19200 | number | скорость обмена данными |
| DataBits | 8 | number | число информационных разрядов в кадре |
| Parity | e | string | контроль четности |
| StopBits | 1 | number | стоповый бит в кадре |
| Use485 | 0 | number | использовать транспорт RS485 |
AV & Custom Systems (TCP Server)
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Port | 8080 | number | порт подключения |
| MaxClients | 10 | number | максимальное число подключенных клиентов |
AV & Custom Systems (UDP Server)
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Port | 8080 | number | порт подключения |
| MaxClients | 10 | number | максимальное число подключенных клиентов |
| ClientTimeOut | 100 | number | (мс) через указанное время клиент будет отключен, если не отправляет данные серверу |
Clipsal
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя |
| Port | 20023 | number | порт подключения |
| Project | PROJ | string | имя проекта Toolkit |
Crestron
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя |
| Port | 41794 | number | порт подключения |
| NetID | 3 | number | IP ID (IP Net Address) панели из проекта в SIMPL Windows |
| TelnetPort | 41795 | number | Telnet порт подключения (системный) |
| TelnetSSL | 1 | number | использование SSL подключения |
| TelnetLogin | admin | string | логин для SSL |
| TelnetPassword | admin | string | пароль для SSL |
DVR
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя |
| Port | 8080 | number | порт подключения |
| Login | admin | string | логин защищенной сессии |
| Password | admin | string | пароль защищенной сессии |
Domintell
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя |
| Port | 17481 | number | порт подключения |
| Password | admin | string | пароль подключения |
| PingTime | 1000 | number | (мс) частота обновления данных |
EPSNET
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя |
| Port | 61682 | number | порт подключения |
| UpdateTime | 1000 | number | (мс) частота обновления данных |
| DeviceAddress | string | по умолчанию не используется |
Global Cache
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя |
| Port | 4998 | number | порт передачи системных команд - 4998 |
| IrConfirm | 0 | number | подтверждать доставку ИК команд |
| SerialPort1 | 4999 | number | СОМ порт 1 (serial 1), если есть |
| SerialPort2 | 5000 | number | СОМ порт 2 (serial 2), если есть |
| SerialPort3 | 0 | number | зарезервирован |
| PingTime | 0 | number | (мс) периодически проверять, есть ли связь с GC. 0 - пинг выключен |
| DisableQueue | 0 | number | не добавлять команды в очередь, если их не удалось отправить |
| SendCommandAttempts | 0 | string | сколько раз повторить команду, если отправка не удалась (0 - не повторять, однократная отправка) |
| ConnectWaitTimeMax | 3000 | number | (мс) время ожидания соединения |
| ReceiveWaitTimeMax | 5000 | number | (мс) время ожидания ответа |
HDL-Buspro
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 255.255.255.255 | string | IP адрес или доменное имя. В локальной сети - широковещательный адрес 255.255.255.255 |
| Port | 6000 | number | порт подключения |
| SendTimeOut | 20 | number | (мс) принудительный интервал между командами |
| ConnectMode | 0 | number | 0 - Local, 2 - Internet, 3 - Remote Server |
| Login | User | string | логин (для Internet и Remote Server) |
| Password | User | string | пароль (для Internet и Remote Server) |
| Project | ir_proj | string | имя проекта (для Internet и Remote Server) |
| ExtendedPort | 6000 | string | порт сервера (для Remote Server) |
| Group | ir_group | 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 | string | IP адрес или доменное имя (отсутствует у Net Internal UDP) |
| Port | 50001 | number | порт подключения |
KNX
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя |
| Port | 3671 | number | порт подключения |
| ConnectionWaitTime | 120000 | number | (мс) время ожидания при аварийном обрыве соединения: 60000 или 120000 мс (зависит от KNX интерфейса) |
| SendWaitTime | 0 | number | (мс) пауза между отправкой команд в шину, вводится для снижения загруженности шины |
| PingTime | 60000 | number | (мс) частота отправки команды Ping для проверки связи с роутером |
| Nat | 0 | number | режим NAT (включите при работе через Интернет или с несколькими сетевыми интерфейсами) |
KNX IP BAOS
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя |
| Port | 12004 | number | порт подключения |
| UpdateTime | 0 | number | (мс) частота отправки команды Ping для проверки связи с роутером |
Modbus
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя |
| Port | 502 | number | порт подключения |
| UpdateTime | 1000 | number | (мс) частота обновления данных |
Modbus Serial
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Port | 1 | number | номер СОМ-порта |
| PortName | \.\COM1 | string | имя СОМ-порта |
| BaudRate | 19200 | number | скорость обмена данными |
| DataBits | 8 | number | число информационных разрядов в кадре |
| Parity | e | string | контроль четности |
| StopBits | 1 | number | стоповый бит в кадре |
| Use485 | 0 | number | использовать транспорт RS485 |
SIP
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя SIP сервера |
| Port | 502 | number | порт подключения к SIP серверу |
| CallerID | Ben | string | псевдоним абонента |
| ID | Ben | number, string | номер абонента |
| Password | Pwd | number, string | пароль абонента |
| FirstRTPPort | 40000 | number | первый порт RTP диапазона |
| LastRTPPort | 41000 | number | последний порт RTP диапазона |
| ToneDTMF | 1 | number | отправлять DTMF тоны |
| ToneSIP | 0 | number | отправлять SIP тоны |
| ExternalIP | string | внешний адрес абонента | |
| PCMU | 1 | number | включить/выключить кодек |
| PCMA | 1 | number | включить/выключить кодек |
| GSM | 1 | number | включить/выключить кодек |
| H263 | 1 | number | включить/выключить кодек |
| H263_1998 | 1 | number | включить/выключить кодек |
iRidium Server
| Параметр | Значение | Тип | Описание |
|---|---|---|---|
| Host | 192.168.0.100 | string | IP адрес или доменное имя |
| Port | 30464 | number | порт подключения |
| Login | admin | string | логин защищенной сессии |
| Password | admin | string | пароль защищенной сессии |