====== Webpanel API ======
Komunikace je založena na protokolu HTTP. Klienti odesílají HTTP POST požadavky a získávají odpovědi odpovídající zaslanému požadavku. Pokud jsou pro projekt nastaveny přihlašovací údaje, musí je obsahovat každý požadavek.
===== Přihlášení =====
==== Požadavek ====
**URL:** ''http://[ip-address-of-the-plc]/login.cgi''
{
ver : 1,//version
//optional - only for non-authenticated access
//credentials
c: {u: "karel", p: "x"}
}
==== Odpověď ====
{
ver : 1,//version
code: "ok", //return code
msg: "", //error message
c : {u: "karel", p:"x"} //must be used for further communication
}
===== Požadavek na data =====
==== Požadavek ====
**URL:** ''http://[ip-address-of-the-plc]/values.cgi''
{
ver : 1,//version
//optional - only for non-authenticated access
//credentials
c: {u: "karel", p: "x"},
//variable IDs
v: [ "svc://defaultConnection/myVarId1",
"svc://otherConnection/xxxYYYYDDD"]
}
* ID proměnné je jedinečný řetězec. V budoucnu se může lišit podle platformy nebo verze protokolu (uPLC – int?, SharkRT – string).
=== Příklad ===
{
"ver": 1,
"c": {
"u": "Visitor",
"p": "b39576d3da8eb2b0e262645e84707cdc"
},
"v": ["svc://DefaultConnection/9104[0,4]",
"svc://DefaultConnection/9105[0,4]",
"svc://DefaultConnection/9129[456,4]"]
}
=== Specifikace proměnných pro Mervis RT ===
* svc – protokol
* Connection – obecně mohou klienti požadovat data z více zdrojů (více či méně odpovídá definici připojení v PLC). Pro lokální data (data náležející PLC, které požadavek zpracovává) lze použít ''defaultConnection''.
* ID proměnné má tvar ''commUID[offset,length]''. Hodnotu ''commUID'' lze získat ze souboru ''.vlist'' projektu v Mervis IDE a jednoznačně určuje proměnnou. Proměnné mohou být komplexních nebo velkých datových typů. V takovém případě lze pomocí parametrů ''offset'' a ''length'' načíst pouze požadovanou část proměnné.
* Příklad: svc://defaultConnection/8776[0,2]
* Představuje proměnnou s hodnotou ''commUID'' 8776. Vrátí se 2 bajty od offsetu 0.
Tělo POST požadavku může mít následující podobu:
- Řetězec JSON (výchozí chování AngularJS): {"ver":1,"c":{"u":"karel","p":"x"},"v":["svc://defaultConnection/myVarId1","svc://otherConnection/xxxYYYYDDD"]}
- Převedené POST parametry (výchozí chování jQuery):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
==== Odpověď ====
{
ver : 1,//version
code: "ok", //return code
msg: "", //error message
v: [{
i: "svc://defaultConnection/myVarId1", //variable Id
v: "ACA1", //value - binary encoded
q: "G",//quality
t: 654654321654 //timestamp UTC, milliseconds since 1970
}
]
}
=== Kódování hodnot – verze 1 ===
* Každá hodnota je přenášena jako binární reprezentace zadané proměnné (včetně offsetu a délky) v pořadí bajtů big endian.
=== Příklad ===
{
"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
}
]
}
===== Požadavek na vykonání příkazu =====
==== Požadavek ====
**URL:** ''http://[ip-address-of-the-plc]/command.cgi''
{
ver : 1,//version
//optional - only for non-authenticated access
//credentials
c: {u: "karel", p: "x"},
v: [{
i: "svc://defaultConnection/myVarId1", //variable Id
//digital setter
time: "20.0", //digital setter has some time property...
state: "2", //state that should be applied
defaultValue: "6", //some default value
//analogPlusMinusInit, TPG, ...
set: 5,
//set: "" //TPG
//login - pin
login: "1234"
}
]
}
* Upozornění: Na nejmenších platformách (uPLC) se očekává pouze jedna proměnná v požadavku. Ostatní proměnné jsou ignorovány.
===== Požadavek na historická data =====
==== Požadavek ====
**URL:** ''http://[ip-address-of-the-plc]/history.cgi''
{
ver : 1,//version
//optional - only for non-authenticated access
//credentials
c: {u: "karel", p: "x"},
v: [ {i:"svc://defaultConnection/myVarId1",
from: XXXX,
to: YYYY
},
{i:"svc://defaultConnection/myVarId1",
from: XXXX,
to: YYYY
}
]
}
==== Odpověď ====
{
"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]",
"v": [
{
"t": 636579093300049300,
"v": "00"
},
{
"t": 636579093600055900,
"v": "00"
}],"n": 10
}]
}
===== Nativní vestavěné datové typy =====
Poznámka: Kódování používá pořadí bajtů big endian (v1).
* integer (představuje int8 až int64)
* unsigned integer (představuje uint8 až uint64)
* double (double64)
* float (float32)
* bool (boolean – 0 = false, 1 = true)
* dt (datum a čas – počet intervalů o délce 100 ns, které uplynuly od 1. ledna 0001 00:00:00)
* time (čas – počet intervalů o délce 100 ns)
* Výčtové typy (enum) jsou kódovány jako 32bitové celé číslo.