HomeMatic mal ausprobiert – ein Erfahrungsbericht

HomeMatic APIDie Idee einer heimischen Steuerzentrale hat mich zugegebenermaßen schon einige Jahre lang fasziniert – selbst damals, als das „UI“ noch aus Tastern und Lämpchen bestand. Mit den heute verfügbaren, modularen und fertig aufgebauten Systemen ist die Einstiegshürde deutlich gesunken, hätte man sich früher alle Komponenten selbst löten müssen. Profan gesprochen sind es zwar nur ein paar fernsteuerbare Lichtschalter aber die Vorteile eines solchen Systems sowie die damit verbundenen Möglichkeiten lassen sich gewiss nicht nur dem Technikbegeisterten erklären.

Bei den Überlegungen zu Sinn und Unsinn einer Heimautomatisierung lief mir HomeMatic schon vor zwei/drei Jahren mal über den Weg. Die Entscheidung dem System der eQ-3 AG nun doch eine Chance zu geben, ging im Wesentlichen auf zwei Ereignisse zurück: Die Erkenntnis, dass HomeMatic einen Webservice zur umfangreichen Ansteuerung der Anlage mitbringt, zusammen mit einer guten Empfehlung, sowie einen kleinen „Sicherheitsvorfall“ an der Wohnungstür. Rein zufällig war es gerade draußen auch noch kalt und das zeitgesteuerte Heizungsthermostat im Bad hatte schon lange seine Programmierung vergessen… Zeit also für ein Starterpaket!

Einer der Vorteile des Systems sind die zahlreichen Geräte, mit denen man das System fortwährend ausbauen und erweitern kann. So gibt es vom Fensterkontakt über das Heizungsventil bis zum Wassersensor eigentlich nichts, was es nicht gibt. Einen guten Überblick über Sensoren und Aktoren kann man sich auf den Seiten des Anbieters verschaffen.

Die bidirektionale Kommunikation zwischen den Geräten und der Zentrale erfolgt per Funk auf 868 MHz über das proprietäre Funkprotokoll BidCoS.
Jedoch auch bei einem auf den ersten Blick recht stimmig umgesetzten Gesamtsystem, finden sich bei genauerem Hinsehen bereits einige konzeptionelle Schwächen. So zum Beispiel wird neben der bidirektionalen Kommunikation auf eine Absicherung der Übertragung per AES gesetzt – leider gilt dies offenbar nur für ein Challenge-Response-Verfahren, welches zur Authentifizierung des Senders gegenüber dem Empfänger bei Schaltvorgängen genutzt wird und nicht für die Absicherung der gesamten Übertragung.

Inbetriebnahme und Konfiguration

HomeMatic  - Installation Unterputz 2-Fach Aktor und AnsteuerungDie Steuereinheit/Zentrale (im HomeMatic-Slang CCU genannt) ist das Herzstück der Anlage. Das nicht besonders ansprechende und aus UX-Sicht an einigen Stellen mehr als fragwürdige Frontend der CCU ist inhaltlich durchdacht und mit umfangreichen Funktionen ausgestattet. So kann hier mit wenigen Klicks das Bekanntmachen (Anlernen) und Einrichten von Sensoren sowie Aktoren erfolgen. Neben einer Art Workflow-Engine, mit der sich kleine Skripte für individuelle Steuerungsabläufe entwerfen lassen, ist hier ebenfalls ein Ansteuern der eingerichteten Geräte möglich. Darüber hinaus lassen sich direkte Steuerungsverknüpfungen einrichten, was die autarke Kopplung von einzelnen Sensoren und Aktoren ermöglicht.

Die HomeMatic-Endgeräte sind meist ohne besonderen Aufwand zu montieren. So gibt es einfache Zwischensteckdosen, mit denen beispielsweise Schaltvorgänge und Strom(-verbrauchs-)messungen realisiert werden können. Bei manchen Sensoren sind minimale handwerkliche Skills von Nöten – jedoch jeder, der es vermag einen Schraubenzieher seiner Bestimmung gemäß zu verwenden, sollte ohne Probleme zurechtkommen.

