Homematic in Loxone integrieren

Homematic ist das vollwertige Smarthome System des Herstellers eQ3 aus Leer. Das System bietet eine sehr große Auswahl an Komponenten, die per Funk ins Smarthome integriert werden können. Einige Komponenten können im Schaltschrank auch per Kabel ins System eingebunden werden, der Fokus liegt aber ganz klar auf der Anbindung per Funk. Zu fast jedem Themengebiet bietet der Hersteller entsprechende Aktoren und Sensoren an (laut Hersteller mehr als 80 unterschiedliche Komponenten). Hierzu zählen z. B. Fensterkontakte, Bewegungsmelder, Thermostatventile, Funksteckdosen, Unterputzaktoren, Raumthermostate, Wettersensoren usw. Die enorme Auswahl an zur Verfügung stehenden Komponenten macht das System perfekt für Nachrüster und ideal zur Ergänzung einer bestehenden (kabelbasierten) Installation.

Über die Homematic Zentrale CCU2 lassen sich diese Komponenten sehr leicht und zudem vollwertig in ein Loxone-System integrieren. Hierbei können sowohl Aktoren angesteuert als auch Sensoren ausgelesen werden. Dieses geschieht ohne merkliche Verzögerung. Das macht das System als Alternative zur Loxone eigenen Air-Technologie interessant - insbesondere auf Grund der großen Anzahl an verfügbaren Komponenten und auf Grund des sehr attraktiven Preis-/Leistungsverhältnisses der Homematic-Komponenten.

Funk-Technologie

Homematic verwendet das 868 Mhz Funkband. Dadurch wird laut Hersteller eine hohe Reichweite mit großer Störsicherheit kombiniert. Zudem kommunizieren alle Homematic-Komponenten bidirektional, d. h. der Empfänger bestätigt jeden empfangenen Befehl. Dadurch wird eine hohe Zuverlässigkeit erreicht und zudem ist der Zustand jeder Komponente zu jeder Zeit eindeutig. Eine Mesh-Technologie analog der Loxone Air Technologie bietet Homematic nicht. Dafür kann die Reichweite des Netzes aber mit LAN-Gateways fast beliebig erweitert werden, sodass auch sehr große Installationen problemlos abgedeckt werden können. Für den Innenbereich eines Einfamilienhauses ist das aber - bei geschickter Standortwahl der CCU2-Zentrale - in der Regel nicht notwendig.

Die Funkübertragung wird laut Hersteller per Advanced Encryption Standard (AES) mit einer Schlüsselstärke von 128 Bit verschlüsselt. Die AES Verschlüsselungstechnologie gilt als äußerst sicher. Bis heute ist kein praktisch relevanter Angriff auf die Versschlüsselung bekannt.

Viele Homematickomponenten werden per Batterie bestrieben. Laut Hersteller sind diese Komponenten auf minimalsten Energieverbrauch optimiert worden, so dass Batterien in der Regel 2 Jahre halten sollen. Eine Technologie zur Eigenstromversrogung der Komponenten, wie sie bei Enocean teilweise zum Einsatz kommen (Solarzellen bei Fensterkontakten oder Stromerzeugung per Piezo in Tastern) bietet Homematic nicht.

Vorbereitung der Homematic Zentrale CCU2

Hardware

Neben den eigentlichen Aktoren oder Sensoren benötigt man zur Anbindung der Homematic-Komponenten an die Loxone die Homematic Zentrale CCU2. Diese kommuniziert mit allen Homematic-Komponenten. Die CCU2 und der Miniserver wiederum kommunizieren über LAN per HTTP-Protokoll miteinander.

Die CCU2 muss zunächst eingerichtet werden. Anschließend müssen alle Homematic-Komponenten an der CCU2 angelernt werden. Die Details dazu können der Homematic Bedienungsanletiung entnommen werden. Im Netz finden sich ebenfalls einige HowTos dazu - so schwer ist das Ganze aber auch nicht... Ich gehe hier nicht näher darauf ein.

Software

Damit die CCU2 und der Loxone Miniserver miteinander kommunizieren können müssen auf der CCU2 zwei AddOns installiert werden:

