Your comments

Hi, try the folowing solution:

Open "Sonos Control" script, find a line with the code (it can be line 528) and comment this line.
IR.AddListener(IR.EVENT_DEVICE_FOUND, 0, FoundDevice);
Hi Benno!

Thanks, i2 Control have old version of Java Script Simple Engine. This bug in SEE. We add new Date object in 3.0 version.
Hi, Ismail Alizadeh!
In the current version app you can not get information from files. You can get information from TCP / UDP / HTTP data stream by AV & Custom System driver: http://wiki2.iridiummobile.net/IRidium_DDK
Hi, Roger!
ECMA 3 is not support Bracket Notation for get a character of the string. Please use the charAt method.

var y = x.charAt(2);
IR.Log(y);

Добрый день, Ramil Vafin!

Это связано с отправкой данных в виде строки, требуется вместо этого сформировать массив байт значений.

var hex = IEEE754_DecToHEX(this.Value); 
// Конвертируем в массив байтов
var hexArray = [];
hexArray[0] = parseInt('0x' + hex.charAt(0) + hex.charAt(1), 16);
hexArray[1] = parseInt('0x' + hex.charAt(2) + hex.charAt(3), 16);
hexArray[2] = parseInt('0x' + hex.charAt(4) + hex.charAt(5), 16);
hexArray[3] = parseInt('0x' + hex.charAt(6) + hex.charAt(7), 16);

// Выводим в лог
IR.Log(hex);
IR.Log(hexArray);

var Packet = "/value"; // начало пакета
var end = "\r\n"; // конец пакета

hexArray.unshift(0x00); // Два символа нуля после начала пакета
hexArray.unshift(0x00);

hexArray.unshift(Packet); // Добавляем начало пакета
hexArray.push(end); // Добавляем конец пакета

// отправляем
IR.GetDevice("AV & Custom Systems (TCP)").Send(hexArray);




Добрый день, Ramil Vafin!

Судя из описания, похоже что интерпретация значения в число с плавающей точкой происходит на устройстве, поэтому приложению iRidium без разницы, как его будут на самом деле использовать. Задача сводится к тому, что бы отослать HEX символы из указанного диапазона.
1. Определим диапазон значений HEX на выходе от 00 00 00 00 до 3F 80 00 00, тоже самое в DEC от 0 до 1065353216.
2. Создадим элемент типа Level в GUI Editor с Range Type = Interger, Min = 0; Max = 1065353216;
3. Напишем метод конвертации числа из Dec to Hex
Так как отправляется 16-ая строка фиксированной длинны, важно учесть, что при стандартной конвертации числа, длинна не учитывается и это надо компенсировать.
// конвертация значения
function IEEE754_DecToHEX (dec) {      
   var hex = dec.toString(16); 
   var zeroCount = 7; 
   if (dec > 15) zeroCount--;                                   
   if (dec > 255) zeroCount--;              
   if (dec > 4095) zeroCount--;    
   if (dec > 65535) zeroCount--;    
   if (dec > 1048575) zeroCount--;    
   if (dec > 16777215) zeroCount--;    
   if (dec > 268435455) zeroCount--; 
   if (dec > 4294967295) zeroCount--;      
   
   hex = addZero(zeroCount, hex);
   return hex; 
}


// компенсация недостающих нулей
function addZero(count, string) {
   var stringZero = "";
   for (var i = 0; i < count; i++) {
      stringZero += "0";      
   }
   return stringZero + string; 
}
4. Обратимся к свойству Value уровня через скрипт в событии Release, выполним конвертацию и напечатаем результат в консоль отладки.

// Получение значения и вывод
function getValue (){   
   var hex = IEEE754_DecToHEX(this.Value);
   IR.Log(hex);   
}

// Получение доступа к элементу и подписка
var Item = IR.GetItem("Page 1").GetItem("Item 1");
Item.Min = 0;
Item.Max = 1065353216
IR.AddListener(IR.EVENT_ITEM_RELEASE, Item, getValue, Item);

Изучите следующий пример проекта.

Hi, Andrey!

Current version of the App can not give ip adress of an answered udp device to the script.