Add your idea or search for answers in existing topics. The most popular ideas will be implemented faster!
+7
Voting
Эмиль Боев 2 years ago in iRidium Script • updated by Oksana (expert) 1 year ago 1
Hi, everybody!
Please, implement typed arrays (TA): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays
We really need it, cause TA dramatically increase the efficiency of binary data processing in the JavaScript engine.
+5
Voting
r riksma 2 years ago in iRidium Script / AV and Driver scripts • updated by Oksana (expert) 1 year ago 5
It would be nice if I could show a line number when I throw an error in my own code.

for example, if I run this piece of code:

  try {
    if (typeof currentStyle[options.name] == 'undefined') {throw new Error("Unknown style name: " + options.name);}
    }
    catch (err) {
        throw new Error(err.lineNumber + " " + err.message);
    }


the following line is logged:

02-12-2015    13:28:03    Kernel.Info    192.168.253.102    [12-02-2015 13:28:04.000]  WARNING  Script exception: Error: undefined Unknown style name: menuLogo


When an Error is logged from iridium itself it looks like this:

02-12-2015    13:31:42    Kernel.Info    192.168.253.102    [12-02-2015 13:31:43.000]  WARNING  Script exception: ReferenceError: /var/mobile/Containers/Data/Application/0CE95966-BFE3-4352-B1E9-F38E3EB8963C/Library/Caches/iRidiumMobile/EveryDevice/ViewLibrary.js:185: erraaa


How can I get the file and line number as well?
It would be great if you could always show this information in the log if the Error is not caught.
+5
Voting
rocfusion 2 years ago in iRidium Script • updated by Oksana (expert) 1 year ago 2
Hi,

It would be useful when we could retrieve a list of item names for a page or popup. Knowing the names of the items contained in a popup would open up numerous possibilities of generating more generic control of the UI. This could be implemented as property of IR.GetPopup, for example;
var mypopupitems = IR.GetPopup("Popup 1").GetItemNames;

mypopupitems would be assigned an array of strings ( the names of the items ).

Please vote if you would like to see this implemented into the script....

Now as a workaround until we have a native solution, I have created the following.... which solves this for now. I hope this helps.

Array.prototype.GetItemNames= function(pageorpopup){
this.length=0;
for(var y=0;y<pageorpopup.ItemsCount;y++){
this.push(pageorpopup.GetItem(y).Name);
}
}

IR.AddListener(IR.EVENT_START, 0, function() {

var myPopupItems= []; // create an empty array
myPopupItems.GetItemNames(IR.GetPopup("Popup 1"));
// retrieve an array of item names that are in Popup 1
IR.Log("first popup item names "+myPopupItems);
myPopupItems.GetItemNames(IR.GetPopup("Popup 2"));
// retrieve an array of item names that are in Popup 2
IR.Log("second popup item names "+myPopupItems);
// no need to empty the array the method will do this automatically
});



+4
Under review
Dmitry Shulgin 1 year ago in iRidium Script / AV and Driver scripts • updated by Vyacheslav Belov 9 months ago 4

At the moment the driver is fully working for one TV. To continue working with it we need feedback from installers about its functionality.

You can participate only if you have a possibility to test this driver with a real working TV. If not you can vote for it to tell us if it is really needed.

This driver/interface fully copies the original GUI of B&O. It is made for easy inclusion of the driver into the comming iRidium lite. The interface is in Russian at the moment.

To take part in this test, send the following data at evg@elspace.spb.ru:

- your iPad HWID

- serial number of your BeoVision Avant

- your E-mail address

As an answer you will get a file with a trial project (iRidium and the driver) fully working for 1 month.

Please, post here all support tasks and feedback.

+4
Completed
Евгений Лешкив 1 year ago in iRidium Script / AV and Driver scripts • updated by Nikolay Rusanov 1 year ago 2

This theme is based on iRidium DDK. Below is the example of making driver for almost any device that has a web interface.

To make a driver you will need the Device that is connected to your LAN and has static IP address and LAN sniffer on your PC (in my case it is WireShark).


1. Getting request for feedbacks of the Device

- start your browser

- start your sniffer

- go to the web page of your device (in my case 192.168.1.11) or update it

- in sniffer window you should now find request from your PC to the Device

