BAOS Error: No item found

If you see this messages in iRidium log:

[00:00:03.011]   CBAOS2xTCPDevice(1): Error: No item found 100
[00:00:04.540]   CBAOS2xTCPDevice(1): Error: No item found 100
[00:00:06.068]   CBAOS2xTCPDevice(1): Error: No item found 100
This message is not an error, this system message informs you about addresses which was added in your project but wasn't initialized on the BAOS side by some reasons. You can just ignore it.

KNX Time and Date

It is simple to read Date and Time from KNX bus, but you have to use a special script to write a new value to the bus. Please take a look at the attached project.

KNX-DateTime.irpz

Delay on starting iridium application for KNX initialization

"I created a Iridium projekt with KNXip and Modbus TCP connections to a Wago-Controller 750-849 (KNXip) and a 750-880 Controller (Modbus TCP). Everthing works fine.

The project contains about 250 KNX feedbacks. Evertime the application on iPad4/iPhone4 is started, iridium starts the initialization of the feedbacks. This takes about 20 sec. (checked with group adress monitor in ETS).
In this period commands are difficult to send/are not sended.

Is there a possibility to get an information (e.g. token) when the iridium application starts, to trigger a popup ?
It would be helpful to show the information "initialization running, please wait" to the user and simultaniously block the other pages/popups, until initialization has finished.


The easiest way to setup an initialize page is  add a popup to your project that covers the entire screen.  Now add whatever text graphic that will inform the user that they have to wait.  

In the object properties of the popup there is a property called Lifetime,  its measured is milliseconds.  Put your wait time in there.

Now in the properties of the project file, add this new popup to the list of popups that start.
That's it you should have a wait page showing at the start of the project.
Q:
thanks for your proposal but the popup with lifetime limitation appears only if the iridium project is loaded by iridium transfer or if the app on the apple device is really stopped and completely new started. If i just push the Exit-Button on the apple device and afterwards tab the iridium app for starting iridium mobile, the application shows the last page before exit without showing the "information" popup. However the initialization starts every time. Any idea ?
A:
It can be done using a iRidium script.   by attaching a listener to the IR.EVENT_ONLINE event the function in the listener would simply show the wait popup.

http://wiki2.iridiummobile.net/Drivers_API#EVENT_ONLINE

Schedules for KNX

You can use this Project.

calendar__2_.irpz

BAOS Error: No connection with the bus

"No connection with the bus" means that the BAOS lost the connection with KNX bus. BAOS sends this error it the KNX bus is not connected physically.

send value's of 1 byte to a modbus device

In the editor you can see word, dword and float values, but in some apps like a CoDeSys it is possible to configure a smaller variables like 1 byte.

In the Modbus table of PLC with CoDeSys and any other Modbus-compatible PLC all the data stored in the universal table. This table includes bytes, and when you need to get a 16-bit, you just get 2 slots of this table. So, if you have a 16-bit variable in iRidium and need to read it, you just get 2 bytes and parse it to 1 byte + 1 byte by the next way:

CoDeSys:     | FF | FF |  - two separated registers (addresses)
iRidium got: | FF FF | - only one register (address).

iRidium automaticly converting this data from HEX to DEC, so we get | 255 | 255 |
We have to parse this data back to HEX, divide the low and high byte and convert it back to DEC.

Example:

IR.AddListener(IR.EVENT_TAG_CHANGE,IR.GetDevice("Modbus TCP"),function(item,value) // listener of tag changes for ModBus TCP 
{   
	if (item == "Feedback 1") //set the name of register which should be parsed
		{ 
		// It was DEC value made of 2 bytes in the string format
		var dec2byte = "27542"; 
		// convert it to number, and then in string of 16-bit 
		var hex2byte = parseInt(dec2byte).toString(16); 
		// get the first byte from the string 
		var hexfirst = hex2byte.charAt(0) + hex2byte.charAt(1); 
		// get the second byte drom the string
		var hexsecond = hex2byte.charAt(2) + hex2byte.charAt(3); 
		// get the DEC number from the HEX bytes in string  
		decfirst = parseInt(hexfirst, 16); decsecond = parseInt(hexsecond, 16);  
		IR.Log(decfirst); // first byte
		IR.Log(decsecond); // second byte
});



How to disconnect or reconnect to another Modbus controller

http://wiki2.iridiummobile.net/Multi-design. There you can find the instructions on how to upload several projects on 1 control device. But you can also use the other way: just combine control of several systems in one project. iRidium allows you to add different drivers for connection with different equipment in 1 project and you can display these drivers on different pages of the project. If it is necessary to deactivate some unused systems, you can do it using the SetParameters function (please see the previous e-mail from us). 

You do not need a Device Pro license for the SetParameters function, just a Device license will be enough. You will need a Device Pro license ONLY if you plan to use ready script modules with feedback (Sonos, XBMC, ....)

If you select the Multi-design function then you will need a separate license for each project. If you choose the other option - several drivers in one project - then you can use one license (a standard Device: if you use just one type of equipment or a Full license: if you use different types).

If you need to change IP without closing the project, then it can be done only using scripts. It is easily done - you will have just standard buttons an you can even make an input field (read more).

Modbus Slave, Server mode

This feature implemented. You can use driver "Modbus TCP Server" to make Master-Slave communication between iRidium Clients.

@ModbusServer.irpz
@ModbusClient.irpz

Separation of Particular Bits in Holding Register

Holding or Input registers received from the controller can be separated into particular bits with the help of the following script:

IR.AddListener(IR.EVENT_TAG_CHANGE,IR.GetDevice("Modbus TCP"),function(name,value)
{
   switch (name) {
      case "Address 1": 
         var NewValue = parseInt(value.toString());
         var bit1 = (NewValue >> 0) & 0x1;
         var bit2 = (NewValue >> 1) & 0x1;
      break;
      case "Address 2":
         var NewValue = parseInt(value.toString());
         var bit2 = (NewValue >> 1) & 0x1;
         var bit6 = (NewValue >> 7) & 0x1;       
      break;
   }
});
Read more about Script API:
http://wiki2.iridiummobile.net/index.php/IRidium_Script_API (EN)

Ready samples:
separate bits - read.irpz
separate bits - rw.irpz

Modbus Data Scaling

How to scale incoming values, for or example:
Value 236 degrees, should be shown on screen as 23,6 degrees.
So de value has to be divided by 10, or a function that can shift the decimal point to the left
 
You can do it with help of Script in GUI Editor
http://wiki2.iridiummobile.ru/?title=IRidium_Driver_SDK
http://wiki2.iridiummobile.ru/?title=Drivers_API

Create a new script, initializes devices and make a function for division. The function for division is:

IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetDevice("Modbus TCP"), function(name,value){   
   if(name == "nameOFchannel") {
        IR.GetItem("Page 1").GetItem("Item 1").Text = (value*0.1).toFixed(1).toString();    
   }
});

