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!
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:
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...
...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:
Attribut setzen:
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.
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:
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.
