Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:mervis-ide:65-webpanel:webpanel-api [2017/06/21 11:00]
m.chlupac
en:mervis-ide:65-webpanel:webpanel-api [2019/05/21 10:13]
m.chlupac [Request]
Line 2: Line 2:
  
 Communication is based on HTTP protocol. Clients send HTTP POST request and get the response depending on the request. Each request must specify the credentials in case the credentials are specified for the project. Communication is based on HTTP protocol. Clients send HTTP POST request and get the response depending on the request. Each request must specify the credentials in case the credentials are specified for the project.
 +
 ===== Login ===== ===== Login =====
  
 ==== Request ==== ==== Request ====
  
-Data: +**URL:** ''http://[ip-address-of-the-plc]/login.cgi'' 
-''+ 
- ver : 1,//version +<code javascript>
- //optional - only for non-authenticated access +  ver : 1,//version 
- //credentials +  //optional - only for non-authenticated access 
- c: {u: karel, p: x+  //credentials 
-  +  c: {u: "karel", p: "x"}  
-}''+}</code> 
 ==== Response ==== ==== Response ====
  
-+<code javascript>
- ver : 1,//version +  ver : 1,//version 
- code: ok, //return code +  code: "ok", //return code 
- msg: “”, //error message +  msg: "", //error message 
-c : {u: karel, p:x} //must be used for further communication +  c : {u: "karel", p:"x"} //must be used for further communication 
-}+}</code>
  
 ===== Data request ===== ===== Data request =====
Line 27: Line 29:
 ==== Request ==== ==== Request ====
  
-Data: +**URL:** ''http://[ip-address-of-the-plc]/values.cgi'' 
-''+ 
- ver : 1,//version +<code javascript>
- //optional - only for non-authenticated access +  ver : 1,//version 
- //credentials +  //optional - only for non-authenticated access 
- c: {u: karel, p: x}, +  //credentials 
- //variable IDs +  c: {u: "karel", p: "x"}, 
-v: [ svc://defaultConnection/myVarId1+  //variable IDs 
-     svc://otherConnection/xxxYYYYDDD+  v: [ "svc://defaultConnection/myVarId1"
-}''+     "svc://otherConnection/xxxYYYYDDD"
 +}</code>
  
   * variable ID is unique string - in future, may be different for different platforms/protocol versions (uPLC - int?, SharkRT - string)   * variable ID is unique string - in future, may be different for different platforms/protocol versions (uPLC - int?, SharkRT - string)
  
-=== Variable specification for RT2 ===+=== Example === 
 + 
 +<code javascript>
 + "ver": 1, 
 + "c":
 +  "u": "Visitor", 
 +  "p": "b39576d3da8eb2b0e262645e84707cdc" 
 + }, 
 + "v": ["svc://DefaultConnection/9104[0,4]",  
 +       "svc://DefaultConnection/9105[0,4]",  
 +       "svc://DefaultConnection/9129[456,4]"
 +
 +</code> 
 + 
 + 
 +=== Variable specification for Mervis RT ===
  
   * svc - protocol   * svc - protocol
   * Connection - generally, clients can request data from more sources (more or less corresponds to a connection definition of PLC). For local data (data belonging to the PLC that executes the request) it may be defaultconnection.   * Connection - generally, clients can request data from more sources (more or less corresponds to a connection definition of PLC). For local data (data belonging to the PLC that executes the request) it may be defaultconnection.
   * Variable id: it has a form of commUID[offset, lenght]. CommUID can be retrieved from a .vlist file of the IDE 2 project and specifies a variable. Variables can be of a complex and large types. In this case a user can retrieve only a small part of the variable by using the offset and length.   * Variable id: it has a form of commUID[offset, lenght]. CommUID can be retrieved from a .vlist file of the IDE 2 project and specifies a variable. Variables can be of a complex and large types. In this case a user can retrieve only a small part of the variable by using the offset and length.
-  * Example: svc://defaultConnection/877* 0,2]+  * Example: <code>svc://defaultConnection/877* 0,2]</code>
     * Represents a variable with the commUID 8776. 2 bytes from the offset 0 are returned.     * Represents a variable with the commUID 8776. 2 bytes from the offset 0 are returned.
  
 the POST body can be: the POST body can be:
  
-  - JSON string (AngularJS default behaviour): +  - JSON string (AngularJS default behaviour): <code javascript>{"ver":1,"c":{"u":"karel","p":"x"},"v":["svc://defaultConnection/myVarId1","svc://otherConnection/xxxYYYYDDD"]}</code> 
-''{"ver":1,"c":{"u":"karel","p":"x"},"v":["svc://defaultConnection/myVarId1","svc://otherConnection/xxxYYYYDDD"]}'' +  - converted into POST parameters (jQuery default behaviour):<code>ver=1&c%5Bu%5D=karel&c%5Bp%5D=x&v%5B%5D=svc%3A%2F%2FdefaultConnection%2FmyVarId1&v%5B%5D=svc%3A%2F%2FotherConnection%2FxxxYYYYDDD</code>
-  - converted into POST parameters (jQuery default behaviour): +
-''ver=1&c%5Bu%5D=karel&c%5Bp%5D=x&v%5B%5D=svc%3A%2F%2FdefaultConnection%2FmyVarId1&v%5B%5D=svc%3A%2F%2FotherConnection%2FxxxYYYYDDD''+
  
-The best solution would be to support both versions. Easier is now the JSON string. 
  
 ==== Response ==== ==== Response ====
  
-''+<code javascript>
- ver : 1,//version + ver : 1,//version 
- code: ok, //return code + code: "ok", //return code 
- msg: “”, //error message+ msg: "", //error message
 v: [{ v: [{
-     i: svc://defaultConnection/myVarId1, //variable Id +     i: "svc://defaultConnection/myVarId1", //variable Id 
-     v: ACA1, //value - binary encoded +     v: "ACA1", //value - binary encoded 
-     q: G,//quality +     q: "G",//quality 
-      t: 654654321654 //timestamp UTC, milliseconds since 1970+     t: 654654321654 //timestamp UTC, milliseconds since 1970
      }      }
    ]    ]
-}''+}</code>
  
 === Encoding of values - version 1 === === Encoding of values - version 1 ===
  
