Перейти к основному содержимому

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

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

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

Обновлено: 26.7.2023

Подсказка

Язык предок: JavaScript Версия языка: 1.5 Спецификация: ECMAScript Edition 3 Да, наша версия JS уже далеко не нова и не поддерживает новые конструкции, но для панельного проекта этого функционала хватает в 99% случаев. А для оставшегося процента существуют конверторы, по типу https://babeljs.io} и конечно же, опыт и навыки разработчика Сообщить об ошибке

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

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

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

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

Помните, что сервер, запущенный в приложении , работает только пока приложение запущено, он не может хранить базу данных, в отличие от специализированного решения 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). Для получения свободного идентификатора надо использовать метод

IR.FreeFontID;

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


var Font=IR.FreeFontID; //Get free font ID
IR.CreateFont(Font, "tahoma.ttf", IR.GetItem("Страница 1").GetState(0).FontSize+10);//Create new font with new size and id
IR.GetItem("Страница 1").GetState(0).FontId=Font;//Set new font to the state

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

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

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

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

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

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

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

В проекте для сервера создайте новый файл скрипта. Добавьте в него условие отправки уведомления и команду отправки 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);
}
});

примечание

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