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

Nutzung von XML RPC, Remote Script, JSON RPC, XMLAPI

Moderator: Co-Administratoren

Antworten
wesseli
Beiträge: 15
Registriert: 29.04.2015, 14:55

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

Beitrag von wesseli » 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:

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

alchy
Beiträge: 7711
Registriert: 24.02.2011, 01:34

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

Beitrag von alchy » 19.08.2018, 20:53


.................... Full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.


Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“