Welcome!

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

+1
Declined
geurtsd 10 months ago in iRidium Script • updated 6 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.


cheers

Answer

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, 15.4.4.14
// 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;
      }
      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


+1
Voting
Dmitry Ryzhkov 1 year ago in iRidium Script • updated 4 months ago 5
Hello.
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.

0
SmartMike yesterday at 8:31 a.m. in iRidium Script 0

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

0
Waiting for user's reply
Martin Sundström 2 weeks ago in iRidium Script • updated by Dmitry - support (expert) yesterday at 2:48 a.m. 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?


Thanks!



0
Not a bug
AlexDr 3 weeks ago in iRidium Script • updated by Aleksandr Romanov (CTO) 3 weeks ago 6

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


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


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


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


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

0
Answered
Marco Tanis 4 weeks ago in iRidium Script • updated 3 weeks ago 9

Hello,


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)
{
testoff();
}
else if(name == "test" && value == 1)

{
teston();
}

});

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?


Thanks,

Marco

0
Богдан Меленчук 1 month ago in iRidium Script • updated by Andrey S 4 weeks ago 1

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

function pl_start()

{
IR.GetDevice("planika").Send(['POST,,__SL_P_UBT=ButtonStart']);

}

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

0
Answered
Oleg Bubnov 1 month ago in iRidium Script • updated by Aleksandr Romanov (CTO) 1 month 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++) {
IR.SubscribeTagChange("Drivers.amx."+Switches[i]);
};
IR.AddListener(IR.EVENT_START,0,function()
{
MakePanelID();
InitController();
NewPopup (testPopup);
IR.ShowPopup(testPopup)

// Создаем список и заполняем его
IR.GetItem(testPopup).CreateItem(IR.ITEM_LISTBOX,"Выключатели",0,0,750,1344);
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) {
amx.Set(Switches[Item],1);
amx.Set(Switches[Item],0);
Log(amx.GetFeedback(Switches[Item]));
object.Value = !amx.GetFeedback(Switches[Item]);

};
});
});

0
Answered
Oleg Bubnov 1 month ago in iRidium Script • updated 1 month ago 2

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

Можно ли обратиться в скрипте к загруженной в глобальную галерею картинке? Глобальная галерея позволяет удобно загружать и хранить картинки, но, как я понимаю, они не загружаются в проект а попадают в папку Studio/gallery.

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

И такой дикий слегка вопрос - можно ли редактировать картинки, которые уже в архиве проекта? То есть прям дергать из архива в ФШ и потом обратно паковать по месту.

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