Für die Installation einiger Geräte, wie beispielsweise die für die Unterputz-Montage konzipierten, sind Grundkenntnisse der Elektrotechnik sinnvoll. Auch hier jedoch kann man wenig falsch machen, da Beschriftungen und Anleitung keine Frage offen lassen. HomeMatic  - Installation Unterputz SchaltaktorFür die optimale Integration in die bestehende Haustechnik werden Unterputz-Schaltaktoren angeboten, welche mit Hilfe von Adaptern an die gängigen Systemblenden angepasst werden können – so kann man die ursprüngliche Wippe des alten Schalters verwenden, während hinter dem Schalter lediglich die funkende, neue Technik in der Wand versteckt wird.

Webservices und XML-RPC

Bereits mit der Inbetriebnahme der Steuereinheit gingen auch die ersten Überlegungen einher, wie man denn am besten programmatisch an das neue Spielzeug herankommen könnte. Mit einer ersten Google-Anfrage zum Thema gelangt man zielsicher zur HomeMatic-eigenen Webschnittstelle, basierend auf dem bereits etwas in die Jahre gekommenen XML-RPC-Protokoll.

Auf der Hersteller-Webseite im Download-Bereich findet man detaillierte und verständliche Informationen, wie die Spezifikation der HomeMatic XML-RPC-Schnittstelle. Darin werden das grundlegende Prinzip der Schnittstellenfunktion sowie eine Referenz der verfügbaren Methoden beschrieben.
Weitere Recherchen im Netz führen relativ schnell zu einer C# Bibliothek auf SourceForge mit Beispiel-Implementierung, welche neben der HomeMatic-Bibliothek selbst einen XML-RPC-Server für die Event-basierte Logik als auch einen Client zum Auslesen und Ansprechen des Systems enthält.

Mit dem Wissen aus der Referenz zur XML-RPC-Schnittstelle und der HMRemoting-Bibliothek ließ sich in kurzer Zeit eine für meinen Geschmack ansprechendere Webanwendung als die Systemeigene zusammenbasteln, mit welcher man sich die interessanten Geräte in einer Übersicht darstellen lassen und die schaltbaren Aktoren bedienen kann.

HMC_internal

Analog zum Home Access Center hatte ich im neuen „HomeMatic Center“ wieder eine Trennung zwischen externem Netz, DMZ und internem Netz implementiert, so dass per Konfiguration definiert werden kann, wer von wo was sehen und bedienen darf.

Da die Übersicht und Bedienung des Systems nur die halbe Miete ist, folgte unmittelbar darauf ein Benachrichtigungsdienst für den Service Pushalot, welcher bei Statusänderung Bescheid geben sollte. Hier fingen meine Probleme mit der XML-RPC Schnittstelle der HomeMatic an…

Bei der Logik-Schicht kann man sich mit Hilfe der init-Methode mit einem XML-RPC-Server registrieren und sich bei Statusänderungen direkt von der CCU auf dem Laufenden halten lassen. Die mitgelieferte Beispiel-Implementierung funktionierte auf den ersten Blick, so dass ich unmittelbar eine eigene Version umsetzte. Hier überraschte, dass kurz nach Start (zwischen 30 Sekunden und 2 Minuten) des Dienstes keine Events mehr registriert wurden. Nach einigen Versuchen und Grübeln konnte ich das Problem zu allem Unglück ebenfalls mit der eigentlich für gut befundenen Beispiel-Implementierung nachstellen.

HomeMatic - XmlRpc Transport Error

Nachdem ich verschiedenste Threads in einschlägigen HomeMatic-Foren inhalierte, wurde schnell klar, dass es hier wohl ein allgemeineres Problem gibt. Ein Blick in /var/log/messages direkt auf der CCU verschaffte nochmals Gewissheit: Sowohl mein Code als auch der Beispiel-Code verursachten fehlerhafte XML-RPC Aufrufe, die emsig vom System protokolliert wurden.

