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

Other languages:
Раздел находится в разработке

Примеры использования JavaScript API iRidium с описаниями.

Обновлено: 06.3.2017
Язык предок: JavaScript
Версия языка: 1.5
Спецификация: ECMAScript Edition 3
Сообщить об ошибке


Драйверы (DDK, Drivers API)

Примеры создания и изменения настроек драйверов с помощью iRidium API


Custom TCP сервер в клиенте iRidium

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

Помните, что сервер, запущенный в приложении i3 pro, работает только пока приложение запущено, он не может хранить базу данных, в отличие от специализированного решения iRidium Server.

Применение "сервера в клиенте" очень ограничено и может использоваться только для синхронизации некоторых данных между панелями управления, когда установка iRidium Server по каким-то причинам невозможна.

// TCP server on port 5678
function start_tcp_server(server_name)
{
   // name, port, max connections
   var name = server_name;
   var port = 5678;
   var max_clients = 10;
   var tcp_device = IR.CreateDevice(IR.DEVICE_CUSTOM_SERVER_TCP, name, "", port, max_clients);
 
   // start server
   tcp_device.Connect();    
 
   // inform when the server online
   IR.AddListener(IR.EVENT_ONLINE, tcp_device, function(text)
   {
      IR.Log("Server is ONLINE");
   });
 
   // register connected client
   IR.AddListener(IR.EVENT_ACCEPT, tcp_device, function(id)
   {  
      IR.Log(tcp_device + " ACCEPT CLIENT "+id);
   });
 
   // process received data
   IR.AddListener(IR.EVENT_RECEIVE_TEXT, tcp_device, function(text)
   {
      //IR.Log("INPUT DATA: "+text);
      var strings = text.split('\r\n');
      var string;
      while(string = strings.shift())
      {
         var parts = string.split(":");  // parse the string with ":" devider
         switch(parts[0])
         {
            case "LOG":    // if the first substring of received data = "LOG"
            IR.GetItem("Page 1").GetItem("Item 1").GetState(0).Text = IR.GetVariable("System.Time.24")+" "+parts[1];
            IR.Log(IR.GetVariable("System.Time.24")+" "+parts[1]);
            break;
            case "ERROR":  // if the first substring = "ERROR"
            IR.GetItem("Page 1").GetItem("Item 2").GetState(0).Text = IR.GetVariable("System.Time.24")+" "+parts[1];
            IR.Log(IR.GetVariable("System.Time.24")+" "+parts[1]);
            break;
            case "DATABASE":  // if the first substring = "DATABASE"
            IR.Log(parts[1]);
            break;
         }
      }
   });
}
 
// start the server when project starts
start_tcp_server("Custom Server TCP");


Интерфейс (GUI API)

Примеры управления свойствами страниц, окон и графических элементов с помощью iRidium API


Анимация элементов с помощью IR.Tween

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

Применим твинер для того, чтобы показанный на странице попап плавно "выезжал" из-за края экрана. Будем использовать линейный твинер, чтобы попап двигался прямо.

function ShowTop() 
{
   TopTween("Popup 1", 820, 34, 250);  // popup, X, Y, moving range from Top
}
 
////////////////////////////////////////////////////////////////////////////////
// Creating Effects
////////////////////////////////////////////////////////////////////////////////
var timer = 0;
var speed = 20;    // showing speed
 
function TopTween(popup, X, Y, range)
{
   IR.ShowPopup(popup);
   IR.GetItem(popup).X = X;
   var Tm = IR.SetInterval(1, function()
   {          
      timer++;
      var Tween = IR.Tween("TWEEN_LINEAR", timer, 0, range, speed); 
      IR.GetItem(popup).Y = Y+Tween; 
      if (timer > speed) IR.ClearInterval(Tm); timer = 0;
   });
}


Управление шрифтом

Установить на элемент шрифт или изменить размер шрифта можно только через свойство состояния .FontId.

FontId - идентификатор шрифта, хранит указатель на шрифт и его размер. Изменить отдельно размер шрифта - нельзя.

Создадим новый шрифт и привяжем его к состоянию элемента через FontId. Важно использовать для создания новых шрифтов идентификаторы, которых еще нет в проекте (редактор также создает свои, системные шрифты, используя идентификаторы, начинающиеся с 1). Поэтому начнем нумерацию пользовательских шрифтов с FontId = 1000.

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

// item state
var itemState = IR.GetItem("Page 1").GetItem("Item 1").GetState(0); 
// new font IDs have to start from 1000 to make sure that u not rewrite a system fonts (starts from 1)
var fontCount = 1000;  
// create the font with new ID to make sure that you not rewrite some user font
function prepareNewFont(name, size)
{
     ++fontCount;
     IR.CreateFont(fontCount, name, size);
     IR.Log("The font has been created:" + name + " " + size + " " + fontCount);                 
     return fontCount;
}
 
//set the created fornt on item  (you can also set the font by ID, like itemState.FontId = 1001;)
itemState.FontId = prepareNewFont("segoeuil.ttf", 48);	
 
// this font: "segoeuil.ttf" has to be added in you GUI before you use it in script
// see the name of Font file in GUI Editor > OBJECT PROPERTIES > States > State 1(2) > Font: [...]
// In the Font editor you can see the Font name and the name of font File (use the File name in script)


Уведомления (Push API)

Отправка Push уведомления на панель управления. Уведомление отправляет сервер (других возможностей в v1.0.10 нет).


1 Создайте группы панелей управления

По умолчанию, ни одна панель управления не будет получать Push уведомления до тех пор, пока вы не поместите ее в Группу панелей, которые могут получать Push.

Группы настраивают на сайте, см. инструкцию.

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


2 Настройте скрипт отправки уведомлений с сервера

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

Пример: отправим уведомление, когда канал "Address 1" драйвера "KNX" примет значение 1. Уведомление получит группа панелей с ID = 1.

function sendPush (text, group) 
{
   IR.SendPush(text, "", group);  
   // text - message that will be displayed in notification
   // group - group of Panels seted up in Cloud Object properties on iRidium Mobile web site
}
 
IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetDevice("KNX"), function(name, value)
{
   if (name == "Address 1" && value == 1) 
   {
      sendPush("Leakage in the kitchen! The water supply is turned off", 1); 
   } 
});

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