Hallo zusammen,
bin ziemlich ratlos, wie ich meine Ochsner Wärmepumpe an IPS angebunden bekomme und es wäre toll wenn mir hier jemand etwas raten könnte.
Ausgangslage und Status
- Die Wärmepumpe lässt sich via eines Moduls im LAN (Produktname: Web2Com/RC7000) steuern und Werte lassen sich auslesen mittels Zugriff über Webbrowser auf das Modul
- Ochsner bietet ziemlich genau keine Dokumentation, wie man sonst an die Daten rankommt. Man muss also wahrscheinlich „reverse engineeren“.
- Rausgefunden habe ich schon, dass das Modul wohl grundsätzlich die Daten über SOAP liefert.
- Für andere Smarthome-Lösungen wie Edomi und Loxone gibt es auch Anbindungen die funktionieren. Da habe ich mir einiges „zusammengeklaut“.
Aktuell sehe ich wahrscheinlich drei unterschiedliche Möglichkeiten Daten zu bekommen und evtl. sogar wie IPS Änderungen an Parametern/Einstellungen der Wärmepumpe vorzunehmen:
- via CURL im Linux Terminal
Ich habe mir ein CURL zusammengestümpert, dass grundsätzlich Werte abfragen kann. Das ist elend lang, funktioniert, aber wirklich verstehen tue ich das nicht im Detail. Wenn ich bspw. wissen will welchen Wert aktuell der Parameter „/1/2/1/125/7“ hat, sieht der CURL-Befehl wie folgt aus:
curl 'http://192.168.2.77/ws' --user "USER:123" -H 'Content-Type: text/xml; charset=UTF-8' -H 'SOAPAction: http://ws01.lom.ch/soap/getDP' --data-binary $'<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://ws01.lom.ch/soap/"><SOAP-ENV:Body><ns:getDpRequest><ref><oid>/1/2/1/125/7</oid><prop/></ref><startIndex>0</startIndex><count>1</count></ns:getDpRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>'
Der abgefragte Parameter /1/2/1/125/7 steht ziemlich weit hinten im CURL zwischen „oid“ und „/oid“
Als Antwort bekomme ich dann folgendes zurück:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://ws01.lom.ch/soap/"><SOAP-ENV:Body><ns:getDpResponse><ref><oid>/(1) EBusRoot/(2) 515200771 /(1) WAERMEPUMPE/(125) /(7) 02:81</oid><prop>-r-- StrctId = 2</prop></ref><dpCfg><index>7</index><name>02:81</name><prop>-r-- StrctId = 2</prop><desc>SStrct Var</desc><value>7605</value><unit></unit><type>29</type><step>0</step><minValue></minValue><maxValue></maxValue></dpCfg></ns:getDpResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
Hier wird der Wert „7605“ dann als Value an dieser Stelle zurückgeliefert zwischen „value“ und „value“
- Möglichkeit
Für Loxone gibt es eine Lösung wie folgt:
Es gibt ein PHP-Skript, dass man bspw. auf einen Apache mit installiertem PHP ablegen kann. Ruft man dann im Browser das Skript mit den richtigen Parametern auf, liefert es die aktuellen Werte im Browser zurück. Der Auftruf sieht dann bspw. so aus:
[http:](http://apache.local/web2com.php?host=192.168.2.77?&user=USER&pass=123&getoid=1/2/1/125/13;1/2/1/125/12;1/2/1/125/10;1/2/1/125/11;1/2/1/125/6;1/2/1/125/6;1/2/7/121/2;1/2/7/121/1)
„apache.local“ ist dabei der lokale Webserver auf dem ich das Script aus dem Loxone-Forum abgelegt habe.
Im Beispiele frage ich mehrere Parameter ab.
Zurück kommt dann im Browser folgendes:
{ "1/2/1/125/13": 27, "1/2/1/125/12": 75.5, "1/2/1/125/10": 816.7, "1/2/1/125/11": 46, "1/2/1/125/6": 13121, "1/2/1/125/6": 13121, "1/2/7/121/2": 53.0, "1/2/7/121/1": 53.3, "": composite }
Also alle abgefragten Parameter mit den jeweils aktuellen Werten in einer Art minimalistischem JSON.
Kann man damit was anfangen? Das web2com-Skript findet sich auch in Github =>Link
Mit dem entsprechende Aufruf kann man mit dem Script sogar Parameter der Wärmepumpe ändern. Das wäre natürlich riesig.
Allerdings brauche ich dann ja noch einen Webserver und ich habe keine Ahnung wie ich das in IPS nutzen könnte.
3, Nutzung des nativen SOAP-Clients von PHP
Das wäre wahrscheinlich die eleganteste Lösung, oder? Allerdings habe ich leider auch hier keine Idee wie ich das in einem PHP-SOAP-Client umsetzen könnte. Gibt es da eine einfache Lösung bspw. aus dem CURL einen PHP-SOAP-Code zu machen. Mit den Konvertern im Web bin ich da nicht weit gekommen und ich bin auch kein Programmierer.
Wäre toll, wenn der eine oder andere mir hier evtl. etwas raten könnte.
Danke und viele Grüße
Rainer