INSIDESoftwareJavaHMCompanion

HMCompanion

Bei HMCompanion handelt es sich um eine so genante Middleware, die zwischen der HomeMatic-Zentrale (CCU) und einer beliebig anderen Seite "vermittelt". Dabei kommen einfache TCP-Textkommandos zum Einsatz, die schnell z.B. in PHP oder Bash-Skripte intergierbar sind. Zudem arbeitet HMCompanion als sehr effizienter Cache, der den Status sämtlicher HomeMatic-Kanäle vorhält, so daß z.B. für Visualisierung auf diese Daten ohne Verzögerung zugegriffen werden kann.

HMCompanion ist in Java geschrieben und funktioniert auf jeder Plattform mit mindestens einer Java-1.5-JRE (also NICHT direkt auf der CCU selbst).

Hinweise vom Autor:

Obwohl keine Software auf der CCU selbst installiert werden muss, reichen mögliche Risiken von einfachen Betriebsstörungen bis hin zu irreperablen Schäden von Hardwarekomponenten. Die Verwendung erfolgt vollständig auf eigene Gefahr!

Kommunikation HMCompanion und CCU


HMCompanion kommuniziert auf zwei Ebenen mit der CCU:

  • Es benutzt XML-RPC, um direkt Befehle an rfd, hs485 und pfmd zu schicken. Es meldet zudem sich mittels des XML-RPC-Befehls "init" als zusätzliche Logikschicht an den Daemonen an, um von diesen über Ereignisse informiert zu werden. Dies macht die Installation von TCPDump o.ä. auf der CCU selbst unnötig.
  • Es benutzt HMScript, um von der CCU eine Liste aller Geräte mit Namen zu erhalten, damit diese dann mittels GET, SET etc. per Namen angesprochen werden können.

Benutzung von HMCompanion


HMCompanion wird mit folgendem Befehl gestartet:
java -jar hmcompanion.jar <ip oder hostname der CCU> -server <optionaler Port, ansonsten 6770>

HMCompanion registriert sich dann zuerst per XML-RPC-API bei den drei Daemon-Prozessen, um Events zu erhalten, fordert danach per HMScript die ReGa-Geräteliste an und wartet dann auf TCP-Verbindungen zum angegebenen Port.

Zum Beispiel mittels...
telnet localhost 6770

...kann man sich dann mit dem HMCompanion verbinden und Befehle abschicken. Mittels "HELP" erhält man eine Auflistung aller verfügbaren Befehle.

Beispiele:


Aktuellen Status eines Channel-Attributes abrufen:
GET Wetterstation

Attribut setzen:
SET "Licht Kellerflur" STATE on

Bei SET/GET können jeweils sowohl die BidCoS-Adressen der Channel als auch die im WebUI zugewiesene Namen verwendet werden. Bei Set/SetParam können auch Wildcards verwendet werden, z.B.
SET "*Licht*" STATE on

setzt alle Komponenten mit Namen, die "Licht" enthalten, auf ein. Das Auslesen von Attributen von mehreren Geräten ist mittels des Befehls "MGET" möglich.

Da in den xmlrpc- Requests die Datentypen der Parameter eine Rolle spielen, rät HMCompanion anhand des Formats:

on/true, off/false -> Boolean
Integer-Zahl (nur 0-9) -> Integer
Dezimalzahl (d.h. mit Dezimalpunkt) -> Dezimalzahl
alles andere -> String

Dies bedeutet, dass man Parameter, die als Dezimalzahl erwartet werden (z.B. LEVEL), immer auch als Dezimalzahl übergeben muss, also "0.0" statt "0" und "1.0" statt "1", ansonsten wird der Request vom jeweiligen Daemon ignoriert.

HMCompanion speichert den aktuellen Stand aller Channel-Attribute beim Beenden in der Datei "hmc.cache" und lädt diesen beim Start wieder. Dies dient insbesondere für Geräte, die nur alle 24h o.ä. ein Update schicken.

Wird HMCompanion auf einem Server-System betrieben, macht es Sinn, die Speicherzuteilung der JavaVM mittels "-Xmx64M" auf 64MB zu beschränken:
java -Xmx64M -jar hmcompanion.jar <ip oder hostname der CCU> -server

Bekannte Probleme


Es existiert aktuell kein bekannter Mechanismus, um einen "init"-Befehl zu wiederrufen. Die CCU versucht also auch nach dem Beenden von HMCompanion weiter, XML-RPC- Befehle an den Rechner abzusetzen, auf dem HMCompanion lief. Dies ist normalerweise kein Problem, solange dieser Rechner immer dieselbe IP hat; ändert sich diese, sammeln sich aber auf der CCU jeweils Instanzen der Daemon-Prozesse an.

Weitere Informationen zur dieser Software gibt es im FHZ-Forum.
  • Letze Aktualisierung: 03. Januar 2011
  • Dateigröße: 66.17 KB
  • Version: 0.14
  • Downloads: 971
  • Author: owagner
  • Lizenz: GNU/GPL3
Herunterladen

Neue Kommentare:

  • Hallo, ich habe bei mir den Dimmer HM-LC-Dim1TPBU-FM in Betrieb. Soweit funktioniert alles.Wie komme ich aber an die weiteren Känäle des Dimmers. Bei mir werden in den Geräteeinstellungen die Kanäle Ch:2 und Ch:3 nicht a... Weiter lesen
  • bin zufaellig auf diesen Artikel gestossen, da ich derzeit einige FS20 Komponenten habe und mich fuer eine HomeMatic interessiere. Wenn ich es richtig verstehe, kann ich (die meisten) FS20 Aktuatoren, Fernbedienungen, et... Weiter lesen
  • Hallo zusammen, ich habe auf meiner CCU das LCD AddOn laufen und die CCU auch auf 1.505 aktualisiert. Bisher läuft alles wie vorher ohne Probleme. Der einzige neue Log-Eintrag der mir aufgefallen ist: May 15 08:27:08 (no... Weiter lesen
Kommentare