Logo Logo ru
  • iRidi Pro
    Основные компоненты
    • Приложение i3 Pro
    • iRidi Pro Server
    • iRidi Studio
    • iRidium studio v. 1.3.8 (устаревшая версия)
    Java Script в iRidi
    • Руководство
    • Справочник
    • Примеры
    • JS драйвера
    другие
    • Личный Кабинет
    • iRidium Cloud
    • iRidium Transfer
    • Push-уведомления
    • Лучшая практика
    Лицензирование
    • Лицензирование и передача проекта
    • Оффлайн-лицензирование
    • Активация iRidi Pro Server
  • Продукты
    i3 lite
    • Приложение i3 lite
    • Регистрация и лицензирование
    • Сервер
    • Модули
    KNX Home Server
    • Приложение i3 KNX
    • KNX Home Server
    BUS77 HOME SERVER
    • Приложения Bus77 Home и Bus77 Lite
    • Bus77 Home Server
    Решения
    • BYOD - решение для гостиниц
    • Портал жителя - решение для МКД
    iRidi SCADA
    • iRidi SCADA
  • Bus77
    НАСТРОЙКА BUS77
    • Основы Bus77
    • Приложения Bus77 Home и Bus77 Lite
    • Работа с драйвером Bus77 в iRidi Studio
    • Настройка шины Bus77 в iRidi Studio
    ПРОТОКОЛ BUS77
    • Характеристики CAN (Bus77)
    • Описание протокола
    • Исходники на GitHub
    ОБОРУДОВАНИЕ BUS77
    • Каталог Bus77 Pro
    • Каталог Bus77 Lite
  • Поддерживаемое оборудование
    Драйверы
    • Список драйверов
    • ProAV драйвера
    • AV & Custom Systems
    • JS драйвера
    • Сторонние драйвера и фриланс
    Протоколы и интерфейсы
    • Голосовое управление
    • 1-Wire
    • BACnet IP
    • Bus77
    • KNX
    • KNX IP BAOS
    • Weinzierl kBerry
    • Microsoft Exchange
    • Modbus
    • MQTT
    • NFC
    • ODBC
    • Onvif
    • SIP
    • SNMP
    • Wake On Lan
    • Z-Wave
    • ZigBee
    Производители
    • AMX
    • AVCiT
    • Beckhoff ADS
    • Biamp Tesira
    • Bluesound
    • Casambi
    • BSS Harman
    • Clipsal
    • ControlArt 7Port
    • Crestron
    • DigiBird
    • Domintell
    • Duotecno
    • EIDE
    • EPSNET
    • Global Cache
    • HDL Buspro
    • Helvar
    • IEAST
    • INELS BUS
    • INELS Wireless
    • Intesis
    • Kleger
    • Kramer VIA
    • Kramer 3000
    • Larnitech
    • Legrand Netatmo
    • LG TV
    • Lutron
    • Lutron Homeworks QS
    • MyHome
    • Nest
    • Novastar
    • Panasоnic PTZ
    • Philips Dynalite
    • PJLink
    • Satel
    • SamsungTV
    • Sonos
    • Somfy
    • SpinetiX
    • Televic Conference
    • TIS
    • Tion
    • URRI
    • Velbus
    • Velocio
    • Vinteo
    • WyreStorm
    • WiiM
    • Xicato
    • Yamaha
    • ZONT
    • Z-Wave.me
    Протестированное оборудование
    • Панель HDL S57
    • Панель HDL S10
    • SIP-домофон
    • Akuvox
    • Arlight
    • Divus
    • QBic TD-1050 PRO
    • QBic TD-1060 Slim
    • QBic TD-1070
    • Sigur
    • Uni-Ubi
    • Velocio
  • Оборудование iRidi

    Серверы
    • HS Сервер
    • ProAV Control Processor Basic
    • ProAV Control Processor Advanced
    • Спецификация контроллеров UMC
    • Настройка контроллера UMC C2
    • Настройка контроллера UMC C3
    • Настройка контроллера HDL IntelliCenter 2 (UMC C4)
    Модули расширения
    • I-PX-RS1
    • I-PX-RS4
    • I-PX-IR3
    KNX
    • KNX Home Server
    • KNX IP Interface
    Панели управления
    • iRidium Panel 7
    • Touch Panel P3
    • Touch Panel P6
    • Touch Panel P8
    • Touch Panel P10
    • Tabletop Touch Panel 10
    • AV Remote Control
    ОБОРУДОВАНИЕ BUS77
    • Каталог Bus77 Pro
    • Каталог Bus77 Lite
    • Differences
