Seite 1 von 1

Datei über API.CGI mit HTTP-Abfrage - Rückgabe JSON-String - CMI-JSON-API

Verfasst: 11.08.2018, 15:10
von wesseli
Hallo,

ich möchte die Eingangs- und Ausgangswerte einer UVR1611 über das Interface CMI, was die Werte über eine CMI-JSON-API über eine CGI-Datei zur Verfügung stellt, mit einer HTTP-Abfrage in der CCU2 verwenden.

Über den Safari kann ich alle Eingangs- und Ausgangswerte der UVR1611 mit einem einzelnen Aufruf http://user:pwd@IP-Adresse:80/INCLUDE/a ... nparam=I,O abrufen.

Die Werte werden dann im Safari wie folgt angezeigt:

Code: Alles auswählen

{ "Header":{ "Version":3, "Device":"80", "Timestamp":1533999257 }, "Data":{ "Inputs":[ { "Number":1, "AD":"A", "Value":{ "Value":50.2, "Unit":"1" } } , { "Number":2, "AD":"A", "Value":{ "Value":59.6, "Unit":"1" } } , { "Number":3, "AD":"A", "Value":{ "Value":45.8, "Unit":"1" } } , { "Number":4, "AD":"A", "Value":{ "Value":58.4, "Unit":"1" } } , { "Number":5, "AD":"A", "Value":{ "Value":49.2, "Unit":"1" } } , { "Number":6, "AD":"A", "Value":{ "Value":57.8, "Unit":"1" } } , { "Number":7, "AD":"A", "Value":{ "Value":64.9, "Unit":"1" } } , { "Number":8, "AD":"A", "Value":{ "Value":58.7, "Unit":"1" } } , { "Number":9, "AD":"A", "Value":{ "Value":58.6, "Unit":"1" } } , { "Number":10, "AD":"A", "Value":{ "Value":35.6, "Unit":"1" } } , { "Number":11, "AD":"A", "Value":{ "Value":29.8, "Unit":"1" } } , { "Number":12, "AD":"A", "Value":{ "Value":62.7, "Unit":"1" } } , { "Number":13, "AD":"D", "Value":{ "Value":0, "Unit":"43" } } , { "Number":14, "AD":"A", "Value":{ "Value":44.9, "Unit":"1" } } , { "Number":15, "AD":"D", "Value":{ "Value":0, "Unit":"43" } } , { "Number":16, "AD":"A", "Value":{ "Value":675, "Unit":"3" } } ], "Outputs":[ { "Number":1, "AD":"A", "Value":{ "State":1,"Value":20, "Unit":"0" } } , { "Number":2, "AD":"A", "Value":{ "State":0,"Value":0, "Unit":"0" } } , { "Number":3, "AD":"D", "Value":{ "Value":1, "Unit":"0" } } , { "Number":4, "AD":"D", "Value":{ "Value":1, "Unit":"0" } } , { "Number":5, "AD":"D", "Value":{ "Value":1, "Unit":"0" } } , { "Number":6, "AD":"A", "Value":{ "State":0,"Value":0, "Unit":"0" } } , { "Number":7, "AD":"A", "Value":{ "State":0,"Value":0, "Unit":"0" } } , { "Number":8, "AD":"D", "Value":{ "Value":0, "Unit":"0" } } , { "Number":9, "AD":"D", "Value":{ "Value":1, "Unit":"0" } } , { "Number":10, "AD":"D", "Value":{ "Value":0, "Unit":"0" } } , { "Number":11, "AD":"D", "Value":{ "Value":0, "Unit":"0" } } , { "Number":12, "AD":"D", "Value":{ "Value":0, "Unit":"0" } } , { "Number":13, "AD":"D", "Value":{ "Value":0, "Unit":"0" } } ]}, "Status":"OK", "Status code":0 }
Der Seitenquellentext der api.cgi ist:

Code: Alles auswählen

{
"Header":{
"Version":3,
"Device":"80",
"Timestamp":1533999257
},
"Data":{
"Inputs":[
{
"Number":1,
"AD":"A",
"Value":{
"Value":51.0,
"Unit":"1"
}
}
],
...
"Outputs":[
....
{
"Number":13,
"AD":"A",
"Value":{
"State":0,"Value":0,
"Unit":"0"
}
}
]},
"Status":"OK",
"Status code":0
}

Mit dem nachfolgenden Befehlen wollte ich diese Werte im Script abrufen und dann verarbeiten. Leider ohne Erfolg. Es werden keine Werte abgerufen.

Code: Alles auswählen

! Die IP der CMI
var url = "user:pwd@ip:8080/INCLUDE/api.cgi?jsonnode=1&jsonparam=I1";
 
dom.GetObject("CUxD.CUX2801001:10.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:10.CMD_QUERY_RET").State(1);
string rueckgabe = dom.GetObject("CUxD.CUX2801001:10.CMD_RETS").State();

!Ausgabe der JSON Nachricht
WriteLine(rueckgabe);
Die Ausgabe im HM Script Exekutor ist

Code: Alles auswählen

 {
  "rueckgabe": "",
  "sessionId": "",
  "httpUserAgent": "",
  "url": "user:pwd@ip:8080\/INCLUDE\/api.cgi?jsonnode=1&jsonparam=I1",
  "STDOUT": "\r\n"
}
Über das Termianlprogramm habe ich mich auf die CCU2 mit SSH eingeloggt, den wget-Befehl geprüft. Die Ausgabe ist

Code: Alles auswählen

# wget -O - http://user:pwd@IP:8080/INCLUDE/api.cgi?jsonnode=1&jsonparam=I,O
# --2018-08-11 14:15:26--  http://user:*password*@IP:8080/INCLUDE/api.cgi?jsonnode=1
Nun komme ich nicht weiter. Über jeden Hinweis bin ich dankbar.

wesseli

Re: Datei über API.CGI mit HTTP-Abfrage - Rückgabe JSON-String - CMI-JSON-API

Verfasst: 19.08.2018, 20:53
von alchy

Re: Datei über API.CGI mit HTTP-Abfrage - Rückgabe JSON-String - CMI-JSON-API

Verfasst: 25.08.2018, 00:43
von wesseli