Beide AddOns sind kostenlos erhältlich. Der CUx-Daemon wird verwendet, um Werte oder Statusänderungen von Homematic-Sensoren an den Miniserver zu senden, die XML-API wird benötigt um Homematic-Aktoren vom Miniserver aus zu schalten sowie auch einige Sensoren auszulesen.

Nachdem die beiden Pakete heruntergeladen wurden, werden sie auf der CCU2 über Einstellungen → Systemsteuerung → Zusatzsoftware installiert.

Der CUx-Daemon muss nun noch konfiguriert werden. Ursprünglich wurde diese Software zur USB-Anbindung von CUL- bzw. CUN-Sticks von Busware.de genutzt (daher der Name), mittlerweile bietet er aber auch eine universelle (Software-)Schnittstelle zu anderen externen Systemen. Genau diese Schnittstelle nutzen wir zur Anbindung der Homematic an den Loxone Miniserver.

Zur Konfiguration öffnen wir die CUxD Konfigurationsseite über http://IP-CCU2/addons/cuxd oder Systemsteuerung → CUx Daemon. Auf der CUxD Konfigurationsseite dann auf den Button Geräte klicken und auf der linken Seite im Dropdown Menü (28) System und Funktion Exec wählen. Alles andere belassen wir beim Standard (das Gerät dient nur als Dummy) und beenden den Dialog mit Gerät auf CCU erzeugen.

  

 

Jetzt wechseln wir zurück auf die Seite der Zentrale und gehen auf Geräte anlernen. Im Posteingang sollte dann ein Gerät mit einer Seriennummer wie z. B. CUX2801001 liegen, welches als Dummy für die System Exec Befehle dient, die wir später zur Anbindung an die Loxone benötigen. Die Seriennummer benötigen wir später noch bei der weiteren Einrichtung.

Anbindung von Sensoren

Digitale Sensoren / Zustände

Für jeden digitalen Homematic-Sensor (also z. B. einen Taster, einen Fensterkontakt, einen BWM etc.) oder z. B. des Batteriezustands jeder Homematic-Komponente (Leer/Voll) wird in Loxone Config zunächst ein neuer Virtueller Eingang angelegt und dieser als Digitaleingang konfiguriert. Den Anschlussnamen (z. B. VI1) merken wir uns - wir benötigen diesen gleich noch einmal.

 

  

In der Homematic-Zentrale unter Programme & Verknüpfungen → Programme & Zentralenverknüpfung → Neu legen wir nun wie folgt ein neues Programm an:

  

 

Damit wird z. B. bei einem Tastendruck das Skript unter "Aktivität: Dann..." ausgeführt und anschließend (beim Loslassen) das Skript unter "Aktivität: Sonst..." ausgeführt. Die Skript-Inhalte sehen wie folgt aus:

 

