Smart Home – openHAB 2 Harmony Sprachsteuerung
In diesem Beitrag geht es um die Sprachsteuerung Eurer alten Geräte mittels Logitech Harmony Hub. Wir können also von einer openHAB 2 Harmony Sprachsteuerung sprechen. Das wirklich geniale hierbei ist, dass ich nun nicht nur meine Enigma Box über Sprache bedienen kann. Es ist nun auch möglich meinen ollen Toshiba, meine Logitech Z5500 und die Playstation 3 über Sprache zu bedienen.
Wie das ganze in Aktion aussieht, seht ihr in folgendem Video.
openHAB 2 – Harmony Sprachsteuerung – Konfiguration
Ihr benötigt mehrere Schritte zur Steuerung Eurer alten Geräte mittels Sprache.
- Installation des openHAB Server auf Windows oder eine Installation auf einem Raspberry Pi
- Zur Einbindung des Harmony Hub und Eurer alten Geräte folgt in einfach dem Beitrag Smart Home – openHAB 2 Harmony Hub Integration.
- Weiterhin installiert ihr den Hue Emulation Service. Dies wird im Beitrag Integration der Sprachsteuerung mittels Amazon Alexa genauer beschrieben.
openHAB 2 – Harmony Sprachsteuerung – Hardware
Ihr benötigt also die folgenden Komponenten zur Realisierung.
Zum einen wird ein Raspberry Pi benötigt. Dieser ist günstig im Set zu bekommen.
Weiterhin braucht ihr den Harmony Hub.
Eine gute Alternative, falls ihr auch per Fernbedienung einiges steuern wollt ist die Harmony Elite. Hier ist ein Hub dabei und ihr bekommt eine super Fernbedienung dazu.
Und natürlich braucht ihr einen Amazon Echo Dot.
Alles in allem kostet die Umsetzung also um die 150 – 200 € (ohne Elite). Aber dafür alle alten Geräte mittels Sprache steuern? Genial und für mich jeden Cent wert!
openHAB 2 – Harmony Sprachsteuerung – Item Konfiguration
Wurde sowohl das Binding als auch der Hue Emulation Service installiert, geht es an die Konfiguration der Items. Dies ist releativ simpel. Ihr müsst die Kanäle mit dem Tag für die Sprachsteuerung kombinieren.
Ihr sucht Euch daher als erstes den Kanal aus, der den Knopf der Fernbedienung emuliert. Geht hierfür in Eure Thing Konfiguration und öffnet das entsprechende Geräte.
http://<openHABIP:PORT>/paperui/index.html#/configuration/things
Legt Euch mit dem Channel ein entsprechende Item und vergebt auch gleich das Tag Switchable für die Sprachsteuerung. Dies macht ihr für jedes Thing, welches ihr per Sprache steuern möchtet. Vergesst auch die Aktivität nicht. In meinem Beispiel wähle ich die Aktion und meinen Toshiba TV.
//--> Harmony Hub // Aktionen String harmony_hub_ps3 "Playstation 3" (gHarmony) { channel="harmonyhub:hub:HarmonyHub:currentActivity" } //Geräte String harmony_tv "Toshiba TV" (gHarmony) { channel="harmonyhub:device:HarmonyHub:43395493:buttonPress" }
Nun ergänzt ihr noch entsprechende Items für die Sprachsteuerung. Ihr nehmt für jeden Befehl ein Switch Item, welches ihr gleich mit dem entsprechenden Tag für die Sprachsteuerung verseht. Ich wähle hier ein allgemeines Item „Harmony Aktion“ zum ausschalten aller Aktionen. Weiterhin die „Playstation Aktion“ zum anschalten meiner Playstation. Weiterhin möchte ich meinen Fernseher per Sprache an-/ausschalten und die Eingänge HDMI1 und HDMI2 schalten. Hierfür ergänze ich die folgenden Items.
//--> Harmony Hub // Aktionen Switch harmony_hub_act "Harmony Aktion" (gHarmony) [ "Switchable" ] Switch harmony_hub_ps3_act "Playstation Aktion" (gHarmony) [ "Switchable" ] //Geräte Switch harmony_tv_power "Fernseher" (gHarmony) [ "Switchable" ] Switch harmony_tv_eingang_hdmi1 "Hademi Eins" (gHarmony) [ "Switchable" ] Switch harmony_tv_eingang_hdmi2 "Hademi Zwei" (gHarmony) [ "Switchable" ]
Was fällt Euch auf? Richtig, die Items habe gar keine Verknüpfung zu einem Binding. Die Schaltung erfolgt hier über entsprechende Regeln.
openHAB 2 – Harmony Sprachsteuerung – Regel Konfiguration
Bei der Erstellung der Regel ist die größte Herausforderung zu verstehen, wo ihr die Werte für die Schaltung herbekommt. Dies macht ihr über die REST Dokumentation. Ist dies noch nicht installiert, nehmt dies über die Paper UI unter Addons -> Misc vor.
Im Anschluss ruft die REST Dokumentation auf:
http://<openHAB_IP>/doc/index.html
In der REST Dokumentation wählt unter channel-types klickt auf /channel-types/{channelTypeUID} (1), gebt den Namen des Kanal an (2). Diesen bekommt ihr aus dem Thing in der Paper UI. Drückt zum Schluss Try it Out (3)
Etwas weiter unten erhaltet ihr die Werte im Bereich Response Body.
Wie ihr hier per Zoom erkennen könnt (oder auch nicht=), gibt es ein Label und ein Value. Nehmt immer den Wert bei Value. Dieser ist der richtige. Nun erstellt eine entsprechende Regel. Hier die Beispielregeln für die oben dargestellten Items. Die Regel sind alle sehr ähnlich aufgebaut. In der When Bedingung steht das Switch Item, welches per Sprache ausgelöst wird. In der Then Bedingung wird der entsprechende Wert an das Harmony Hub Item übergeben.
/**********************************************************************************/ /***************************** Amazon Alexa Rules *********************************/ /**********************************************************************************/ rule "Aktion" when Item harmony_hub_act received command then switch(receivedCommand) { case OFF : harmony_hub_ps3.sendCommand("PowerOff") } end rule "Playstation Aktion" when Item harmony_hub_ps3_act received command then switch(receivedCommand) { case ON : harmony_hub_ps3.sendCommand("Wiedergabe PS3") case OFF : harmony_hub_ps3.sendCommand("PowerOff") } end rule "Toshiba an/aus" when Item harmony_tv_power received command then switch(receivedCommand) { case ON : harmony_tv.sendCommand("PowerToggle") case OFF : harmony_tv.sendCommand("PowerToggle") } end rule "Toshiba HDMI" when Item harmony_tv_eingang_hdmi1 received command then switch(receivedCommand) { case ON : harmony_tv.sendCommand("InputHdmi1") } end rule "Toshiba HDMI2" when Item harmony_tv_eingang_hdmi2 received command then switch(receivedCommand) { case ON : harmony_tv.sendCommand("InputHdmi2") } end
Das war es. Jetzt ein wenig Phantasie und ihr könnt diverse Ding wie im Video oben zu sehen schalten.