On this forum you can discuss iRidium with other users. iRidium consist of 2 main components - i3 pro app and iRidium Server. Please post here your questions, ideas or errors you find.

Please send your questions to support team as a private messages.

Please subscribe to the Change Log to know our news

Under review
Oleg Bubnov 3 months ago in iRidium Script • updated by Xopyc (expert) 6 days ago 7

  1. Руководство обозначает свойство состояния DrawOrder, но никак его не описывает. Можно ли его использовать? Если да, то как? Я попытался использовать вот такой подход: btn.GetState(0).DrawOrder = "Fill Image Border Text Icon"; - кнопка исчезла с экрана, но на нажатия реагировала. Такой же результат, если через запятую перечислять.
  2. То же самое со свойством Font. В руководстве описано, что можно использовать только Тахому-20. Можно ли в скрипте поменять как-то значение и размер шрифта при помощи скрипта? Например, используя FontId? Если да, то как?
  3. Можно ли задать свойство Image однажды для всех состояний? Аналогично свойству Text.
  4. Если скриптом нельзя полноценно создать экземпляр кнопки, тогда как решать эту задачу? Создавать некий шаблон кнопки в Студио и потом уже его прятать на никогда не вызываемой странице, размножать и изменять?
geurtsd 11 months ago in iRidium Script • updated 7 months ago 9

Dear support team,

Despite the fact that your training and reference material has grown and professionalised a lot over the time, would it bw possible to publish a list of supported methods of standard javascript? Or a javascript version that the script editor is based on so we can research it ourselves?

I find regularly that standard javascript methods do not work in iridium, which makes it cumbersome to troubleshoot if I did something wrong in my programming, or if the method s just not supported.....

one example: Array method "indexOf"

thanks in advance.



Polifill for indexOf("item of array")
add this script in your project and you will be able to use indexOf(array) thats available in ECMA5

// Polifill, IndexOf
// ECMA-262, 5,
// http://es5.github.io/#x15.4.4.14