Aktivität: Dann...
string url="http://LoxoneUser:LoxonePassword@192.168.0.123/dev/sps/io/VI1/Ein";
dom.GetObject("CUxD.CUX28nnnnn:1.CMD_EXEC").State( "wget -q -O - '"#url#"'");
Aktivität: Sonst...
string url="http://LoxoneUser:LoxonePassword@192.168.0.123/dev/sps/io/VI1/Aus";
dom.GetObject("CUxD.CUX28nnnnn:1.CMD_EXEC").State( "wget -q -O - '"#url#"'");

 

Die URL muss im Skript noch angepasst werden: User, Passwort und IP-Adresse des Miniservers sowie der Anschluss-Name des Virtuellen Eingangs auf Loxone-Seite. Im dom.GetObject-Befehl muss noch die Seriennummer des virtuellen CUx-Daemon-Gerätes angepasst werden (siehe oben).

Man sieht, dass bei Aktivität der Virtuelle Eingang auf "Ein" gesetzt wird und bei Nicht-Aktivität wieder auf "Aus". Die URLs kann man natürlich zum Testen auch direkt im Browser eingeben. Alternativ kann man das Skript unter "Aktivität: Sonst..." auch weglassen und als URL im Skript "Aktivität: Dann" anstelle von "Ein" auch "Impuls" verwenden - in diesem Fall sieht das Skript wie folgt aus:

 

Aktivität: Dann...
string url="http://LoxoneUser:LoxonePassword@192.168.0.123/dev/sps/io/VI1/Impuls";
dom.GetObject("CUxD.CUX28nnnnn:1.CMD_EXEC").State( "wget -q -O - '"#url#"'");

 

Ob man zwei Skripte mit "Ein" und "Aus" verwendet oder nur ein Skript mit "Impuls" muss man von der eigenen Anwendung abhängig machen.

Analoge Sensoren

Zur Übertragung von Analogwerten gibt es 2 Möglichkeiten, je nachdem ob der Analogwert direkt von der Programmlogik der Homematic verwendet werden kann oder der Zugriff nur indirekt möglich ist.

Variante 1: Direkter Zugriff auf den Analogwert per Homematic-Programm-Logik (Vorzugsvariante)

Wenn der Analogwert in der Programmierlogik der Homematic zur Verfügung steht, sollte diese Variante verwendet werden. Sie hat den Vorteil, dass ein neuer Wert nur bei einer Änderung des Analogwertes aktiv von der Homematic an den Miniserver gesendet wird.

Für jeden analogen Homematic-Sensor (also z. B. der Helligkeitswert eines Bewegungsmelders oder ein Temperaturwert etc.) wird in Loxone Config zunächst ein neuer Virtueller Eingang angelegt und dieser als Analogeingang konfiguriert. Den Anschlussnamen (z. B. VI1) merken wir uns - wir benötigen diesen gleich noch einmal. Nicht vergessen einen ausreichend großen Bereich unter Validierung einzutragen und unter "Einheit" die Nachkommastellen und die Einheit zu konfigurieren.

 


 

Mit Hilfe der XML-API muss man nun den internen Namen, den die Homematic-Zentrale für den Analogwert verwendet, herausfinden. Dazu ruft man folgende URL auf, die alle Geräte und Kanäle mit deren Werten auflistet. Man findet alle URLs der XML-API auch über Einstellungen → Systemsteuerung → Zusatzsoftware → XML-API → Einstellen

 

http://IP-CCU2/addons/xmlapi/statelist.cgi

 

In dem etwas unübersichtlichen XML-File sucht man das Gerät (Channel) und den Datapoint des Analogwertes, den man von dem Gerät verwenden möchte. Die Seriennummer der Homematic-Komponente bietet eine ganz gute Orientierung. Diese kann man über <Strg>+F auch im Browser suchen. Ein vollständiger Eintrag eines Bewegungsmelders sieht z. B. wie folgt aus:

 

<channel name="HmIP-SMI 000XXXXXXFD:1" ise_id="2232" visible="true" operate="true">
<datapoint name="HmIP-RF.000XXXXXXFD:1.ILLUMINATION" type="ILLUMINATION" ise_id="2233" value="4.700000" valuetype="4" valueunit="" timestamp="1485205742" operations="5"/>
<datapoint name="HmIP-RF.000XXXXXXFD:1.MOTION" type="MOTION" ise_id="2234" value="false" valuetype="2" valueunit="" timestamp="1485205742" operations="5"/>
<datapoint name="HmIP-RF.000XXXXXXFD:1.MOTION_DETECTION_ACTIVE" type="MOTION_DETECTION_ACTIVE" ise_id="2235" value="true" valuetype="2" valueunit="" timestamp="1485205742"operations="7"/>
<datapoint name="HmIP-RF.000XXXXXXFD:1.RESET_MOTION" type="RESET_MOTION" ise_id="2236" value="" valuetype="2" valueunit="" timestamp="0" operations="2"/>
</channel>

 

Wir interessieren uns für den Helligkeitswert (HmIP-RF.000XXXXXXFD:1.ILLUMINATION) - in diesem Beispiel mit dem aktuellen Wert 4,700000. Den Datapoint-Namen benötigen wir gleich. In der Homematic-Zentrale unter Programme & Verknüpfungen → Programme & Zentralenverknüpfung → Neu legen wir nun wie folgt ein neues Programm an:

  

 

Damit wird bei einer Änderung des Helligkeitswerts das Skript unter "Aktivität: Dann..." ausgeführt. Das Skript sieht wie folgt aus:

 

Aktivität: Dann...
var source = dom.GetObject("HmIP-RF.000xxxxxxFD:1.ILLUMINATION").Value();
string url="http://LoxoneUser:LoxonePassword@192.168.0.123/dev/sps/io/VI1/" # source;
dom.GetObject("CUxD.CUX28nnnnn:1.CMD_EXEC").State( "wget -q -O - '"#url#"'");

 

Die URL muss im Skript noch angepasst werden: User, Passwort und IP-Adresse des Miniservers sowie der Anschluss-Name des Virtuellen Eingangs auf Loxone-Seite. Im dom.GetObject-Befehl muss noch die Seriennummer des virtuellen CUx-Daemon-Gerätes angepasst werden (siehe oben).

Man sieht, dass bei Aktivität der Virtuelle Eingang auf den aktuellen Wert des Analog-Sensors gesetzt wird.

Variante 2: Indirekter Zugriff auf den Analogwert

Diese Variante ruft den Analogwert per Virtuellem HTTP-Eingang von der Loxone ab. Das hat den Nachteil, dass der Wert auch abgerufen wird (und damit Miniserver und CCU2 belastet werden) wenn er sich vielleicht gar nicht geändert hat. Daher ist Variante 1 zu bevorzugen (wenn möglich).

Mit Hilfe der XML-API muss man die ID, die die Homematic-Zentrale für den Analogwert verwendet, herausfinden. Dazu ruft man folgende URL auf, die alle Geräte und Kanäle mit deren Werten auflistet. Man findet alle URLs der XML-API auch über Einstellungen → Systemsteuerung → Zusatzsoftware → XML-API → Einstellen

 

http://IP-CCU2/addons/xmlapi/statelist.cgi

 

In dem etwas unübersichtlichen XML-File sucht man das Gerät (Channel) und den Datapoint des Analogwertes, den man von dem Gerät verwenden möchte. Die Seriennummer der Homematic-Komponente bietet eine ganz gute Orientierung. Diese kann man über <Strg>+F auch im Browser suchen. Wir benötigen die eindeutige ise_id des Analogwertes. In obigem Beispiel unter Variante 1 wäre das für den Helligkeitswert die ise_id 2233.

Über folgende URL kann man den Wert per HTTP abrufen:

 

http://IP-CCU2/addons/xmlapi/state.cgi?datapoint_id=2233

 

Möchte man mit dem HTTP-Eingang gleich mehrere Werte auslesen, so trennt man diese einfach mit einem Komma. Unter Loxone Config legen wir nun einen Virtuellen HTTP Eingang an und verwenden obige URL für den Abruf:

 

 

Unterhalb des Virtuellen HTTP Eingangs legen wir nun noch einen Virtuellen Eingangs Befehl an und verwenden als Befehlskennung: ise_id='2233' value='\v Der Rest des Eingangsbefehls (z. B. die zu verwendende Einheit etc.) muss natürlich auch noch konfiguriert werden.

 

Schaut man sich den URL-Aufruf im Browser an, so werden in der XML-Ausgabe des Browsers doppelte Anführungsstriche verwendet! Von der Homematic werden aber einfache Anführungsstriche ' ' ausgegeben der Browser konvertiert diese bei der XML-Anzeige jedoch in doppelte Anführungszeichen " "! Das könnt ihr kontrollieren, in dem ihr Euch mit der rechten Maustaste den Seitenquelltext im Browser anzeigen lasst.

Die Befehlserkennung in LoxoneConfig muss die originalen (d. h. einfachen) Anführungszeichen enthalten!

 

 

Anbindung von Aktoren

Digitale Aktoren

Ein Aktor wird auf Seite der Loxone per Virtuellem Ausgang geschaltet. Mit Hilfe der XML-API muss man zunächst die ID, die die Homematic-Zentrale für den Aktor verwendet, herausfinden. Dazu ruft man folgende URL auf, die alle Geräte und Kanäle mit deren Werten auflistet. Man findet alle URLs der XML-API auch über Einstellungen → Systemsteuerung → Zusatzsoftware → XML-API → Einstellen

 

http://IP-CCU2/addons/xmlapi/statelist.cgi

 

In dem etwas unübersichtlichen XML-File sucht man das Gerät (Channel) und den Datapoint des Aktors, den man per Loxone setzen möchte. Die Seriennummer der Homematic-Komponente bietet eine ganz gute Orientierung. Diese kann man über <Strg>+F auch im Browser suchen. Wir benötigen die eindeutige ise_id des Aktors. Ein Eintrag eines Heizungsthermostats sieht z. B. wie folgt aus:

 

<channel name="HM-CC-RT-DN NEQ1xxxxxx:4" ise_id="2828" visible="true" operate="true">
<datapoint name="BidCos-RF.NEQ1xxxxxx:4.CONTROL_MODE" type="CONTROL_MODE" ise_id="2835" value="1" valuetype="16" valueunit="" timestamp="1485292093" operations="5"/>
<datapoint name="BidCos-RF.NEQ1xxxxxx:4.FAULT_REPORTING" type="FAULT_REPORTING" ise_id="2836" value="0" valuetype="16" valueunit="" timestamp="1485292093" operations="5"/>
<datapoint name="BidCos-RF.NEQ1xxxxxx:4.BATTERY_STATE" type="BATTERY_STATE" ise_id="2831" value="2.700000" valuetype="4" valueunit="V" timestamp="1485292093" operations="5"/>
<datapoint name="BidCos-RF.NEQ1xxxxxx:4.VALVE_STATE" type="VALVE_STATE" ise_id="2871" value="0" valuetype="16" valueunit="%" timestamp="1485292093" operations="5"/>
<datapoint name="BidCos-RF.NEQ1xxxxxx:4.BOOST_STATE" type="BOOST_STATE" ise_id="2833" value="0" valuetype="16" valueunit="min" timestamp="1485292093" operations="5"/>
<datapoint name="BidCos-RF.NEQ1xxxxxx:4.ACTUAL_TEMPERATURE" type="ACTUAL_TEMPERATURE" ise_id="2829" value="18.300000" valuetype="4" valueunit="°C" timestamp="1485292093"operations="5"/>
[...]

 

Als Beispiel möchten wir den Boost-Mode vom Miniserver aus aktivieren (BOOST_STATE). Der Boost-Mode hat die ise_id 2833. Dieser Wert muss auf 1 gesetzt werden um den Aktor (Boost-Mode) zu aktivieren. Über folgende URL kann man den Wert per HTTP setzen:

 

http://IP-CCU2/addons/xmlapi/statechange.cgi?ise_id=2833&new_value=1

 

Deaktiviert wird der Wert wieder, in dem man ihn mit dem gleichen Aufruf wieder auf 0 setzt:

 

http://IP-CCU2/addons/xmlapi/statechange.cgi?ise_id=2833&new_value=0

 

Ist man sich nicht sicher, welche Werte überhaupt gesetzt werden können, so sollte man den Aktor entsprechend in der Homematic über Status und Bedienung → Geräte schalten und jeweils über die URL http://IP-CCU2/addons/xmlapi/statelist.cgi im Browser überprüfen, welcher Wert des Aktors sich wie ändert.

Unter Loxone Config legen wir nun einen Virtuellen Ausgang an. Als Adresse verwenden wir die IP-Adresse der Homematic CCU2:

 

 

Anschließend legen wir unterhalb des neuen Virtuellen Ausgangs einen Virtuellen Ausgang Befehl an. Für Befehl bei EIN verwenden wir die URL, mit der wir den Aktor einschalten und für Befehl bei AUS verwenden wir den URL-Aufruf, der den Aktor wieder ausschaltet:

 

 

Analoge Aktoren

Hat man einen analogen Aktor, der z. B. die Vorgabe einer Solltemperatur oder die exakte Stellung eines Ventils bietet, so richtet man diesen genauso ein wie einen digitalen Aktor (siehe oben), allerdings verwendet man beim Virtuellen Ausgang Befehl nur den Befehl bei EIN. Als Value verwendet man im URL-Aufruf <v>. Zudem muss Als Digitalausgang verwenden deaktiviert werden.

 

 

Verwandte Artikel