Datei über API.CGI mit HTTP-Abfrage - Rückgabe JSON-String - CMI-JSON-API
Verfasst: 11.08.2018, 15:10
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:
Der Seitenquellentext der api.cgi ist:
Mit dem nachfolgenden Befehlen wollte ich diese Werte im Script abrufen und dann verarbeiten. Leider ohne Erfolg. Es werden keine Werte abgerufen.
Die Ausgabe im HM Script Exekutor ist
Über das Termianlprogramm habe ich mich auf die CCU2 mit SSH eingeloggt, den wget-Befehl geprüft. Die Ausgabe ist
Nun komme ich nicht weiter. Über jeden Hinweis bin ich dankbar.
wesseli
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 }
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);
Code: Alles auswählen
{
"rueckgabe": "",
"sessionId": "",
"httpUserAgent": "",
"url": "user:pwd@ip:8080\/INCLUDE\/api.cgi?jsonnode=1&jsonparam=I1",
"STDOUT": "\r\n"
}
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
wesseli