-Ea  Unordered List Itemch value is transmitted as a big endian binary representation of the specified variable (and its offset and length).+  Each value is transmitted as a big endian binary representation of the specified variable (and its offset and length). 
 + 
 +=== Example === 
 + 
 +<code javascript>
 + "ver": 1.0, 
 + "code": "ok", 
 + "msg": "", 
 + "v": [{ 
 +   "i": "svc://DefaultConnection/9104[0,4]", 
 +   "v": "C376DC63", 
 +   "q" 
 +   : "good", 
 +   "t": 636940178310000000 
 +  }, { 
 +   "i": "svc://DefaultConnection/9105[0,4]", 
 +   "v": "C0400000", 
 +   "q": "good", 
 +   "t": 636940178310000000 
 +  }, { 
 +   "i": "svc://DefaultConnection/9129[456,4]", 
 +   "v": "C0400000", 
 +   "q": "good", 
 +   "t": 636940178310000000 
 +  } 
 + ] 
 +}</code> 
  
 ===== Command Request ===== ===== Command Request =====
Line 80: Line 122:
 ==== Request ==== ==== Request ====
  
 +**URL:** ''http://[ip-address-of-the-plc]/command.cgi''
  
-''{+<code javascript>{
  ver : 1,//version  ver : 1,//version
      //optional - only for non-authenticated access      //optional - only for non-authenticated access
  //credentials  //credentials
- c: {u: karel, p: x},+ c: {u: "karel", p: "x"},
 v: [{ v: [{
-     i: svc://defaultConnection/myVarId1, //variable Id+     i: "svc://defaultConnection/myVarId1", //variable Id
      //digital setter      //digital setter
-     time: 20.0, //digital setter has some time property... +     time: "20.0", //digital setter has some time property... 
-     state: 2, //state that should be applied +     state: "2", //state that should be applied 
-     defaultValue: 6, //some default value+     defaultValue: "6", //some default value
      //analogPlusMinusInit, TPG, ...      //analogPlusMinusInit, TPG, ...
      set: 5,      set: 5,
-     //set: <?cdata....?>” //TPG+     //set: "<?cdata....?>//TPG
      //login - pin      //login - pin
-     login: 1234+     login: "1234"
      }      }
    ]    ]
-}''+}</code>
  
   * Warning : only one variable is expected in the request for the tiniest (uPLC) platforms - other variables are ignored   * Warning : only one variable is expected in the request for the tiniest (uPLC) platforms - other variables are ignored
Line 107: Line 150:
 ==== Request ==== ==== Request ====
  
-''{+**URL:** ''http://[ip-address-of-the-plc]/history.cgi'' 
 + 
 +<code javascript>{
  ver : 1,//version  ver : 1,//version
      //optional - only for non-authenticated access      //optional - only for non-authenticated access
  //credentials  //credentials
- c: {u: karel, p: x}, + c: {u: "karel", p: "x"}, 
-v: [ {i:svc://defaultConnection/myVarId1+v: [ {i:"svc://defaultConnection/myVarId1"
       from: XXXX,        from: XXXX, 
       to: YYYY       to: YYYY
       },       },
-     {i:svc://defaultConnection/myVarId1+     {i:"svc://defaultConnection/myVarId1"
       from: XXXX,        from: XXXX, 
       to: YYYY       to: YYYY
      }      }
    ]    ]
-}'' +}</code>
- +
- +
- +
-===== Configuration Response ===== +
- +
-''+
- ver : 1,//version +
-platform: “uPLC”, +
-maxVariablesInRequest: 5, +
-maxRequestSize: 1500, //http body size in bytes +
-preferedLanguage: “en-US” +
-}''+
  
 +==== Response ====
  
 +<code javascript>{
 + "ver": 1,
 + "code": "ok",
 + "msg": "",
 + "v": [{
 +  "i": "svc://DefaultConnection/15[0,1]",
 +  "v": [{
 +   "t": 636579093300049300,
 +   "v": "00"
 +  },
 +  {
 +   "t": 636579093600055900,
 +   "v": "00"
 +  }],
 +  "n": 10
 + },
 + {
 +  "i": "svc://DefaultConnection/16[0,1]", //variable ID
 +  "v": [
 + {
 +  "t": 636579093300049300,                //timestamp (UTC)
 +  "v": "00"                               //value
 + },
 + {
 +  "t": 636579093600055900,
 +  "v": "00"
 + },"n": 10                                //offset for the following request. -1 = reading finished
 +}]
 +}
 +</code>
  
  
-====== Native/built-in data types ======+===== Native/built-in data types =====
  
 Note: big endian encoding (v1) Note: big endian encoding (v1)
  • © Energocentrum Plus, s.r.o. 2017 - 2024