Материал из Module developer
Перейти к: навигация, поиск
Другие языки:
English • ‎русский

Содержание

Общее описание

Принципы работы с модулем полностью повторяют принципы работы с проектом в i3 pro за исключением описанных ниже методов и свойств. При разработке модуля появляются новые понятия "Модуль", "Подустройство", Свойства модуля". Параметры в методах, которые обозначены скобками, являются необязательными.

Модуль

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

module.GetSubDevice

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

Синтаксис

module.GetSubDevice(Name)

Название Пример Описание
Name "SubDevice 1" type: string
имя подустройства
На выходе
Object type: Object
объект подустройства


Пример

var SubDevice = module.GetSubDevice("SubDevice 1");

Также возможно получить ссылку на подустройство по ID. Для это потребуется указать нужный id подустройства входным параметром


module.AddSubDevice

Создание подустройства с помощью скрипта

Синтаксис

module.AddSubDevice(SystemName, [Device], [System], [Type], [Tags], [Name], [Callback])

Название Пример Описание
SystemName "SubDevice 1" type: string
системное имя подустройства
Device type: Object
драйвер, к которому будет привязано подустройство
System false type: boolean
устаревший параметр, следует использовать false
Type 1 type: number

тип smart устройства. Параметр в разработке

Tags type: Array

Массив объектов виртуальных тегов

Name "SubDevice 1" type: string

имя подустройства, которое отображается пользователю

Callback function(){do somethings} type: function

функция, которая выполняется до наступления события IR.EVENT_ADD_SUBDEVICE

На выходе
Object type: Object

объект подустройства


Пример

var SubDevice = module.GetSubDevice("SubDevice 1");





module.DeleteSubDevice

Удалить подустройство

Синтаксис

module.DeleteSubDevice(ID)

Название Пример Описание
ID 1 type: number

Идентификатор подустройства

На выходе
Boolean type: Boolean

Результат (true, false)


Пример

var l_oSubDevice = module.GetSubDevice("SubDevice 1");
module.DeleteSubDevice(l_oSubDevice.ID);  
//удаляем подустройство




module.CreateDevice

Создать драйвер из под скрипта. Вы можете создать только драйвер типа AV & Custom Systems и BLE. Работа с другими драйверами производится после добавления их в проект из базы данных.

Синтаксис

module.CreateDevice(Type, Name, Options)

Название Пример Описание
Type IR.DEVICE_CUSTOM_TCP type: Number
тип драйвера
Name "AV Driver 1" type: String
уникальное имя драйвера
Options Host: '192.168.0.47', Port: 80 type: Object
набор параметров драйвера через запятую
На выходе
Object [object DevicePrototype] type: Object
ссылка на драйвер, как на объект


Пример

var Device = module.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(Device); // [object DevicePrototype]

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


module.GetDevice

Получить используемое устройство

Синтаксис

module.GetDevice(Name)

Название Пример Описание
Name "Device 1" type: string
Имя устройства
На выходе
Object type: Object
Объект устройства


Пример

var Device = module.GetDevice("Device 1");





module.GetSubDevices

Получить список подустройств

Синтаксис

module.GetSubDevices()

Название Пример Описание
- - type: -
-
На выходе
Array type: Array
Массив объектов подустройств


Пример

var SubDevices = module.GetSubDevices();





module.GetPopup

Получить попап из модуля

Синтаксис

module.GetPopup(Name)

Название Пример Описание
Name "Popup 1" type: string
Имя попапа
На выходе
Object type: Object
Объект попапа


Пример

var Popup = module.GetPopup("Popup 1");





module.ShowPopup

Показать попап из модуля

Синтаксис

module.ShowPopup(Name, [GroupEffectNumber])

Название Пример Описание
Name "Popup 1" type: string
Имя попапа
GroupEffectNumber 1000 type: number
Номер группы эффектов (опционально)
На выходе
Boolean type: Boolean
Результат (true, false)


Пример

module.ShowPopup("Popup 1");





module.HidePopup

Скрыть попап из модуля

Синтаксис

module.HidePopup(Name, [GroupEffectNumber])

Название Пример Описание
Name "Popup 1" type: string
Имя попапа
GroupEffectNumber 1000 type: number
Номер группы эффектов (опционально)
На выходе
Boolean type: Boolean
Результат (true, false)


Пример

module.HidePopup("Popup 1");





module.ClonePopup

Клонировать попап

Синтаксис

module.ClonePopup(Popup, ClonePopupName)

Название Пример Описание
Popup Popup type: Object
Объект оригинального попапа
ClonePopupName "ClonePopup" type: string
Имя клонируемого попапа
На выходе
Object type: Object
Объект клонируемого попапа на основе оригинального


Пример

var Popup = module.GetPopup("Popup 1")
var ClonePopup = module.ClonePopup(Popup, "ClonePopup");

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


module.GetVariable

Получение глобальной переменной

Синтаксис

module.GetVariable(Path.Name)

Название Пример Описание
Path Tokens type: string
указывает путь к переменной и ее тип:
  • System - System Tokens
  • Global - Project Tokens
  • Drivers.<driver name> - Driver Tokens
  • UI.<page name> - Page (Popup) tags
  • UI.<page name>.<item name> - Item tags
Name Update type: string
Имя переменной
На выходе
Value true type: string, number
Значение переменной


Пример

// System Tokens    
    var tag1 = module.GetVariable("System.Update");
// Project Tokens
    var tag2 = module.GetVariable("Global.My Var 1");
// Driver Tokens
    var tag3 = module.GetVariable("Drivers.AV & Custom Systems (TCP).Online");
    var tag4 = module.GetVariable("Drivers.AV & Custom Systems (TCP).Channel 1");
// GUI Tags
    var tag5 = module.GetVariable("UI.Page 1.Text");
    var tag6 = module.GetVariable("UI.Page 1.Item 1.Value");





module.SetVariable

Установка глобальной переменной

Синтаксис

module.SetVariable(Path.Name, Value)

Название Пример Описание
Path Tokens type: string
указывает путь к переменной и ее тип:
  • System - System Tokens
  • Global - Project Tokens
  • Drivers.<driver name> - Driver Tokens
  • UI.<page name> - Page (Popup) tags
  • UI.<page name>.<item name> - Item tags
Name "Name" type: string
Имя переменной
Value 1 type: string, number
Установка значения
На выходе

-


Пример

module.SetVariable("Global.Name", "Name")





module.AddRelation

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

Синтаксис

module.AddRelation(LHSName, RHSName)

Название Пример Описание
LHSName "Drivers.HDL-BUS Pro Network (UDP).HDL-MC48IPDMX.231:channel" type: string
Полный путь к первому свойству
RHSName "UI.Dimmer.Level.Value" type: string
Полный путь ко второму свойству
На выходе
Boolean true type: Boolean
Результат создания связи


Пример

module.AddRelation("Drivers.HDL-BUS Pro Network (UDP).HDL-MC48IPDMX.231:channel", "UI.Dimmer.Level.Value"); // creates relation between the feedback and the value of dimmer

Узнать полный путь к свойству можно с помощью Relations в редакторе.


module.RemoveRelation

Удалить связь между свойствами. Свойства, которые могут быть частями связи: свойства графических элементов, значения токенов, значения каналов обратной связи драйвера

Синтаксис

module.RemoveRelation(LHSName, RHSName)

Название Пример Описание
LHSName "Drivers.HDL-BUS Pro Network (UDP).HDL-MC48IPDMX.231:channel" type: string
Полный путь к первому свойству
RHSName "UI.Dimmer.Level.Value" type: string
Полный путь ко второму свойству
На выходе
Boolean true type: Boolean
Результат удаления связи


Пример

module.RemoveRelation("Drivers.HDL-BUS Pro Network (UDP).HDL-MC48IPDMX.231:channel", "UI.Dimmer.Level.Value");

Узнать полный путь к свойству можно с помощью Relations в редакторе.


module.GetProperty

Получить свойство модуля

Синтаксис

module.GetProperty(Name)

Название Пример Описание
Name "Property 1" type: string
Имя свойства
На выходе
Value type: string
Значение свойства


Пример

var Property = module.GetProperty("Property 1");





module.SetProperty

Добавить или обновить свойство модуля

Синтаксис

module.SetProperty(Name, Value)

Название Пример Описание
Name "Property 1" type: string
Имя свойства
Value "Value" type: string
Значение
На выходе

-


Пример

module.SetProperty("Property 1", "Value");

Данное свойство будет отображаться в i3 lite в информации об модуле (Module preferences)


module.GetProperties

Получить объект со свойствами

Синтаксис

module.GetProperties()

Название Пример Описание

-

На выходе
Object {Name: Value} type: Object
Объект со свойствами
  • Name - имя свойства
  • Value - значение свойства


Пример

var Properties = module.GetProperties();





module.AddListener

Добавить обработчик событий

Синтаксис

module.AddListener(EventType, EventParent, Listener, [Pointer])

Название Пример Описание
EventType IR.EVENT_MODULE_START type: number
Идентификатор события, за которым следит слушатель
EventParent module.GetPopup("Popup 1").GetItem("Item 1") type: Object
Входной параметр, необходимый для создания слушателя. Если параметра нет, укажите 0
Listener function(){...} type: Function
Не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия
Pointer type: Object
Указатель на объект, который обслуживает функцию (опционально)
На выходе
Boolean true type: Boolean
Результат добавления обработчика


Пример

module.AddListener(IR.EVENT_ITEM_PRESS,module.GetPopup("Popup 1").GetItem("Item 1"),function()
{
   IR.Log("Item 1 pressed");  
});

События для слушателя можно посмотреть тут: ссылка


module.RemoveListener

Удаление обработчика событий

Синтаксис

module.RemoveListener(EventType, EventParent, Listener)

Название Пример Описание
EventType IR.EVENT_MODULE_START type: number
Идентификатор события, за которым следит слушатель
EventParent module.GetPopup("Popup 1").GetItem("Item 1") type: Object
Входной параметр, необходимый для создания слушателя. Если параметра нет, укажите 0
Listener function(){...} type: Function
Не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия
На выходе
Boolean true type: Boolean
Результат удаления обработчика


Пример

module.RemoveListener(IR.EVENT_ITEM_PRESS,module.GetPopup("Popup 1").GetItem("Item 1"),function()
{
   IR.Log("Item 1 pressed");  
});

События для слушателя можно посмотреть тут: ссылка


module.SetInterval

Создание циклической функции

Синтаксис

module.SetInterval(Delay, Function, [This])

Название Пример Описание
Delay 1000 type: number
Задержка (в миллисекундах)
Function function(){...} type: Function
Не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия
This type: Object
Указатель на объект, который обслуживает функцию (опционально)
На выходе
Number 1 type: Number
Идентификатор интервала


Пример

var Interval = module.SetInterval(1000, function(){
	IR.Log("Hello, world!");
});





module.ClearInterval

Удаление циклической функции

Синтаксис

module.ClearInterval(ID)

Название Пример Описание
ID 1 type: number
Идентификатор интервала
На выходе
Boolean true type: Boolean
Результат удаления циклической функции


Пример

var Interval = module.SetInterval(1000, function(){
	IR.Log("Hello, world!");
});
module.ClearInterval(Interval);





module.SetTimeout

Вызов функции с задержкой

Синтаксис

module.SetTimeout(Delay, Function, [This])

Название Пример Описание
Delay 1000 type: number
Задержка (в миллисекундах)
Function function(){...} type: Function
Не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия
This type: Object
Указатель на объект, который обслуживает функцию (опционально)
На выходе
Number 1 type: Number
Идентификатор интервала


Пример

var Timeout = module.SetTimeout(1000, function(){
	IR.Log("Hello, world!");
});





module.CreateEffect

Cоздать эффект анимации во время работы приложения и использовать его при показе и скрытии попапа.

Синтаксис

var name = module.CreateEffect(Type)

Название Пример Описание
name name type: string
Имя переменной для сохранения группы эффектов, нужно для присвоения номера и других параметров группе
Type IR.EFFECT_FADE type: Object
Тип эффекта
На выходе
Object [Object EffectPrototype] type: Object
Cсылка на группу эффектов анимации


