Your comments

В рамках драйвера Modbus мы можем в будущем дать возможность изменения типа транспорта, но в MQTT вам в любом случае придется настраивать все заново, т.к. у этих систем нет связующих компонентов.


Работать это может так же, как сейчас работает смена тип КНХ транспорта на сервере:



The other way: create 3 separated Cloud Objects and Invite a single user to all of them.

In each object you'll use 1 server.

But in this case you have to manage 3 separated Cloud objects with 3 licenses

You can create a single Cloud Object with the single license.

The number of Server tags must be calculated as

"Tags of iRidium Server 1"+"Tags of iRidium Server 2"+"Tags of iRidium Server 3" = total number of tags.

And you have to count the total number of needed Control panels to choose the tariff.


In iRidium Cloud you'll create an object (for example) 3 of GUI projects and 3 of Server projects. On control panel you can switch between this projects to see the status of each automation system (Object #1..3 on your scheme)

RPi can be used only to run iRidium Server, but not the i3 pro app.

If you want yo use it on RPi (as Server) you have to take RPI and 2 of tablets/phones as a Displays with i3 pro.


I mean with RPi you have to use 2 displays (i3 pro installed on 2 devices), and 1 Server (RPi).


In a few steps:

1. Istall *.deb file of iRidium Server on Raspberry

2. Install i3 pro on TWO tablets (some iOS, Win, Android devices with the screen)

3. Open the file Screen.irpz in Studio and set there an IP address of RPi

4. Open the file iRidium DEMO Client <Phone/Tablet>.irpz in Studio and set there an IP address of RPi

5. Upload Screen_server.sirpz to RPi with iRidium Server

6. Upload Screen.irpz to the first screen with i3 pro

7. Upload iRidium DEMO Client <Phone/Tablet>.irpz to the second screen with i3 pro

8. Click on buttons on the second screen to see the changes on the first screen


Это возможно, и даже запланировано, но передавать ссылку на объект будем не как параметр, а как контекст выполнения функции.

Для этого потребуются серьезные внутренние доработки приложения, поэтому сроки так же не сообщаем.

С глобальным слушателем - да, работать будет. Спасибо за пример!

Сейчас такого способа нет.

Планируем добавить слушатель, позволяющий определить, на какой элемент нажал пользователь (точку касания и дополнительные свойства). По срокам пока рано ориентировать.


Свойство This графического элемента позволяет сослаться на него, как на объект, но доступно для использования только на уровне драйвера AMX, это наследуемый функционал.
Свойства элемента, доступные из скрипта, можно увидеть здесь: http://dev.iridiummobile.net/GUI_API/en#Item


Выделенные вами свойства используются при работе с элементом List, для остальных элементов не актуальны. В будущем список будет актуализирован.

Такой скрипт перестанет работать по достижению 1024 элементов. Именно таково максимальное количество слушателей в проекте.

http_request_parse.irpz


//------ create HTTP device on Project start
IR.AddListener(IR.EVENT_START, 0, function()
{
   IR.CreateDevice(IR.DEVICE_CUSTOM_HTTP_TCP, "DIS-REC", "192.168.0.66", 80);        
});

//------ send command on Item Press
IR.AddListener(IR.EVENT_ITEM_PRESS, IR.GetPage("Page 1").GetItem("Item 9"),function()
{
   // command=StartRecording
   // answer: SUCCESS / FAILED
   IR.GetDevice("DIS-REC").SendEx({ 
         Type: "GET",                                                                    
         Url:  "/Monarch/syncconnect/sdk.aspx?command=StartRecording",
         Headers: {},       
         cbReceiveText:       function(text, code, headers)  
         {
            IR.GetPage("Page 1").GetItem("Item 1").Text = text;              
         },
   });
}); 

//------ send command on Popup Show
IR.AddListener(IR.EVENT_ITEM_SHOW, IR.GetPage("Popup 1"), function()
{ 
   // command=GetStatus
   // answer: RECORD: READY, STREAM: DISABLED, NAME:DIS-REC-1
   IR.GetDevice("DIS-REC").SendEx({ 
         Type: "GET",                                                                    
         Url:  "/Monarch/syncconnect/sdk.aspx?command=GetStatus",
         Headers: {},       
         cbReceiveText:       function(text, code, headers)  
         {
            var params = text.split(",");
            for (i = 0; i < params.length; i++)
            {
               var state = params[i].split(":");
               //IR.Log(params[i]);
               
               var param_name = state[0].replace(/\s/g,"");         
               switch(param_name)
               {
                  case "RECORD":
                     IR.GetPage("Page 1").GetItem("Item 2").Text =  state[1];
                  break;
                  case "STREAM":
                     IR.GetPage("Page 1").GetItem("Item 3").Text =  state[1];
                  break;
                  case "NAME":
                     IR.GetPage("Page 1").GetItem("Item 4").Text =  state[1];
                  break;
               }
            }
         }
   });
});

It is better to use the listener of page opening, like this:


IR.AddListener(IR.EVENT_START, 0, function()
{
   // cerate driver            
})

IR.AddListener(IR.EVENT_ITEM_SHOW, IR.GetPage("Page 1"), function()
{
   // send request of equipment state when open Page 1        
});

IR.AddListener(IR.EVENT_ITEM_SHOW, IR.GetPage("Page 2"), function()
{
   // send request of equipment state when open Page 2        
});