Hallo alchy, hallo zusammen,
ich würde gern den Thread reaktivieren, da ich vor dem ähnlichen Thema stehe. Ich würde gerne einige Werte meiner Wärmepumpen-Regelung in HM sehen und darauf reagieren können (z.B. Umschaltung Heiz- oder Kühlbetrieb, Legionellenprogramm, etc.).
Ich habe mir den Siemens Webserver ozw672 für meine Wärmepumpe (Fujitsu Waterstage) mit Siemens-Regelung ebenfalls gekauft und in Betrieb genommen. Der Webserver ist im Netz erreichbar und "redet" mit der Wärmepumpen-Regelung. Im Webinterface sehe ich alle Werte der Anlage.
Allerdings komme ich nicht so weit wie stephanflug im Frühjahr, der ja immerhin irgendwelche Rückgabewerte in einer Systemvariable gesehen hat.
Wenn ich den Skriptschnipsel
Code: Alles auswählen
! Steuern eines Siemens-Webserver OZW 672 (c) by Alchy v0.1
var url = "https://192.168.XXX.XXX/api/auth/login.json?user=homematic&pwd=XXXXXXX";
dom.GetObject("CUxD.CUX2801001:3.CMD_SETS").State("wget -q --no-check-certificate -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:3.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:3.CMD_RETS").State();
if ( (srueck.Find("false") == -1) && (srueck) ) {
string tmpa = srueck.StrValueByIndex(",",0).StrValueByIndex(":",1);
string sSID = tmpa.Substr(2, tmpa.Length()-3);
WriteLine(" SessionID erfolgreich geholt:"#sSID);
string befehl = "https://192.168.XXX.XXX/api/menutree/read_datapoint.json?SessionId="#sSID#"&Id=1237&Id=2";
!dom.GetObject("CUxD.CUX2801001:4.CMD_EXEC").State("wget -q --no-check-certificate -O - '"#befehl#"'");
dom.GetObject("CUxD.CUX2801001:4.CMD_SETS").State("wget -q --no-check-certificate -O - '"#befehl#"'");
dom.GetObject("CUxD.CUX2801001:4.CMD_QUERY_RET").State(1);
string sback = dom.GetObject("CUxD.CUX2801001:4.CMD_RETS").State();
WriteLine(" Befehl abgesetzt");
WriteLine("Ausgabe: "#sback);
}else{
WriteLine(" Fehler beim Holen der SessionID ");
}
bekomme ich die Meldung " Fehler beim Holen der SessionID ".
Im Browser funktioniert die erste URL und ich bekomme eine Session-ID zurück.
Code: Alles auswählen
{
"SessionId": "4195fb7b-d1df-4af8-926c-90557833027a",
"Result": {
"Success": "true"
}
}
Rufe ich die URL per SSH auf der CCU auf:
Code: Alles auswählen
wget --no-check-certificate -O - "https://192.168.XXX.XXX/api/auth/login.json?user=homematic&pwd=XXXXXXX"
bekomme ich:
Code: Alles auswählen
--2017-12-18 15:04:57-- https://192.168.XXX.XXX/api/auth/login.json?user=homematic&pwd=XXXXXXX
Connecting to 192.168.17.155:443... connected.
OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Unable to establish SSL connection.
Ein testweiser Aufruf mit curl im cuxd/extras-Verzeichnis liefert mir die gleiche Meldung. Ich vermute mal, die OpenSSL-Version auf der CCU verträgt sich nicht mit den SSL-Bibliotheken auf dem Webserver?
wget auf der CCU hat die Version "GNU Wget 1.13.4 built on linux-gnueabi.". CCU2 ist auf Firmwarestand 2.29.23. CUxD Version 1.12. Der Webserver ist der OZW672.01, Software Version 7.00, build 07.00.21.52. Eine Version der SSL-Bibliotheken habe ich nicht auf Anhieb gefunden.
Scheint ja eher in den Bereich SSL/TLS-Handshake zu gehören.
Jemand eine Idee?
Viele Grüße,
Sebastian