Das Haus per Sprache steuern ist heute alles andere als eine technische Spinnerei. Das ist dank Amazon Echo und Alexa so einfach wie nie. Zudem kann es eine sinnvolle Ergänzung der Haussteuerung sein. Wenn mal keine Hand zur Verfügung steht oder man nachts orientierungslos in der Finsternis steht, reicht der Ruf nach Alexa.
Vorbereitung
Bevor es losgehen kann, müssen einige Dinge vorbereitet werden. Zum einen benötigen wir die entsprechende Hardware. In meinem Fall die folgenden Komponenten. Bei Amazon Echo natürlich nicht alle, zumindest aber eines der Geräte (z.B. Echo Dot).
OpenHAB installiert, Amazon Echo angeschlossen und über Amazon eingerichtet – dann kann es losgehen.
myopenHAB.org Account erstellen
Um Alexa ohne Umwege in openHAB integrieren zu können, musst du den openHAB Cloud Connector installieren und einen Account bei myopenHAB.org erstellen. Das macht du über die Paper UI. Hierzu navigierst du zu Add-ons -> MISC und installierst das entsprechende Paket (siehe Bild).
Um einen Account bei myopenhab.org erstellen zu können, benötigen wir noch die openHAB UUID und den openHAB Secret. Beide erhalten wir, indem wir uns per ssh mit unserem Raspberry verbinden. Das sieht dann in etwa so aus:
Um die UUID zu erhalten, musst du folgendes Kommando in die Kommandozeile eingeben:
1 |
sudo nano /var/lib/openhab2/uuid |
Es öffnet sich eine Datei mit der UUID. Im Bild habe ich die UUID natürlich unkenntlich gemacht 😉
Ganz ähnlich sieht es bei dem Secret aus. Hier gibst du Folgendes in die Kommandozeile ein:
1 |
sudo nano /var/lib/openhab2/openhabcloud/secret |
Auch hier öffnet sich wieder eine Datei – diesmal mit dem openHAB Secret.
Jetzt haben wir alles für die myopenHAB Anmeldung zusammen. Erstelle auf https://myopenhab.org einen neuen Account. Vergib einen Benutzernamen, gib deine E-Mail Adresse ein und trage UUID und Secret in die dafür vorgesehenen Felder ein.
openHAB Alexa Skill installieren
Es gibt einen Alexa Skill von openHAB. Damit ist es möglich Alexa direkte Anweisungen zu geben wie z.B. „Alexa, schalte das Licht in der Küche an“. Dabei ist es nicht nötig so etwas wie „mit openHAB“ oder ähnlichen nervigen Anhängseln zu sagen. Wenn du den Skill aktivierst, wirst du auf myopenHAB weitergeleitet. Dort musst du dich mit deinen zuvor vergebenen Login Daten einloggen und den Zugriff für Alexa gestatten. Sobald das erledigt ist, ist Alexa grundsätzlich einsatzbereit und wir können unseren Items Alexa beibringen.
Items für Alexa vorbereiten
Damit Alexa deine Items auch finden kann, müssen wir diese jeweils um einen Codeschnipsel erweitern. Zur Auswahl stehen:
[ „Lighting“ ] – Möglichkeit Switch und Dimmer Items zu steuern.[ „Switchable“ ] – Möglichkeit Rollershutter Items zu steuern.
[ „CurrentTemperature“ ] – Es können Number Items abgefragt werden wie z.B. die Temperatur in einem bestimmten Raum.
[ „TargetTemperature“ ] – Es kann eine Temperatur gesetzt werden.
[ „Thermostat“ ] – Fasst CurrentTemperature und Target Temperature für entsprechende Items in der gleichen Gruppe zusammen.
Ich beschränke mich in meinem Beispiel auf ein einfaches Licht und ergänze mein KNX Item mit [ „Lighting“ ].
1 |
Switch Licht_EG_Kueche_Decke "Küche Decke" <light> (Kueche, AlleEG, Licht) [ "Lighting" ] { knx="1/1/4+<11/1/4" } |
Jetzt kann Alexa das Licht „Küche Decke“ finden. Hierzu nimmst du die Alexa App auf deinem Smartphone zur Hand. Im Menü unter Smart Home -> Geräte kannst du über die Funktion „Gerät hinzufügen“ die openHAB Items suchen. Die Suche dauert immer ein wenig.
Alexa übernimmt bei dem Gerät die jeweilige Beschriftung des Items. Diese ist auch gleichzeitig der Rufname. Man kann die Beschriftung in der App für jedes Gerät nachträglich ändern. Das empfehle ich aber höchstens zum testen anderer Begriffe, falls sich Alexa mit manchen Wörtern schwer tut oder einen anderen Skill aufrufen will. Es empfiehlt sich die Beschriftungen in openHAB und Alexa identisch sind. So kommt man nicht durcheinander.
Jetzt heißt es „Fleißarbeit“ und alle Items für Alexa fit machen.
Ausblick
Alexa und openHAB sind ein tolles Team. Zusammen mit Regeln sind sprachgesteuerten Hausautomation (fast) keine Grenzen gesetzt. Kleine Beispiele, die ich in anderen Artikeln noch näher ausführen werden.
„Alexa, wollen wir einen Film schauen?“
Alle nicht benötigten Lichter gehen aus, die Fensehbeleuchtung wird gedimmt, der Fernseher und die Audioanlage schalten sich an (über Harmony Binding gelöst)
„Alexa, guten Morgen“
Der Fernseher schaltet sich mit NTV an, der Rolladen im Schlafzimmer geht hoch.
„Alexa, gute Nacht“
Fernseher schaltet sich aus, alle Lichter gehen aus, Alle Rollläden fahren herunter“
Hallo Patrick,
danke für die super Anleitung. Die hat mir damals sehr geholfen.
Leider bekomme ich die Migration auf die neue KNX Version nicht hin.
Im Detail: Die Steuerung über die Weboberfläche mit openHAB3 funktioniert. Leider findet Alexa die Geräte nicht. An der Verbindung zwischen MyOpenHAB und Alexa dürfte es nicht liegen, da es mit der alten Version, die ich parallel noch laufen lasse funktioniert.
Natürlich passe ich die openHAB UUID und das Secret jeweils an.
Es ist bereits der 3. Versuch auf die neue Version upzugraden. Entsprechend oft habe ich auch openHAB komplett neu installiert. Zuletzt auf Debian mit OH3.
Hier meine Konfigs:
knx.things:
Bridge knx:ip:bridge [
type=“TUNNEL“,
ipAddress=“192.168.0.10″,
portNumber=3671,
localIp=“192.168.0.14″,
readingPause=50,
responseTimeout=10,
readRetriesLimit=3,
autoReconnectPeriod=60,
localSourceAddr=“0.0.0″
] {
Thing device generic [
address=“1.1.201″,
fetch=true,
pingInterval=300,
readInterval=3600
] {
Type dimmer : EGWohnzimmer „Dimmer“ [ switch=“2/4/1+<2/4/0", position="2/4/4+<2/4/3", increaseDecrease="2/4/2" ]
Type switch : WohnzimmerWestenR "Light" [ ga="2/4/42+<2/4/42" ]
}
}
knx.items:
Switch WohnzimmerWestenR "Couchlicht [%s]" (Wohnzimmer) [ „Switchable“ ] { channel=“knx:device:bridge:generic:WohnzimmerWestenR“}
Dimmer EGWohnzimmer „Wohnzimmer Licht [%d %%]“ [„Lighting“] { channel=“knx:device:bridge:generic:EGWohnzimmer“ }
Ich hoffe du kannst mir hier helfen.
Hallo Marcel,
ich bin leider noch nicht dazu gekommen auf OH3 umzusteigen. Konntest du dein Problem bereits lösen?
Viele Grüße
Patrick
Hallo,
erstmal vielen Dank für den Beitrag,
Habe alles soweit gemacht wie beschrieben ..
Allerdings nach Einlesen der neuen Geräte bei Alexa .. Sie findet auch das Rollo .. Aber wenn ich Sie bitte es zu benutzen kommt folgender Fehler:
Das Gerät unterstützt das nicht…
Rollershutter KNX_Wohnzimmer_links „Wohnzimmer Rollo Links [%d %%]“ (GF_LivingRoom) [ „Switchable“ ] { channel=“knx:device:ce7e05c5:13“ }
Kann es sein, dass Rollos nicht unterstützt werden mit dem [ „Switchable“ ] ?
Grüße Henning
Hallo Henning,
freut mich, dass es dir bis hierher geholfen hat. Wenn ich das richtig in Erinnerung habe, dann musst du für die Rollläden einen kleinen Workarount bauen, Alexa einen Wert zwischen 0 – 100 zurückgibt. Mein Rollladen beispielsweise versteht das nicht, sondern kennt nur UP/DOWN/STOP.
Dazu legst du ein Dummy Item an z.B.:
Rollershutter KNX_Wohnzimmer_links_Alexa "Wohnzimmer Rollo Links" [ "Switchable"]
Diesem gibst du den Namen wie du den Rollladen gerne in Alexa ansprechen möchtest und die Info für Alexa [ „Switchable“].
Als nächstes erstellst du deine Regel:
rule " Rolladen Küche Garten Links "
when
Item KNX_Wohnzimmer_links_Alexa received command
then
if (receivedCommand > 50 )
{
KNX_Wohnzimmer_links.sendCommand(DOWN)
}
else
{
KNX_Wohnzimmer_links.sendCommand(UP)
}
end
Damit sollte es klappen. Wir umgehen in diesem Fall einfach den Prozentwert und geben den Befehl zum herunterfahren, wenn Alexa einen Wert größer als 50 zurückgibt.
Viele Grüße
Patrick
Hallo Patrick,
also irgend was mache ich hier falsch …
in der knx_Wohnzimmer.items befindet sich folgendes drinnen:
Group gknx_Living
„Rollos im Wohnzimmer“
(GF_LivingRoom)
Rollershutter KNX_Wohnzimmer_links „Wohnzimmer Rollo Links“ (gknx_Living) [„Switchable“] { channel=“knx:device:ce7e05c5:13″ }
Rollershutter KNX_Wohnzimmer_Mitte „Wohnzimmer Rollo Mitte“ (gknx_Living) [„Switchable“] { channel=“knx:device:ce7e05c5:33″ }
Die beiden dazugehörigen Rules sind beide im File Wohnzimmer_Knx.rules wie folgt hinterlegt:
rule „Wohnzimmer Links“
when
Item KNX_Wohnzimmer_links received command
then
if (receivedCommand> 50 )
{
KNX_Wohnzimmer_links.sendCommand(DOWN)
}
else
{
KNX_Wohnzimmer_links.sendCommand(UP)
}
end
rule „Wohnzimmer Mitte“
when
Item KNX_Wohnzimmer_Mitte received command
then
if (receivedCommand> 50 )
{
KNX_Wohnzimmer_links.sendCommand(DOWN)
}
else
{
KNX_Wohnzimmer_links.sendCommand(UP)
}
end
Alexa findet die beiden KNK Aktoren ..
Aber Wenn ich sage Alexa, schalte Wohnzimmer Rollo Links oder Wohnzimmer Rollo Mitte dann kommt nur das Gerät unterstützt das nicht …
Also mit den rules hat es nix gebracht. Woran kann es noch liegen ?
Grüße Henning
Du musst ein Dummy Item erzeugen. Zuerst entfernst du [ „Switchable“] beim ursprünglichen Rollershutter Item das mit dem KNX Channel verknüpft ist.
Dann legst du für den jeweiligen Rollladen ein Extra Item für Alexa an. Das sieht dann z.B. so aus:
Rollershutter KNX_Wohnzimmer_links_Alexa "Wohnzimmer Rollo Links" [ "Switchable"]
Dieses Item löst auch dann die Regel aus:
rule " Rolladen Wohnzimmer links "
when
Item KNX_Wohnzimmer_links_Alexa received command
then
if (receivedCommand > 50 )
{
KNX_Wohnzimmer_links.sendCommand(DOWN)
}
else
{
KNX_Wohnzimmer_links.sendCommand(UP)
}
end
Achte darauf, dass nur noch die Dummy Items die [ „Switchable“] Zuordnung für Alexa haben 🙂
Hmmm ..
Also hab ich im ersten Moment total übersehen ….
Also nun wie folgt meine Iteam Datei:
Group gknx_Living
„Rollos im Wohnzimmer“
(GF_LivingRoom)
Rollershutter KNX_Wohnzimmer_links „Wohnzimmer Rollo Links“ (gknx_Living) { channel=“knx:device:ce7e05c5:13″ }
Rollershutter KNX_Wohnzimmer_links_Alexa „Wohnzimmer Rollo Links“ [„Switchable“]
und die dazugehörige .rules Datei
rule „Wohnzimmer Links“
when
Item KNX_Wohnzimmer_links_Alexa received command
then
if (receivedCommand> 50 )
{
KNX_Wohnzimmer_links.sendCommand(DOWN)
}
else
{
KNX_Wohnzimmer_links.sendCommand(UP)
}
end
Alexa sagt immer noch Das Gerät unterstützt das nicht …
Außer dem ist mir aufgefallen, wenn das Gerät in Alexa gefunden wurde kommt grüner Punkt und Neues Gerät .. Nach dem Sprachbefehl : Alexa, schalte Wohnzimmer Rollo Links ein .. Sagt dann Alexa: Das Gerät unterstützt das nicht ,.. im selben augenblick erscheint nun ein roter Punkt Gerät reagiert nicht.
??????? Wo liegt der Hund begraben ?????
Ich schaue heute Abend zu Hause noch einmal was ich Alexa sagen muss 😀 Ich muss zugeben, dass ich die Funktion zwar implementiert habe aber nicht mehr nutze, seit ich die Rollläden Zeit- und Lichtgesteuert fahre.
Ich habe ein wenig mit Alexa gesprochen gestern 😉 In meiner Alexa App sind die Schalter als Dimmer angelegt von 0-100%. Wenn ich sage „Alexa Rollladen XY 100%“ dann fährt er runter. Bei 0% fährt er hoch. Mit den befehelen „Alexa, Rollladen XY runter(fahren)/hoch(fahren)“ kommt sie nicht so zurecht. Mal klappt es, mal nicht. Versuch es mal damit. Ansonsten kannst du in der Alexa App mal den Dimm Regler des Gerätes auf 100% stellen und schauen ob der Rollladen reagiert.
Die Lampen welche über die PAPER UI erstellt werden lassen sich nicht über Alexa steuern oder ?
Jedenfalls wird bei mir nix gefunden.
Hallo Nico,
soweit ich weiß geht das nicht über die Paper UI. Du musst dem Item in der .items Datei den Wert [ „Lighting“ ] mitgeben, wie im Artikel beschrieben. Solltest du bereits das KNX 2 Binding nutzen, muss die KNX Syntax beim Item natürlich entsprechend anders dargestellt werden. Details dazu findest du in diesem Artikel: https://zukunftathome.de/knx-2-binding-openhab-migration-von-knx-1/
Ich hoffe das hilft dir weiter 🙂
Ich stimme Patrick zu, ich meine auch nicht, dass über die Paper UI der Wert [„Lighting“] mitgegeben werden kann, was natürlich eine echte Einschränkung ist.
Meines Wissens nach ist es so, dass man tatsächlich alle Lampen in den Konfigurationsdateien anlegen muss, damit sie gefunden werden können.
Das wird allerdings mit Sicherheit auch noch ausgebessert in künftigen Releases.
Kann man das ganze auch umgekehrt machen, soll heißen die Lichter die der Echo plus steuert in Openhab auch steuerbar zu machen?
Hallo Marc,
ich glaube nicht, dass das Möglich ist. Man muss sich hier für einen Weg entscheiden. Ich persönlich bin auch ein Fan davon alles an einer Stelle zu Verwalten und nicht auf mehrere Systeme aufzuteilen. So habe ich in OpenHab für alle Geräte die gleiche Logik.
Hallo Patrick,
du hast recht, bislang ist das nicht möglich. Allerdings gibt es ein Binding, dass bereits den ersten Schritt in diese Richtung gewagt hat. Wir von Hobbyblogging haben damit auch schon experimentiert. Zwar lassen sich damit noch keine Lichter steuern, doch es ist möglich, dass man den Echo kontrolliert.
Laut Entwickler könnte es eines Tages möglich sein, dass man tatsächlich die Lichter des Echos steuert. Vielleicht ist das etwas, das dich auch interessieren könnte.