Sprachsteuerung mit Amazon Alexa

Eine Sprachsteuerung für Zuhause zur Steuerung des SmartHomes stellt eine gewisse Herausforderung da. Zwar werben Amazon Alexa und Google Home genau damit, wenn man es aber ausprobiert merkt man schnell wie begrenzt das ganze noch ist. Es funktioniert mit einer begrenzten Anzahl an Lampen, Steckdosen und vielleicht noch der Heizung recht gut. Wenn es aber um komplexere Scenarien mit hunderten von Steuerbaren Elementen geht, stößt man an die Grenzen der eingebauten Skills.

Allgemein

Mit der Android App Habdroid und openHAB ist schon von Hause aus eine rudimentäre Spracherkennung möglich. Wobei die Android App sich darauf beschränkt mit Hilfe der Google Spracherkennung den erkannten Text per REST API an openHAB zu senden. Dort wird der Text dann mit einer RULE weiter verarbeitet. Meistens wird hier per regex nach Wörtern gesucht um dann verschiedene Aktionen auszulösen.

Umsetzung

Eine erste Umsetzung basierte auf einer eigenen App welche Grundsätzlich nach dem gleichen Prinzip wie Habroid arbeitet hat. Der entscheidende Unterschied ist dass es im Anschluss nachdem der Text an openHAB geschickt wurde auf eine Rückmeldung wartet um diese dann als Toast Message anzuzeigen. d.h. man erhält von openHAB ein Feedback was erkannt und geschaltet wurde.

Da diese Variante aber immer eine App benötigt und damit zwangsläufig ein Handy benötigt habe ich auch mit einer zweiten Variante experimentiert. Diese Variante ist bei mir nun auch dauerhaft im Einsatz. Sie basiert auf einem eigenem Alexa Skill der unter folgender URL verfügbar ist.

https://github.com/HolgerHees/semanticdetection

Dieser Skill sendet den erkannten Text per REST API an openhab und wird dort per custom python rule weiterverarbeitet. Im Haus habe ich hierzu 6 Echo Dot 2 von Amazon verteilt.

Satzanalyse und semantic detection

Es wird nicht einfach im Text nach Wörtern gesucht die dann direkt in einer Aktion münden, sondern etwas strukturierter der Satz zerlegt und nach Was, Wo und Wie ausgewertet.

Auf diese Art kann man etwas komplexere und zusammengesetzte Sätze bilden.

Beispiel:

“Alle Rollläden runter und im Wohnzimmer das indirekte Licht auf 30%”.
“Licht im Flur und im Wohnzimmer an und im Schlafzimmer die Rollläden runter”

Im zweiten Beispiel wird z.B. erkannt dass es im Wohnzimmer auch um das Licht geht und dass es auch im Flur an geschaltet werden soll.

Die Satzzerlegung folgt hierbei folgendem Schema

Auf diese Art kann man relativ flexibel Sätze bilden.

https://intranet-der-dinge.de/
https://intranet-of-things.com/