This URI is needed for us request for getting feedback of device (feedback is all the data that is on selected page.

method: GET

URI: /MainZone/index.html


2. Getting feedback

in JS if you make a request:

var DEVICE = IR.GetDevice("Busch iNet Radio");

DEVICE.Send(['GET,/en/index.shtml']);

as the answer you will get full HTTP code of the page you were requesting.

JS getting feedback:

IR.AddListener(IR.EVENT_RECEIVE_TEXT, DEVICE, function(inText)

{IR.Log(inText);}

LOG:

<html>

<head>

<title>Internet-Radio</title>

<link href="/style/style.css" type="text/css"/>

</head>

<body >

.........

<legend>Volume</legend>

<p>

<input type="text" name="vo" size=5 maxlength=5 value="2" />  

..........

<legend>Currently playing</legend>

<p>

Station 5:

<p>

<input type="text" name="--" readonly size=70 maxlength=64 value="DI.fm | Vocal chillout" />

..........


3. Parsing feedback text

To get needed data you have to slice this text.

For volume it will be:

var volume3 = inText.slice(inText.indexOf("Volume", 0)+60,inText.indexOf("Volume", 0)+120);

//getting part of the text for volume
var volume2 = volume3.slice(volume3.indexOf("value=", 0)+7,volume3.indexOf("nbsp", 0)-6);

//getting value
var volume = parseFloat(volume2);

//making float from text

IR.SetVariable("Drivers."+DeviceName+".iNet_Volume",volume);

//writing to variable


The same for current station:

var station0_2 = inText.slice(inText.indexOf("Currently playing", 0)+30,inText.indexOf("Currently playing", 0)+250);
var station0 = station0_2.slice(station0_2.indexOf("value=", 0)+7,station0_2.indexOf("Add to TuneIn Presets", 0)-71);
IR.SetVariable("Drivers."+DeviceName+".iNet_Current station name",station0);


This should be done for every data you need.


4. How to get HTTP command from the page

The same way that described in #1 but instead of updating page you have to press needed button.

In my case it is:

method: GET

URI: /en/index.cgi?p1=+Play+

JS:

DEVICE.Send(['GET,/en/index.cgi?p1=+Play+']);

The only thing to do is to ling this with buttons.


5. Cicling request for feedback

Data should periodically be updated. To do this:

function Autorequest()
{
DEVICE.Send(['GET,/en/index.shtml']);
}

IR.AddListener(IR.EVENT_ITEM_SHOW,IR.GetItem(Page),function() //getting feedback when page is shown
{

var ID = IR.SetInterval(5000, Autorequest); //every 5s
});

IR.AddListener(IR.EVENT_ITEM_HIDE,IR.GetItem(Page),function()
{
IR.ClearInterval(ID); //Need to be cleared. If not it will bee starting new interval request which will make your connection down
});


In attach example project and page HTTP code

This could be done for every device with web interface: UPS, Radio, etc.

Hope this will be helpfull for you

:)

+3
Voting
rocfusion 2 years ago in iRidium Script • updated by Oksana (expert) 1 year ago 1
Hi,

It would be useful to have a search and replace feature in the script editor.  Exactly like there is in Notepad from windows.  it would save time.


Thanks,


Roger
GUI Editor/Script Editor & Helper
+3
Waiting for user's reply
rocfusion 2 years ago in iRidium Script / Interface scripts • updated by Oksana (expert) 2 years ago 2
Hi,

Please take a look at the attached project.  Press on the delete first item button and then the press add first item.

I would expect that the List.CreateItem(1, 1, {Text: "TV Bedroom 1"})  would add an new item at the defined point in the list.  This is not the case it simply added to the end of the list.


Thanks,


Roger
List.irpz
List
+3
Waiting for user's reply
r riksma 2 years ago in iRidium Script / Interface scripts • updated 2 years ago 9
Please see attached project. (note: camera URI is replaced with a dummy and should of course be changed before testing)
creating a Dynamic Image in the Project Gallery and assigning it to an item by script does not work.
Dragging and dropping the Dynamic Image on an existing item does work.
Referencing the URI directly also works.

While this is not a very big problem, this was kind of unexpected and caused me to think there was something wrong with the URI i was using.
Please fix if possible or maybe update documentation with this info?
cameras.irpz
Client
Answer
Oksana (expert) 2 years ago
Dear Riksma,

At the moment you can assign only MJPG stream using the script (but not H.264).
We know about this problem, it will be fixed in the next versions.

Sincerely yours,

Olga Ermakova
iRidium mobile Team
+2
Completed
Shaun Moloney 2 years ago in iRidium Script / AV and Driver scripts • updated by niky94547 1 month ago 18
Would be extremely grateful if any fellow iRidium user could assist with information on a Vera driver to allow control via iRidium. Doesn't seem to be any discussion at all regarding this.

some help please...!! 😉😉


Requests for Drivers
+2
Voting
Paolo Scarpetta 3 years ago in iRidium Script / AV and Driver scripts • updated by Oksana (expert) 1 year ago 2
Can I integrate an App like Spotify with the Iridium, What I really want to make is that my client can select the music he want to hear and send it to his TV through an apple tv. This can be done?
Requests for Drivers