HMCompanion - Schnittstelle zur CCU
Moderator: Co-Administratoren
Re: HMCompanion - Schnittstelle zur CCU
Das schon...aber die Interpretation der binären XMLRPC-Daten wird dort entschlüsselt...
Gruß,
kaju
Gruß,
kaju
HomeMatic-INSIDE: http://www.homematic-inside.de
Re: HMCompanion - Schnittstelle zur CCU
Sorry, ich habe mich wohl mißverständlich ausgedrückt. Kurz zur Klarifikation:
Grundsätzlich antworten die Services immer in dem Format, in dem man sie anspricht (schickt man Request binär, kommt die Antwort binär, schickt man XML, kommt XML -- geht sowohl als HTTP POST als auch als Plaintext). HMC z.B. schickt die Requests selbst auch immer binär (Faulheit siegt ).
Bei der "init"-Methode wiederum gibt man ja eine URL an, an die danach der entsprechende Daemon Requests schickt (also quasi die Umkehrung), und dabei spielt der Protokollteil eine Rolle. Will man z.B. XML-RPC bekommen, ruft man
init http://meinserver:6777/
auf und der Daemon POSTed die Nachrichten als XML-RPC an "http://meinserver:6777/RPC2"; will man stattdessen das Binärformat bekommen, muss man z.B.
init bin://meinserver:6777
aufrufen (siehe base/libs/xmlrpc/src/XmlRpcClient.cpp im CCU-Quelltext)
Viele Grüße,
Olli
Grundsätzlich antworten die Services immer in dem Format, in dem man sie anspricht (schickt man Request binär, kommt die Antwort binär, schickt man XML, kommt XML -- geht sowohl als HTTP POST als auch als Plaintext). HMC z.B. schickt die Requests selbst auch immer binär (Faulheit siegt ).
Bei der "init"-Methode wiederum gibt man ja eine URL an, an die danach der entsprechende Daemon Requests schickt (also quasi die Umkehrung), und dabei spielt der Protokollteil eine Rolle. Will man z.B. XML-RPC bekommen, ruft man
init http://meinserver:6777/
auf und der Daemon POSTed die Nachrichten als XML-RPC an "http://meinserver:6777/RPC2"; will man stattdessen das Binärformat bekommen, muss man z.B.
init bin://meinserver:6777
aufrufen (siehe base/libs/xmlrpc/src/XmlRpcClient.cpp im CCU-Quelltext)
Viele Grüße,
Olli
-
- Beiträge: 407
- Registriert: 06.03.2009, 15:38
- Wohnort: Karlsruhe
- Danksagung erhalten: 1 Mal
Re: HMCompanion - Schnittstelle zur CCU
öhm mal ne wahrscheinlich dumme frage, wo gibts diese quellcode den?owagner hat geschrieben:aufrufen (siehe base/libs/xmlrpc/src/XmlRpcClient.cpp im CCU-Quelltext)
und die andere frage wäre kann mir mal jemand den unterschied zwischen nem binären xml-rpc request erklären und nem normalen? steh da etwas aufm schlauch glaub ich.
Grüße Daniel
Re: HMCompanion - Schnittstelle zur CCU
Den (teilweisen) Quelltext gibt es hier: http://www.homematic.com/index.php?id=151&L=0
Das Binärformat ist z.B. dieses Format mit der "Bin"-Kenndung am Anfang, welches man mit tcpdump sehen und welches das PHP-Beispiel verwendet, welches hier mal gepostet wurde.
"Echtes" xml-rpc sieht so aus (Beispiel: Notification von pfmd über den Batteriestatus der CCU):
Das Binärformat ist z.B. dieses Format mit der "Bin"-Kenndung am Anfang, welches man mit tcpdump sehen und welches das PHP-Beispiel verwendet, welches hier mal gepostet wurde.
"Echtes" xml-rpc sieht so aus (Beispiel: Notification von pfmd über den Batteriestatus der CCU):
Code: Alles auswählen
<?xml version="1.0"?>
<methodCall><methodName>event</methodName>
<params><param><value>CB-2</value></param><param><value>System:1</value></param><param><value>BAT_LEVEL</value></param><param><value><double>0.507500</double></value></param></params></methodCall>
V0.3
Ich habe gerade ein kleines Update mit folgenden Änderungen upgeloaded:
Code: Alles auswählen
V0.3 - verwendet XMLRPC-BIN auch für eingehende Requests, kein Apache ws-xmlrpc mehr nötig
- Dump-Format für strukturierte Antworten verbessert
- Serialization-Fehler beim Cache-Schreiben behoben
- Neues Kommando "CGET", um alle Attribute eines Kanals in einem für Cacti lesbarem Format
auszugeben
Re: HMCompanion - Schnittstelle zur CCU
Und ein weiteres kleines Update:
Ich habe SETPARAM primär deswegen implementiert, um einmal tägliche alle Heizungsregler wieder auf den "Auto"-Modus zurückschalten zu können, falls diese manuell verstellt wurden.
Viele Grüße,
Olli
Code: Alles auswählen
V0.4 - SET funktioniert nun auch wieder mit reinen BidCoS-Adressen anstatt nur mit ReGa-Namen
- neuer Befehl "SETPARAM", um einen einzelnen Konfigurationsparameter via der xmlrpc-Methode
"putParamset" zu setzen. Beispiel z.B. zum Setzen eines Temperaturreglers auf Automatik:
SETPARAM GEQ00xxxxx:2 MASTER MODE_TEMPERATUR_REGULATOR 1
Viele Grüße,
Olli
V0.5
Wieder ein kleines Update:
Code: Alles auswählen
V0.5 - SET und SETPARAM akzeptieren nun Wildcards (*) für Channelnamen. Heissen z.B. alle
Thermostat-Steuerkanäle "Thermostat <Raum> 1", kann man mit
SETPARAM "Thermostat * 1" MASTER MODE_TEMPERATUR_REGULATOR 1
alle gleichzeitig auf Modus "Auto" setzen.
Re: HMCompanion - Schnittstelle zur CCU
Neu in der Version 0.6:
Code: Alles auswählen
V0.6 - Watchdog: Wird nun mehr als 180s kein Callback empfangen, werden die init-Requests erneut
geschickt (z.B. nach einem Reboot der CCU)
- Neuer Befehl "HMSet <variable> <wert>" als Shortcut zum Setzen einer HMScript-Variable
- Neuer Befehl "HMGet <variable1> <variable2...>" als Shortcut zum Lesen einer HMScript-Variable
- Neuer Befehl "HMRun <programm1> <programm2...>" als Shortcut zum Starten von HMScript-Programmen
V0.7
Neu in Version 0.7:
Code: Alles auswählen
- Mittels "HMGet -timestamp variable" (Textform) oder "HMGet -timestampts variable" (Sekunden seit 1970)
kann nur die Last-Modification-Timestamp einer Variable abgefragt werden
- "HMSet" benutzt nun .State(v) statt .Variable(v), damit eventuelle Events auf den Systemvariablen ausgelöst werden
- Neues Kommando MGET um ein Attribut von einer Menge von Geräten abzufragen, z.B. "MGET PIR* motion".
Das Ausgabeformat ist "Gerätename:Wert"
V0.8
Und mal wieder ein kleines Update:
Mit der Statistikfunktion und Cacti kann man eine Indikation davon bekommen, wieviel so an Datenverkehr los ist. Das ist natürlich nur eine grobe Richtung, da nur Statusmeldungen an die CCU, die wiederum einen rfd/hs485d-Callback verursachen, geloggt werden, aber nicht z.B. die auslösenden Funktelegramme in einer Direktverknüpfung. Aussehen tut das dann so:
Desweiteren habe ich für Interessierte den Source beigefügt.
Danke an ColdFireIce, der mir das de-init nochmal ausdrücklich um die Ohren gehauen hat
Viele Grüße,
Olli
Code: Alles auswählen
V0.8 - Hinweis auf "undokumentierte Schnittstellen" entfernt, da nun durch EQ-3 offengelegt
- Beim Beenden von HMC wird nun ein de-init an die xmlrpc-Server geschickt
- Neuer Befehl "STATS" um Statistiken über von den xmlrpc-Servern erhaltene Nachrichten im Cacti-Format zu bekommen
- QUIT hat nun eine Option "-exit", mit der HMC beendet werden kann
Danke an ColdFireIce, der mir das de-init nochmal ausdrücklich um die Ohren gehauen hat
Viele Grüße,
Olli