Enter forum description here ...
0
Not a bug

1. Есть HTTP драйвер, условно имеющий название web_server

2. Адрес сервера ссылается на 127.0.0.1, т.е. на тот же адрес, на котором установлен сервер Iridium, порт 80

3. Сервер RPI

4. На сервере имеем слушатель IR.AddListener(IR.EVENT_RECEIVE_TEXT, web_server, function(text) {

IR.Log("text");

}


Этот слушатель не всегда обрабатывает входящий трафик, который идет от web_server, т.е. 1 раз сработает из 5.


Может из-за того, что сервер меняет адреса?

В фитбеках сервера, если смотреть через web-панель, тег HDL.HostIP постоянно меняет адреса (192.168.10.46; 192.168.10.251; 192.168.10.252).


0
Answered

Коллеги, помогите шаблоном скрипта для переключения с локального на внешнее подключение к системе HDL-Bus Pro, но только через старый добрый шлюз Iridium Gate (TCP to UDP Gate). Нужно просто забивать параметры это драйвера переключением двух клавиш (когда дома или за его пределами). Я в скриптах плохо разбираюсь, а на сдачу объекта остался один день.

0
Completed
You can launch the control of Sonos player, selecting it via the name when you pass to control, with the help of the changed script file (change it in JS module Sonos): Sonos_Control.js


Use the described method to call the player via the name of the group where it's located

Public_SelectGroupByName(name);
If the group isn't found? the other one won't be chosen.
The code of the method:
function SelectGroupByName(name) {     // если групп нет выходим 
    if(groups.length == 0) { 
        debug('groups.length == 0'); return; 
    } 
    // ищем id группы по имени 
    var index; 
    for (var i = 0; i < groups.length; i++) { 
        if(groups[i].name == name) { 
            index = i;
        break; 
        } 
    } 
    // если группу не найдем - выходим 
    if(index == undefined){ return; } 
    // подсветка 
    HighLightSelectedZone(index); 
    // отображение
    group = groups[index]; 
    // повторная подписка для получения актуального состояния плейера
    UnSubscribe(group.parent); 
    Subscribe(group.parent); 
    ToggleOpenVolumeGroup(group.members.length > 0); 
}


0
Under review
Добрый день!
Как возможно проверить наличие в сети устройства по HTTP или TCP?
Т.е., если устройство онлайн, то изменяется его статус, а если обращение к устройству происходит периодически (не поддерживается постоянная связь), например, по HTTP и в какой-то момент подключения нет. Как поймать этот момент и сформировать команду "Устройство недоступно"?
0
Answered
В проекте при нажатии на кнопку Feedback собираются данные с Onkyo, кнопка Test присваивает собранные данные другой переменной. После присвоения переменной любой feedback с Onkyo меняет переменную array, хотя это должно быть только по нажатию кнопки test. Проект во вложении. Это глюк iridiuma или я где-то ошибся?
TESTONKYO.irpz
0
Hi everybody,
I want to create a new driver for my enigma2 STB. I found the http commands and it sends well the command to STB in Iridium. But in the documentation, ie for the volume, there is a xml result.
How can I use it in a feedback item? Secondly, which device should i use to, TCP or HTTP ?
Thanks in advance for your precious help.


I put the description below :

VolumeRequests: Get current Volume: http://dreambox/web/vol oder http://dreambox/web/vol?set=state

    Result:
    True
    state
    5
    False

    Parameter:
    result = True if command successful, False otherwise resulttext = textbased description of what succeeded/went wrong current = current Volume - Value between 0 and 100 ismuted = True if muted, False if not
and the other chapter :

    Table of Contents
    Basic return Structure
    {e2:convert type=VolumeInfo}Result{/e2:convert}
    {e2:convert type=VolumeInfo}ResultText{/e2:convert}
    {e2:convert type=VolumeInfo}Volume{/e2:convert}
    {e2:convert type=VolumeInfo}IsMuted{/e2:convert}

0
Answered
Добрый день!


Пытаюсь работать с xml в iRidium script и не могу разобраться что к чему.
Мне нужно написать IP драйвер для ресиверов Yamaha. YNCA, который работает без xml мне не подходит, т.к. в нем не работают кнопки вызова сцен, которые мне критичны.


Пытаюсь сделать драйвер через протокол http+xml.
Необходимо создать xml объект, преобразовать в строку и отправить методом post. Объект вида:


Scene 3


Как это сделать, если это возможно с помощью iRidium (кроме конкатенации строк)?


Естественно все после cmd=PUT меняется в зависимости от зоны и команды. Протокол предполагает большое количество свойств и просто складывать строки не прокатит, да и с xml в iRidium хотелось бы разобраться.


Пытаюсь создать объект как рекомендуют для JS:

var xml =
value
;
IR.Log(xml.tag); // Выдать содержимое тега tag, то есть "value"


Получаю в логе:
Script exception: SyntaxError: C:\Users\illia\Documents\iRidium mobile 2\Settings\iRidium\Main\Yamaha_RXseries.js:264: expected null, true, false, number, string, or regex but got '<'


Пытаюсь с другой стороны:

var xml = new XML("value");
IR.Log(xml.tag); // Выдать содержимое тега tag, то есть "value"
IR.Log( xml.toString() );
IR.Log( xml.ToString() );


Получаю:



undefined
null
Script exception: TypeError: C:\Users\illia\Documents\iRidium mobile 2\Settings\iRidium\Main\Yamaha_RXseries.js:267: Function is not defined


Пытаюсь разобраться с использованием уже готового xml объекта в Weather модуле:

var xml = new XML(Globalxml);
IR.Log( "received: " + xml );
IR.Log( "Received: " + xml.toString() );


Получаю:

received: null
Received: null


И это при том, что потом производится работа с этим xml и вытягивание из него данных.
Все свойства объекта при обращении также дают null - тоже проверял.


Где можно почитать про функции new XML() и xml.toString(), реализованные в iRidium?


Спасибо.
0

Как правильно передать в HTTP запросе переменную в JSON формате?
Вот код:
var params= computedH;
var request = {
"hue" : params}
var Object = JSON.Parse (request);
device.Send(['PUT,/api\r\n\HTTP/1.1,Object,']);
В этом случае передается текст.
И еще вопрос: При передаче запроса вида:
device.Send(['PUT,/api/\r\n\HTTP/1.1,{"hue":16000, "sat":255},']);
выдаётся ошибка body contains invalid json.
0
Answered
Добрый день!


Пишу в токен значение объекта, преобразовывая в строку. После записи проверяю чтение - переменная из токена считывается правильная.
Перегружаю приложение - из токена приходит undefined.
Только что проверил еще раз - уже читает не undefined, а старое значение.


Код и лог ниже. Где я не прав?
Спасибо.



//сохраняем через JSON формат (иридий не поддерживает сохранение массива объектов
save : function() {
IR.SetVariable("Global.Weather_current", this.current);

var citiesStr = [];

for( var i = 0; i < this.cities.length; ++i )
citiesStr.push( JSON.Stringify(this.cities) );
citiesStr = citiesStr.join(";");

IR.Log("Saving " + citiesStr);
IR.SetVariable("Global.Weather_cities", citiesStr);
IR.Log("Saved " + IR.GetVariable("Global.Weather_cities"));
},


load : function() {
var citiesStr = IR.GetVariable("Global.Weather_cities");
var current = IR.GetVariable("Global.Weather_current");

IR.Log("Loading " + citiesStr + " length = " + citiesStr.length);
if (!citiesStr) return;

var cities = [];
citiesStr = citiesStr.split(";");
for (var i = 0; i < citiesStr.length; ++i)
cities.push( JSON.Parse(citiesStr) );

this.cities = cities;
this.current = (current) ? current : 0;

},


Log записи



[00:00:49.749] Saving {"name":"London", "WOEID":44418};{"name":"Kharkiv", "WOEID":922137};{"name":"Kyiv", "WOEID":"924938"}
[00:00:49.764] Saved {"name":"London", "WOEID":44418};{"name":"Kharkiv", "WOEID":922137};{"name":"Kyiv", "WOEID":"924938"}




Log чтения после записи
[00:00:01.841] Loading {"name":"London", "WOEID":44418};{"name":"Kharkiv", "WOEID":922137} length = 67





0
Answered
Добрый день. Можно ли из Иридиума отправить емайл при вызове какого-то события? Например сработал датчик протечки и человеку приходит письмо.