Add your idea or search for answers in existing topics. The most popular ideas will be implemented faster!
We have moved our support service to a new technical support system. Since 17.01.2022, we have disabled the ability to create appeals through the userecho personal account. Now all requests are processed via mail to support@iridi.com .
Thank you for your understanding and have a nice day.
JavaScript typed array
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.
throwing custom errors with line numbers
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.
get an array of the item names that are on a popup or page
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
});
Spotify for Sonos
Driver for Bang&Olufsen BeoVision Avant TV
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.
Practical experience of making HTTP driver
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
:)
Search and replace in script editor
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
Lists.CreateItem
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
cannot select Dynamic Images from the project gallery
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
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
Vera 3 Control Driver
some help please...!! 😉😉
Customer support service by UserEcho