Mit der Hoffnung auf eine schnelle Lösung des Problems, reifte die fixe Idee, den Dienst auf ein aktives System umzubauen. Statt der Registrierung auf ein Event, sollte der Dienst nun als Client in geringem Versatz (alle 3 Sekunden) ausgewählte Statuszustände bei der CCU abfragen. Das bescherte mir zwar vorerst ein funktionierendes Benachrichtigungssystem – jedoch nur in Form eines wenig eleganten Workarounds, der sich leider ebenfalls als Sackgasse entpuppte. Nach einem Tag Betrieb des Dienstes fielen mir gehäuft temporäre Verbindungsstörungen der HomeMatic-Komponenten auf. Die Service-Meldungen waren permanent voll mit Störungswarnungen und am dritten Tag waren plötzlich die wenige Wochen zuvor eingesetzten Akkus des Rauchmelders leer, so dass ich den Dienst wieder deaktivierte und mich grundsätzlich nach einer anderen Art zum Abfragen des Systems umschaute…

Webservices und das XML-API Addon

Nach einem weiteren guten Tipp kam ich dazu mein erstes Addon auf der CCU zu installieren: XML-API, welches direkt auf der Zentrale XML-Dateien deutlich schneller und mit deutlich mehr Informationen generierte, als ich es von der XML-RPC Schnittstelle des Herstellers kannte. Zwar verfügt das Addon nicht über die Möglichkeit sich Ereignis-basiert zu registrieren – dafür aber stimmen Performance und Last-Verhalten der CCU auch bei schnell aufeinanderfolgenden Zugriffen.
Und damit nicht genug – der Zugriff auf das System-Log und System-Variablen ist problemfrei möglich, was mir zumindest bei der XML-RPC Schnittstelle nicht gelungen ist.

Getrieben von der Idee den Benachrichtigungsdienst sowie auch das HomeMatic Center auf XML-API umzustellen, habe ich begonnen einen kleinen .NET Wrapper für die Verwendung der XML-API zu schreiben. Das Projekt ist mit ersten, einfachen Funktionen bei GitHub unter dem Namen HomeMatic-XmlApi-Lib zu finden. Ich bemühe mich neuere Versionen von Zeit zu Zeit in das Repo zu synchronisieren. Über Anregungen, Forks und Pull Requests freue ich mich.

Fazit

HomeMatic ist vermutlich nicht die ultimative Lösung für alle Fragen und Probleme zum Thema Home Automation. Dennoch ist es ein insgesamt solides und durchdachtes System mit kleineren Macken, die man getrost ignorieren kann, wenn man nicht ein bis in die letzte Ecke professionelles oder absolut perfektes System erwartet, was mit Sicherheit ein Vielfaches der Ausgaben für eine HomeMatic in Anspruch nehmen würde.

Über Thomas Roschinsky
Software Engineer | .NET | SharePoint | Dynamics CRM | BI | C# | C/C++