Пример

var Fade = module.CreateEffect(IR.EFFECT_FADE); // создаем группу, сохраняем в переменную 
Fade.Group = 1000; // присваиваем номер группы
Fade.Delay = 0; // задержка выполнения эффектов
Fade.Duration = 400; // продолжительность эффекта
Fade.Tween = 0; // формула вычисления эффекта (твинер)
module.ShowPopup("Popup 1", 1000) // покажем попап с эффектами группы 1000

Эффекты:

  • IR.EFFECT_FADE - плавное появление / исчезновение;
  • IR.EFFECT_ROTATE - вращение вокруг своей оси, цент поворота середина всплывающего окна;
  • IR.EFFECT_SCALE - увеличение / уменьшение;
  • IR.EFFECT_SLIDE - движение в / из стороны;
  • IR.EFFECT_TVSCAN - сжатие по горизонтали;


Свойства Эффектов:

  • Group (число) - Номер группы эффектов, в которой будет находиться эффект. Рекомендуется использовать номера групп эффектов начиная с 1000, это убережет вас от пересечения с группами эффектов, которые создает редактор. В случае если требуется дополнить группы эффектов созданные в редакторе на эффекты созданные динамически, то используйте это осознанно.
  • Delay (число, мс) - Задержка перед выполнением эффекта;
  • Duration (число, мс) - Продолжительность эффекта;
  • Tween (число) - Формула вычисления




module.CreateItem

Создание диалогового элемента

Синтаксис

module.CreateItem(Type, Name, X, Y, Width, Height)

Название Пример Описание
Type IR.ITEM_BUTTON type: Number
Тип графического элемента
Name "Button 1" type: string
Название элемента, уникальное для попапа
X 30 type: Number
координата по оси X
Y 40 type: Number
координата по оси Y
Width 800 type: Number
ширина элемента
Height 150 type: Number
высота элемента
На выходе
Object [Object DialogItemPrototype] type: Object
Экземпляр графического объекта


Пример

var src = module.CreateItem(IR.ITEM_BUTTON,"Button 1",30,40,800,150); 
IR.Log(src) // [Object DialogItemPrototype]

Типы графических элементов, создаваемые через module.CreateItem:

  • IR.ITEM_POPUP - попап (Popup)


Чтобы создать диалоговый элемент на конкретном попапе, примените CreateItem к ссылке на попап:

    var src = module.GetPopup("Popup 1").CreateItem(IR.ITEM_BUTTON,"Button 1",30,40,800,150); 
    IR.Log(src) // [Object DialogItemPrototype]


Типы графических элементов, создаваемые через Popup.CreateItem:

  • IR.ITEM_BUTTON - кнопка (Button)
  • IR.ITEM_TRIGGER_BUTTON - кнопка триггер (Trigger Button)
  • IR.ITEM_MUTI_STATE_BUTTON - анимированная кнопка (Multistate Button)
  • IR.ITEM_UPDOWN_BUTTON - кнопка инкремент/декремент (Up/Down Button)
  • IR.ITEM_LEVEL - уровень (Level)
  • IR.ITEM_MUTI_STATE_LEVEL - анимирванный уровень (Multistate Level)
  • IR.ITEM_EDIT_BOX - поле ввода (EditBox)
  • IR.ITEM_VIRTUAL_KEY_BUTTON - виртуальная клавиша (Virtual Key)
  • IR.ITEM_JOYSTICK - джойстик (Joystick)
  • IR.ITEM_PICKER - барабан



Создание IR.ITEM_PICKER имеет следующую конструкцию:

Синтаксис

Popup.CreateItem(Type, Name, Parameters)

Название Пример Описание
Type IR.ITEM_PICKER type: Number
Тип графического элемента
Name "Picker 1" type: string
Название элемента, уникальное для попапа
Parameters - type: Object
Существует два варианта параметров. Первый: {X: Number, Y: Number, Min: Number, Max: Number, VisibleCount: Number, Template: Popup}, Второй: {X: Number, Y: Number, Items: Array, VisibleCount: Number, Template: Popup
}
На выходе
Object [Object DialogItemPrototype] type: Object
Экземпляр графического объекта


Пример

var Template = module.GetPopup("Template");
var Popup = module.GetPopup("Popup 1");
//Создание IR.ITEM_PICKER с Parameters v1
var Picker_1 = Popup.CreateItem(IR.ITEM_PICKER, "Picker_1", {
	X: 30, //координата по оси X
	Y: 40, //координата по оси Y
	Min: 1, //Начальное значение барабана
	Max: 31, //Конечное значение барабана
	VisibleCount: 3, //Количество отображаемых значений
	Template: Template //Темплейт для барабана
});
var Value = Picker_1.Value; //получение значения барабана
Picker_1.Position = 10; //установка позиции для барабана
//Создание IR.ITEM_PICKER с Parameters v2
var DayOfWeek = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
var Picker_2 = Popup.CreateItem(IR.ITEM_PICKER, "Picker_2", {
	X: 30,
	Y: 40,
	Items: DayOfWeek, //Массив значений
	VisibleCount: 3,
	Template: Template
});
var Value = Picker_2.Value; //получение значения барабана
Picker_2.Position = 3; //установка позиции для барабана

Поле VisibleCount должно содержать только нечетные числа!


module.Import

Импорт объекта с классами из файла модуля

Синтаксис

module.Import(FileName)

Название Пример Описание
FileName "GUI.js" type: string
Имя файла js с расширением
На выходе
Object type: Object
Объект с классами


Пример

//Name_1.js - первый js файл
this.Text = "Hello, world!"; //Указатель на текстовую переменную
//Name_2.js - второй js файл
var Text = module.Import("Name_1.js").Text; //Импортируем из первого js файла объект с указателем на текстовую переменную
IR.Log(Text); //"Hello, world!" //выводим в лог переменную Text





module.GetDeviceSetup

Получить данные, установленные в драйвер

Синтаксис

module.GetDeviceSetup(DeviceName)

Название Пример Описание
DeviceName "Device 1" type: string
Имя устройства
На выходе
Object type: Object
Объект с данными, установленными в драйвер


Пример

var SetupData = module.GetDeviceSetup("Device 1");





module.GetDeviceSetups

Получить все данные, установленные во все драйвера

Синтаксис

module.GetDeviceSetups()

Название Пример Описание

-

На выходе
Array type: Array
Массив с объектами данных, установленных в драйвера


Пример

var SetupsData = module.GetDeviceSetups();





module.SaveCache

Сохранить кеш модуля

Синтаксис

module.SaveCache(Value)

Название Пример Описание
SaveCache "1" type: string
Значение
На выходе

-


Пример

module.SaveCache("1");





module.LoadCache

Загрузить кеш модуля

Синтаксис

module.LoadCache()

Название Пример Описание

-

На выходе
String type: String
Значение, сохраненное в кеш


Пример

var CacheData = module.LoadCache();





module.CreateImage

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

Синтаксис

module.CreateImage(Name, Param);

Название Пример Описание
Name "Camera 1" type: String
имя динамического изображения (камеры)
Param type: Object

набор свойств динамического изображения

  • URI: ссылка на изображение
  • Refresh: для картинок (снепшотов), частота обновления изображения. Для видео-потока 0
  • Demuxer: автоматический или ручной выбор типа потока FFMPEG - для случаев, когда поток не определяется автоматически. Пустое поле - автоматический выбор, mxg - для камеры Mobotix
  • Probe Size: размер данных, необходимых для начала воспроизведения видео (кеширование). По умолчанию (0) составляет 5Мб. Можно уменьшить для более быстрого начала воспроизведения
  • Param: строка для указания типа транспорта RTSP. Укажите tcp, если видео с камеры не воспроизводится через интернет или выдает артефакты воспроизведения
  • Audio: воспроизводить аудио-поток. Работает с камерами Mobotix (mxg)
  • ScaleWidth, ScaleHeight: разрешение изображения. Если не указывать, будет отображаться в оригинальном разрешении
На выходе
Object [object ImagePrototype] type: Object
экземпляр графического объекта (изображения)


Пример

// Create image
module.CreateImage("Camera 1", {URI: "http://login:pass@host:port/file", 
						  Refresh: 0, 
						  Demuxer: '', 
						  ProbeSize: 0, 
						  Param: '', 
						  Audio: false, 
						  ScaleWidth: 640, 
						  ScaleHeight: 480
						  });
 
 
// Get image
var l_oImage = module.GetImage("Camera 1");    
IR.Log(l_oImage)        // [object ImagePrototype]
 
 
// Get image properties
IR.Log(l_oImage.URI)    // http://login:pass@host:port/file
 
 
// Setup image (set image properties)
l_oImage.URI = "http://login:pass@host:port/file";
l_oImage.Refresh = 0;
l_oImage.Demuxer = '';
l_oImage.ProbeSize = 0;
l_oImage.Param = '';
l_oImage.Audio = false;
l_oImage.ScaleWidth = 1024;
l_oImage.ScaleHeight = 768;
 
 
// Link image to Item
module.GetPopup("Popup 1").GetItem("Item 1").GetState(0).Image = module.GetImage("Camera 1");
module.GetPopup("Popup 2").GetItem("Item 2").GetState(0).Image = l_oImage;





module.GetText

Получить локализацию вашего текста, используемого в модуле

Синтаксис

module.GetText(Text)

Название Пример Описание
Text "Time" type: string
Текст, используемый на графическом элементе
На выходе
string type: string
Возвращает локализованный текст


Пример

var l_oText = module.GetText("Time");
module.GetPopup("Popup 1").GetItem("Item 1").Text = l_oText;





Свойства модуля

module.property


Name "HDL Relay" type: String
имя модуля
ID 1 type: Number
идентификатор модуля
Icon type: String
иконка модуля
Used true type: Boolean
флаг использования модуля
Hidden false type: Boolean
флаг скрытого модуля
Smart false type: Boolean
признак умного модуля
StoreID 102 type: Number
идентификатор модуля в магазине
SubDeviceCount 3 type: Number
Количество подустройств
Version 1.0.4 type: String
Версия модуля
SetupCount 2 type: Number
Количество объектов с данными установок для драйверов
SubDeviceGroupCount 2 type: Number
Количество объектов групп подустройств
SettingsPopupName "SettingsPopup 1" type: String
Имя настроичного попапа для модуля. Настроичный попап создает разработчик модуля для обеспечения его работы, если потребуется
AuthorizationPopupName "AuthorizationPopup 1" type: String
попап авторизации. Служит для обеспечения работы модуля, который требует авторизацию. Создается разработчиком модуля
AuthorizationStatus true type: Boolean

флаг авторизации. При разработке модуля, который требует авторизацию, необходимо указывать статус авторизации

  • true, если пользователь авторизовался
  • false, если пользователь вышел из системы
WorkMode type: Number
Режим работы модуля (панельный, серверный). Константы:
  • IR.PROJECT_WORK_ONLY_PANEL_MODE: панельный режим работы
  • IR.PROJECT_WORK_WITH_SERVER_MODE: серверный режим работы
ServerSupport false type: Boolean
поддержка работы с сервером у модуля



Подустройства

В данном разделе описаны методы и свойства для работы с подустройствами. Объектом подустройства в данном разделе будет считаться переменная SubDevice.

SubDevice.Connect

Соединение с устройством, содержащимся в подустройстве

Синтаксис

SubDevice.Connect()

Название Пример Описание

-

На выходе

-


Пример

