Contents
- 1 Общее описание
- 1.1 Модуль
- 1.1.1 module.GetSubDevice
- 1.1.2 module.AddSubDevice
- 1.1.3 module.DeleteSubDevice
- 1.1.4 module.CreateDevice
- 1.1.5 module.GetDevice
- 1.1.6 module.GetSubDevices
- 1.1.7 module.GetPopup
- 1.1.8 module.ShowPopup
- 1.1.9 module.HidePopup
- 1.1.10 module.ClonePopup
- 1.1.11 module.GetVariable
- 1.1.12 module.SetVariable
- 1.1.13 module.AddRelation
- 1.1.14 module.RemoveRelation
- 1.1.15 module.GetProperty
- 1.1.16 module.SetProperty
- 1.1.17 module.GetProperties
- 1.1.18 module.AddListener
- 1.1.19 module.RemoveListener
- 1.1.20 module.SetInterval
- 1.1.21 module.ClearInterval
- 1.1.22 module.SetTimeout
- 1.1.23 module.CreateEffect
- 1.1.24 module.CreateItem
- 1.1.25 module.Import
- 1.1.26 module.GetDeviceSetup
- 1.1.27 module.GetDeviceSetups
- 1.1.28 module.SaveCache
- 1.1.29 module.LoadCache
- 1.1.30 module.CreateImage
- 1.1.31 module.GetText
- 1.1.32 Свойства модуля
- 1.2 Подустройства
- 1.2.1 SubDevice.Connect
- 1.2.2 SubDevice.Disconnect
- 1.2.3 SubDevice.Send
- 1.2.4 SubDevice.SendEx
- 1.2.5 SubDevice.GetCookies
- 1.2.6 SubDevice.SetCookie
- 1.2.7 SubDevice.Set
- 1.2.8 SubDevice.SetParameters
- 1.2.9 SubDevice.InvokeAction
- 1.2.10 SubDevice.Subscribe
- 1.2.11 SubDevice.Unsubscribe
- 1.2.12 SubDevice.GetFeedback
- 1.2.13 SubDevice.GetLogin
- 1.2.14 SubDevice.GetPassword
- 1.2.15 SubDevice.AddChannel
- 1.2.16 SubDevice.DeleteChannel
- 1.2.17 SubDevice.AddTag
- 1.2.18 SubDevice.DeleteTag
- 1.2.19 SubDevice.AddWidget
- 1.2.20 SubDevice.GetWidget
- 1.2.21 SubDevice.DeleteWidget
- 1.2.22 SubDevice.AddVirtualTag
- 1.2.23 SubDevice.DeleteVirtualTag
- 1.2.24 SubDevice.GetVirtualTag
- 1.2.25 SubDevice.GetVirtualTags
- 1.2.26 SubDevice.AddDataRequestHandler
- 1.2.27 SubDevice.GetDataRequests
- 1.2.28 SubDevice.AddAction (работающий через функцию)
- 1.2.29 SubDevice.AddAction (без функции)
- 1.2.30 SubDevice.DeleteAction
- 1.2.31 SubDevice.GetAction
- 1.2.32 SubDevice.AddEvent (работающий без функции)
- 1.2.33 SubDevice.AddEvent (работающий через функцию)
- 1.2.34 SubDevice.DeleteEvent
- 1.2.35 SubDevice.GetEvent
- 1.2.36 SubDevice.AddCondition (работающий через функцию)
- 1.2.37 SubDevice.AddCondition (работающий без функции)
- 1.2.38 SubDevice.DeleteCondition
- 1.2.39 SubDevice.GetCondition
- 1.2.40 SubDevice.AddSettingsFunction
- 1.2.41 SubDevice.RunAction
- 1.2.42 SubDevice.SetProperty
- 1.2.43 SubDevice.GetProperty
- 1.2.44 SubDevice.GetProperties
- 1.2.45 SubDevice.DiscoverServices
- 1.2.46 SubDevice.GetServices
- 1.2.47 SubDevice.ReadCharacteristic
- 1.2.48 SubDevice.WriteCharacteristic
- 1.2.49 SubDevice.SetCharacteristicNotification
- 1.2.50 Свойства подустройства
- 1.2.51 Типы сложных действий, событий, условий
- 1.3 Виджет
- 1.4 Список
- 1.4.1 List.AddItem
- 1.4.2 List.Clear
- 1.4.3 List.GetState
- 1.4.4 List.MoveItem
- 1.4.5 List.GetItemByName
- 1.4.6 List.GetItemByCustomID
- 1.4.7 List.GetItemByIndex
- 1.4.8 List.GetItemPositionByName
- 1.4.9 List.GetItemPositionByCustomID
- 1.4.10 List.GetSelected
- 1.4.11 List.DeleteItemByName
- 1.4.12 List.DeleteItemByCustomID
- 1.4.13 List.DeleteItemByIndex
- 1.4.14 List.DeleteItemsByName
- 1.4.15 List.DeleteItemsByCustomID
- 1.4.16 List.GetItemsByName
- 1.4.17 List.GetItemsByCustomID
- 1.4.18 List.ClearSelected
- 1.4.19 List.SelectByIndex
- 1.4.20 List.StartReleaseActionByIndex
- 1.4.21 List.ScrollByName
- 1.4.22 List.ScrollByCustomID
- 1.4.23 List.ScrollByIndex
- 1.4.24 List.ScrollToStart
- 1.4.25 List.ScrollToEnd
- 1.4.26 List.SetSelectFunction
- 1.4.27 List.SetDataFilter
- 1.4.28 List.ApplyDataFilter
- 1.4.29 List.ClearDataFilter
- 1.4.30 List.DeleteDataFilter
- 1.4.31 Свойства списка
- 1.5 Элемент списка
- 1.6 Свойства и методы объекта IR
- 1.7 События
- 1.8 Объект Setup
- 1.9 Свойства виртуального тега
- 1.10 Типы клавиатур
- 1.11 Пример модуля
- 1.1 Модуль
Общее описание
Принципы работы с модулем полностью повторяют принципы работы с проектом в 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 указывает путь к переменной и ее тип:
|
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 указывает путь к переменной и ее тип:
|
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 Объект со свойствами
|
Пример
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 набор свойств динамического изображения
|
На выходе |
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 флаг авторизации. При разработке модуля, который требует авторизацию, необходимо указывать статус авторизации
|
WorkMode | type: Number Режим работы модуля (панельный, серверный). Константы:
|
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, через который нужно отправить данные:
|
На выходе |
-
Пример
// 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 тип запроса:
|
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 Выполняемая функция. Приходящим параметром в функцию может быть:
|
Space | this | type: Object Указатель на объект, который обслуживает функцию. Если не требуется использовать указатель, то можно поставить пустой объект, либо undefined |
Default | "1" | type: String Значение, которое будет являться приходящим параметром в Method |
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", 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 Выполняемая функция. Приходящим параметром в функцию может быть:
Функция должна возвращать булевое значение (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 Выполняемая функция. Приходящим параметром в функцию может быть:
Функция должна возвращать булевое значение (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 функция выполнения отметки элемента списка
|
На выходе |
-
Пример
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 направление
|
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 выполняемая функция при нажатии на элемент списка
|
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
|
На выходе |
-
Пример
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 Получение типа разрешения. Типы разрешения:
|
ProjectWorkMode | type: Number Режим работы проекта:
|
//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 Функция выполняющаяся после установки модуля.
|
На выходе |
-
Пример
//Пример установки 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 - значение для этого свойства
- Name - имя драйвера, для которого необходимо установить данные
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