if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function(searchElement, fromIndex) {
    var k;

    if (this == null) {
      throw new TypeError('"this" is null or not defined');

    var O = Object(this);

    var len = O.length >>> 0;

    if (len === 0) {
      return -1;

    var n = +fromIndex || 0;

    if (Math.abs(n) === Infinity) {
      n = 0;

    if (n >= len) {
      return -1;

    k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);

    while (k < len) {

      if (k in O && O[k] === searchElement) {
        return k;
    return -1;

then you can use it:

var arr = ["All Systems", "Floor 1", "Room 1", "Room 3", "Room 4"];

var a = arr.indexOf("Room 1");
IR.Log(a);   // 2

Dmitry Ryzhkov 1 year ago in iRidium Script • updated 5 months ago 5
Please consider a new opportunity to work with lists of type List to develop new drivers.
At the moment the list is announced in the script,
var myList = Module.GetPopup ("myPopup"). GetItem ("myList");
It has the right to life in the development of drivers for i3 Lite.
In the transition to the development of drivers for i3 Pro it becomes a problem, because the driver is closed and it does not make a difference.
Therefore, you must manage the list of drivers through the channels (Commands and Feedback)
Thus to connect to the driver list is necessary and sufficient to throw drayveha channels on the list in the interface.
In the driver pressing on the list will be processed through IR.EVENT_CHANNEL_SET, and display information through Module.SetFeedback ('myList', [data]);
I am more than sure that there are nuances, but the meaning is clear about.

Lance 4 weeks ago in iRidium Script • updated 4 weeks ago 0

Script helper incorrectly adds the word 'Drivers' instead of the word 'Server' when inserting the script helper commands if you are using the 'drivers' tab. It doesn't seem to work both ways and it must be 'Server'.

Seems like it wouldn't be a tough fix and would help newcomers to remove the 'drivers tab. I simply haven't found a reason for the drivers category but to cause me confusion.

SmartMike 1 month ago in iRidium Script • updated by Ekaterina (head of support) 1 month ago 1

День добрый, подскажите пожалуйста среди системных токенов нашел почти все датчики Ipad http://dev.iridiummobile.net/Tokens_API/ru кроме самого нужного мне - датчика освещенности, подскажите пожалуйста как можно реализовать механизм отключения подсветки панели в зависимости от наличия\остутствия освещения в помещении(используя встроенные механизмы Ipad) например анализируя изображение с камеры? И если это невозможно просьба пояснить по какой причине. Спасибо.

Waiting for user's reply
Martin Sundström 1 month ago in iRidium Script • updated by Dmitry - support (expert) 1 month ago 8

I am trying to read the event from a 4bit dimming feedback channel and cannot get anything to show in the log. I am using the following code to catch all events and write them to the log:

IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetDevice("KNX Router (KNXnet/IP)"), function(name, value)
IR.Log(name+":"+value) // output the tag name and its new value in the log


It works well for events from other types, KNX touch buttons, temperature from sensors etc. But when I send a 4bit dimming event from either a touch button or through ETS4 I get nothing. Should I use another type of event to catch that specific value or should IR.EVENT_TAG_CHANGE work?


Not a bug
AlexDr 2 months ago in iRidium Script • updated by Aleksandr Romanov (CTO) 2 months ago 6

Сделал тестовый проект. Почему то после поочередного запуска через скрипт больше одного звука функцией IR.PlaySound() при закрытии эмулятора возникает исключение.

В рабочем проекте такое исключение возникает если запустить из скрипта проигрывание звука сразу после запуска клиента (эмулятора).

Объясните почему в тестовом проекте не проигрывается звук по кнопке Sound 3, если перед ней нажать Sound 2?

Завтра отпишусь как ведет себя проект со звуками на iPad.

тестовый проект

Marco Tanis 2 months ago in iRidium Script • updated 2 months ago 9


I want to execute an command when one of my server tags changes, so i tried using IR.GetServer but that doesn't work i get a syntaxerror

here an example:

IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetServer(), function(name, value){
if(name == "test" && value == 0)
else if(name == "test" && value == 1)



function testoff()

IR.GetDevice("KNX").Set("address1", 0);

IR.GetDevice("KNX").Set("address1", 0);

function teston()

IR.GetDevice("KNX").Set("address1", 1);
IR.GetDevice("KNX").Set("address1", 1);

does anyone know whats wrong here, or maybe another solution?



Богдан Меленчук 2 months ago in iRidium Script • updated by Andrey S 2 months ago 1

Управляю камином planika,

function pl_start()



При работе с эмулятора все супер работает, и при загрузке на панель перестает работать

Oleg Bubnov 2 months ago in iRidium Script • updated by Aleksandr Romanov (CTO) 2 months ago 4

Создаю список методом IR.ITEM_LISTBOX, заполняю его кнопками - выключателями релюх на AMX. Мне нужно при создании списка проверить какие реле включены и включить кнопки в списке. Как это правильно сделать? Я пытался изменять свойство Value у создаваемых кнопок (по аналогии с Text и Image), но генерируется ошибка. А как создать и поставить ссылку на кнопку в глобальный слушатель, не могу понять. Помогите, пожалуйста. Вот мой код:

var testPopup = "Баня";
var Switches = ["Вход","Душ","Пещера Потолок","Купель Патио","Купель Щит и Люстра","Батареи и Потолок","Пещера Люстра"];

IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
IR.Log("Global Listener Activated: " + name + "\tValue: " + value);
//Как получить сюда ссылку на кнопку из списка и присвоить ее полю Value значение Value слушателя?

// оформляем подписку на изменения каналов драйвера
for (var i = 0; i < Switches.length; i++) {
NewPopup (testPopup);

// Создаем список и заполняем его
test_list = IR.GetItem(testPopup).GetItem("Выключатели");
test_list.Template = "Шаблон Списка Выключателей";
for (var i = 0; i < Switches.length; i++) {
// или как здесь получить и указать значение GetFeedback из канала, соответствующего кнопке
test_list.CreateItem(i, 1,{Text: Switches[i]});


//При изменении выключателя, включаем или выключаем кнопку в AMX
IR.AddListener(IR.EVENT_LIST_ITEM_CHANGE, test_list, function(Item, Subitem, TypeEvent, object){
var tempnum = TypeEvent;
if(tempnum==12) {
object.Value = !amx.GetFeedback(Switches[Item]);