11 Responses to HomeMatic mal ausprobiert – ein Erfahrungsbericht

  1. I'm Vati says:

    Hast Du schön geschrieben!

  2. Stephan says:

    Danke für den Bericht. Ich hab da mal eine Frage zu der XML-RPC Schnittstelle. Habe sehr viel gegoogelt, aber nichts gefunden.
    Ich rufe über einen RPCClient (node.js) die funktion init auf und Registriere mich somit bei der Zentrale.

    Die Zentrale ruft dann meine system.multicall auf. In dieser multicall verarbeite ich die Erhaltenen Informationen und mache gewisse Darstellungen. Jedoch 2 Probleme:

    1.) Die Zentrale schickt alles 2x. Mache ich irgendwo das Licht an, erhalte ich diese Information 2x über die Verbindung.
    2.) Die Zentrale schreibt bei jedem Aufruf folgendes in den Log: XmlRpc Transport Error.

    Ich vermute dass eventuell 1.) das Ergebniss durch 2 ist?

    Aber wie bekomme ich den Fehler zu 2.) Weg? Woran genau könnte das liegen?

    Danke 🙂

    • Hallo Stephan!

      Leider ist es mir ganz ähnlich ergangen. Sowohl was die tatsächlich verwertbaren Informationen zur HM-eigenen XML-RPC-Schnittstelle im Netz als auch vom Hersteller anbelangt. Eine tatsächlich sauber funktionierende, keine Fehler im Log erzeugende Implementierung der Registrierung auf Events via init()-Methode habe ich leider noch nicht gefunden. Mir würde bereits ein Mitschnitt auf Netzwerkebene genügen, um zu verstehen, was wirklich passieren (soll), um es nachbauen zu können.

      Meine Alternative war dann das Add-On „XML-API“, wobei ich, wenn es vernünftig laufen würde, lieber die Hersteller-eigene XML-RPC-Schnittstelle verwenden würde.

      Sorry, dass ich keine optimistischeren Erkenntnisse habe. 😉

      Viel Erfolg & schöne Grüße!

      • Stephan says:

        Hallo,

        Zwischenzeitlich habe ich es schon geschafft!
        Die genaue Antwort habe ich hier veröffentlich:
        http://homematic-forum.de/forum/viewtopic.php?f=44&t=25193&start=10

        Die Homematic möchte einfach eine Antwort haben. Sprich die Homematic sendet „xy Gerät neuer Status aus“ darauf will die eine Antwort haben „ok verstanden“.
        Passiert dass nicht, wird man nach 10x rausgeworfen, da die Homematic davon ausgeht, das die Gegenstelle nicht mehr da ist.
        Das was aber 99% vergessen, ist das es auch eine Länge gibt. Und genau das will die Homematic haben. Nicht nur eine antwort, sondern auch eine Länge der Nachricht „Content-Length“.

        Schon sind die Fehler weg und alles klappt. Mein Server hängt seit gestern drin und bekommt auch heute noch Notifocations.

        Ich hoffe das hilft einigen 🙂

        Gruß Stephan

    • Hallo Stephan,

      vielen Dank die Details! Von der erwarteten Antwort hatte ich tatsächlich schon mal gelesen aber der Tipp die length ebenfalls zurückzumelden klingt erfolgversprechend.

      Ich hatte mich der Bibliothek HMRemoting v0.9.2 von Sourceforge bedient. Gut möglich, dass die length hier schlicht und ergreifend vergessen wurde und mit ein paar Zeilen Code das Problem vom Tisch ist. Auf den ersten Blick sieht es schon mal ganz danach aus… 🙂

      Schöne Grüße,
      Thomas

  3. Pingback: Frohes Fest! | Thomas Roschinsky

  4. Franz says:

    Hallo,

    Hammer-Artikel! Was benutzt du denn da für ein Webinterface für die Homematic, was auf dem Screenshot zu sehen ist? Ist das nur für den Statusüberblick oder kann man darüber auch schalten? Wo gibt es das zum Download?

    Danke + Gruß, Franz

    • Hallo Franz,
      besten Dank – freut mich!
      Das Webinterface ist eine Eigenentwicklung, konfigurierbar über eine XML-Struktur, mit Drei-Zonen Zugriffsstufen (siehe Artikel „Home Access Center“ in meinem Blog) und steuerbaren einfachen Schalt-Aktoren bzw. Slidern für Dimmer-Aktoren. Aktuell gibt es die Anwendung (noch?) nicht zum Download – sie war nie wirklich für einen öffentlichen Release vorgesehen.
      Schöne Grüße,
      Thomas

  5. Markus Kargl says:

    Hallo

    Zum ersten hammer das du eine Libary gebaut hast, hat mir einige denkanstöße gegeben!!!

    Hast du die libary nicht zufällig als dll datei, da ich sie nicht ohne fehler kompilieren kann, und ich aber für ein anderes Programm sie als dll benötige?

    Schöne Grüße
    Kargl

Hinterlasse eine Antwort zu Thomas Roschinsky Antwort abbrechen