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: 840
  • Author: owagner
  • Lizenz: GNU/GPL3
Herunterladen

Neue Kommentare:

  • Hat eigentlich jemand schonmal bei dem MP3-Funkgong die Übertragung von "Standard" auf "Gesichert" umgestellt? Bei mir hat das dazu geführt, dass der Gong selbt nach dem Zurücksetzen auf "Standard" Probleme bei der Gerät... Weiter lesen
  • neues Sprungdiagramm aufgenommen... Weiter lesen
  • so jetzt gehts. Evtl hats nur beim ersten mal nicht geklappt und beim zweiten Versuch mit anderer App, war die App wohl fehlerhaft. Home24 speichert beim speichern die CCU-Daten nicht. Mit Homedroid klappts jetzt. Weiter lesen
Kommentare