All the sample and script is in the attachment (it will work with Modbus controller or simulation tool)
 
MathExample.irpz

Bticino myhome and iridium

documentation for Bticino is not available yet.

We have example project on wiki
It depends what you are trying to control and the UI item type (button, level, etc) will determine whether you send a token or number.
So there are 3 things you need to look at.
In the item properties general tab ( item type, button etc and maybe values (min\max\trigger, etc.)
The programming tab, shows the link between the UI and bticino device and when the link will be activated, so when you press\release etc  the ui item.
Then lastly in the right side, the project device panel. the commands are what is sent to the device and feedbacks is what is received from the device.
That's a quick, quick summary....;
Maybe take a look at one of the other protocols where there is more documentation, like KNX. That will give you a better idea of how to configure iRidium.

BticinoNewEditorTest.irp

Lutron: Grafic Eye, HomeWorks and RadioRa

Lutron has three protocols: Grafic Eye, HomeWorks and RadioRa.

We have developed the Grafic Eye driver. We made it on the c++ and it is located in GUI Editor in the main database (iRidium Base(2.0)).

We did not do drivers for HomeWorks and RadioRa because we do not have any information about them and we do not have devices controlled by HomeWorks and RadioRa . If you want to help us, you can develop them yourself on javascript or you can give us access to the devices via the Internet and we will develop the drivers.

Thank you for your help!

SIP integration with Intercom and domophons

Beginning with V2.1 iRidium supports the SIP protocol for setting up voice communication between iRidium panels, other SIP-clients, other iRidium panels.
iRidium panels work in the SIP-client mode. In order to have connection with Intercom you need to have the set up SIP server. You need to indicate the connection properties in the settings of iRidium SIP-client. iRidium provides only the client part, the server part is selected to the discretion of the integrator. The SIP driver for iRidium V2.1 can be downloaded for free from the iRidium mobile web site.

Look at the information on our wiki

Work of iRidium SIP on multiple objects

 You can use it for free in projects with any types of licenses.
For SIP we provide only the client part, the server part is selected by you.
You can use free 3cx or Asterix and connect all your objects via one SIP server located on any of them.
The instruction about setting up the SIP client in iRidium available. Please read.

Internal and External connection switching

You can not pre-set Local and External connection settings in the driver settings of your project, but with JS you can create a buttons which will reset a connection settings of the drivers in your Project Tree.
You can see an examples for your equipment here:

 

Channel properties, driver properties

At the moment you can not read or write:
  • properties of command, created via the GUI Editor in the project Tree. You can only call this command by the name.
You can writhe, but can not read:
  • connection settings of driver, created in the Project tree or via the script.

HTTP standard driver wait response

When you send the HTTP command via the script, for example
IR.GetDevice('DEVICE').Send(['GET,/remoteAction=11,']);
This command make some action. But if the controlled device doesn't confirm the command receiving by some response, driver will wait for this response about 5 seconds. In this 5 seconds you can not send any other commands to the device.
The driver is not waiting for 5 seconds becauseit is getting something back from the device.

The problem is that the HTTP driver waits for data anyway, the variant without data after the request was not provided.
You can use TCP driver instead of HTTP to send commands, it is not waiting for ~5 seconds.

Example of HTTP request
GET /wiki/HTTP HTTP/1.0\r\n
Host: ru.wikipedia.org\r\n
\r\n
Example for iRidium (TCP):
IR.GetDevice("DEVICE").Send(['GET /wiki/HTTP HTTP/1.0\r\nHost: ru.wikipedia.org\r\n\r\n']);

Adding multiple copies of the same custom device driver in a project

The most part of drivers has a system of "items", allows you to use the same script for a multiple physical devices. This items stored (in general) in the end of script file.

By default you have one item:
var mydevice = new Marantz_sr7007_main("Marantz SR7007_first_device");
If you need to make 1 or 2 more items:
var mydevice1 = new Marantz_sr7007_main("Marantz SR7007_first_device");
var mydevice2 = new Marantz_sr7007_main("Marantz SR7007_second_device");
var mydevice3 = new Marantz_sr7007_main("Marantz SR7007_third_device");