HMCompanion - Schnittstelle zur CCU

diverse Zusatzsoftware

Moderator: Co-Administratoren

Benutzeravatar
kaju74
Beiträge: 2050
Registriert: 06.03.2007, 13:14
Danksagung erhalten: 19 Mal
Kontaktdaten:

Re: HMCompanion - Schnittstelle zur CCU

Beitrag von kaju74 » 31.05.2010, 15:29

Das schon...aber die Interpretation der binären XMLRPC-Daten wird dort entschlüsselt...

Gruß,
kaju

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

Re: HMCompanion - Schnittstelle zur CCU

Beitrag von owagner » 31.05.2010, 15:52

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

ColdFireIce
Beiträge: 407
Registriert: 06.03.2009, 15:38
Wohnort: Karlsruhe
Danksagung erhalten: 1 Mal

Re: HMCompanion - Schnittstelle zur CCU

Beitrag von ColdFireIce » 31.05.2010, 19:23

owagner hat geschrieben:aufrufen (siehe base/libs/xmlrpc/src/XmlRpcClient.cpp im CCU-Quelltext)
öhm mal ne wahrscheinlich dumme frage, wo gibts diese quellcode den?
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

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

Re: HMCompanion - Schnittstelle zur CCU

Beitrag von owagner » 31.05.2010, 19:40

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):

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>

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

V0.3

Beitrag von owagner » 03.06.2010, 01:25

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

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

Re: HMCompanion - Schnittstelle zur CCU

Beitrag von owagner » 20.06.2010, 13:36

Und ein weiteres kleines Update:

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
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

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

V0.5

Beitrag von owagner » 26.06.2010, 00:40

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.

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

Re: HMCompanion - Schnittstelle zur CCU

Beitrag von owagner » 18.07.2010, 15:52

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

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

V0.7

Beitrag von owagner » 01.08.2010, 22:06

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"

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

V0.8

Beitrag von owagner » 26.09.2010, 14:04

Und mal wieder ein kleines Update:

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
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:
hmc_activity.png
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

Antworten

Zurück zu „Sonstige Addons“