Сайт iRidium mobile
Содержание
    Инструменты‌
    • Сведения о странице
    • Постоянная ссылка
    • Версия для печати
    • Спецстраницы
    • Связанные правки
    • Ссылки сюда
    Login / Create Account
    Материал из for iRidium developers
    Перейти к: навигация, поиск
    Эта страница является переводом страницы Systems API. Перевод выполнен на 100%.

    Other languages:
    English • ‎русский
  • Справочник
  • Система
  • Содержание

    • 1 API iRidium. Система
    • 2 Методы
      • 2.1 IR.ShowSystemMenu
      • 2.2 IR.SetEnableSystemMenu
      • 2.3 IR.GetEnableSystemMenu
      • 2.4 IR.SetEnableProjectMenu
      • 2.5 IR.GetEnableProjectMenu
      • 2.6 IR.ShowSettingsMenu
      • 2.7 IR.SetFullScreen
      • 2.8 IR.IsFullScreen
      • 2.9 IR.HWID
      • 2.10 IR.Exit
      • 2.11 IR.ShowKeyboard
      • 2.12 IR.Execute
      • 2.13 IR.GetSystemInfo
      • 2.14 IR.GetCurrentWlanInfo
      • 2.15 IR.GetCurrentLocalIPInfo
      • 2.16 IR.SetStatusAutoUpdateProject
      • 2.17 IR.Log
      • 2.18 IR.SetInterval
      • 2.19 IR.SetTimeout
      • 2.20 IR.ClearInterval
      • 2.21 IR.AddListener
      • 2.22 IR.RemoveListener
      • 2.23 IR.SetGlobalListener
      • 2.24 IR.SubscribeTagChange
      • 2.25 IR.UnsubscribeTagChange
      • 2.26 IR.CopyToClipboard
      • 2.27 IR.PasteFromClipboard
      • 2.28 IR.GetClipboard
      • 2.29 IR.ShowPasteHelper
      • 2.30 IR.GetDesignsCount
      • 2.31 IR.DesignSwitch
      • 2.32 IR.AndroidSendIR
      • 2.33 IR.CalculateCRC
      • 2.34 IR.CalculateHash
      • 2.35 IR.UrlDecode
      • 2.36 IR.HtmlDecode
      • 2.37 IR.Base64Encode
      • 2.38 IR.Base64Decode
      • 2.39 IR.IsModuleLicensed
      • 2.40 IR.ValidatePassword()
      • 2.41 IR.TouchIDStart()
      • 2.42 IR.BiometricAuthStart()
      • 2.43 IR.OpenPhotoGallery()
      • 2.44 IR.OpenPhotoCamera()
      • 2.45 IR.UploadFile()
      • 2.46 IR.EnableProximity()
      • 2.47 IR.OnTop()
      • 2.48 Popen
      • 2.49 iDate (object)
      • 2.50 JSON
        • 2.50.1 JSON.Stringify
        • 2.50.2 JSON.Parse
      • 2.51 XML
        • 2.51.1 new XML
        • 2.51.2 .toXMLString
      • 2.52 IR.SetPanelBacklight()
    • 3 События
      • 3.1 IR.EVENT_START
      • 3.2 IR.EVENT_WORK
      • 3.3 IR.EVENT_EXIT
      • 3.4 IR.EVENT_GLOBAL_TAG_CHANGE
      • 3.5 IR.EVENT_ORIENTATION
      • 3.6 IR.EVENT_KEYBOARD_SHOW
      • 3.7 IR.EVENT_RECEIVE_SCHEME
      • 3.8 IR.ANDROID_BACK_PRESS
      • 3.9 IR.EVENT_RECEIVE_PHOTO_FROM_GALLERY
      • 3.10 IR.EVENT_RECEIVE_PHOTO_FROM_CAMERA
      • 3.11 IR.EVENT_LICENCE_ACCEPT
    • 4 Не поддерживаемые
      • 4.1 IR.DownLoadProject
      • 4.2 IR.SendNotification
      • 4.3 IR.ClearNotification
      • 4.4 IR.EVENT_RECEIVE_NOTIFY
      • 4.5 IR.EVENT_APP_ENTER_BACKGROUND
      • 4.6 IR.EVENT_APP_ENTER_FOREGROUND
      • 4.7 IR.EVENT_APP_WILL_TERMINATE

    API iRidium. Система

    функции, методы, свойства объектов, используемых для работы с приложением в контексте его запуска, выполнения, завершения и изменения операционной системой

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

    Методы

    IR.ShowSystemMenu

    открыть системное меню с предварительным вводом инженерного пароля. Выполнив команду, вы получите окно ввода пароля, после ввода 2007 откроется системное меню.

    Синтаксис

    IR.ShowSystemMenu();

    на входе значение описание

    -

    на выходе

    -


    Пример

    function ShowMenu () {
        IR.ShowSystemMenu();
    };

    без ввода инженерного пароля нельзя получить доступ к системному меню через скрипт.


    IR.SetEnableSystemMenu

    Запретить / разрешить открытие системного меню.

    Синтаксис

    IR.SetEnableSystemMenu();

    на входе значение описание
    mode true type: boolean
    • true - разрешить открытие системного меню.
    • false - запретить открытие системного меню.
    на выходе

    -


    Пример

    function SystemMenu()
    {
    IR.SetEnableSystemMenu(true);
    }





    IR.GetEnableSystemMenu

    Проверяет возможность открытия системного меню.

    Синтаксис

    IR.GetEnableSystemMenu();

    на входе значение описание

    -

    на выходе
    mode true type: boolean
    • true - разрешение на открытие системного меню .
    • false - запрет на открытие системного меню.


    Пример

    IR.Log(IR.GetEnableSystemMenu());





    IR.SetEnableProjectMenu

    Запретить / разрешить открытие меню проектов i3 Pro.

    Синтаксис

    IR.SetEnableProjectMenu();

    на входе значение описание

    -

    на выходе
    mode true type: boolean
    • true - разрешить открытие меню проектов i3 Pro.
    • false - запретить открытие меню проектов i3 Pro.


    Пример

    function ProjectMenu()
    {
    IR.SetEnableProjectMenu(true);
    }





    IR.GetEnableProjectMenu

    Проверяет возможность открытия системного меню.

    Синтаксис

    IR.GetEnableSystemMenu();

    на входе значение описание
    mode true type: boolean
    • true - разрешение на открытие меню проектов i3 Pro .
    • false - запрет на открытие меню проектов i3 Pro.
    на выходе

    -


    Пример

    IR.Log(IR.GetEnableProjectMenu());





    IR.ShowSettingsMenu

    открыть боковое меню выбора проектов i3 pro на указанной вкладке

    Синтаксис

    IR.ShowSettingsMenu();

    на входе значение описание

    -

    на выходе

    -


    Пример

    function ShowMenu () {
        IR.ShowSettingsMenu();
    };





    IR.SetFullScreen

    Перевести приложение в полноэкранный режим(или свернуть в окно)

    Синтаксис

    IR.SetFullScreen(mode);

    на входе значение описание
    mode true type: boolean
    включить\выключить полноэкранный режим
    • true - включить полноэкранный режим
    • false - выключить полноэкранный режим
    на выходе

    -


    Пример

         IR.SetFullScreen(true);

    метод работает только на Windows


    IR.IsFullScreen

    Проверяет включен ли полноэкранный режим

    Синтаксис

    IR.IsFullScreen;

    на входе значение описание


    на выходе
    mode true type: boolean
    * true - полноэкранный режим включен
    • false - полноэкранный режим выключен


    Пример

       IR.Log(IR.IsFullScreen);

    метод работает только на Windows



    IR.HWID

    свойство объекта IR, хранит HWID панели управления, на которой запущено приложение i3 pro.

    Синтаксис

    IR.HWID

    на входе значение описание

    -

    на выходе
    hwid ff2c...1958 type: string
    HWID панели управления


    Пример

    IR.AddListener(IR.EVENT_START,0,function()
    {
        IR.Log("Panel HWID: "+IR.HWID); // Panel HWID: ff2c589a2879c0fe1158697d5d4c1958
    });

    чтобы получить символ из HWID, используйте функцию charAt(symbol). Нумерация символов начинается с нуля:

    IR.Log(IR.HWID.charAt(0));




    IR.Exit

    закрыть приложение. Доступно только на Andorid и Windows

    Синтаксис

    IR.Exit();

    на входе значение описание

    -

    на выходе

    -


    Пример

    function CloseApp () {
        IR.Exit();
    };

    доступно только на Andorid и Windows


    IR.ShowKeyboard

    показать системную клавиатуру iOS или Android устройства

    Синтаксис

    IR.ShowKeyboard(type, ok_text, color, capitalization)

    на входе значение описание
    type 1 type: Number
    тип клавиатуры, он же может закрыть клавиатуру (значение 0):
    • сработает на iOS и Android:
      • 0 - Hide
      • 1 - Regular
      • 2 - URL address
      • 3 - Numeric
      • 4 - Phone number
      • 5 - E-mail address
      • 6 - Decimal
      • 7 - Text
      • 8 - Twitter
      • 9 - Web search
      • 10 - Numeric
      • 11 - Password
    • сработает только на Android:
      • 12 - Date and Time
      • 13 - Date
      • 14 - Time
      • 15 - Numeric signed
      • 16 - Numeric password
      • 17 - Text characters
      • 18 - Text sentences
      • 19 - Text words
      • 20 - Text ime multi line
      • 21 - Text multi line
      • 22 - Text suggestions
      • 23 - Text email subject
      • 24 - Text filter
      • 25 - Text long message
      • 26 - Text password
      • 27 - Text phonetic
      • 28 - Text postal address
      • 29 - Text short message
      • 30 - Text visible password
      • 31 - Text web email address
      • 32 - Text web password
      • 33 - Smart
      • 34 - Voice
    ok_text 0 type: Number
    текст, который будет отображаться на кнопке return:
    • 1 - default
    • 2 - go
    • 3 - google
    • 4 - join
    • 5 - next
    • 6 - route
    • 7 - search
    • 8 - send
    • 9 - yahoo
    • 10 - done
    • 11 - call
    • 12 - continue
    color 0 type: Number
    цвет клавиатуры
    • 1 - выбрать автоматически
    • 2 - темная
    • 3 - светлая
    capitalization 0 type: Number
    авто-капитализация текста
    • 1 - none
    • 2 - первые буквы слов
    • 3 - первые буквы предложений
    • 4 - все символы
    на выходе

    -


    Пример

    IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem("Item 1"), function()
    {
      IR.ShowKeyboard(1); // regular
      IR.ShowKeyboard(1, 1, 1, 1); // regular, default, default, no capitalization
    });

    На iOS для скрытия клавиатуры можно использовать команду IR.ShowKeyboard(0), на Android это не сработает.
    Для открытия клавиатуры, все другие клавиатуры должны быть скрыты. Если клавиатура уже открыта, например числовая, то команда открыть клавиатуру с алфавитом будет не удачной.
    Для открытия клавиатуры на Windows, используйте команду IR.Execute("osk").


    IR.Execute

    выполнить произвольную URL схему (команду операционной системе), которая поддерживается устройством. К таким командам относятся: открытие гиперссылку в браузере, отправить СМС, совершить звонок по номеру телефона, написать email, запустить приложение по имени, запустить приложение по указанному пути и др.

    Синтаксис

    IR.Execute(scheme)

    на входе значение описание
    scheme http://iridiummobile.net type: string
    команда, которую необходимо выполнить
    на выходе

    -


    Пример

    IR.AddListener(IR.EVENT_START, 0, function() {
        IR.Execute('http://iridiummobile.net');
    });

    примеры URL схем

     // All
    	IR.Execute("http://iridiummobile.net"); // open link
    	IR.Execute("mailto:support@iridiummobile.ru"); // send email
    // Windows	
    	IR.Execute("cmd"); // command string
    	IR.Execute("calc"); // calculator
    	IR.Execute("c:\\Program Files\\iRidium\\iRidium.exe"); // launch app
    // iOS, Android
    	IR.Execute("music:"); // open Music
    	IR.Execute("videos:"); // open Videos
    	IR.Execute("ibooks://"); // open iBooks
    	IR.Execute("fb://feed"); //open Facebook
    	IR.Execute("twitter://"); // open Twitter
    // iPhone, Android smartphone
    	IR.Execute("tel:+1234567890"); // call to
    	IR.Execute("sms:+1234567890"); // send SMS


    Windows: для запуска приложения на Windows каждый одинарный слеш в пути к файлу должен быть заменен на двойной обратный слеш


    IR.GetSystemInfo

    получить информацию о памяти и кэше приложения

    Синтаксис

    IR.GetSystemInfo("GC_MEMORY_INFO").property

    на входе значение описание
    property UsedMemory type: object
    свойство, которое необходимо вернуть:
    • .UsedMemory
    • .TotalMemory
    • .ChunkHeaps
    • .ChunkCache
    • .MemoryHeaps
    • .MemoryBusyBlocks
    • .MemoryFreeBlocks
    на выходе
    property type: string
    значение в свойстве


    Пример

    IR.AddListener(IR.EVENT_START,0,function() {
        IR.Log(IR.GetSystemInfo("GC_MEMORY_INFO").UsedMemory);
    });





    IR.GetCurrentWlanInfo

    получить информацию о беспроводной сети, к которой подключена панель управления.Список сетей объединяется в массив. Каждая сеть - элемент массива, включающий фиксированный список свойств.

    Синтаксис

    IR.GetCurrentWlanInfo()[element].property

    на входе значение описание
    element 0...n type: number
    номер элемента массива, соответствующий порядковому номеру сетевого подключения
    property Name type: object
    свойство, которое необходимо вернуть:
    • .Name - тип сетевого подключения
    • .SSID - имя сети
    на выходе
    property type: string
    значение в свойстве


    Пример

    IR.Log(IR.GetCurrentWlanInfo()[0].SSID)
    IR.AddListener(IR.EVENT_START,0,function()
    {
       var l_aWlanInfo = IR.GetCurrentWlanInfo();
       if (l_aWlanInfo.length) {
    	   IR.Log("Name = " + l_aWlanInfo[0].Name);
    	   IR.Log("SSID = " + l_aWlanInfo[0]['SSID']);
       } else {
          IR.Log("There is no network connections found");
       }
    });

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


    IR.GetCurrentLocalIPInfo

    получить сетевые настройки панели управления, на которой работает i3 pro

    Синтаксис

    IR.GetCurrentLocalIPInfo()[element].property

    на входе значение описание
    element 0...n type: number
    номер элемента массива, соответствующий порядковому номеру сетевого подключения
    property Name type: object
    свойство, которое необходимо вернуть:
    • .Name - имя сетевого соединения
    • .IP - IP адрес панели управления
    • .Mask - маска подсети
    • .MAC - MAC адрес
    на выходе
    property type: string
    значение в свойстве


    Пример

    IR.AddListener(IR.EVENT_START,0,function()
    {      
       var l_aIPInfo = IR.GetCurrentLocalIPInfo();
       IR.Log("Name = " + l_aIPInfo[0].Name);
       IR.Log("IP = " + l_aIPInfo[0].IP);
       IR.Log("Mask = " + l_aIPInfo[0].Mask);
       IR.Log("MAC = " + l_aIPInfo[0].MAC);
    });





    IR.SetStatusAutoUpdateProject

    Включить / выключить автообновление проекта.

    Синтаксис

    IR.SetStatusAutoUpdateProjects(mode);

    на входе значение описание
    mode true type: boolean
    включить/выключить автообновление проекта:
    • true - включить автообновление проекта;
    • false - отключить автообновление проекта.
    на выходе

    -


    Пример

    function AutoUpdate() 
    {
        IR.SetStatusAutoUpdateProjects(true);
    };





    IR.Log

    вывести данные в консоль отладки приложения i3 pro (консоль на Windows открывается клавишей F4)

    Синтаксис

    IR.Log(data);

    на входе значение описание
    data type: object, string, number, array
    данные для вывода в лог
    на выходе
    data type: string
    строковые данные в логе приложения


    Пример

    IR.AddListener(IR.EVENT_START,0,function() {
        IR.Log("Hello World!");
    });

    данные, отправленные в консоль, конвертируются в строку
    В ОС Windows 7 максимальный размер одной строки, выводимой в консоль, 30 кбайт.


    IR.SetInterval

    повторять действия в цикле, с установленным интервалом (мс)

    Синтаксис

    IR.SetInterval(time, action)

    на входе значение описание
    time 500 type: number
    (мс) интервал выполнения функции
    action function() { } type: number
    не именованная функция или имя функции, которая содержит список действий для выполнения в цикле
    на выходе

    -


    Пример

    function actions() 
    {
      IR.Log("do action");
    }
    IR.SetInterval (2000, actions);
    IR.SetInterval (2000, function() 
    {
      IR.Log("do action");
    });
    var Inv = IR.SetInterval (2000, function() 
    {
      IR.Log("do action");
    }); 
    IR.ClearInterval(Inv);

    запущенный IR.SetInterval будет работать, пока открыт проект, если его не остановить с помощью IR.ClearInterval
    Интервал можно остановить, только обратившись к нему по имени переменной. Поэтому при создании интервала нужно присвоить его переменной
    В интервале нельзя запустить функцию с параметрами
    JavaScript в iRidium работает в одном потоке. Это значит, что все функции в нем выполняются последовательно. Для функции IR.SetInterval это приводит к тому, что каждый цикл выполнения скрипта может занять разное время. Это приводит к погрешности выполнения интервалов, которая зависит от количества и типа выполняемых операций. Система компенсирует погрешность автоматически для сохранения точности в больших промежутках времени (чтобы избежать накопления временных ошибок), поэтому интервалы могут отличаться на величину от десятков до сотен миллисекунд в большую и меньшую сторону. Учитывайте это при создании команд, минимальный интервал между которыми может быть критичен - указывайте большее значение интервала или используйте функцию IR.SetTimeout, которая не использует механизм компенсации.


    IR.SetTimeout

    выполняет функцию после задержки (мс)

    Синтаксис

    IR.SetTimeout(time, action)

    на входе значение описание
    time 500 type: number
    (мс) задержка выполнения функции
    action function() { } type: number
    не именованная функция или имя функции, которая содержит список действий для выполнения с задержкой
    на выходе

    -


    Пример

    function actions() 
    {
      IR.Log("do action");
    }
    IR.SetTimeout(2000, actions);
    IR.SetTimeout(2000, function() 
    {
      IR.Log("do action");
    });
    var Tmr = IR.SetTimeout(2000, function() 
    {
      IR.Log("do action");
    }); 
    IR.ClearInterval(Tmr);

    запущенный IR.SetTimeout можно остановить с помощью IR.ClearInterval (отдельной функции IR.ClearTimeout не существует).
    Таймер можно остановить, только обратившись к нему по имени переменной. Поэтому при создании интервала нужно присвоить его переменной
    Таймеру нельзя передать функцию с параметрами


    IR.ClearInterval

    удаляет таймеры IR.SetInterval и IR.SetTimeout по идентификатору. Чтобы получить идентификатор, сохраните его в переменную. Это возможно только при создании таймера.

    Синтаксис

    IR.ClearInterval(timer_id)

    на входе значение описание
    timer_id var timer type: object
    идентификатор таймера, который нужно удалить
    на выходе

    -


    Пример

    var id = IR.SetTimeout (10000, function ()
    {
            IR.Log("do something");
    }); 
    IR.SetTimeout(5000, function ()  // stop after 5000 ms
    {
            IR.ClearInterval(id);
    });

    используется для удаления IR.SetInterval и IR.SetTimeout
    получить идентификатор для удаления можно только при создании таймера


    IR.AddListener

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

    Синтаксис

    IR.AddListener(event, input, function, [pointer]);

    на входе значение описание
    event type: object
    идентификатор события, за которым следит слушатель
    input type: object
    входной параметр, необходимый для создания слушателя. Если параметра нет, укажите 0
    function function() {} type: function
    не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия
    pointer type: object
    указатель на объект, который обслуживает функцию (опционально)
    на выходе

    -


    Пример

    IR.AddListener(IR.EVENT_START,0,function()
    {
        IR.Log("app started");
    });
    IR.AddListener(IR.EVENT_ITEM_PRESS,IR.GetItem("Page 1").GetItem("Item 61"),function()
    {
       IR.Log("button 61 pressed");  
    });


    Пример 2:

    for(var i = 0; i < IR.GetItem("Page 1").ItemsCount; i++){
       // объявление слушателя и добавление pointer'а
       IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem(i),  press,  IR.GetPage("Page 1").GetItem(i) );
    } 
    function press(){
       //выводим в лог имя сработавшей кнопки, используя this как ссылку на объект 
       IR.Log(this.Name);
    }

    О выполнении скрипта с помощью слушателей читайте в Руководстве


    IR.RemoveListener

    удаляет слушатель созданный с помощью IR.AddListener. Функции необходимо передать те же параметры, что были указаны при создании слушателя.

    Синтаксис

    IR.RemoveListener(event, input, function, [pointer]);

    на входе значение описание
    event type: object
    идентификатор события, за которым следит слушатель
    input type: object
    входной параметр, необходимый для создания слушателя. Если параметра нет, укажите 0
    function function() {} type: function
    не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия
    pointer type: object
    указатель на объект, который обслуживает функцию (опционально)
    на выходе

    -


    Пример

    function pressed () 
    {
        IR.Log("action");
    }
    // add listener
    IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem("Item 61"), pressed); 
    // remove listener
    IR.RemoveListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem("Item 61"), pressed);
    var l_pressed;
    // add listener
    IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem("Item 61"), l_pressed =  function () 
    {
        IR.Log("action");
    });
    // remove listener
    IR.RemoveListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem("Item 61"), l_pressed);





    IR.SetGlobalListener

    создает глобальный слушатель - функцию, которая выполняется в случае срабатывания указанного ей события. Может работать только с двумя событиями: IR.EVENT_GLOBAL_TAG_CHANGE (срабатывает при изменении любого тега в iRidium).

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

    Чтобы слушатель сработал при изменении тега в проекте iRidium, на это изменение нужно подписаться методом IR.SubscribeTagChange

    Синтаксис

    IR.SetGlobalListener(event, function, [pointer]);

    на входе значение описание
    event IR.EVENT_GLOBAL_TAG_CHANGE type: object
    идентификатор события, за которым следит глобальный слушатель:
    • IR.EVENT_GLOBAL_TAG_CHANGE - срабатывает при изменении любого тега в iRidium
    function function(name, value) {} type: function
    не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия. В функцию передаются имя тега, на который есть подписка, и измененное значение
    pointer type: object
    указатель на объект, который обслуживает функцию (опционально)
    на выходе

    -


    Пример

    // Set global listener
    IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
    {
         IR.Log("Active Global Listener: " + name + "\tValue: " + value);
    });
    // Subscribe 
    IR.SubscribeTagChange("Drivers.KNX.Online");       // driver token
    IR.SubscribeTagChange("Drivers.KNX.Address 1");       // driver feedback
    IR.SubscribeTagChange("Global.Token 1");           // project token
    IR.SubscribeTagChange("UI.Page 1.Item 1.Text");    // item property
    IR.SubscribeTagChange("System.Time.Hour");         // system time, hours
    IR.SubscribeTagChange("System.Time.Minutes");      // system time, minutes
    // resend the data from KNX Address 1 to Address 2 on change (for iRidium Server)
    IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
    {
       if (name == "Server.Channels.KNX.Address 1")
          IR.SetVariable("Server.Channels.KNX.Address 2", value);
    });
    IR.SubscribeTagChange("Server.Channels.KNX.Address 1");

    в слушатель будет приходить полное имя тега, на который вы подписались (name)
    Глобальный слушатель можно создать в проекте только 1 раз, иначе работать будет только последний
    Слушатель реагирует на изменение тега, только если подписан на этот тег методом IR.SubscribeTagChange
    Слушатель реагирует только на изменение тега (не сработает, если пришло значение, равное текущему)
    Максимальное число подписок на глобальный слушатель практически не ограничено (близко к млн)
    Отписаться от тега: IR.UnsubscribeTagChange


    IR.SubscribeTagChange

    подписаться на изменение тега iRidium через глобальный слушатель на событие IR.EVENT_GLOBAL_TAG_CHANGE. Теги, на которые подписан слушатель, возвращают свое значение при каждом изменении.

    Синтаксис

    IR.SubscribeTagChange(name);

    на входе значение описание
    name "Drivers.AV (TCP).Feedback 1" type: string
    полное имя тега, на который нужно подписаться с помощью глобального слушателя IR.EVENT_GLOBAL_TAG_CHANGE
    на выходе

    -


    Пример

    //Set global listener
    IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
    {
         IR.Log("Global Listener Activated: " + name + "\tValue: " + value);
    });
    // Subscribe 
    IR.SubscribeTagChange("Drivers.KNX IP Router.Address 1"); 
    IR.SubscribeTagChange("Drivers.AV & Custom Systems (TCP).Online"); 
    IR.SubscribeTagChange("UI.Page 1.Item 1.Text"); 
    IR.SubscribeTagChange("System.Time.24");
    // resend the data from KNX Address 1 to Address 2 on change (for iRidium Server)
    IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
    {
       if (name == "Server.Channels.KNX.Address 1")
          IR.SetVariable("Server.Channels.KNX.Address 2", value);
    });
    IR.SubscribeTagChange("Server.Channels.KNX.Address 1");

    Отписаться от тега можно с помощью метода IR.UnsubscribeTagChange


    IR.UnsubscribeTagChange

    отписаться от тега iRidium, изменение которого отслеживается глобальным слушателем на событие IR.EVENT_GLOBAL_TAG_CHANGE. Подписка на тег осуществляется методом IR.SubscribeTagChange

    Синтаксис

    IR.UnsubscribeTagChange(name);

    на входе значение описание
    name "Drivers.AV (TCP).Feedback 1" type: string
    полное имя тега, от которого нужно отписаться
    на выходе

    -


    Пример

    //Set global listener
    IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value) 
    {
         IR.Log("Global Listener Activated: " + name + "\tValue: " + value);
    });
    // Subscribe
    IR.SubscribeTagChange("UI.Page 1.Item 1.Text"); 
    // Unsubscribe
    IR.UnsubscribeTagChange("UI.Page 1.Item 1.Text");

    Подписаться на тег можно с помощью метода IR.SubscribeTagChange


    IR.CopyToClipboard

    копировать строку в буфер обмена устройства на базе iOS, Android, Windows

    Синтаксис

    IR.CopyToClipboard(text)

    на входе значение описание
    text 'data' type: string
    строка, которую нужно поместить в буфер обмена
    на выходе

    -


    Пример

    IR.AddListener(IR.EVENT_START, 0, function()
    {    
       IR.CopyToClipboard(IR.GetVariable("System.Device.Name") + " HWID: " + IR.HWID);
    });





    IR.PasteFromClipboard

    Вставить текст из буфера обмена в активный Editbox. Текст будет вставлен только если в буфере действительно находится Текст (а не изображение или др. контент). Курсор позиционируется после вставленного текста

    Синтаксис

    IR.PasteFromClipboard()

    на входе значение описание

    -

    на выходе

    -


    Пример

    IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetItem("Page 1").GetItem("Paste Button"),function()
    {
       IR.PasteFromClipboard();  
    });

    применение - клавиша вставки текста (можно расположить ее рядом с полем ввода)


    IR.GetClipboard

    Получить текст из буфера обмена

    Синтаксис

    IR.GetClipboard()

    на входе значение описание

    -

    на выходе

    -


    Пример

    var clipboard = IR.GetClipboard();

    применение - передать текст из буфера в скрипт


    IR.ShowPasteHelper

    над курсором в активном EditBox этот метод отобразит нативное, масштабируемое в соответствии с разрешением проекта всплывающее окно: "PasteHelper" c надписью Paste, аналогично инструменту вставки на iOS и Android устройствах. По нажатию на это всплывающее окно, выполяется команда IR.PasteFromClipboard();. Нажатие на окно вставки, повторное нажатие на поле ввода или смена фокуса сразу закрывают PasteHelper

    Синтаксис

    IR.ShowPasteHelper()

    на входе значение описание

    -

    на выходе

    -


    Пример

    IR.AddListener(IR.EVENT_ITEM_HOLD, IR.GetItem("Page 1").GetItem("EditBox"),function()
    {
       IR.ShowPasteHelper();  
    });

    Поведение инструмента вставки (элемент EditBox):

    • Windows:
      • при нажатии Ctrl+V, автоматически срабатывает IR.PasteFromClipboard();, если буфер не пустой и в нем находится текст
      • по нажатию правой кнопкой мыши на поле ввода, отображается стандартный диалог "Вставить"
      • курсор перемещается в конец строки
    • iOS, Android:
      • при удержании пальца на поле ввода в течение 1 секунды, автоматически срабатывает IR.ShowPasteHelper();, диалог Paste будет скрыт при нажатии на любой элемент
      • курсор перемещается в конец строки




    IR.GetDesignsCount

    подсчитывает число проектов визуализации в памяти приложения.

    Синтаксис

    IR.GetDesignsCount();

    на входе значение описание

    -

    на выходе
    number 1 type: number
    число проектов, загруженных в память панели управления


    Пример

    IR.AddListener(IR.EVENT_START, 0, function() {
       var l_iCount = IR.GetDesignsCount();
       IR.Log("Designs Count = " + l_iCount);
       IR.Log("Current Project: " + IR.ProjectName);
     
       for(var i = 0; i < l_iCount; i++) {
          var l_sName = IR.GetDesignByIndex(i);
          IR.Log("Design(" + i + "): " + l_sName.Name);
       }
    });

    Использованы дополнительно:

    • IR.ProjectName - свойство объекта IR, хранит имя проекта, который сейчас открыт в i3 pro
    • IR.GetDesignByIndex(i) - получить ссылку на проект, как объект, обратившись к нему по индексу в списке загруженных проектов




    IR.DesignSwitch

    переключает между проектами визуализации в памяти панели.

    Синтаксис

    IR.DesignSwitch(name,[id]);

    на входе значение описание
    name "Welcome" type: string
    имя проекта в панели или облаке, на который нужно переключиться
    id 116897 type: number
    идентификатор проекта в облаке, на который нужно переключиться (опционально, обязательно для указания проектов в облаке)
    на выходе

    -


    Пример

    var ID;
    IR.AddListener(IR.EVENT_START, 0, function() {
     
        var l_iCount = IR.GetDesignsCount();
        IR.Log("Designs Count = " + l_iCount);
        IR.Log("Current Project: " + IR.ProjectName);
        for(var i = 0; i < l_iCount; i++) {
            var l_sName = IR.GetDesignByIndex(i);
            IR.Log("Design(" + i + "): " + l_sName.OriginalName + ", ID "+l_sName.CloudID);
            if (l_sName.OriginalName == "ProjectName") //project name
                ID = l_sName.CloudID      
        }
    });
    function switch_to() {
        //IR.DesignSwitch("Welcome"); // local project name .irpz you want to switch to
        IR.DesignSwitch("ProjectName", ID); // project name and id in Iridium Cloud you want to switch to
        IR.Log("test");
    }

    в примере, по нажатию кнопки мы переключаемся на стартовую страницу приложения (проект Welcome.irpz). Использованы дополнительно:

    • IR.GetDesignsCount() - получить количество проектов, загруженных в i3 pro
    • IR.ProjectName - свойство объекта IR, хранит имя проекта, который сейчас открыт в i3 pro
    • IR.GetDesignByIndex(i) - получить ссылку на проект, как объект, обратившись к нему по индексу в списке загруженных проектов
    • IR.GetDesignByIndex().OriginalName - оригинальное имя проекта, которое указано для него в панели или в облаке
    • IR.GetDesignByIndex().CloudID - уникальный идентификатор проекта в облаке




    Example: DesignSwitch

    IR.AndroidSendIR

    отправить ИК команду через встроенный ИК-эмиттер Android устройства (IRDA)

    Синтаксис

    IR.AndroidSendIR(frequency, command);

    на входе значение описание
    frequency 38000 type: number
    (Гц) частота отправки ИК команды
    command [67,67,44,...,55,53,13] type: array
    ИК команда в виде массива, включающего пульсы и паузы ИК сигнала
    на выходе

    -


    Пример

    IR.AndroidSendIR(38000, [67,67,67,67,67,66,67,67,67,67,67,67,66,67,66,66,66,66,66,66,44,50,49,44,55,53,54,13]);

    если у вас команда в HEX формате, ее можно преобразовать в формат для отправки с помощью программы iConvert от Global Cache


    IR.CalculateCRC

    Подсчитать контрольную сумму строки (CRC) по алгоритму CRC8, CRC16 или CRC32

    Синтаксис

    IR.CalculateCRC(algorithm, string);

    на входе значение описание
    algorithm IR.CRC_16 type: object
    алгоритм подсчета CRC:
    • IR.CRC_8
    • IR.CRC_16
    • IR.CRC_32
    string "Test" type: string
    строка, для которой нужно подсчитать CRC
    на выходе
    CRC 7205 type: number
    результат подсчета CRC


    Пример

    var crc8 = IR.CalculateCRC(IR.CRC_8,  "Test");
    var crc16 = IR.CalculateCRC(IR.CRC_16, "Test");
    var crc32 = IR.CalculateCRC(IR.CRC_32, "Test");
     
    IR.Log(crc8) // 207
    IR.Log(crc16) // 7205
    IR.Log(crc32) // 2018365746





    IR.CalculateHash

    Подсчитать хеш-сумму строки (hash) по алгоритму MD5, SHA1, SHA256, SHA384 или SHA512

    IR.CalculateCRC(algorithm, string, type, key);

    на входе значение описание
    algorithm IR.HASH_MD5 type: object
    алгоритм подсчета хеш-суммы

    (используют только параметры algorithm и string):
    IR.HASH_MD5,
    IR.HASH_SHA1,
    IR.HASH_SHA256,
    IR.HASH_SHA384,
    IR.HASH_SHA512.

    (используют все 4 параметра):
    IR.HASH_HMACSHA1,
    IR.HASH_HMACSHA256,
    IR.HASH_HMACSHA384,
    IR.HASH_HMACSHA512,
    IR.HASH_HMACMD5

    string "Test" type: string
    строка, для которой нужно подсчитать хеш-сумму
    type 0 type: number
    формат вывода данных:
    0 - строка,
    1 - байтовый массив.
    key "6af02e...286d2" type: string
    ключ шифрования данных.
    на выходе значение описание
    hash 0cbc66...5a615b type: number
    результат подсчета хеш-суммы


    Пример для алгоритмов MD5, SHA1, SHA256, SHA384, SHA512:

    var hashMD5 = IR.CalculateHash(IR.HASH_MD5, "Test");
    var hashSHA1 = IR.CalculateHash(IR.HASH_SHA1, "Test");
    var hashSHA256 = IR.CalculateHash(IR.HASH_SHA256, "Test");
    var hashSHA384 = IR.CalculateHash(IR.HASH_SHA384, "Test");
    var hashSHA512 = IR.CalculateHash(IR.HASH_SHA512, "Test");
     
    IR.Log(hashMD5);     // 0cbc6611f5540bd0809a388dc95a615b
    IR.Log(hashSHA1);    // 640ab2bae07bedc4c163f679a746f7ab7fb5d1fa
    IR.Log(hashSHA256);  // 532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25
    IR.Log(hashSHA384);  // 7b8f4654076b80eb963911f19cfad1aaf4285ed48e826f6cde1b01a79aa73fadb5446e667fc4f90417782c91270540f3
    IR.Log(hashSHA512);  // c6ee9e33cf5c6715a1d148fd73f7318884b41adcb916021e2bc0e800a5c5dd97f5142178f6ae88c8fdd98e1afb0ce4c8d2c54b5f37b30b7da1997bb33b0b8a31


    Пример для алгоритмов HMACSHA1, HMACSHA256, HMACSHA384, HMACSHA512, HMACMD5:

    var textData = 'iRidi';
    var secretKey = '9212a1010dde4d4fbcb0';
    var HASH_HMACSHA256 = IR.CalculateHash(IR.HASH_HMACSHA256, textData, 1, secretKey);
    var HASH_HMACSHA = IR.CalculateHash(IR.HASH_HMACSHA1, textData, 1, secretKey);
    var HASH_HMACSHA384 = IR.CalculateHash(IR.HASH_HMACSHA384, textData, 1, secretKey);
    var HASH_HMACSHA512 = IR.CalculateHash(IR.HASH_HMACSHA512, textData, 1, secretKey);
    var HASH_HMACMD5 = IR.CalculateHash(IR.HASH_HMACMD5, textData, 1, secretKey);
     
    IR.Log(HASH_HMACSHA256); // 14,70,95,95,20,12,211,73,234,5,235,195,81,174,41,46,156,92,193,71,9,81,240,87,16,228,88,130,224,193,151,95
    IR.Log(HASH_HMACSHA);    // 244,101,165,67,222,85,108,145,20,89,16,231,57,40,39,48,136,49,151,163
    IR.Log(HASH_HMACSHA384); // 92,90,124,178,158,199,230,160,28,34,156,136,1,248,177,174,191,32,82,108,124,107,203,61,203,204,14,141,143,132,175,104,20,46,227,3,100,3,30,66,110,240,4,194,120,85,187,66
    IR.Log(HASH_HMACSHA512); // 106,247,151,52,13,155,173,249,228,182,129,10,4,56,118,233,176,26,104,200,65,250,133,35,229,1,201,249,143,8,125,234,72,16,202,211,119,121,28,173,3,23,206,137,69,159,196,221,53,90,43,222,142,20,254,56,210,122,152,229,132,150,189,25
    IR.Log(HASH_HMACMD5);    // 253,150,247,65,231,140,184,168,151,164,208,197,253,148,230,104


    IR.UrlDecode

    заменяет UTF-8 управляющие последовательности соответствующими символами (декодирует UTF-8)

    Синтаксис

    IR.UrlDecode(url);

    на входе значение описание
    url 'http://www.google.com/search?&q=%D0%BE%D0%BA' type: string
    строка UTF-8, обычно ссылка, которую нужно декодировать
    на выходе
    url http://www.google.com/search?&q=ок type: string
    результат


    Пример

    IR.AddListener(IR.EVENT_START,0,function()
    {
       var utf8_encode = encodeURI('http://www.google.com/search?&q=ок');
       IR.Log(utf8_encode); // http://www.google.com/search?&q=%D0%BE%D0%BA
     
       var decode = IR.UrlDecode(utf8_encode);
       IR.Log(decode);	// http://www.google.com/search?&q=ок
    });





    IR.HtmlDecode

    раскодировать спецсимволы (ссылки-мнемоники) в HTML структуре

    Синтаксис

    IR.HtmlDecode(text)

    на входе значение описание
    text
    "&gt;"
    type: string
    исходный текст
    на выходе
    text > type: string
    раскодированный текст


    Пример

    IR.AddListener(IR.EVENT_START, 0, function() {  
        var data = IR.HtmlDecode("&gt;");
        IR.Log(data); // >
    });

    Функция декодирует не все стандартные мнемоники. Полный перечень декодируемых мнемоник:

    &lt; &gt; &quot; &amp; &nbsp; &iexcl; &cent; &pound; &curren; &yen; &brvbar; &sect; &uml;
    &copy; &ordf; &laquo; &raquo; &not; &shy; &reg; &macr; &deg; &plusmn; &sup2; &sup3;
    &acute; &micro; &para; &middot; &cedil; &sup1; &ordm; &frac14; &frac12; &frac34;
    &iquest; &Agrave; &Aacute; &Acirc; &Atilde; &Auml; &Aring; &AElig;
    &Ccedil; &Egrave; &Eacute; &Ecirc; &Euml; &Igrave; &Iacute; &Icirc; &Iuml; &ETH; &Ntilde;
    &Ograve; &Oacute; &Ocirc; &Otilde; &Ouml; &times; &Oslash; &Ugrave; &Uacute; &Ucirc; &Uuml;
    &Yacute; &THORN; &szlig; &agrave; &aacute; &acirc; &atilde; &auml; &aring; &aelig; &ccedil;
    &egrave; &eacute; &ecirc; &euml; &igrave; &iacute; &icirc; &iuml;
    &eth; &ntilde; &ograve; &oacute; &ocirc; &otilde; &ouml; &divide;
    &oslash; &ugrave; &uacute; &ucirc; &uuml; &yacute; &thorn; &yuml;
    &apos; &OElig; &oelig; &Scaron; &scaron; &Yuml; &circ; &tilde;
    &ndash; &mdash; &lsquo; &rsquo; &sbquo; &ldquo; &rdquo; &bdquo;
    &dagger; &Dagger; &permil; &lsaquo; &rsaquo; &euro;




    IR.Base64Encode

    закодировать строку / массив в формате Base64.

    Синтаксис

    IR.Base64Encode(data, data_type)

    на входе значение описание
    data "Hello" type: string / array
    исходные данные.
    data_type 0 / 1 type: number
    тип данных:
    0 - строка,
    1 - массив.
    на выходе
    code "SGVsbG8=" type: string
    закодированный текст Base64


    Пример

    //Пример 1:
    IR.Log(IR.Base64Encode([0x48, 0x65, 0x6c, 0x6c, 0x6f], 1)); // зашифровать массив данных
     
    //Пример 2:
    IR.Log(IR.Base64Encode("Hello", 0)); // зашифровать строку
     
    //Пример 3:
    IR.Log(IR.Base64Encode("Hello")); // зашифровать строку (устаревший метод)





    IR.Base64Decode

    раскодировать строку/ массив в формате Base64.

    Синтаксис

    IR.Base64Decode(code, data_type)

    на входе значение описание
    code "SGVsbG8=" type: string
    закодированный текст Base64
    data_type 0 / 1 type: number
    тип данных:
    0 - строка,
    1 - массив.
    на выходе
    data "Hello" type: string / array
    исходный текст / массив данных


    Пример

    //Пример 1:
    IR.Log(IR.Base64Decode("SGVsbG8=", 1)); // расшифровать массив
     
    //Пример 2:
    IR.Log(IR.Base64Decode("SGVsbG8=", 0)); // расшифровать строку
     
    //Пример 3:
    IR.Log(IR.Base64Decode("SGVsbG8=")); //  расшифровать строку (устаревший метод)





    IR.IsModuleLicensed

    метод, применимый для коммерциализации уникальных скриптов. Позволяет узнать, есть ли в лицензии iRidium конкретный "продукт". Продукты включаются в коммерческие лицензии iRidium mobile по специальной договоренности с разработчиком скрипта. Принцип использования:

    1. Создайте скрипт, который хотите зашифровать и распространять на коммерческой основе
    2. Свяжитесь с менеджером iRidium mobile, чтобы получить уникальный ID для своего продукта - скрипта
    3. Добавьте в скрипт проверку ID методом IR.IsModuleLicensed(id), чтобы скрипт не начал работать, пока проект не получит соответствующую лицензию
    4. Защитите файл скрипта паролем, чтобы распространять его другим пользователям
    5. Свяжитесь с менеджерами, чтобы согласовать процедуру включения ID вашего продукта в коммерческие лицензии

    Синтаксис

    IR.IsModuleLicensed(id)

    на входе значение описание
    id 57599 type: number
    уникальный ID продукта, предоставленный разработчику компанией iRidium mobile, хранится в лицензии
    на выходе
    success true type: boolean
    результат проверки:
    • true - если продукт есть в лицензии
    • false - если нет


    Пример

    function RunProtectedModule  () {
        // protected content
    }
     
    // unique module ID  = 65537;
    if (IR.IsModuleLicensed(65537)) RunProtectedModule ();

    Trial лицензия и тестовый режим всегда возвращают true на проверку ID модуля, это обусловлено принципом беспалтного использования продуктов iRidium в тестовом режиме

    Для драйвера AV & Custom Systems ID = 6, для AV & Custom HTTP ID = 14.

    IR.ValidatePassword()

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

    Синтаксис

    IR.ValidatePassword(pwd_number, check_string)

    на входе значение описание
    pwd_number 1 type: number
    1...4 - номер пароля (сами пароли настраиваются в свойствах проекта), с которым нужно сравнить проверяемый пароль
    check_string "password" type: string
    пароль, который будет сравнен с настроенным в свойствах проекта
    на выходе
    result true type: boolean
    результат проверки, true - пароль верный, false - не верный


    Пример

    var editbox = IR.GetItem("Page 1").GetItem("Item 1"); // editbox item on page
     
    IR.AddListener(IR.EVENT_ITEM_CHANGE, editbox, function (action, key) // listen to changes in Editbox
    {    
        if (action == 2) { // when press Enter in Editbox item
            var confirm = IR.ValidatePassword(1, editbox.Text) // check the password from Editbox
                if (confirm) {
                    IR.Log("Access confirmed!");
                    // any action have to be activated by correct password
                } else {
                    IR.Log("Access denied!");
                }
            }
    });

    если в настройках проекта пароль не задан, метод всегда будет возвращать true


    IR.TouchIDStart()

    Метод вызывает системную функцию, запрашивающую у пользователя отпечаток пальца.

    Метод работает только на iOS и Android и на устройствах со сканером отпечатка пальца.

    На устройствах iOS отображается системное окно, запрашивающее отпечаток пальца, в ОС Android системное окно не отображается, системная функция работает в фоновом режиме.

    Синтаксис

    IR.TouchIDStart(function(status){}, {}, reason)

    на входе значение описание
    reason "Place your finger on the
    fingerprint scanner to authorize."
    type: string
    текст, отображаемый пользователю в системном окне и объясняющий причину запроса отпечатка пальца. Только для iOS. В случае ОС Android текст не отображается, можно передать любую строку, например, пустую.
    на выходе
    status true type: boolean
    результат сканирования отпечатка пальца:
    true - успешно,
    false - сканирование отменено.
    function(){} - type: function
    функция-обработчик результата сканирования отпечатка пальца


    Пример

    var button = IR.GetPage("Page 1").GetItem("Button");    
    var result = IR.GetPage("Page 1").GetItem("Result");
     
    IR.AddListener(IR.EVENT_ITEM_RELEASE, button, function() {
      IR.TouchIDStart(function(status) {
        IR.Log("STATUS: " + status);
        result.Value = status;  
      }, {}, "reason");
    });

    На устройствах iOS на время открытия системного окна TouchID приложение i3 pro сворачивается и соответственно не работает.

    If a fingerprint is not recognized, a user is asked to enter a password to enter the operation system. When the correct password is entered the processing function gets the true value.

    скачать:
    • пример с TouchID




    IR.BiometricAuthStart()

    Метод вызывает системную функцию, запрашивающую у пользователя сканирование лица или отпечаток пальца.

    Метод работает только на iOS (версии 11 и выше) и Android устройствах со сканером отпечатка пальца или распознаванием лица.

    При первом использовании распознавания лица в приложении i3 Pro, необходимо дать приложению разрешение на использование face id, иначе функция работать не будет.

    Синтаксис

    IR.BiometricAuthStart( function(status) {} , {}, reason)

    на входе значение описание
    reason "Place your finger on the
    fingerprint scanner to authorize."
    type: string
    текст, отображаемый пользователю в системном окне и объясняющий причину запроса отпечатка пальца или сканирования лица (только для iOS). В случае ОС Android текст не отображается, можно передать любую строку, например, пустую.
    на выходе
    status true type: boolean
    результат сканирования биометрических данных:
    true - успешно,
    false - сканирование отменено.
    function(){} - type: function
    функция-обработчик результата сканирования.


    Пример

    var button = IR.GetPage("Page 1").GetItem("Item 1");
     
    IR.AddListener(IR.EVENT_ITEM_RELEASE, button, function() 
    {
      IR.BiometricAuthStart(function(status) {
        if(status)
            IR.ShowPopup("Popup 1");  //action, when status is true
      },{}, "For opening popup");
    });

    На устройствах iOS на время открытия системного окна, приложение i3 pro сворачивается и соответственно не работает.

    При возникновении ошибок (нет face id или ios не поддерживает face id и другие), пользователю будет предложено ввести пароль входа в операционную систему. При вводе правильного пароля функция-обработчик также получит значение true.

    скачать:
    • пример BiometricAuthStart





    IR.OpenPhotoGallery()

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


    Метод работает на панелях Windows, iOS и Android. Сервер не поддерживается.

    Синтаксис

    var result = IR.OpenPhotoGallery();

    на входе значение описание


    на выходе
    result true type: boolean
    результат:
    true - метод поддерживается операционной системой,
    false - метод не поддерживается.


    Пример

    if (IR.OpenPhotoGallery()) {
       IR.AddListener(IR.EVENT_RECEIVE_PHOTO_FROM_GALLERY, 0, function(filename, filepath) {
          IR.Log("Photo selected.\n Filename: " + filename + "\n Filepath: " + filepath);
       })
    };





    Пример: PhotoGallery.irpz

    IR.OpenPhotoCamera()

    Метод вызова системной камеры для снимка с последующей передачей в iRidium. Для получения снимка используйте слушатель IR.EVENT_RECEIVE_PHOTO_FROM_CAMERA.

    Синтаксис

    IR.OpenPhotoCamera();

    на входе значение описание


    на выходе
    result true type: boolean
    результат:
    true - метод поддерживается операционной системой,
    false - метод не поддерживается.


    Пример

    IR.AddListener(IR.EVENT_ITEM_RELEASE,IR.GetPage("Page 1").GetItem("Item 2"),function()
    {
        IR.OpenPhotoCamera();
    })

    Метод работает на панелях iOS и Android.


    IR.UploadFile()

    The method downloads files via HTTP protocol.

    The method works both in panel and server projects.

    Syntax

    var uploadResult = IR.UploadFile({
          Host: host,
          Port: port,
          SSL: ssl,
          UrlPath: urlpath,
          FilePath: filepath,
          Disposition: disposition,
          Headers: headers,
          Params: params,
          <other>,
          Callback: function(resultObj){}
    })

    input value description
    Host "192.168.1.2" type: string
    IP address of an addressee (who receives a file)
    Port 8457 type: number
    port of an addressee
    SSL IR.SSL_CONTEXT_
    _TYPE_NONE
    type: number
    тип шифрования:
    IR.SSL_CONTEXT_TYPE_NONE - без шифрования
    IR.SSL_CONTEXT_TYPE_TLS_V12 - TLS v1.2
    IR.SSL_CONTEXT_TYPE_SSL_V23 - SSL v2.3
    IR.SSL_CONTEXT_TYPE_SSL_V30 - SSL v3.0
    UrlPath "/bin" type: string
    url-путь адресата, получающего файл
    FilePath "C:/images/face01.jpg" type: string
    файловый путь и имя файла для выгрузки
    Disposition "image" type: string
    тип вложения (определяет HTTP-заголовок Content-Disposition)
    Headers {Connection: Keep-Alive,
    Content-Length: 100,
    Accept: */*}
    type: object
    объект - заголовки для POST-запроса
    Params {param1: value1,
    param2: value2}
    type: object
    объект - параметры для POST-запроса
    <other> - type: -
    прочие параметры, которые применимы к драйверу AV & Custom Systems (HTTP)
    function function(resultObj){} type: function
    не именованная функция или ссылка на объявленную функцию, внутри которой выполняются действия
    output
    uploadResult true type: boolean
    результат попытки выгрузки файла:
    false - ошибка, выгрузка не выполняется,
    true - успех, выгрузка началась
    resultObj - type: object
    объект, содержащий результаты выгрузки файла
    resultObj.State IR.UPLOADER_MANAGER_
    _NOTIFY_STEP
    type: number
    текущее состояние выгрузки файла:
    IR.UPLOADER_MANAGER_NOTIFY_START - начало
    IR.UPLOADER_MANAGER_NOTIFY_STEP - выгрузка в процессе, возвращаемая функция вызывается ежесекундно
    IR.UPLOADER_MANAGER_NOTIFY_END - окончание
    IR.UPLOADER_MANAGER_NOTIFY_ERROR - ошибка
    resultObj.Size 10000 type: number
    текущий выгруженный размер файла в байтах. В начальный момент выгрузки resultObj.Size равен размеру всего файла.
    resultObj.Answer "{Status: 0}" type: string
    содержимое ответа на HTTP-запрос, полученного от адресата по окончании выгрузки файла


    Sample

    IR.UploadFile({
       Host: "192.168.0.21",
       Port: 8587,
       SSL: IR.SSL_CONTEXT_TYPE_NONE,
       UrlPath: "/api/upload/plain",
       FilePath: "C:/image.png",
       Disposition: "image",
       Headers: {
          "Cache-Control": "no-cache",
          "Pragma": "no-cache",
          "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
          "Accept-Language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
          "Accept-Encoding": "gzip, deflate, br"
       },
       Callback: function(obj) {
          switch(obj.State) {
             case IR.UPLOADER_MANAGER_NOTIFY_START:
                IR.Log("UPLOADER_MANAGER_NOTIFY_START: " + obj.Size + " bytes to load");
                break;
             case IR.UPLOADER_MANAGER_NOTIFY_STEP:
                IR.Log("UPLOADER_MANAGER_NOTIFY_STEP: " + obj.Size + " bytes loaded");
                break;
             case IR.UPLOADER_MANAGER_NOTIFY_END:
                IR.Log("UPLOADER_MANAGER_NOTIFY_END");
                var data = JSON.Parse(obj.Answer);
                IR.Log("Answer Status: " + data.Status);  
                break;
             case IR.UPLOADER_MANAGER_NOTIFY_ERROR:
                IR.Log("UPLOADER_MANAGER_NOTIFY_ERROR");
                break;
          }
       }
    });





    IR.EnableProximity()

    Метод включает мониторинг датчика приближения на устройстве.

    Синтаксис

    var result = IR.EnableProximity();

    на входе значение описание


    на выходе
    result true type: boolean
    результат:
    true - метод поддерживается операционной системой,
    false - метод не поддерживается.


    Пример

    {
        IR.EnableProximity(this.Value == 1);
    }





    IR.OnTop()

    Метод выводит окно поверх остальных окон в системе по оси Z.

    Синтаксис

    IR.OnTop();

    на входе значение описание


    на выходе
    succes true type: boolean
    true


    Пример

    IR.TimeOut(5000, function() {
    IR.OnTop();
    });

    Работает только на платформе Windows.


    Popen

    Popen - процесс, позволяющий iRidium Server выполнить команду в командной строке Windows и Linux. Popen не работает в приложении-клиенте i3 pro. Выполнение Popen открывает файловый указатель процесса и позволяет передать информацию о работе команды в указанный экземпляр функции - слушателя. Для того, чтобы выполнять несколько команд и различать информацию о их работе, мы создаем экземпляры Popen.

    Синтаксис

    var cmd_process = new Popen (command, function);

    на входе значение описание
    command 'ping 192.168.0.1' type: string
    команда для выполнения в командной строке (cmd.exe)
    function cmd_result type: function
    экземпляр функции-слушателя, куда будут возвращены результаты выполнения команды
    на выходе
    line .onRecieve type: string
    данные, которые генерирует команда в процессе выполнения. Событие .OnReceive срабатывает в контексте Popen и получает строку line как входной параметр. Строку можно вывести в лог или записать в переменную iRidium Server
    result .onEnd type: number
    код, который генерирует команда при завершении. Событие .onEnd срабатывает в контексте Popen и получает result как входной параметр. Код можно вывести в лог или записать в переменную iRidium Server:
    • 0 - команда успешно завершена
    • 259 и др. числа - ошибка. Код ошибки будет генерироваться при выполнении метода .Stop() - досрочном завершении команды, и в случае негативного результата (например, когда IP адрес недоступен для команды ping)
    .Stop() .Stop() type: method
    команда принудительной остановки процесса Popen. Процесс не нужно завершать, если сработало событие .onEnd, но обязательно нужно завершить, если команда сама по себе не прерывается (как, например, бесконечный пинг)


    Пример

    function Listener (cmd)
    {
       this.onRecieve = function(line)
       {
          IR.Log(line); 
       }
     
       this.onEnd = function(result)
       {
          IR.Log('Command: '+ cmd + " Result: " + result);
       }   
    }
     
    function stop()
    {
      cmd_process.Stop();
    }
     
    var cmd_result    =  new Listener ('ping 192.168.0.1');
    var cmd_process   =  new Popen ('ping 192.168.0.1', cmd_result);

    чтобы завершить процесс, используйте метод .Stop(). Команды, которые не завершаются сами, нужно останавливать принудительно, т.к. каждая из низ использует ресурсы ОС и влияет на быстродействие

    popen работает только в iRidium Server на Windows и Linux. Не работает в i3 pro


    iDate (object)

    iDate - это представление даты в виде 64 битного числа с плавающей запятой. Может оперировать датами и временем в диапазоне от 1 января 100 года до 31 декабря 9999 года.

    Целая часть означает количество дней с 30 декабря 1899 года, т.е. число 2 будет означать 1 января 1900 года. Чтобы указать даты до 30 декабря 1899 года, используйте отрицательное число, например -1 будет обозначать 29 января 1899 года.

    Дробная часть определяет время. Чтобы увеличить время на 1 час нужно прибавить 1/24, чтобы прибавить 1 минуту: 1/1440. Недостатком объекта является низкая точность при работе с миллисекундами, погрешность составляет +/-150 миллисекунд.


    iDate без аргументов

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

    var date = new iDate();
    IR.Log("Date " + date.year + "." + date.month + "." + date.day);
    IR.Log("Time " + date.hours + ":" + date.minutes + ":" + date.seconds + "." + date.ms);
    IR.Log("Value " + date.value);
    /*
       result:
       Date 2014.11.29
       Time 20:49:20.778
       Value 41972.86760159722
    */


    iDate c 1 аргументом

    Аргументом является value - число с плавающей запятой, обозначающее совмещенное представление даты и времени.

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

    // создадим объект iDate, передав ему целое положительное число.
    var d1 = new iDate(16384);
    IR.Log("Date 1 " + d1.year + "." + d1.month + "." + d1.date);
    IR.Log("Time 1 " + d1.hours + ":" + d1.minutes + ":" + d1.seconds + "." + d1.ms);
    IR.Log("Value 1" + d1.value);
    /* 
       result:
       Date 1 1944.11.8
       Time 1 0:0:0.0
       Value 1 16384
    */
    // создадим объект iDate, передав ему целое отрицательное число.
    var d2 = new iDate(-16384);
    IR.Log("Date 2" + d2.year + "." + d2.month + "." + d2.date);
    IR.Log("Time 2" + d2.hours + ":" + d2.minutes + ":" + d2.seconds + "." + d2.ms);
    IR.Log("Value 2" + d2.value);
    /* 
       result:
       Date 2 1855.2.20
       Time 2 0:0:0.0
       Value 2 -16384
    */


    iDate более чем с 1 аргументом

    Аргументы:

    • year - год
    • month - месяц
    • date - день
    • hours - часы
    • minutes - минуты
    • seconds - секунды
    • ms - миллисекунды


    При создании объекта происходит раздельное заполнение года, месяца, даты, часов, минут, секунд и миллисекунд. Если заполнены не все параметры, оставшиеся заполняются текущим значением.

    // создание  объекта iDate, с текущими значениями даты и времени.
    var cur = new iDate();
    IR.Log("Cur Date " + cur.year + "." + cur.month + "." + cur.date);
    IR.Log("Cur Time " + cur.hours + ":" + cur.minutes + ":" + cur.seconds + "." + cur.ms);
    IR.Log("Cur Value" + cur.value);
    /* 
       result:
       Cur Date 2014.11.29
       Cur Time 21:6:45.128
       Cur Value41972.879688981484
    */
    // создание  объекта iDate, с указанием года, месяца и числа
    var date2 = new iDate(1999, 1, 21);
    IR.Log("Date 2 " + date2.year + "." + date2.month + "." + date2.date);
    IR.Log("Time 2 " + date2.hours + ":" + date2.minutes + ":" + date2.seconds + "." + date2.ms);
    IR.Log("Value 2 " + date2.value);
    /* 
       result:
       Date 2 1999.1.21
       Time 2 21:6:45.133
       Value 2 36181.87968903935
    */
    // создание объекта iDate, с указанием года, месяца, числа, часа и минуты
    var date4 = new iDate(1999, 1, 21, 4, 16);
    IR.Log("Date 4 " + date4.year + "." + date4.month + "." + date4.date);
    IR.Log("Time 4 " + date4.hours + ":" + date4.minutes + ":" + date4.seconds + "." + date4.ms);
    IR.Log("Value 4 " + date4.value);
    /* 
       result:
       Date 4 1999.1.21
       Time 4 4:16:45.138
       Value 4 36181.17830020833
    */
    // создание  объекта iDate, с указанием года, месяца, числа, часа, минуты, секунды и миллисекунды
    var date6 = new iDate(1999, 1, 21, 4, 16, 12, 400);
    IR.Log("Date 6 " + date6.year + "." + date6.month + "." + date6.date);
    IR.Log("Time 6 " + date6.hours + ":" + date6.minutes + ":" + date6.seconds + "." + date6.ms);
    IR.Log("Value 6 " + date6.value);
    /* 
       result:
       Date 6 1999.1.21
       Time 6 4:16:12.400
       Value 6 36181.177921296294
    */

    Для класса iDate добавлены методы toTimeString() и toDateString(), которые повторяют поведение одноименных методов класса Date. Вывод при использовании этих методов учитывает локальное (системное) время сервера.

    Пример:

    IR.AddListener(IR.EVENT_START, 0, function()
    {
        function getTime()
        {
            var currentDate = new iDate();         // Создадим экземпляр класса iDate
            var time = currentDate.ToTimeString(); // Преобразуем iDate к строке вида - HH:MM:SS
            var date = currentDate.ToDateString(); // Преобразуем iDate к строке вида - Day, DD Mon YEAR 
            IR.Log("iDate: " + time + " " + date); // Выведем результат
     
            IR.SetTimeout(2000, getTime);
        }
     
        IR.SetTimeout(2000, getTime);
    });

    На выходе:

    …INFO SCRIPT  iDate: 16:30:28 Thu, 4 Jul

    JSON

    JSON.Stringify

    преобразовать JSON объект с строку

    Синтаксис

    JSON.Stringify(object, bool)

    на входе значение описание
    object type: object
    JSON объект
    на выходе
    mode true type: boolean
    * true - выводить дубликаты объектов.
    • false - не выводить дубликаты объектов (по умолчанию false).
    text type: string
    преобразованный в строку JSON объект


    Пример

    IR.AddListener(IR.EVENT_START,0,function()
    {
       var object = {"Room" : [{"Floor" : "Ground", "Name" : "Kitchen"}]}
       var string = JSON.Stringify(object);
       IR.Log(string) // {"Room":[{"Floor":"Ground", "Name":"Kitchen"}]}
    });





    JSON.Parse

    преобразовать строку в JSON объект

    Синтаксис

    JSON.Parse(text)

    на входе значение описание
    text type: string
    строка
    на выходе
    object type: object
    JSON объект


    Пример

    IR.AddListener(IR.EVENT_START,0,function()
    {
       var string = '{"Room":[{"Floor":"Ground", "Name":"Kitchen"}]}'
       var object = JSON.Parse(string);
       IR.Log(object) // [object Object]
    });





    XML

    new XML

    создать XML объект

    Синтаксис

    new XML(text)

    на входе значение описание
    text type: string
    строка, хранящая XML сообщение
    на выходе
    object type: object
    XML объект


    Пример

    IR.AddListener(IR.EVENT_START,0,function()
    {
       var xml_string = '<file id="123" quote="true"><name>project 1</name><version>v 1.0</version></file><Panel>"panel #1"</Panel><Panel>"panel #2"</Panel>'
       var xml_object = new XML(xml_string); // create XML object
     
       var name = xml_object.file["name"];
       var attrib_id = xml_object.file["@id"];
       var attrib_quote = xml_object.file["@quote"];	
       var version = xml_object.file.version;	
       var panel1 = xml_object.Panel[0];
       var panel2 = xml_object.Panel[1];	
     
       IR.Log(name+" "+version+" "+panel1+" "+panel2); // project 1 v 1.0 "panel #1" "panel #2"
       IR.Log(attrib_id); //view attribute "id"
       IR.Log(attrib_quote); //view attribute "quote"
    });





    .toXMLString

    преобразовать XML объект в строку

    Синтаксис

    string.toXMLString()

    на входе значение описание
    object type: object
    XML объект
    на выходе
    string type: string
    строка


    Пример

    IR.AddListener(IR.EVENT_START,0,function()
    {
       var xml_string = '<file><name>project 1</name><version>v 1.0</version></file><Panel>panel #1</Panel><Panel>"panel #2"</Panel>'   
     
       var xml_object = new XML(xml_string);
       var xml_string_from_object = xml_object.toXMLString()  // XML object to XML string
     
       IR.Log(xml_string_from_object);
    });






    IR.SetPanelBacklight()

    Управление боковой подсветкой на iRidium Panel 7.

    Синтаксис

    IR.SetPanelBacklight(imax, brightness, color)

    На входе Значение Описание
    imax 1 - 4 type: Number
    brightness 0 - 255 type: Number
    яркость подсветки.
    color 0 - выключена,
    1 - синий,
    2 - зеленый,
    3 - голубой,
    4 - красный,
    5 - сиреневый,
    6 - желтый,
    7 - белый.
    type: Number
    цвет подсветки.

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

    //пример для зеленого цвета:
    IR.AddListener(IR.EVENT_ITEM_RELEASE, IR.GetPage("Page 1").GetItem("Item 1"), function()
    {
       IR.SetPanelBacklight(4, 255, 2);
       //IR.GetPage("Page 1").GetItem("color_Light").GetState(0).FillColor = 0x0000ffff;
       IR.Log("green");
    });


    Пример: iRidium Panel 7



    События

    IR.EVENT_START

    идентификатор события, которое срабатывает при запуске приложения i3 pro

    Синтаксис

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

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

    -


    Пример

    IR.AddListener(IR.EVENT_START, 0, function ()
    {
        IR.Log("app started"); // action
    });





    IR.EVENT_WORK

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

    Синтаксис

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

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

    -


    Пример

    // IS NOT RECOMMENDED FOR REAL TASKS! 
    IR.AddListener(IR.EVENT_WORK, 0, function ()
    {
        IR.Log("app works"); // action
    });

    Событие не рекомендовано к использованию, т.к. не оптимально использует ресурсы. Вместо него используйте IR.SetInterval() или слушатели изменения драйверов.


    IR.EVENT_EXIT

    идентификатор события, которое срабатывает при завершении приложения i3 pro. Активируется при получении команды на закрытие приложения.

    Синтаксис

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

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

    -


    Пример

    IR.AddListener(IR.EVENT_EXIT, 0, function ()
    {
        IR.Log("app closed"); // action
    });

    cобытие не будет вызвано при аварийном завершении приложения


    Не поддерживается работа с IR.Execute() и работа с драйверами. }}

    IR.EVENT_GLOBAL_TAG_CHANGE

    идентификатор события, которое срабатывает при изменении любого тега в приложении iRidium. Теги - это любые свойства элементов интерфейса или драйверов, которые можно запросить. Чтобы система регистрировала изменение тега, на него нужно подписаться с помощью метода IR.SubscribeTagChange

    Синтаксис

    IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function() {}, [pointer]); IR.SubscribeTagChange(tag);

    на входе значение описание
    function function() {} type: function
    не именованная функция или обращение к функции
    tag "Drivers.AV (TCP).Online" type: string
    полное имя тега, на изменение которого вы хотите подписаться с помощью метода IR.SubscribeTagChange. Без подписки, изменение тега не будет отражено в системе
    pointer - type: object
    указатель на объект, который обслуживает функцию (опционально)
    на выходе

    -


    Пример

    //Set global listener
    IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
    {
         IR.Log("Global Listener Activated: " + name + "\tValue: " + value);
    });
    // Subscribe 
    IR.SubscribeTagChange("Drivers.KNX IP Router.Address 1"); 
    IR.SubscribeTagChange("Drivers.AV & Custom Systems (TCP).Online"); 
    IR.SubscribeTagChange("UI.Page 1.Item 1.Text"); 
    IR.SubscribeTagChange("System.Time.24");
    // Unsubscribe
    IR.UnsubscribeTagChange("UI.Page 1.Item 1.Text");
    // resend the data from KNX Address 1 to Address 2 on change (for iRidium Server)
    IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
    {
       if (name == "Server.Channels.KNX.Address 1")
          IR.SetVariable("Server.Channels.KNX.Address 2", value);
    });
    IR.SubscribeTagChange("Server.Channels.KNX.Address 1");

    Глобальный слушатель можно создать в проекте только 1 раз, иначе работать будет только последний
    Активировать слушатель: IR.SetGlobalListener
    Слушатель реагирует на изменение тега, только если подписан на этот тег методом IR.SubscribeTagChange
    Слушатель реагирует только на изменение тега (не сработает, если пришло значение, равное текущему)
    Отписаться от тега: IR.UnsubscribeTagChange


    IR.EVENT_ORIENTATION

    идентификатор события, которое срабатывает при повороте панели управления, оснащенной акселерометром. Работу события можно эмулировать на Windows нажатием клавиши F5

    Синтаксис

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

    на входе значение описание
    function function() {} type: function
    не именованная функция или обращение к функции
    pointer - type: object
    указатель на объект, который обслуживает функцию (опционально)
    на выходе
    orientation_id 1 type: number
    номер новой ориентации устройства:
    • 1 - вертикальная, кнопка Home внизу, константа: IR.ORIENTATION_PORTRAIT
    • 2 - вертикальная, кнопка Home вверху, константа: IR.ORIENTATION_PORTRAIT_UPSIDE_DOWN
    • 3 - горизонтальная, кнопка Home справа, константа: IR.ORIENTATION_LANDSCAPE_LEFT
    • 4 - горизонтальная, кнопка Home слева, константа: IR.ORIENTATION_LANDSCAPE_RIGHT


    Пример

    IR.AddListener(IR.EVENT_ORIENTATION, 0, Message);
    function Message(orientation)
    {
    IR.Log("new orientation id: " + orientation);
    switch (orientation) {
          case IR.ORIENTATION_PORTRAIT:
          IR.Log("Vertical")
          break;
          case IR.ORIENTATION_PORTRAIT_UPSIDE_DOWN:
          IR.Log("Upside down")
          break;
          case IR.ORIENTATION_LANDSCAPE_LEFT:
          IR.Log("Turned to the left");
          break;
          case IR.ORIENTATION_LANDSCAPE_RIGHT:
          IR.Log("Turned to the right");
          break;
       }
    }

    начальное значение ориентации будет получено при запуске приложения
    эмулировать поворот на Windows можно нажатием F5


    IR.EVENT_KEYBOARD_SHOW

    идентификатор события, которое срабатывает в момент открытия или закрытия клавиатуры на iOS или Android устройстве

    Синтаксис

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

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


    Пример

    IR.AddListener(IR.EVENT_KEYBOARD_SHOW, 0, function(id)
    {
       if (id)
          {
             IR.Log("keyboard showed");
          }
       else
          {
             IR.Log("keyboard hidden");
          } 
    });





    IR.EVENT_RECEIVE_SCHEME

    идентификатор события, которое срабатывает, когда i3 pro на iOS или Android вызывают URL схемой из браузера, почтового клиента или другого приложения. URL схема для вызова i3 pro имеет вид:
    iridium://script?data1&data2
    data1&data2 - строка с данными, которая будет передана в скрипт, в параметр query

    Синтаксис

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

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


    Пример

    // called URL scheme: iridium://script?Page1
    IR.AddListener(IR.EVENT_RECEIVE_SCHEME,0,function(query, source) 
    {
       if (query == "Page1")
          IR.ShowPage("Page 1");
    });





    IR.ANDROID_BACK_PRESS

    идентификатор события, которое срабатывает при нажатии кнопки Back на Android (кнопка может быть аппаратной или программной). Если вы подписаны на это событие, кнопка Back будет выполнять только действия, запрограммированные в функции, которую выполняет слушатель. Если вы не подписаны на это событие, нажатие на кнопку Back свернет приложение

    Синтаксис

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

    на входе значение описание
    function function() {} type: function
    не именованная функция или обращение к функции
    на выходе

    -


    Пример

    var back_subscribe = function () 
    {
       IR.Log("Back button pressed!");
    }
    IR.AddListener(IR.ANDROID_BACK_PRESS, 0, back_subscribe);
     
    // to unsunscribe you can call the function back_unsubscribe (); in any moment
    function back_unsubscribe () 
    {
       IR.RemoveListener(IR.ANDROID_BACK_PRESS, 0, back_subscribe);
    }

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


    IR.EVENT_RECEIVE_PHOTO_FROM_GALLERY

    событие, вызываемое при выборе изображения из галереи, инициированное методом IR.OpenPhotoGallery().

    Синтаксис

    IR.AddListener(IR.EVENT_RECEIVE_PHOTO_FROM_GALLERY, 0, function(filename, filepath) { }, [pointer]);

    на входе значение описание
    function function() {} type: function
    не именованная функция или обращение к функции
    на выходе
    filename "flower.png" type: string
    имя файла изображения
    filepath "D:/collection/flower.png" type: string
    файловый путь и имя файла изображения
    pointer - type: pointer
    указатель на контекст слушателя (опционально)


    Пример

    if (IR.OpenPhotoGallery()) {
       IR.AddListener(IR.EVENT_RECEIVE_PHOTO_FROM_GALLERY, 0, function(filename, filepath) {
          IR.Log("Photo selected.\n Filename: " + filename + "\n Filepath: " + filepath);
       }
    });





    Пример: PhotoGallery.irpz


    IR.EVENT_RECEIVE_PHOTO_FROM_CAMERA

    событие, вызываемое при получении изображения с камеры, инициированное методом IR.OpenPhotoCamera().

    Синтаксис

    IR.AddListener(IR.EVENT_RECEIVE_PHOTO_FROM_CAMERA, 0, function(filename, filepath) { }, [pointer]);

    на входе значение описание
    function function() {} type: function
    не именованная функция или обращение к функции
    на выходе
    filename "flower.png" type: string
    имя файла изображения
    filepath "D:/collection/flower.png" type: string
    файловый путь и имя файла изображения
    pointer - type: pointer
    указатель на контекст слушателя (опционально)


    Пример

    if (IR.OpenPhotoCamera()) {
       IR.AddListener(IR.EVENT_RECEIVE_PHOTO_FROM_CAMERA, 0, function(filename, filepath) {
          IR.Log("Photo selected.\n Filename: " + filename + "\n Filepath: " + filepath);
       }
    });





    IR.EVENT_LICENCE_ACCEPT

    Слушатель срабатывает при получении лицензии для i3 pro, или iridium server.

    Синтаксис

    IR.AddListener(IR.EVENT_LICENCE_ACCEPT, 0, function);

    на входе значение описание
    function function() {} type: function
    не именованная функция или обращение к функции
    на выходе


    Пример

     





    Не поддерживаемые

    Поддержка ниже перечисленных методов остановлена в iRidium v3

    IR.DownLoadProject

    загружает на панель управления проект, доступный по HTTP ссылке. При загрузке проекта можно задать ему уникальное имя для работы в режиме Мультипроектность.

    Синтаксис

    IR.DownLoadProject({type: protocol, host: host, path: path, multiproject: mode, name: name});

    на входе значение описание
    protocol 'https' type: string
    тип протокола: http или https
    host 'drive.google.com' type: string
    IP адрес или доменное имя ресурса
    path '/folder/file.irpz' type: string
    путь к файлу проекта
    mode 0 type: number
    режим мультипроектности, 0 - выключен, 1 - включен
    name 'Main' type: string
    имя проекта, Main - интерфейс по умолчанию
    на выходе
    object [Object DevicePrototype] type: object
    ссылка на драйвер iRidium HTTP Updater, запускающий обновление проекта


    Пример

    IR.AddListener(IR.EVENT_START, 0, function()
    {    
       IR.DownLoadProject({
    				type: 'https', 
    				host: 'drive.google.com', 
    				path: '/uc?export=view&id=0B2nsHBulOZWTR2tUaW85Vlo1Yzg', 
    				multiproject: 0, 
    				name: 'Main' 
       });
    });
    // regular expression returns the parsed link to Project
    function parse_url(url) 
    {
        var pattern = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?");
        var matches =  url.match(pattern);
        return {
            scheme: matches[2],
            authority: matches[4],
            path: matches[5],
            query: matches[7],
            fragment: matches[9]
        };
    }
    // start the uroject uploading
    function HTTPUpdate(url)
    {
       var parsed_url = parse_url(url);
       var downloader = IR.DownLoadProject({
                    type:parsed_url.scheme,
                    host:parsed_url.authority,
                    path:parsed_url.path + '?' + parsed_url.query,
                    multiproject: 1,
                    name: "TestNew"
                        });
    }
    // call the uploading function and send the URL for parsing
    function Update_new()
    {
             HTTPUpdate('https://drive.google.com/uc?export=view&id=0B2nsHBulOZWTR2tUaW85Vlo1Yzg');
    }

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


    IR.SendNotification

    отправить локальное уведомление на то же iOS устройство, где запущено приложение i3 pro (на других ОС не работает)

    Синтаксис

    IR.SendNotification(text, delay, sound_id, badge_increment_num, id)

    на входе значение описание
    text "event N" type: string
    текст уведомления
    delay 0 type: number
    (cек) задержка появления уведомления
    sound_id 1 type: number
    идентификатор звука, с которым будет вызвано уведомление:
    • 0 - без звука
    • 1 - стандартный звук уведомления iOS
    • 2 - стандартный рингтон iOS
    badge_increment_num 1 type: number
    на сколько увеличить число полученных уведомлений поверх иконки приложения
    id "None" type: string
    уникальный идентификатор уведомления
    на выходе

    -


    Пример

    IR.AddListener(IR.EVENT_APP_ENTER_BACKGROUND, 0, function()
    {  
          IR.SendNotification("iRidium minimized", 0, 1, 1, "None");
    });

    работает только на iOS, не является push-уведомлением


    IR.ClearNotification

    очистить список локальных уведомлений, сгенерированных i3 pro на iOS устройстве

    Синтаксис

    IR.ClearNotification()

    на входе значение описание

    -

    на выходе

    -


    Пример

    IR.AddListener(IR.EVENT_APP_ENTER_FOREGROUND, 0, function()
    {  
          IR.ClearNotification();
    });

    работает только на iOS


    IR.EVENT_RECEIVE_NOTIFY

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

    Синтаксис

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

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


    Пример

    IR.AddListener(IR.EVENT_RECEIVE_NOTIFY, 0, notify)
    function notify (text, id) 
    {
       switch (id) 
       {
          case "Notify 1": // notification ID
          IR.ShowPopup("Popup 1");
          IR.GetItem("Popup 1").GetItem("Item 1").Text = text; // notification text
          break;
          case "Notify 2":
          IR.ShowPopup("Popup 2");
          IR.GetItem("Popup 2").GetItem("Item 1").Text = text;
          break;
       }
    }





    IR.EVENT_APP_ENTER_BACKGROUND

    идентификатор события, которое срабатывает в момент сворачивания и закрытия приложения на iOS или Android устройстве

    Синтаксис

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

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

    -


    Пример

    IR.AddListener(IR.EVENT_APP_ENTER_BACKGROUND, 0, function()
    {
       IR.Log("app minimized"); 
    });

    событие не сработает при аварийном закрытии (падении) приложения


    IR.EVENT_APP_ENTER_FOREGROUND

    идентификатор события, которое срабатывает в момент разворачивания приложения на iOS или Android устройстве

    Синтаксис

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

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

    -


    Пример

    IR.AddListener(IR.EVENT_APP_ENTER_FOREGROUND, 0, function()
    {
       IR.Log("app maximized"); 
    });

    событие не сработает при старте приложения


    IR.EVENT_APP_WILL_TERMINATE

    идентификатор события, которое срабатывает сразу перед тем, как приложение на iOS или Android будет завершено.

    Синтаксис

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

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

    -


    Пример

    IR.AddListener(IR.EVENT_APP_WILL_TERMINATE, 0, function()
    {
       IR.Log("app will be closed right now"); 
    });

    событие не сработает при аварийном завершении приложения

    Источник — «https://dev.iridi.com/index.php?title=Systems_API/ru&oldid=143989»
    Категория:
    • Инструкции
    О нас
    Компания
    Команда
    История
    Философия
    Награды
    Партнерство
    Наши партнеры
    Партнерские программы
    Подать заявку на партнерство
    Продукты
    iRidium pro
    iRidium lite
    iRidium gate
    iRidium server
    Загрузки
    iRidium pro
    iRidium lite
    Другие версии
    Маркетинговые материалы
    Поддержка
    Онлайн курсы/Видео
    Рекомендуемое оборудование
    Другие версии
    iRidium pro
    Документация
    FAQ
    Форум
    iRidium lite
    Документация
    Форум
    Проекты
    Типовые проекты
    Умные здания
    Умные дома
    Специальные решения
    Найти дилера
    Новости
    Youtube
    Twitter
    VK
    Logo
    contact@iridi.com
    +7 (499) 322-73-29

    Политика конфиденциальности