Smart Home – openHAB 2 Enigma2 Integration

Werbung
Hinweis: Diese Seite enthält Werbelinks

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-engima2-http-binding

 

openHAB 2 Enigma2 Konfiguration – RegEx Transformation

Klickt nun auf auf Transformations und installiert weiterhin die RegEx Transformation.

openhab-2-engima2-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.
Zur besseren Erklärung gibt es ein kleineres Beispiel. Wird die URL http://<ENIGMA_BOX_IP>:<PORT>/web/vol aufgerufen, so erhaltet ihr gemäß Referenz zum Webinterface folgenden XML Text.
<?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.

openhab-2-engima2-regex-interpreter

  1. 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.
  2. Tragt den RegEx Ausdruck ein. In unserem Fall:
    <e2ismuted>(.*?)</e2ismuted>
  3. 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>
  4. 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-engima2-items

 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.

 

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

PGlmcmFtZSB3aWR0aD0iODQwIiBoZWlnaHQ9IjQ3MyIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC9RUTc3aFFueWxVST9mZWF0dXJlPW9lbWJlZCIgZnJhbWVib3JkZXI9IjAiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4=

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.

Noch ein Tipp, der von Jörg kommt. Er musste bei seiner Box noch den User und das Passwort mitgeben. Solltet ihr Probleme haben, versucht es daher mit der Ergänzung in der Adresse wie folgt.http://root:passwort@192.168.xxx.xxx:80/…

 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.

Smarthome Training and Tutorials
Logo