var l_oDevice = module.GetDevice("Device 1"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.Connect(); //Подключаемся к устройству





SubDevice.Disconnect

Разрыв соединения с устройством, содержащимся в подустройстве

Синтаксис

SubDevice.Disconnect()

Название Пример Описание

-

На выходе

-


Пример

var l_oDevice = module.GetDevice("Device 1"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.Disconnect(); //Отключаемся от устройства





SubDevice.Send

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

Синтаксис

SubDevice.Send(DataString)
SubDevice.Send(DataArray)
SubDevice.Send(DataString, Transport)

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

-


Пример

// AV & Custom Systems (TCP, UDP, RS232)
var l_oDevice = module.GetDevice("AV Device"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.Send(['instruction', '\r\n']);
// AV & Custom Systems (HTTP)
// <Type or request>,<URI>,<Data> devided by "," so u cannot use "," inside of <URI> and <Data>
var l_oDevice = module.GetDevice("AV Device"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.Send(['GET,URI']); // GET 
l_oSubDevice.Send(['POST,URI,Data']); // POST 
l_oSubDevice.Send(['PUT,URI,Data']); // PUT
// Global Cache:
// IR.GetDevice("Global Cache").Send(<DATA>, <TRANSPORT ID>)
var l_oDevice = module.GetDevice("Global Cache"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство
l_oSubDevice.Send(['setstate,1:1,1', '\r\n'], 0)

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


SubDevice.SendEx

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

Синтаксис

SubDevice.SendEx(Data, Object)

Название Пример Описание
Data [a, b, c] type: array
массив данных для отправки
Object this type: Object
объект родитель
На выходе

-


Пример

var l_oDevice = module.GetDevice("Server REST"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.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);}   
   });
l_oSubDevice.SendEx({ 
      Type: "GET",        															
      Url:  "/json/ok/server/channel",
      Headers: {"Cookie":"ir-session-id=o8lKdEvw2ZlU"},
      cbReceiveText:   function(text, code, headers)    {IR.Log("cbReceiveText "+text);}
   });





SubDevice.GetCookies

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

Синтаксис

SubDevice.GetCookies()

Название Пример Описание

-

На выходе
Array type: Array
Массив Cookies


Пример

var l_oDevice = module.GetDevice("Device 1"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
var l_aCookies = l_oSubDevice.GetCookies();





SubDevice.SetCookie

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

Синтаксис

SubDevice.SetCookie(Key, Value)

Название Пример Описание
Key type: String
Ключ
Value type: String
Значение
На выходе
Boolean type: Boolean
Успешность отправки


Пример

var l_oDevice = module.GetDevice("Device 1"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство
var l_aCookies = l_oSubDevice.SetCookie("TestCookie", "value");





SubDevice.Set

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

Синтаксис

SubDevice.Set(ChannelID, Value)

Название Пример Описание
ChannelID "Channel 1" type: String, Number
Индекс или имя команды
Value 100 type: String, Number
Число или строка, которую нужно передать команде для отправки оборудованию
На выходе
Boolean type: Boolean
Успешность


Пример

//KNX. 0 - first Commands in project Tree; 100 - value to send, "Dimming" - command name
var l_oDevice = module.GetDevice("KNX Router (KNXnet/IP)"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.Set(0, 100);
l_oSubDevice.Set("Dimming", 100);
//Global Cahe. "Command 1" - name of command on GC output, "" - empty data
var l_oDevice = module.GetDevice("Global Cache"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.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
var l_oDevice = module.GetDevice("HDL-BUS Pro Network (UDP)"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.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
var l_oDevice = module.GetDevice("Domintell Network (UDP)"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.Set("DDIM01:Channel 1", 100);

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


SubDevice.SetParameters

Установка параметров устройства

Синтаксис

SubDevice.SetParameters({Host: host, Port: port, other})

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


Пример

var l_oDevice = module.GetDevice("KNX"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.SetParameters({Host: "215.110.10.22", Port: 8080});

Свойства драйвера можно посмотреть по этой ссылке: Свойства драйверов


SubDevice.InvokeAction

Отсылка команды на устройство UPNP

Синтаксис

SubDevice.InvokeAction(ActionName, ServiceType, [Arguments, Callback])

Название Пример Описание
ActionName "Play" type: string
имя команды
ServiceType "service:AVTransport:1" type: string
используемый сервис
Arguments {InstanceID: 0, Speed: 1} type: string
список аргументов команды
Callback type: function
функция обратного вызова
На выходе
Boolean type: Boolean
Успешность


Пример

var l_oDevice = module.GetDevice("Sonos"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.InvokeAction("Play", "service:AVTransport:1", {InstanceID: 0, Speed: 1});





SubDevice.Subscribe

Подписка на события UPNP

Синтаксис

SubDevice.Subscribe(ServiceType)

Название Пример Описание
ServiceType "urn:schemas-upnp-org:service:AVTransport:1" type: string
используемый сервис
На выходе
Boolean type: Boolean
Успешность


Пример

var l_oDevice = module.GetDevice("Sonos"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.Subscribe("urn:schemas-upnp-org:service:AVTransport:1");





SubDevice.Unsubscribe

Отписаться от события UPNP

Синтаксис

SubDevice.Unsubscribe(ServiceType)

Название Пример Описание
ServiceType "urn:schemas-upnp-org:service:AVTransport:1" type: string
используемый сервис
На выходе
Boolean type: Boolean
Успешность


Пример

var l_oDevice = module.GetDevice("Sonos"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.Unsubscribe("urn:schemas-upnp-org:service:AVTransport:1");





SubDevice.GetFeedback

Получить значение из канала обратной связи драйвера

Синтаксис

SubDevice.GetFeedback(Name)

Название Пример Описание
Name "Feedback 1" type: string
имя канала обратной связи (Feedbacks)
На выходе
Value "data" type: string, number
строка или число, полученное из канала обратной связи


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.GetFeedback("Value 1"); // 100





SubDevice.GetLogin

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

Синтаксис

SubDevice.GetLogin()

Название Пример Описание

-

На выходе
Login 'admin' type: string
логин драйвера


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
var l_Login = l_oSubDevice.GetLogin();
IR.Log(l_Login) // admin





SubDevice.GetPassword

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

Синтаксис

SubDevice.GetPassword()

Название Пример Описание

-

На выходе
Password 'admin' type: string
пароль драйвера


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
var l_oPass = l_oSubDevice.GetPassword();
IR.Log(l_oPass) // 'admin'





SubDevice.AddChannel

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

Синтаксис

SubDevice.AddChannel(Name, DataArray)

Название Пример Описание
Name "Channel 1" type: string
имя канала
DataArray type: array
массив данных, специфичный для каждого драйвера
На выходе
Boolean type: Boolean
Успешность


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.AddChannel("Channel 1", [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);





SubDevice.DeleteChannel

Удалить канал драйвера

Синтаксис

SubDevice.DeleteChannel(Name)

Название Пример Описание
Name "Channel 1" type: string
имя канала
На выходе
Boolean type: Boolean
Успешность


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.AddChannel("Channel 1", [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);
l_oSubDevice.DeleteChannel("Channel 1"); //Удаляем канал





SubDevice.AddTag

Добавление канала обратной связи драйвера

Синтаксис

SubDevice.AddTag(Name, DataArray)

Название Пример Описание
Name "Feedback 1" type: string
имя канала обратной связи
DataArray type: array
массив данных, специфичный для каждого драйвера
На выходе
Boolean type: Boolean
Успешность


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.AddTag("Feedback 1", [0x00, 0x00, 0x00, 0x00]);





SubDevice.DeleteTag

Удаление канала обратной связи драйвера

Синтаксис

SubDevice.DeleteTag(Name)

Название Пример Описание
Name "Feedback 1" type: string
имя канала обратной связи
На выходе
Boolean type: Boolean
Успешность


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.AddTag("Feedback 1", [0x00, 0x00, 0x00, 0x00]);
l_oSubDevice.DeleteTag("Feedback 1"); //Удаляем тег





SubDevice.AddWidget

Добавить виджет к подустройству

Синтаксис

SubDevice.AddWidget(Name)

Название Пример Описание
Name "Popup 1" type: string
имя попапа
На выходе
Object type: Object
Объект виджета


Пример

var l_oSubDevice = module.AddSubDevice("SubDevice 1"); //создаем подустройство
var l_oWidget = module.GetPopup("Popup 1"); 
l_oSubDevice.AddWidget(l_oWidget.Name);





SubDevice.GetWidget

Получить виджет подустройства

Синтаксис

SubDevice.GetWidget(Name)

Название Пример Описание
Name "Popup 1" type: string
имя виджета
На выходе
Object type: Object
Объект виджета


Пример

var l_oSubDevice = module.AddSubDevice("SubDevice 1"); //создаем подустройство
var l_oWidget = l_oSubDevice.GetWidget("Popup 1");





SubDevice.DeleteWidget

Удалить виджет

Синтаксис

SubDevice.DeleteWidget(ID)

Название Пример Описание
ID 1 type: number
Идентификатор виджета
На выходе
Boolean type: Boolean
Успешность


Пример

var l_oSubDevice = module.AddSubDevice("SubDevice 1"); //создаем подустройство
var l_oWidget = l_oSubDevice.GetWidget("Popup 1");
l_oSubDevice.DeleteWidget(l_oWidget.ID); //Удаляем виджет





SubDevice.AddVirtualTag

Добавить виртуальный тег

Синтаксис

SubDevice.AddVirtualTag(Name, Value, [Edit], [smartID], [Hidden])

Название Пример Описание
Name "Tag" type: String
имя виртуального тега подустройства
Value "Name" type: String
Значение тега
Edit true type: Boolean
Разрешение редактирования тега
smartID type: Number
Параметр в разработке! Необходимо устанавливать false
Hidden true type: Boolean
Признак скрытости тега
На выходе
Object type: Object
Объект виртуального тега


Пример

var l_oSubDevice = module.AddSubDevice("SubDevice 1"); //создаем подустройство
var l_oTag = l_oSubDevice.AddVirtualTag("Name", "HDL-BUS", true);





SubDevice.DeleteVirtualTag

Удалить виртуальный тег

Синтаксис

SubDevice.DeleteVirtualTag(Name)
SubDevice.DeleteVirtualTag(VirtualTag)

Название Пример Описание
Name "Tag" type: String
имя виртуального тега подустройства
VirtualTag type: Object
Объект виртуального тега
На выходе
Boolean type: Boolean
Успешность


Пример

var l_oSubDevice = module.AddSubDevice("SubDevice 1"); //создаем подустройство
var l_oTag = l_oSubDevice.AddVirtualTag("Name", "HDL-BUS", true);
l_oSubDevice.DeleteVirtualTag(l_oTag);





SubDevice.GetVirtualTag

Получить виртуальный тег подустройства

Синтаксис

SubDevice.GetVirtualTag(Name)

Название Пример Описание
Name "Tag" type: String
имя виртуального тега подустройства
На выходе
Object type: Object
Объект виртуального тега


Пример

var l_oSubDevice = module.AddSubDevice("SubDevice 1"); //создаем подустройство
var l_oTag = l_oSubDevice.GetVirtualTag("Tag"); //Получаем виртуальный тег





SubDevice.GetVirtualTags

Получить виртуальный тег подустройства

Синтаксис

SubDevice.GetVirtualTags()

Название Пример Описание

-

На выходе
Array type: Array
Массив объектов виртуальных тегов подустройства


Пример

var l_oSubDevice = module.AddSubDevice("SubDevice 1"); //создаем подустройство
var l_oTags = l_oSubDevice.GetVirtualTags(); //Получаем все виртуальные теги





SubDevice.AddDataRequestHandler

Добавить запрос для подустройства

Синтаксис

SubDevice.AddDataRequestHandler(Name, Type, Callback)

Название Пример Описание
Name "Image" type: String
имя запроса
Type type: Number
тип запроса:
  • IR.SUB_DEVICE_REQUEST_DINAMIC_IMAGE - Возвращает объект картинки
  • IR.SUB_DEVICE_REQUEST_SCANNER_INFO - Возвращает всю информацию о модулях, установленных через сканер
Callback type: Function
Выполняемая функция
На выходе
Boolean type: Boolean
Успешность


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.AddDataRequestHandler("Image", IR.SUB_DEVICE_REQUEST_DINAMIC_IMAGE, function(){
	IR.Log("Hello, world!");	
});





SubDevice.GetDataRequests

Получить все запросы подустройства

Синтаксис

SubDevice.GetDataRequests()

Название Пример Описание

-

На выходе
Array type: Array
Массив объектов запросов подустройства


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
var l_aRequests = l_oSubDevice.GetDataRequests();





SubDevice.AddAction (работающий через функцию)

Добавить действие (используется в макросах и правилах). Параметры, находящиеся в скобках, являются не обязательными

Синтаксис

SubDevice.AddAction(Name, ScriptCall, Method, Space, [Default], [SmartID], [AdvancedField], [Hidden])

Название Пример Описание
Name "Power on" type: String
имя действия
ScriptCall false type: Boolean
признак, что действие работает через функцию. В данном случае необходимо использовать true
Method function(in_data){...} type: Function
Выполняемая функция. Приходящим параметром в функцию может быть:
  • Если используется [Default: String], то приходящим параметром будет значение Default в формате String, которое задал разработчик модуля
  • Если используется [AdvancedField], то приходящим параметром будет значение типа Object или String взависимости от формата [AdvancedField]
Space this type: Object
Указатель на объект, который обслуживает функцию. Если не требуется использовать указатель, то можно поставить пустой объект, либо undefined
Default "1" type: String
Значение, которое будет являться приходящим параметром в Method
SmartID type: Number
Данный параметр пока не доступен, поэтому следует устанавливать null
AdvancedField {Name, Type, ...} type: Object, Array
Используется для работы со сложными действиями. При использовании AdvancedField необходимо в параметр Default устанавливать null.

В AdvancedField можно передать один объект или массив объектов с данными.


Типы сложных действий можно посмотреть тут: ссылка


Формат параметра, приходящий в функцию (Method):
1. Если используется один объект, то формат будет String (исключение: При использовании типа IR.ADVANCED_COLOR в AdvancedField параметр будет в формате Object)
2. Если используется массив объектов, то в формате Object


Hidden true type: Boolean
Признак срытности действия
На выходе
Object type: Object
Объект действия


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
 
 
//Создание действия с Default
l_oSubDevice.AddAction("Power on", true, function(in_data){
	IR.Log(in_data); //"on"		
}, undefined, "on", null, null, false);
 
 
//Создание с IR.ADVANCED_NUMBER
l_oSubDevice.AddAction("Set temperature", true, function(in_data){
IR.Log(in_data); //"35" - если пользователь выбрал 35	
 
}, undefined, null, null, {
	Type: IR.ADVANCED_NUMBER,
	Name "Temperature",
	Min: 1,
	Max: 100
}, false);
 
 
//Создание действия с IR.ADVANCED_SLIDER и IR.ADVANCED_STRING
l_oSubDevice.AddAction("Set temperature", true, function(in_data){
 
	var l_oData = JSON.Parse(in_data); //парсим объект
	IR.Log(l_oData.Temperature); //"35" - если пользователь выбрал 35	
	IR.Log(l_oData.Message); //"Hello, world!" - если пользователь ввел эту надпись
 
}, undefined, null, null, [{
	Type: IR.ADVANCED_SLIDER,
	Name "Temperature",
	Min: 1,
	Max: 100
}, 
{
	Type: IR.ADVANCED_STRING,
	Name "Message",
	Default: "Hello",
	Keyboard: IR.KEYBOARD_DECIMALPAD
 
 
}], false);
 
 
//Создание действия с IR.ADVANCED_SELECT
l_oSubDevice.AddAction("Power", true, function(in_data){
 
	var l_nValue = parseInt(in_data, 10); //переводим в числовой формат, если нужно
	IR.Log(l_nValue); //1 - если пользователь выбрал "Power on"
 
}, undefined, null, null, {
	Type: IR.ADVANCED_SELECT,
	Name "Temperature",
	Parameters: [
		{
			Caption: "Power on", //Видет пользователь
			Value: "1", //Записывается в функцию
		},
		{
			Caption: "Power off",
			Value: "0",
		}
	]	
}, false);
 
 
//Создание действия с IR.ADVANCED_COLOR
l_oSubDevice.AddAction("Set color", true, function(in_data){
 
	var l_oColor = JSON.Parse(in_data); //парсим объект
	IR.Log(l_oColor["Color (R)"]); //239
	IR.Log(l_oColor["Color (G)"]); //251
	IR.Log(l_oColor["Color (B)"]); //112
 
}, undefined, null, null, {
	Type: IR.ADVANCED_COLOR,
	Name: "Color",	
}, false);





SubDevice.AddAction (без функции)

Добавить действие (используется в макросах и правилах). Параметры, находящиеся в скобках, являются не обязательными

Синтаксис

SubDevice.AddAction(Name, ScriptCall, Channel, [Default], [SmartID], [AdvancedField], [Hidden])

Название Пример Описание
Name "Power on" type: String
имя действия
ScriptCall false type: Boolean
признак, что действие работает через функцию. В данном случае необходимо использовать true
Channel "Channel 1" type: String
имя канала
Default "1" type: String
Значение, которое будет устанавливаться в канал
SmartID type: Number
Данный параметр пока не доступен, поэтому следует устанавливать null
AdvancedField {Name, Type, ...} type: Object, Array
Используется для работы со сложными действиями. При использовании AdvancedField необходимо в параметр Default устанавливать null.

В AdvancedField можно передать один объект или массив объектов с данными.


Типы сложных действий можно посмотреть тут: ссылка

Hidden true type: Boolean
Признак скрытности действия
На выходе
Object type: Object
Объект действия


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
 
 
//Создание действия с Default
l_oSubDevice.AddAction("Power on", false, "Channel 1", "on", null, null, false);
 
 
//Создание с IR.ADVANCED_NUMBER
l_oSubDevice.AddAction("Set temperature", false, "Channel 1", null, null, {
	Type: IR.ADVANCED_NUMBER,
	Name "Temperature",
	Min: 1,
	Max: 100
}, false);





SubDevice.DeleteAction

Удалить действие

Синтаксис

SubDevice.DeleteAction(Action)
SubDevice.DeleteAction(ID)

Название Пример Описание
Action type: Object
Объект действия
ID 1 type: Number
Идентификатор действия
На выходе
Boolean true type: Boolean
Результат удаления


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
 
 
//Создание действия с Default
var l_oAction = l_oSubDevice.AddAction("Power on", false, "Channel 1", "on", null, null, false);
 
 
//Удаление с объектом действия
l_oSubDevice.DeleteAction(l_oAction);
 
 
//Удаление с идентификатором
l_oSubDevice.DeleteAction(l_oAction.ID);





SubDevice.GetAction

Получить действие

Синтаксис

SubDevice.GetAction(ID)

Название Пример Описание
ID 1 type: Number
Идентификатор действия
На выходе
Object type: Object
Объект действия


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
 
 
//Создание действия с Default
var l_oAction = l_oSubDevice.AddAction("Power on", false, "Channel 1", "on", null, null, false);
 
 
var l_nActionID = l_oAction.ID;
 
 
//Получение действия
l_oSubDevice.GetAction(l_nActionID);





SubDevice.AddEvent (работающий без функции)

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

Синтаксис

SubDevice.AddEvent(Name, Path, ScriptCall, Compare, [Default], [AdvancedField])

Название Пример Описание
Name "Temperature drops below..." type: String
Имя события
Path "Drivers.Nest.CurrentTemperature" type: String
Полный путь к каналу, каналу обратной связи драйвера, либо токену. Производится подписка на отслеживание изменений
ScriptCall false type: Boolean
Признак работы через функцию. В данной реализации необходимо устанавливать false
Compare type: String
Оператор сравнения как строка
Default "23" type: String
Значение по умолчанию
AdvancedField type: Object, Array
Используется для работы со сложными событиями. При использовании AdvancedField необходимо в параметр Default устанавливать null.

В AdvancedField можно передать один объект или массив объектов с данными.


Типы сложных событий можно посмотреть тут: ссылка

На выходе
Object type: Object
Объект события


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
 
 
//Создание события с Default
var l_oEvent = l_oSubDevice.AddEvent("Temperature drops below...", "Drivers.Nest.CurrentTemperature", false, "<", "23");
 
 
//Создание события с IR.ADVANCED_NUMBER
var l_oEvent = l_oSubDevice.AddEvent("Temperature drops below...", "Drivers.Nest.CurrentTemperature", false, "<", null, {
			Type: IR.ADVANCED_NUMBER,
			Name: "Temperature",
			Min: 0,
			Max: 100
		});

Вы можете использовать следующие операторы сравнения: ==, !=, >, <, >=, <=


SubDevice.AddEvent (работающий через функцию)

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

Синтаксис

SubDevice.AddEvent(Name, Path, ScriptCall, Method, Space, [Default], [AdvancedField])

Название Пример Описание
Name "Temperature drops below..." type: String
Имя события
Path "Drivers.Nest.CurrentTemperature" type: String
Полный путь к каналу, каналу обратной связи драйвера, либо токену. Производится подписка на отслеживание изменений
ScriptCall true type: Boolean
Признак работы через функцию. В данной реализации необходимо устанавливать true
Method function(in_data){...} type: Function
Выполняемая функция. Приходящим параметром в функцию может быть:
  • Если используется [Default], то приходящим параметром будет значение Default в формате String, которое задал разработчик модуля
  • Если используется [AdvancedField], то приходящим параметром будет значение типа Object или String взависимости от формата [AdvancedField]

Функция должна возвращать булевое значение (true, false), сигнализирующее о наступлении события (true - событие наступило)

Space this type: Object
Указатель на объект, который обслуживает функцию. Если не требуется использовать указатель, то можно поставить пустой объект, либо undefined
Default "23" type: String
Значение по умолчанию
AdvancedField type: Object, Array
Используется для работы со сложными событиями. При использовании AdvancedField необходимо в параметр Default устанавливать null.

В AdvancedField можно передать один объект или массив объектов с данными.


Типы сложных событий можно посмотреть тут: ссылка

На выходе
Object type: Object
Объект события


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
 
 
//Создание события с Default
var l_oEvent = l_oSubDevice.AddEvent("Temperature drops below...", "Drivers.Nest.CurrentTemperature", true, function(in_data){
 
	var l_nValue = parseInt(in_data, 10); //получаем in_data в числовом виде
	var l_nFeedback = parseInt(l_oSubDevice.GetFeedback("CurrentTemperature"), 10); //получаем feedback в числовом виде
	// производим сравнение
	if (l_nFeedback < l_nValue)
		return true;
 
}, this, "23");
 
 
//Создание события с IR.ADVANCED_NUMBER
var l_oEvent = l_oSubDevice.AddEvent("Temperature drops below...", "Drivers.Nest.CurrentTemperature", true, function(in_data){
 
 
var l_nValue = parseInt(in_data, 10); //получаем in_data в числовом виде
	var l_nFeedback = parseInt(l_oSubDevice.GetFeedback("CurrentTemperature"), 10); //получаем feedback в числовом виде
	// производим сравнение
	if (l_nFeedback < l_nValue)
		return true;
 
}, this, {
			Type: IR.ADVANCED_NUMBER,
			Name: "Temperature",
			Min: 0,
			Max: 100
		});

Вы можете использовать следующие операторы сравнения: ==, !=, >, <, >=, <=

SubDevice.DeleteEvent

Удалить событие

Синтаксис

SubDevice.DeleteEvent(Event)
SubDevice.DeleteEvent(ID)

Название Пример Описание
Event type: Object
Объект события
ID 1 type: Number
Идентификатор события
На выходе
Boolean true type: Boolean
Результат удаления


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
//Создание события с Default
var l_oEvent = l_oSubDevice.AddEvent("Temperature drops below...", "Drivers.Nest.CurrentTemperature", false, "<", "23");
//Удаление с объектом события
l_oSubDevice.DeleteEvent(l_oEvent);
//Удаление с идентификатором
l_oSubDevice.DeleteEvent(l_oEvent.ID);





SubDevice.GetEvent

Получить событие

Синтаксис

SubDevice.GetEvent(ID)

Название Пример Описание
ID 1 type: Number
Идентификатор события
На выходе
Object type: Object
Объект события


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
 
 
//Создание события с Default
var l_oEvent = l_oSubDevice.AddEvent("Temperature drops below...", "Drivers.Nest.CurrentTemperature", false, "<", "23");
 
 
 
var l_nEventID = l_oEvent.ID;
 
 
//Получение события
l_oSubDevice.GetEvent(l_nEventID);




SubDevice.AddCondition (работающий через функцию)

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

Синтаксис

SubDevice.AddCondition(Name, Token, ScriptCall, Method, Space, [Default], [AdvancedField])

Название Пример Описание
Name "Temperature is below..." type: String
Имя условия
Path "Drivers.Nest.CurrentTemperature" type: String
Полный путь к каналу, каналу обратной связи драйвера, либо токену. Производится подписка на отслеживание изменений
ScriptCall true type: Boolean
Признак работы через функцию. В данной реализации необходимо устанавливать true
Method function(in_data){...} type: Function
Выполняемая функция. Приходящим параметром в функцию может быть:
  • Если используется [Default], то приходящим параметром будет значение Default в формате String, которое задал разработчик модуля
  • Если используется [AdvancedField], то приходящим параметром будет значение типа Object или String взависимости от формата [AdvancedField]

Функция должна возвращать булевое значение (true, false), сигнализирующее о выполнении условия (true - условие выполнилось)

Space this type: Object
Указатель на объект, который обслуживает функцию. Если не требуется использовать указатель, то можно поставить пустой объект, либо undefined
Default "23" type: String
Значение по умолчанию
AdvancedField type: Object, Array
Используется для работы со сложными условиями. При использовании AdvancedField необходимо в параметр Default устанавливать null.

В AdvancedField можно передать один объект или массив объектов с данными.


Типы сложных условий можно посмотреть тут: ссылка

На выходе
Object type: Object
Объект условия


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
 
 
//Создание условия с Default
var l_oCondition = l_oSubDevice.AddCondition("Temperature is below...", "Drivers.Nest.CurrentTemperature", true, function(in_data){
 
	var l_nValue = parseInt(in_data, 10); //получаем in_data в числовом виде
	var l_nFeedback = parseInt(l_oSubDevice.GetFeedback("CurrentTemperature"), 10); //получаем feedback в числовом виде
	// производим сравнение
	if (l_nFeedback < l_nValue)
		return true;
 
}, this, "23");
 
 
//Создание условия с IR.ADVANCED_NUMBER
var l_oCondition = l_oSubDevice.AddCondition("Temperature is below...", "Drivers.Nest.CurrentTemperature", true, function(in_data){
 
 
var l_nValue = parseInt(in_data, 10); //получаем in_data в числовом виде
	var l_nFeedback = parseInt(l_oSubDevice.GetFeedback("CurrentTemperature"), 10); //получаем feedback в числовом виде
	// производим сравнение
	if (l_nFeedback < l_nValue)
		return true;
 
}, this, {
			Type: IR.ADVANCED_NUMBER,
			Name: "Temperature",
			Min: 0,
			Max: 100
		});

Узнать полный путь к каналу, каналу обратной связи драйвера, либо токену можно с помощью Relations в редакторе.

SubDevice.AddCondition (работающий без функции)

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

Синтаксис

SubDevice.AddCondition(Name, Token, ScriptCall, Compare, [Default], [AdvancedField])

Название Пример Описание
Name "Temperature drops below..." type: String
Имя условия
Path "Drivers.Nest.CurrentTemperature" type: String
Полный путь к каналу, каналу обратной связи драйвера, либо токену. Производится подписка на отслеживание изменений
ScriptCall false type: Boolean
Признак работы через функцию. В данной реализации необходимо устанавливать false
Compare type: String
Оператор сравнения как строка
Default "23" type: String
Значение по умолчанию
AdvancedField type: Object, Array
Используется для работы со сложными условиями. При использовании AdvancedField необходимо в параметр Default устанавливать null.

В AdvancedField можно передать один объект или массив объектов с данными. Типы сложных условий можно посмотреть тут: ссылка

На выходе
Object type: Object
Объект условия


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
 
 
//Создание условия с Default
var l_oCondition = l_oSubDevice.AddCondition("Temperature is below...", "Drivers.Nest.CurrentTemperature", false, "<", "23");
 
//Создание события с IR.ADVANCED_NUMBER
var l_oCondition = l_oSubDevice.AddCondition("Temperature is below...", "Drivers.Nest.CurrentTemperature", false, "<", null, {
			Type: IR.ADVANCED_NUMBER,
			Name: "Temperature",
			Min: 0,
			Max: 100
		});

Узнать полный путь к каналу, каналу обратной связи драйвера, либо токену можно с помощью Relations в редакторе.

SubDevice.DeleteCondition

Удалить условие

Синтаксис

SubDevice.DeleteCondition(Condition)
SubDevice.DeleteCondition(ID)

Название Пример Описание
Condition type: Object
Объект условия
ID 1 type: Number
Идентификатор условия
На выходе
Boolean true type: Boolean
Результат удаления


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
 
 
//Создание условие с Default
var l_oCondition = l_oSubDevice.AddCondition("Temperature is below...", "Drivers.Nest.CurrentTemperature", false, "<", "23");
 
 
//Удаление с объектом условияx
l_oSubDevice.DeleteCondition(l_oCondition);
 
//Удаление с идентификатором
l_oSubDevice.DeleteCondition(l_oCondition.ID);




SubDevice.GetCondition

Получить условие

Синтаксис

SubDevice.GetCondition(ID)

Название Пример Описание
ID 1 type: Number
Идентификатор условия
На выходе
Object type: Object
Объект условия


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
 
 
//Создание условия с Default
var l_oCondition = l_oSubDevice.AddCondition("Temperature is below...", "Drivers.Nest.CurrentTemperature", false, "<", "23");
 
var l_nConditionID = l_oCondition.ID;
//Получение условия
l_oSubDevice.GetCondition(l_nConditionID);




SubDevice.AddSettingsFunction

Установка функции настройки подустройства. Используется для дополнительных настроек подустройства. Вызывается через нажатие на иконку "шестеренки" в приложении
i3 lite -> "Конфигуратор" -> "Устройства" -> Выбрать необходимое устройство -> В правом верхнем углу кнопка настройки (иконка "шестеренки").

Синтаксис

SubDevice.AddSettingsFunction(callback, space);

Название Пример Описание
callback function(){...} type: function
Функция обратного вызова
space this type: object
Указатель на объект, который обслуживает функцию.
На выходе


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
 
 
l_oSubDevice.AddSettingsFunction(function(){
 
 
IR.Log("Hello, world!");
 
}, this);




SubDevice.RunAction

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

Синтаксис

SubDevice.RunAction(ActionID, Param)

Название Пример Описание
ActionID 1 type: Number
Идентификатор действия
Param type: Object, String, Number
Значение, которое будет передаваться в функцию, если действие создано для работы через функцию, либо будет передаваться в канал, если действие создано без функции
На выходе


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
 
 
//Создание действия с IR.ADVANCED_SLIDER и IR.ADVANCED_STRING
var l_oAction = l_oSubDevice.AddAction("Set temperature", true, function(in_data){
 
	var l_oData = JSON.Parse(in_data); //парсим объект
	IR.Log(l_oData.Temperature); //"35" - если пользователь выбрал 35	
	IR.Log(l_oData.Message); //"Hello, world!" - если пользователь ввел эту надпись
 
}, undefined, null, null, [{
	Type: IR.ADVANCED_SLIDER,
	Name "Temperature",
	Min: 1,
	Max: 100
}, 
{
	Type: IR.ADVANCED_STRING,
	Name "Message",
	Default: "Hello",
	Keyboard: IR.KEYBOARD_DECIMALPAD
}], false);
 
 
l_oSubDevice.RunAction(l_oAction.ID, {Temperature: 35, Message: "Hello, world!"}); //выполнение действия





SubDevice.SetProperty

Добавить или обновить свойство подустройства

Синтаксис

SubDevice.SetProperty(Name, Value)

Название Пример Описание
Name "Property 1" type: string
Имя свойства
Value "Value" type: string
Значение
На выходе

-


Пример

var l_oDevice = module.GetDevice("MyDevice"); //Получаем устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.SetProperty("Property 1", "Value");





SubDevice.GetProperty

Получить свойство

Синтаксис

SubDevice.GetProperty(Name)

Название Пример Описание
Name "Property 1" type: string
Имя свойства
На выходе
Value "Value" type: string
Значение


Пример

var l_oSubDevice = module.GetSubDevice("SubDevice 1"); //получаем подустройство 
var l_oProperty = l_oSubDevice.GetProperty("Property 1"); //получаем значение свойства





SubDevice.GetProperties

Получить все свойства

Синтаксис

SubDevice.GetProperties()

Название Пример Описание


На выходе
Object {Name: Value} type: Object
Объект со свойствами


Пример

var l_oSubDevice = module.GetSubDevice("SubDevice 1"); //получаем подустройство 
var l_oProperties = l_oSubDevice.GetProperties(); //получаем все свойства





SubDevice.DiscoverServices

Исследовать сервисы BLE устройства

Синтаксис

SubDevice.DiscoverServices()

Название Пример Описание


На выходе


Пример

var l_oDevice = module.CreateDevice(IR.DEVICE_BLE_DEVICE, "Kettle", UUID); //Создаем BLE устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.DiscoverServices(); //исследуем сервисы
module.AddListener(IR.EVENT_SERVICES_DISCOVERED, l_oSubDevice, function(){
IR.Log("Hello, world!");
});

Вызывает событие: IR.EVENT_SERVICES_DISCOVERED


SubDevice.GetServices

Получить сервисы BLE устройства

Синтаксис

SubDevice.GetServices()

Название Пример Описание


На выходе
Array type: Array
Массив объектов сервисов


Пример

var l_oDevice = module.CreateDevice(IR.DEVICE_BLE_DEVICE, "Kettle", UUID); //Создаем BLE устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.DiscoverServices(); //исследуем сервисы
module.AddListener(IR.EVENT_SERVICES_DISCOVERED, l_oSubDevice, function(){
var l_aServices = l_oSubDevice.GetServices(); //Получаем сервисы
    for (var i = 0; i < l_aServices.length; i++) {
		...
	}
});

Поля объекта сервиса (маркер OPTIONAL обозначает необязательное поле, TO_DELETE - могут быть в дальнейшем удалены, т.к. их реализация практически бесполезна):

  • Uuid: (String) - Идентификатор сервиса
  • Value: (Array) - OPTIONAL, TO_DELETE Значение сервиса, практически всегда пустое




SubDevice.ReadCharacteristic

Прочитать характеристику BLE устройства

Синтаксис

SubDevice.ReadCharacteristic(Characteristic)

Название Пример Описание
Characteristic type: Object
Объект характеристики
На выходе

-


Пример

var l_oDevice = module.CreateDevice(IR.DEVICE_BLE_DEVICE, "Kettle", UUID); //Создаем BLE устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.DiscoverServices(); //исследуем сервисы
module.AddListener(IR.EVENT_SERVICES_DISCOVERED, l_oSubDevice, function(){
var l_aServices = l_oSubDevice.GetServices(); //Получаем сервисы
    for (var i = 0; i < l_aServices.length; i++) {
		var l_aCharacteristics = l_aServices[i].GetCharacteristics();
        for (var j = 0; j < l_aCharacteristics.length; j++) {
			l_oSubDevice.ReadCharacteristic(l_aCharacteristics[j]); //Читаем характеристику	
        }
	}
});
 
 
module.AddListener(IR.EVENT_CHARACTERISTIC_READ, l_oSubDevice, function(in_serviceUuid, in_characteristicUuid, in_array, in_status){
 
	IR.Log(in_serviceUuid);
    IR.Log(in_characteristicUuid);
    IR.Log(in_array);
	IR.Log(in_status);
 
 
})

Вызывает событие: IR.EVENT_CHARACTERISTIC_READ - характеристика прочитана. Свойства характеристики:

  • UUID - uuid характеристики
  • Permissions - уровень разрешения
  • Properties - свойства
  • Value - значение




SubDevice.WriteCharacteristic

Перезаписать характеристику BLE устройства

Синтаксис

SubDevice.WriteCharacteristic(Characteristic)

Название Пример Описание
Characteristic type: Object
Объект характеристики
На выходе

-


Пример

var l_oDevice = module.CreateDevice(IR.DEVICE_BLE_DEVICE, "Kettle", UUID); //Создаем BLE устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.DiscoverServices(); //исследуем сервисы
module.AddListener(IR.EVENT_SERVICES_DISCOVERED, l_oSubDevice, function(){
 
	var l_aServices = l_oSubDevice.GetServices(); //Получаем сервисы
	for (var i = 0; i < l_aServices.length; i++) {
		var l_aCharacteristics = l_aServices[i].GetCharacteristics();
		for (var j = 0; j < l_aCharacteristics.length; j++) {
			l_aCharacteristics[j].Value = [...]; //записываем новое значение
			l_oSubDevice.WriteCharacteristic(l_aCharacteristics[j]); //Перезаписываем характеристику
		}
	}
});
module.AddListener(IR.EVENT_CHARACTERISTIC_WRITE, l_oSubDevice, function(in_serviceUuid, in_characteristicUuid, in_status){
 
	IR.Log(in_serviceUuid);
        IR.Log(in_characteristicUuid);
	IR.Log(in_status);
})

Вызывает событие: IR.EVENT_CHARACTERISTIC_WRITE - характеристика записана.
Примечания:

  • Cвойство Value характеристики используется как контейнер нового значения для отправки на устройство;
  • Формат байтового массива на запись может отличаться от массива, который может быть получен при чтении;
  • Характеристика должна иметь свойства CharacteristicPropertyWrite или смежные.

Свойства характеристики:

  • UUID - uuid характеристики
  • Permissions - уровень разрешения
  • Properties - свойства
  • Value - значение




SubDevice.SetCharacteristicNotification

Подписаться на изменение характеристики BLE устройства или отписаться от нее

Синтаксис

SubDevice.SetCharacteristicNotification(Characteristic, subscription)

Название Пример Описание
Characteristic type: Object
Объект характеристики
subscription true type: Boolean
Флаг подписки
На выходе

-


Пример

var l_oDevice = module.CreateDevice(IR.DEVICE_BLE_DEVICE, "Kettle", UUID); //Создаем BLE устройство
var l_oSubDevice = module.AddSubDevice("SubDevice 1", l_oDevice); //создаем подустройство 
l_oSubDevice.DiscoverServices(); //исследуем сервисы
module.AddListener(IR.EVENT_SERVICES_DISCOVERED, l_oSubDevice, function(){
 
	var l_aServices = l_oSubDevice.GetServices(); //Получаем сервисы
	for (var i = 0; i < l_aServices.length; i++) {
		var l_aCharacteristics = l_aServices[i].GetCharacteristics();
		for (var j = 0; j < l_aCharacteristics.length; j++) {
			l_oSubDevice.SetCharacteristicNotification(l_aCharacteristics[j], true); //Подписываемся на изменение характеристики
		}
	}
 
});
module.AddListener(IR.EVENT_CHARACTERISTIC_CHANGED, l_oSubDevice, function(in_serviceUuid, in_characteristicUuid, in_status){
 
	IR.Log(in_serviceUuid);
    IR.Log(in_characteristicUuid);
	IR.Log(in_status);
 
 
})

Вызывает событие: IR.EVENT_CHARACTERISTIC_CHANGED - характеристика изменена.


Свойства подустройства

SubDevice.property


Name "Relay" type: String
имя подустройства
ID 1 type: Number
идентификатор подустройства
Icon type: String
иконка подустройства
Module type: ModuleObject
родительский модуль
ModuleName type: String
имя родительского модуля
Device type: DeviceObject
устройство
SystemName 3 type: String
системное имя подустройства
ExistSettingsFunction type: Boolean
наличие функции настройки подустройства



Типы сложных действий, событий, условий

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

  • IR.ADVANCED_NUMBER - при использовании данного типа будет использоваться попап с элементом IR.ITEM_PICKER (барабан) для выбора значения:
    • Name: String, //Имя, с помощью которого можно будет получить значение внутри функции
    • Type: IR.ADVANCED_NUMBER, //Тип
    • Min: Number //минимальное значение элемента IR.ITEM_PICKER
    • Max: Number //максимальное значение элемента IR.ITEM_PICKER


  • IR.ADVANCED_SLIDER - при использовании данного типа будет использоваться попап с диммером для выбора значения:
    • Name: String, //Имя, с помощью которого можно будет получить значение внутри функции
    • Type: IR.ADVANCED_SLIDER, //Тип
    • Min: Number //минимальное значение элемента Level
    • Max: Number //максимальное значение элемента Level


  • IR.ADVANCED_SELECT - при использовании данного типа будет использоваться попап со списком значений:
    • Name: String, //Имя, с помощью которого можно будет получить значение внутри функции
    • Type: IR.ADVANCED_SELECT, //Тип
    • Parameters: Array //Массив объектов, см. ниже


  • IR.ADVANCED_STRING - при использовании данного типа будет использоваться попап с текстовым полем для ввода значения:
    • Name: String, //Имя, с помощью которого можно будет получить значение внутри функции
    • Type: IR.ADVANCED_STRING, //Тип
    • Default: String //Значение по умолчанию
    • Keyboard: Number //Тип клавиатуры: ссылка}}


  • IR.ADVANCED_COLOR - при использовании данного типа будет использоваться попап с ColorPicker для выбора цвета:
    • Name: String, //Имя, с помощью которого можно будет получить значение внутри функции
    • Type: IR.ADVANCED_COLOR //Тип


Существует две структуры объектов массива поля Parameters в IR.ADVANCED_SELECT:

  • С полями Caption и Value:
[{
   Caption: String, //Значение, которое будет видеть пользователь
   Value: String //Значение, которое будет записываться в функцию
}]
  • С полем Value:
[{
   Value: String //Значение, которое будет видеть пользователь и которое будет записываться в функцию
}]

Виджет

В данном разделе описаны методы и свойства для работы с виджетами. Объектом виджета в данном разделе будет считаться переменная Widget.

Widget.AddVirtualTag

Добавить виртуальный тег для виджета

Синтаксис

Widget.AddVirtualTag(Name, Value, [Edit], [Hidden])

Название Пример Описание
Name "Tag" type: String
имя виртуального тега виджета
Value "Name" type: String
Значение тега
Edit true type: Boolean
Разрешение редактирования тега
Hidden true type: Boolean
Признак скрытости тега
На выходе
Object type: Object
Объект виртуального тега


Пример

var l_oSubDevice = module.GetSubDevice("SubDevice 1"); //получаем подустройство
var l_oWidget = l_oSubDevice.GetWidget("Popup 1"); //получаем виджет
var l_oTag = l_oWidget.AddVirtualTag("Tag", "HDL-BUS", true); //создаем виртуальный тег





Widget.GetVirtualTag

Получить виртуальный тег виджета

Синтаксис

Widget.GetVirtualTag(Name)

Название Пример Описание
Name "Tag" type: String
имя виртуального тега виджета
На выходе
Object type: Object
Объект виртуального тега


Пример

var l_oSubDevice = module.GetSubDevice("SubDevice 1"); //получаем подустройство
var l_oWidget = l_oSubDevice.GetWidget("Popup 1"); //получаем виджет
var l_oTag = l_oWidget.GetVirtualTag("Tag"); //получаем виртуальный тег





Widget.GetVirtualTags

Получить все виртуальный теги виджета

Синтаксис

Widget.GetVirtualTags()

Название Пример Описание

-

На выходе
Array type: Array
Массив объектов виртуальных тегов


Пример

var l_oSubDevice = module.GetSubDevice("SubDevice 1"); //получаем подустройство
var l_oWidget = l_oSubDevice.GetWidget("Popup 1"); //получаем виджет
var l_oTag = l_oWidget.GetVirtualTags(); //получаем виртуальные теги





Widget.GetVirtualTags

Получить все виртуальный теги виджета

Синтаксис

Widget.DeleteVirtualTag(Name)
Widget.DeleteVirtualTag(VirtualTag)

Название Пример Описание
Name type: String
имя виртуального тега виджета
VirtualTag type: PropertyObject
виртуальный тег виджета
На выходе
Boolean type: Boolean
Результат удаления (true, false)


Пример

var l_oSubDevice = module.GetSubDevice("SubDevice 1"); //получаем подустройство
var l_oWidget = l_oSubDevice.GetWidget("Popup 1"); //получаем виджет
var l_oTag = l_oWidget.GetVirtualTag("Tag"); //получаем виртуальный тег
//Удаление по имени
l_oWidget.DeleteVirtualTag(l_oTag.Name); //удаляем виртуальный тег
//Удаление по тегу
l_oWidget.DeleteVirtualTag(l_oTag); //удаляем виртуальный тег





Свойства виджета

Widget.property

Name "Relay" type: String
имя виджета
FullName type: String
полное имя виджета
ID 1 type: Number
идентификатор виджета
SubDevice type: SubDeviceObject
подустройство
Popup type: DialogItemObject
попап



Список

В данном разделе описаны методы и свойства для работы со списками. Объектом списка в данном разделе будет считаться переменная List.

List.AddItem

Добавление элемента в список

Синтаксис

List.AddItem([Template], [Options], [customID], [position], [Name])

Название Пример Описание
Template type: String
Имя попапа
Options type: Object
Объект с настройками графических элементов попапа
customID type: String
Идентификатор элемента списка
position type: Number
Позиция элемента списка
Name type: String
имя элемента списка
На выходе
Object type: Object
Объект элемента списка


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.AddItem("Popup 2", {
 
	Name: { //имя графического элемента
		Text: "Hello, world!" //текст на элемента Name
	},
	Switcher: {
		Value: 1 //значение триггер кнопки Switcher
	}
 
 
}, "ID", 0, "First");





List.Clear

Очистка списка

Синтаксис

List.Clear()

Название Пример Описание

-

На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.Clear(); //очищаем список





List.GetState

Получить состояние элемента

Синтаксис

List.GetState(Index)

Название Пример Описание
Index 1 type: Number
индекс элемента
На выходе
Object type: Object
объект состояния элемента


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.GetState(1); //получаем состояние





List.MoveItem

Перемещение элемента

Синтаксис

List.MoveItem(CurrentPostition, NewPosition)

Название Пример Описание
CurrentPostition 1 type: Number
текущая позиция элемента
NewPosition 1 type: Number
новая позиция элемента
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.MoveItem(1, 4); //перемещаем элемент списка





List.GetItemByName

Получение элемента списка по имени

Синтаксис

List.GetItemByName(Name)

Название Пример Описание
Name type: String
имя элемента
На выходе
Object type: Object
Объект элемента списка


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItem = l_oList.GetItemByName("First");





List.GetItemByCustomID

Получение элемента списка по пользовательскому идентификатору

Синтаксис

List.GetItemByCustomID(ID)

Название Пример Описание
ID 1 type: String
идентификатор элемента
На выходе
Object type: Object
Объект элемента списка


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItem = l_oList.GetItemByCustomID("ID");





List.GetItemByIndex

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

Синтаксис

List.GetItemByIndex(Index)

Название Пример Описание
Index 1 type: Number
позиция элемента
На выходе
Object type: Object
Объект элемента списка


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItem = l_oList.GetItemByIndex(1);





List.GetItemPositionByName

Получить позицию элемента списка по имени

Синтаксис

List.GetItemPositionByName(Name)

Название Пример Описание
Name type: String
имя элемента
На выходе
Number 1 type: Number
позиция элемента списка


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_nPosition = l_oList.GetItemPositionByName("First");





List.GetItemPositionByCustomID

Получить элемент списка по пользовательскому идентификатору

Синтаксис

List.GetItemPositionByCustomID(CustomID)

Название Пример Описание
CustomID type: String
идентификатор элемента
На выходе
Number 1 type: Number
позиция элемента списка


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_nPosition = l_oList.GetItemPositionByCustomID("ID");





List.GetSelected

Получить список выбранных элементов списка

Синтаксис

List.GetSelected()

Название Пример Описание

-

На выходе
Array type: Array
массив выбранных элементов списка


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItem = l_oList.GetItemByCustomID("ID");
l_oItem.Selected = true;
var l_oSelectedItems = l_oList.GetSelected(); //[l_oItem]





List.DeleteItemByName

Удалить элемент по имени

Синтаксис

List.DeleteItemByName(Name)

Название Пример Описание
Name type: String
имя элемента
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.DeleteItemByName("First");





List.DeleteItemByCustomID

Удалить элемент по пользовательскому идентификатору

Синтаксис

List.DeleteItemByCustomID(CustomID)

Название Пример Описание
CustomID type: String
идентификатор элемента
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.DeleteItemByCustomID("ID");





List.DeleteItemByIndex

Удалить элемент по индексу

Синтаксис

List.DeleteItemByIndex(Index)

Название Пример Описание
Index 1 type: Number
позиция элемента
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.DeleteItemByIndex(1);





List.DeleteItemsByName

Удалить элементы по имени

Синтаксис

List.DeleteItemsByName(Name)

Название Пример Описание
Name type: String
имя элемента
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.DeleteItemsByName("First");





List.DeleteItemsByCustomID

Удалить элементы по пользовательскому идентификатору

Синтаксис

List.DeleteItemsByCustomID(CustromID)

Название Пример Описание
CustomID type: String
идентификатор элемента
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.DeleteItemsByCustomID("ID");





List.GetItemsByName

Получить массив элементов по имени

Синтаксис

List.GetItemsByName(Name)

Название Пример Описание
Name type: String
имя элемента
На выходе
Array type: Array
массив элементов списка


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItems = l_oList.GetItemsByName("First");





List.GetItemsByCustomID

Получить массив элементов по пользовательскому идентификатору

Синтаксис

List.GetItemsByCustomID(CustomID)

Название Пример Описание
CustomID type: String
идентификатор элемента
На выходе
Array type: Array
массив элементов списка


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItems = l_oList.GetItemsByCustomID("ID");





List.ClearSelected

Сбросить выделенные элементы

Синтаксис

List.ClearSelected()

Название Пример Описание

-

На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.SelectByIndex(1, true);
l_oList.ClearSelected();





List.SelectByIndex

Выбрать элемент по индексу

Синтаксис

List.SelectByIndex(Index, Selected)

Название Пример Описание
Index 1 type: Number
позиция элемента
Selected true type: Boolean
Значение true - выбран, false - не выбран
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.SelectByIndex(1, true);





List.StartReleaseActionByIndex

Выполнить действие от элемента по индексу

Синтаксис

List.StartReleaseActionByIndex(Index)

Название Пример Описание
Index 1 type: Number
позиция элемента
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItem = l_oList.GetItemByIndex(1);
l_oItem.SetReleaseAction(function (){ //Устанавливаем действие для элемента
	IR.Log("Hello, world!");
})
l_oList.StartReleaseActionByIndex(1); //Запускаем действие





List.ScrollByName

Перемотать список к элементу с указанным именем

Синтаксис

List.ScrollByName(Name)

Название Пример Описание
Name type: String
имя элемента
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.ScrollByName("Last");





List.ScrollByCustomID

Перемотать список к элементу с указанным идентификатором

Синтаксис

List.ScrollByCustomID(CustomID)

Название Пример Описание
CustomID type: String
идентификатор элемента
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.ScrollByCustomID("ID");





List.ScrollByIndex

Перемотать список к элементу с указанным индексом

Синтаксис

List.ScrollByIndex(Index)

Название Пример Описание
Index 1 type: Number
позиция элемента
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.ScrollByIndex(4);





List.ScrollToStart

Перемотать список к началу

Синтаксис

List.ScrollToStart()

Название Пример Описание


На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.ScrollToStart();





List.ScrollToEnd

Перемотать список к концу

Синтаксис

List.ScrollToEnd()

Название Пример Описание


На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.ScrollToEnd();





List.SetSelectFunction

Установить функцию обработчик отметки элемента списка

Синтаксис

List.SetSelectFunction(Function)

Название Пример Описание
Function function(in_listItem, in_object){...} type: Function
функция выполнения отметки элемента списка
  • in_listItem - объект элемента листа
  • in_object - объект элемента попапа
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
l_oList.SetSelectFunction(function(in_listItem, in_object){
	if (in_listItem.Selected){
		...
	} else {
		...
	}
});





List.SetDataFilter

Добавить фильтр по данным

Синтаксис

List.SetDataFilter(key, value)

Название Пример Описание
key type: String
наименование любого поля объекта, установленного на элемент списка через ListItem.SetData ссылка
value type: Mixed
значение из этого поля
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItem_1 = l_oList.GetItemByIndex(1); // получаем элементы списка
var l_oItem_2 = l_oList.GetItemByIndex(2);
var l_oItem_3 = l_oList.GetItemByIndex(3);
//Устанавливаем данные каждому элементу списка
l_oItem_1.SetData(
{
	type: "coffee",
	name: "test"
})
 
 
l_oItem_2.SetData(
{
	type: "fruit",
	name: "test2"
}
l_oItem_3.SetData(
{
	type: "coffee",
	name: "test2"
}
// очищаем фильтр по данным
l_oList.ClearDataFilter();
// добавляем фильтр по данным
l_oList.SetDataFilter("type", "coffee"); //устанавливаем фильтр по type с значением coffee
l_oList.SetDataFilter("name", "test2"); //и еще один фильтр по name с значением test2
// применяем фильтр по данным
l_oList.ApplyDataFilter();





List.ApplyDataFilter

Применить фильтр по данным

Синтаксис

List.ApplyDataFilter()

Название Пример Описание

-

На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItem_1 = l_oList.GetItemByIndex(1); // получаем элементы списка
var l_oItem_2 = l_oList.GetItemByIndex(2);
var l_oItem_3 = l_oList.GetItemByIndex(3);
//Устанавливаем данные каждому элементу списка
l_oItem_1.SetData(
{
	type: "coffee",
	name: "test"
})
 
 
l_oItem_2.SetData(
{
	type: "fruit",
	name: "test2"
}
l_oItem_3.SetData(
{
	type: "coffee",
	name: "test2"
}
 
 
// очищаем фильтр по данным
l_oList.ClearDataFilter();
// добавляем фильтр по данным
l_oList.SetDataFilter("type", "coffee");
l_oList.SetDataFilter("name", "test2");
// применяем фильтр по данным
l_oList.ApplyDataFilter();





List.ClearDataFilter

Очистить фильтр по данным

Синтаксис

List.ClearDataFilter()

Название Пример Описание

-

На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItem_1 = l_oList.GetItemByIndex(1); // получаем элементы списка
var l_oItem_2 = l_oList.GetItemByIndex(2);
var l_oItem_3 = l_oList.GetItemByIndex(3);
//Устанавливаем данные каждому элементу списка
l_oItem_1.SetData(
{
	type: "coffee",
	name: "test"
})
 
 
l_oItem_2.SetData(
{
	type: "fruit",
	name: "test2"
}
 
 
l_oItem_3.SetData(
{
	type: "coffee",
	name: "test2"
}
// очищаем фильтр по данным
l_oList.ClearDataFilter();
// добавляем фильтр по данным
l_oList.SetDataFilter("type", "coffee"); 
l_oList.SetDataFilter("name", "test2");
// применяем фильтр по данным
l_oList.ApplyDataFilter();





List.DeleteDataFilter

Удалить фильтр по данным

Синтаксис

List.DeleteDataFilter(key)

Название Пример Описание
key type: String
наименование любого поля объекта, установленного на элемент списка через ListItem.SetData
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItem_1 = l_oList.GetItemByIndex(1); // получаем элементы списка
var l_oItem_2 = l_oList.GetItemByIndex(2);
var l_oItem_3 = l_oList.GetItemByIndex(3);
 
 
//Устанавливаем данные каждому элементу списка
l_oItem_1.SetData(
{
	type: "coffee",
	name: "test"
})
 
 
 
l_oItem_2.SetData(
{
	type: "fruit",
	name: "test2"
}
 
 
 
l_oItem_3.SetData(
{
	type: "coffee",
	name: "test2"
}
 
 
 
// очищаем фильтр по данным
l_oList.ClearDataFilter();
// добавляем фильтр по данным
l_oList.SetDataFilter("type", "coffee");
l_oList.SetDataFilter("name", "test2");
// применяем фильтр по данным
l_oList.ApplyDataFilter();
// удаляем фильтр по данным
l_oList.DeleteDataFilter("name");





Свойства списка

List.property

Template "Popup 1" type: String
шаблон
Direction 0 type: Number
направление
  • 0 - вертикальное
  • 1 - горизонтальное
ItemsCount 3 type: Number
количество элементов
Filter type: String
фильтр по имени попапа
ScrollEnabled false type: Boolean
включение/выключение пролистывания
DragDropEnable false type: Boolean
включение/выключение драгдропа
Resistance 5 type: Number
скорость пролистывания
ScrollBar true type: Boolean
отображение скролла


Элемент списка

В данном разделе описаны методы и свойства для работы с объектом элемента списка. Объектом элемента списка в данном разделе будет считаться переменная ListItem.

ListItem.SetData

Установить данные элемента списка

Синтаксис

List.SetData(Data)

Название Пример Описание
Data type: Object
Объект с данными для элемента списка
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItem_1 = l_oList.GetItemByIndex(1); // получаем элементы списка
 
 
//Устанавливаем данные
l_oItem_1.SetData(
{
	type: "coffee",
	name: "test"
})





ListItem.SetReleaseAction

Добавить действие для элемента списка

Синтаксис

List.SetReleaseAction(Action, [Space])

Название Пример Описание
Action function(in_listItem, in_object){...} type: Function
выполняемая функция при нажатии на элемент списка
  • in_listItem - объект элемента листа
  • in_object - объект элемента попапа
Space type: Object
указатель на объект, который обслуживает функцию
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItem_1 = l_oList.GetItemByIndex(1); // получаем элемент списка
l_oItem_1.SetReleaseAction(function(in_listItem, in_object){
IR.Log("Hello, world!");
});





ListItem.SetOptions

Установка графического представления элемента интефейса через JSON

Синтаксис

List.SetOptions(Data)

Название Пример Описание
Data {
  itemName: {
      PropertyName: Value,
      ...
      States: [
         PropertyName: Value,
         ...
       ]
  },
  ..

}

type: JSONObject
  • itemName - имя графического элемента
  • PropertyName - свойство графического элемента
  • States - состояние. Свойства состояний указываются через массив объектов, взависимости от количества состояний, по порядку
На выходе

-


Пример

var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItem_1 = l_oList.GetItemByIndex(1); // получаем элемент списка
l_oItem_1.SetOptions({
	Name: {
		Text: "Test",
		States: [{
			Border: 8
		}]
	},
	Switcher: {
		Value: 1
	}
});





Свойства элементов списка

ListItem.property


Popup type: DialogItemObject
Объект попапа
Parent type: DialogItemObject
Объект списка
Data type: Object
Объект с данными, записанными через .SetData
RadioGroup type: Number
Радио группа
Selected type: Boolean
Флаг выбранного элемента
CustomID type: String
Пользовательский идентификатор
Index type: Number
Индекс элемента списка
Context type: Object
указатель на объект, который обслуживает функцию в методе .SetReleaseAction
Deleted type: Boolean
Флаг удаленного элемента списка
var l_oList = module.GetPopup("Popup 1").GetItem("list"); //получаем объект списка
var l_oItem_1 = l_oList.GetItemByIndex(1); // получаем элемент списка
 
 
//Popup
l_oItem_1.Popup.GetItem("Name").Text = "Test";
 
 
//Parent
var l_oList_1 = l_oItem_1.Parent;
 
 
//Data
var l_oData = l_oItem_1.Data;
 
 
 
//RadioGroup
var l_nRadioGroup = l_oItem_1.RadioGroup;
 
 
 
//Selected
l_oItem_1.Selected = false;
 
 
 
//CustomID
l_oList.ScrollByCustomID(l_oItem_1.CustomID);
 
 
 
//Index
l_oList.ScrollByIndex(l_oItem_1.Index);
 
 
 
//Context
l_oItem_1.SetReleaseAction(function (in_listItem, in_object){
 
 
 
IR.Log(this.type); // coffee
 
 
 
}, {type: "coffee"})
l_oItem_1.Context = {type: "fruit"}; //IR.Log(this.type) - "fruit"
 
 
 
//Deleted
IR.Log(l_oItem_1.Deleted) //false



Свойства и методы объекта IR

В данном разделе описаны свойства и методы для работы с объектом IR.


Свойства IR

IR.property


ProjectLanguage type: String
Язык проекта
HWID type: String
Получение HWID устройства
Language type: String
Получение языка устройства
ProjectScaleWidth type: Number
Получение растяжения по ширине
ProjectScaleHeight type: Number
Получение растяжения по высоте
DisplayType type: Number
Получение типа разрешения. Типы разрешения:
  • IR.DISPLAY_TYPE_PHONE - телефон
  • IR.DISPLAY_TYPE_TABLET - планшет
ProjectWorkMode type: Number
Режим работы проекта:
  • IR.PROJECT_WORK_ONLY_PANEL_MODE - панельный режим работы модуля
  • IR.PROJECT_WORK_WITH_SERVER_MODE - серверный режим работы модуля
//ProjectLanguage
var l_sProjectLanguage = IR.ProjectLanguage;
 
 
//HWID
var l_sHWID = IR.HWID;	
 
 
 
//Language
var l_sLanguage = IR.Language;
 
 
 
//ProjectScaleWidth
var l_nProjectScaleWidth = IR.ProjectScaleWidth;
 
 
 
//Установка позиции по координате X в зависимости от растяжения по ширине 
function resizeX(in_nValue) {
	return in_nValue / l_nProjectScaleWidth;
}
 
 
 
//Установка ширины граф. элемента в зависимости от растяжения по ширине 
function resizeWidth(in_nValue) {
	var l_nValue = in_nValue / l_nProjectScaleWidth;
	return l_nValue < 1 ? 1 : l_nValue;
}
 
 
 
module.GetPopup("Popup 1").GetItem("Name").Width = resizeWidth(240) //Устанавливаем новую ширину графического элемента в зависимости от растяжения по ширине
 
 
 
//ProjectScaleHeight
var l_nProjectScaleHeight = IR.ProjectScaleHeight;
 
 
 
//Установка высоты граф. элемента в зависимости от растяжения по высоте 
function resizeHeight(in_nValue) {
	var l_nValue = in_nValue / l_nProjectScaleHeight;
	return l_nValue < 1 ? 1 : l_nValue;
}
 
 
 
//Установка позиции по координате Y в зависимости от растяжения по высоте 
function resizeY(in_nValue) {
	return in_nValue / l_nProjectScaleHeight;
}
 
 
 
module.GetPopup("Popup 1").GetItem("Name").Height = resizeHeight(240) //Устанавливаем новую высоту графического элемента в зависимости от растяжения по высоте
 
 
 
//DisplayType
 
 
 
//Проверка на тип разрешения
if (IR.DisplayType == IR.DISPLAY_TYPE_TABLET){
	...
} else {
	...
}
 
 
 
//ProjectWorkMode
var l_nProjectMode = IR.ProjectWorkMode;


IR.ModuleSetupFinish

Завершение установки модуля. Требуется при разработке сканнера. При разработке сканнера необходимо использовать данный метод для того, чтобы поставить модуль на установку со всеми необходимыми ему данными.

Синтаксис

IR.ModuleSetupFinish(StoreID, ModuleData, [Callback])

Название Пример Описание
StoreID 82 type: Number
Идентификатор модуля в магазине
ModuleData type: Object
Данные для модуля нужные для его работы. Формат записи данных для модуля смотрите ниже
Callback function(in_error){...} type: Function
Функция выполняющаяся после установки модуля.
  • in_error - приходящий параметр, сигнализирующий об успешности установки
    • 0 - ошибок нет
    • 1 - есть ошибки при установки
На выходе

-


Пример

//Пример установки HDL Dimmer со сканнера
var l_nStoreID = 82;
var l_oModuleData = {
	Module: {
		//Данные необходимые для работы модуля
		Type: "Dimmer", 
		SubnetID: 3,
		DeviceID: 6 
		Name: "HDL Dimmer"
	}
	Drivers: {
		//Данные для драйвера
		"HDL-BUS Pro Network (UDP)": {
		   Host: "255.255.255.255", //установка хоста для драйвера
		   Port: "6000" //установка порта для драйвера
		},
	}
}
 
 
IR.ModuleSetupFinish(l_nStoreID, l_oModuleData, function(in_error){
	if (!in_error){
		...
	} else {
		...
	}	
});
 
 
 
//Получение данных в модуле происходит через module.GetProperty;
//Данные получаемые в модуле после его установки
var l_sType = module.GetProperty("Type"); //обращаемся к имени поля, который был записан в ModuleData в объект Module
...

Формат записи данных для модуля:

var l_oModuleData = {
	Module: {
		Field: Value,
		..
	},
	Drivers: {
		Name: {
			Field: Value,
			  ..
		},
		..
	}
}
  • Module - объект модуля, в который передаются данные для его работы:
    • Field - имя свойства, который можно получить в модуле через module.GetProperty
    • Value - значение этого свойства
  • Drivers - объект, используемых драйверов
    • Name - имя драйвера, для которого необходимо установить данные
      • Field - имя свойства драйвера
      • Value - значение для этого свойства




IR.ModuleSetupCancel

Отмена установки модуля. Используется при разработке сканнера.

Синтаксис

IR.ModuleSetupCancel(StoreID)

Название Пример Описание
StoreID type: Number
Идентификатор модуля в магазине
На выходе

-


Пример

var l_nStoreID = 82;
IR.ModuleSetupCancel(l_nStoreID); //Отменяем установку модуля





События

При разработке модуля можно использовать все события, которые описаны в i3 pro: [[1]]. Помимо этих событий в i3 lite также можно использовать события, которые описаны ниже.

IR.EVENT_MODULE_START

Начало работы модуля. Событие IR.EVENT_START не поддерживается

Синтаксис

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

Название Пример Описание
function type: function
не именованная функция или обращение к функции
pointer type: object
указатель на объект, который обслуживает функцию (опционально)
На выходе

-


Пример

module.AddListener(IR.EVENT_MODULE_START, 0, function ()
{
    IR.Log("action"); // action
});





IR.EVENT_ADD_WIDGET

Добавление виджета

Синтаксис

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

Название Пример Описание
function function(in_widget) type: function
не именованная функция или обращение к функции
  • Приходящим параметром в функцию будет добавленный виджет
pointer type: object
указатель на объект, который обслуживает функцию (опционально)
На выходе

-


Пример

module.AddListener(IR.EVENT_ADD_WIDGET, 0, function (in_widget)
{
    IR.Log(in_widget.Name); 
});





IR.EVENT_REMOVED_WIDGET

Удаление виджета

Синтаксис

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

Название Пример Описание
function function(in_widgetID) type: function
не именованная функция или обращение к функции
  • Приходящим параметром в функцию будет идентификатор виджета
pointer type: object
указатель на объект, который обслуживает функцию (опционально)
На выходе

-


Пример

module.AddListener(IR.EVENT_REMOVED_WIDGET, 0, function (in_widgetID)
{
    IR.Log(in_widgetID); 
});





IR.EVENT_ADD_SUBDEVICE

Добавление подустройства

Синтаксис

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

Название Пример Описание
function function(in_subDevice) type: function
не именованная функция или обращение к функции
  • Приходящим параметром в функцию будет добавленное подустройство
pointer type: object
указатель на объект, который обслуживает функцию (опционально)
На выходе

-


Пример

module.AddListener(IR.EVENT_ADD_SUBDEVICE, 0, function (in_subDevice)
{
    IR.Log(in_subDevice.Name); 
});





IR.EVENT_REMOVED_SUBDEVICE

Удаление подустройства

Синтаксис

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

Название Пример Описание
function function(in_subDeviceID, in_module) type: function
не именованная функция или обращение к функции
  • Приходящим параметром в функцию будет идентификатор подустройства и объект модуля
pointer type: object
указатель на объект, который обслуживает функцию (опционально)
На выходе

-


Пример

module.AddListener(IR.EVENT_REMOVED_SUBDEVICE, 0, function (in_subDeviceID, in_module)
{
    IR.Log(in_subDeviceID);
	IR.Log(in_module.Name); 	
});





IR.EVENT_OPEN_SCANNER

При разработке сканнера за место IR.EVENT_MODULE_START необходимо использовать данное событие, сигнализирующее начало работы сканнера

Синтаксис

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

Название Пример Описание
function function() type: function
не именованная функция или обращение к функции
pointer type: object
указатель на объект, который обслуживает функцию (опционально)
На выходе

-


Пример

module.AddListener(IR.EVENT_OPEN_SCANNER, 0, function ()
{
    IR.Log("action"); // action 	
});





Объект Setup

При добавлении модуля с магазина иногда требуется, чтобы пользователь ввел необходимую информацию для работы модуля. Для этих целей необходимо использовать объект Setup. С помощью этого объекта можно передать данные в модуль и в драйвер.

Для его реализации необходимо в GUI Editor создать новый скрипт файл и указать у него Type: Setup. Сам скрипт представляет собой JSONObject.

Формат записи следующий:


// формат входящих данных Setup (создается в GUI Editor):
{
	// Данные для подключения драйверов, созданных в Project Device Panel
	Drivers: 
	[	
		{
			Name: "HDL-BUS Pro Network (UDP)", // имя драйвера
			Properties: // свойства драйвера
			[
				{
					Type: "textfield", //Сигнализирует, что нужно показать текстовое поле для ввода данных
					Name: "SubnetID", //Имя свойства, которому будут передаваться значения
					Validation: function (in_value) { //Функция проверки введеных пользователем значений 
						//in_value - приходящий параметр, содержащий значение, которое ввел пользователь
						if (in_value != "")
							return 0; //Если ошибок нет, то возвращаем 0
						else
							return "Please input SubnetID"; //Если есть ошибки, то необходимо возвратить текст ошибки
					}
				},
				..
			],
		},
		..
	],
 
 
// Общие данные для модуля (и драйверов создаваемых через скрипт)
	Module: 
	[
		{
			Type: "textfield", //Сигнализирует, что нужно показать текстовое поле для ввода данных
			Name: "Relay Count", //Имя свойства, который можно получить в модуле через module.GetProperty
			Validation: function (in_value) { //Функция проверки введеных пользователем значений
				//in_value - приходящий параметр, содержащий значение, которое ввел пользователь
				if (in_value != "")
					return 0; //Если ошибок нет, то возвращаем 0
				else
					return "Please input Count"; //Если есть ошибки, то необходимо возвратить текст ошибки
			}
		}
		..
	]
};


Свойства виртуального тега

Name "Tag" type: String
имя виртуального тега
ID 1 type: Number
идентификатор виртуального тега
Edit true type: Boolean
Флаг редактирования
Value "Test" type: String
Значение


Типы клавиатур

IR.KEYBOARD_REGULAR type: Number
Обычная клавиатура
IR.KEYBOARD_URL type: Number
Клавиатура, оптимизированная для набора URL
IR.KEYBOARD_NUMBERPAD type: Number
Клавиатура 0-9, подходит для набора PIN
IR.KEYBOARD_PHONEPAD type: Number
Клавиатура телефона с буквами под цифрами и символами # и *
IR.KEYBOARD_NAMEPHONEPAD type: Number
Клавиатура, оптимизированная для набора имени или номера
IR.KEYBOARD_EMAIL_ADDRESS type: Number
Клавиатура с быстрым доступом к @
IR.KEYBOARD_DECIMALPAD type: Number
Цифровая клавиатура с десятичной запятой
IR.KEYBOARD_NONE type: Number
Убрать клавиатуру

Пример модуля

Для более широкого понимания как пишутся модули, вы можете скачать Demo модуль Netatmo и посмотреть пример кода. Он полностью рабочий, но его работоспособность вы можете проверить если у вас есть оборудование Netatmo, аккаунт Netatmo, Client_secret и Client_id. Client_secret и Client_id необходимо ввести в редакторе js (GUI Editor) в Driver.js. Скачать данный модуль вы можете по этой ссылке: Netatmo Demo