Smart Home – openHAB 2 Enigma2 Integration
Dieser Beitrag beschreibt wie ihr in openHAB 2 Enigma2 Boxen wie z.B. eine VU, Octagon, Xtrend oder Gigablue integriert. Es wird Schritt für Schritt beschrieben wie ihr Kommandos wie z.B. Stumm schalten oder andere an die Enigma Box sendet. Weiterhin wird beschrieben wie aktuelle Informationen angezeigt werden z.B. aktueller Sender oder aktuelles Programm. Als weiteren Integrationspunkt erfahrt ihr wie Ihr eine Meldung an die Box sendet, so dass ihr z.B. über wichtige Informationen aus Eurem Smart Home direkt im Bilde seid. Das ganze funktioniert per HTTP Binding und und RegEx Transformation. Einzige Voraussetzung für die Box ist ein Betriebssystem mit openWebIf. Ich nutze auf meiner Box noch openATV 4.2. Die Version ist zwar alt aber läuft bei mir super zuverlässig und daher gibt es für mich keine Grund ein Update zu machen.
Smart Home – openHAB 2 Enigma2 Hardware
Wie bereits angedeutet könnt ihr im Grunde jede Enigma2 Box steuern. Ich habe mich vor einiger Zeit mal auf die Suche nach einer guten Enigma2 Box gemacht. Folgende Boxen kamen in die engere Auswahl. Ich finde die Boxen immer noch sehr gut.
Enigma2 Box DVB-S2 (SAT)
Enigma2 Box DVB C/T2 (Kabel/Antenne)
Ich persönlich habe mich für eine Gigablue HD Quad Plus entschieden. Das Modell ohne Festplatte reicht eventuell auch, da ihr auch direkt auf eine NAS aufnehmen könnt. Ich betreibe die Gigablue an einer Synology Diskstation und dies läuft sehr zuverlässig und die Aufnahmen stehen so direkt im Netzwerk zur Verfügung. Auf den folgenden Boxen könntet ihr auch direkt openHAB installieren.
Synology Diskstation
openHAB 2 Enigma2 – Paper UI Binding und Transformation
openHAB 2 Enigma2 Konfiguration – HTTP Binding
Ihr installiert als erstes das HTTP Binding über die Paper UI. Ruft Extensions und Bindings auf.
http://localhost:8080/ui/index.html#/extensions
Im Anschluss installiert das Binding mit einen Klick auf Install neben dem Binding. Hat alles geklappt, sieht es wie folgt aus.
openHAB 2 Enigma2 Konfiguration – RegEx Transformation
Klickt nun auf auf Transformations und installiert weiterhin die RegEx Transformation.
openHAB 2 Enigma2 Konfiguration – SmartHome Designer
Zur Steuerung über openHAB 2 benötigen wir nun entsprechende Items, die Anpassung der Sitemap und Regeln.
openHAB 2 Enigma2 – SmartHome Designer Item
Legt am besten wieder eine in Eurer Items Konfiguration eine Gruppe an, in der ihr die Funktionen bündelt.
Group Gigablue
Im Anschluss definiert ihr die Items. Die ersten beiden Items holen per HTTP Request und RegEx Transformation die Informationen aus OpenWebIf. Hier gibt es sehr viele Möglichkeiten auf Informationen aus der Enigma2 Box zuzugreifen. Unter folgendem Link findet ihr eine gute Referenz zum Webinterface. Das zweite Item löst eine Regel aus, die später erklärt wird.
/* Gigablue HD Quad */ String GB_Sendung "Aktuelle Sendung [%s]" <projector_benq> ( Gigablue ) { http="<[http://<ENIGMA_BOX_IP>:<PORT>/web/getcurrent:3000:REGEX(.*?<e2eventname>(.*?)</e2eventname>.*)]" } String GB_Kanal "Sender [%s]" <projector_benq> ( Gigablue ) { http="<[http://<ENIGMA_BOX_IP>:<PORT>/web/getcurrent:3000:REGEX(.*?<e2servicename>(.*?)</e2servicename>.*)]" } Switch GB_sendMute "Mute" <soundvolume_mute> ( Gigablue )
Doch was passiert hier in den ersten beiden Items?
- Der erste Teil ist der HTTP Request über das HTTP Binding { http=“<[]“ } führt das HTTP Binding aus und liefert den Wert (<) der URL in den eckigen Klammern an das Item zurück
- http://<ENIGMA_BOX_IP>:<PORT>/web/getcurrent ist die eigentliche URL, die einen XML formatierten Text aus OpenWebIf zieht.
- der folgende Teil „:3000:REGEX(.*?<e2eventname>(.*?)</e2eventname>.*)“ ist erst mal sehr kryptisch und nicht gerade selbsterklärend. Diese Passage sorgt dafür, dass per RegEx Transformation der entsprechende Inhalt aus der XML extrahiert und an das Item als Wert übergeben wird.
<?xml version="1.0" encoding="utf-8"?> <e2volume> <e2result>True</e2result> <e2resulttext>state</e2resulttext> <e2current>5</e2current> <e2ismuted>False</e2ismuted> </e2volume>
Nun besteht die Möglichkeit die Werte aus der XML Struktur herauszulesen. Hierfür wird der Text aus dem Element gelesen, in dem ihr die entsprechende Syntax eingebt. Wollen wir z.B. den Status „Stumm“ in openHAB anzeigen, würden wir folgenden Syntax verwenden.
<e2ismuted>(.*?)</e2ismuted>
Dies sorgt dafür, dass der gesamte Inhalt zwischen <e2ismuted> und </e2ismuted> gelesen wird. Die Syntax ist nicht ganz einfach aber logisch aufgebaut. Folgende Hilfestellungen kann ich Euch empfehlen. Im Wiki zum Thema Regulärer Ausdruck findet ihr allgemeine Informationen zum Thema. Auf der Seite RegEx 101 ist ein sehr nütlziches Tool zum Testen Eurer Abfragen. Hier gibt es auch Beispiele.
Geht im Tool wie folgt vor.
- Wählt auf der rechten Seite bei Flavor den Punkt pyhton aus. Dies erspart sogenannte Escapezeichen, die ihr beim Beispiel oben für den Slash verwendet müsst, wenn ihr nicht umstellt.
- Tragt den RegEx Ausdruck ein. In unserem Fall:
<e2ismuted>(.*?)</e2ismuted>
- Tragt den RegEx Text ein, aus dem ihr lesen wollt.
<?xml version="1.0" encoding="utf-8"?> <e2volume> <e2result>True</e2result> <e2resulttext>state</e2resulttext> <e2current>5</e2current> <e2ismuted>False</e2ismuted> </e2volume><br>
- Schaut Euch das Ergebnis an. Hier seht ihr das Ergebnis in den Klammern als Group 1. Die Engima2 Box wäre in diesem Fall nicht Stumm (ismuted = False)
Full match 148-176 `<e2ismuted>False</e2ismuted>` Group 1. 159-164 `False`
openHAB 2 Enigma2 – SmartHome Designer Sitemap
Bindet innerhalb eines Frames in Eurer Sitemap nun die Gruppe ein.
Group item=Gigablue label="Gigablue" icon="projector_benq"
Sobald ihr dies getan habt seht ihr auch schon die Items innerhalb der Gruppe mit den entsprechenden Werten, wenn Eure Enigma2 Box angeschaltet ist.
openHAB 2 Enigma2 – SmartHome Designer Regel
In den nächsten beiden Kapitel wird eine Regel zum Senden eines Kommandos und zum Senden einer Nachricht definiert.
openHAB 2 Enigma2 Regel – Kommando senden
Unten seht ihr die Regel für das dritte Item GB_sendMute. Immer wenn dieses Item ein Kommando erhält, wird die Regel ausgeführt. Wenn das Kommando ON (case ON 🙂 oder OFF (case OFF 🙂 ist, wird das HTTP Reguest sendHttpGetRequest(„http://192.168.0.219:219/web/vol?set=mute“) gesendet. Dies sorgt nun dafür, dass Eure Enigma2 Box stumm geschaltet wird. Es ist in beiden Fällen das gleiche HTTP Request. So wird zwischen stumm / nicht stumm umgeschaltet, sobald der Schalter in der Sitemap betätigt wird.
rule "GB_Mute" when Item GB_sendMute received command then switch(receivedCommand) { case ON : sendHttpGetRequest("http://192.168.0.219:219/web/vol?set=mute") case OFF : sendHttpGetRequest("http://192.168.0.219:219/web/vol?set=mute") } end
openHAB 2 Enigma2 Regel – Sprachsteuerung
Folgendes Video demonstriert die Steuerung einiger Befehle per Sprachsteuerung. Wie ihr die Sprachsteuerung realisiert lest ihr im Beitrag Smart Home – openHAB 2 Sprachsteuerung Konfiguration.
Zur Steuerung der Enigma 2 Box per Sprache openHAB nutz z.B. folgendes Item.
Switch gb_erstes "Das Erste" <soundvolume_mute> ( gEGWZ ) [ "Lighting" ]
Nun hinterlegt ihr noch eine entsprechende Regel.
rule "DasErste" when Item gb_erstes received command then switch(receivedCommand) { case ON : sendHttpGetRequest("http://<IP_ENGIMA_BOX>:<PORT>/web/remotecontrol?command=2") } end
Sobald das Item einen Befehl erhält, wird die Regel ausgeführt. Wird das Kommando AN empfangen, schalte ich per HTTP Request die Box um. So könnt ihr Eure Box komplett per Sprache steuern.
openHAB 2 Enigma2 Regel – Nachricht senden
Auch für das Senden einer Nachricht verwenden wir eine Regel. Ich habe mir hier Folgendes überlegt. Wenn ich entspannt und vertieft vor der Glotze sitze, kriege ich nicht mit, wenn jemand kommt. Daher wird überprüft, ob der Bewegungsmelder auf der Einfahrt auslöst. Wenn dies der Fall ist, sende ich eine entsprechende Nachricht an die Box und sehe es auf dem Fernseher. Über eine Webcam kann ich mir dann überlegen, ob der Weg zur Tür lohnt. =)
rule "GB_Nachricht_Besuch_kommt" when Item BWM_Einfahrt received update then sendHttpGetRequest("http://192.168.0.219:219/web/message?text=Es%20kommt%20Besuch!&type=1&timeout=3") end
Euch gefällt der Blog? Ich freue mich, wenn ihr für den Blog abstimmt. Unten sind ein Paar links zu Blog – Verzeichnissen. Danke und bis bald.