Sprachbefehle für Android-Geräte und Loxone
Anleitung zur Durchführung von Schaltbefehlen mittels Stimmkommandos. Gültig für jedes Gerät, dass zur Nutzung der (kostenpflichtigen) Programme Tasker und dem Tasker-Plugin Autovoice geeignet ist.
1 Zielsetzung
Das zu gewünschte Ziel ist das Durchführen von Schaltbefehlen auf dem Miniserver, ausgehend von Stimmkommandos eines beliebigen Android-Gerätes. Da ich keinerlei Programmierfähigkeiten besitze, musste eine Lösung basierend auf existierenden, graphisch bedienbaren Tools her. Diese sind Tasker und Autovoice.
Meine Meinung über die eingesetzte Software
Tasker und Autovoice (Tasker-Plugin) sind zwar in kostenlosen aber stark eingeschränkten Versionen verfügbar. Jedoch rechtfertigen deren Funktionsumfang und die ordentliche Ausführung ruhigen Gewissens die Beträge von 3,99 € für Tasker und 1,2 € für Autovoice zu investieren – Sein wir mal ehrlich: gibt’s halt morgen ein Brötchen und 5 Zigaretten weniger (o. ä.).
Ein Hinweis in Sachen Google Play
Wer, wie ich, dem Datenkraken seine Kreditkartennummer nicht in den Rachen werfen will, kauft sich einen Google Play-Gutschein.
2 Basisinformationen
2.1 Grundsätzliches zur Kommunikation
Die Kommunikation mit dem Miniserver erfolgt gemäß Vorgabe aus der Loxone Dokumentation. Basis hier ist ein HTTP-Post, der an die Netzwerk-/ Internetadresse des Miniservers gesendet wird und
- die Authentifizierungsdaten
- die Name der gewünschten Schaltstelle (Virtueller oder physischer Eingang) und
- den zu setzenden Status/ Wert (Ein, Aus oder Dezimalwert) enthält
Grundstruktur der Post
Weitere Angaben siehe Dokumentation Loxone
2.2 Notwendige Software auf dem Android-Gerät
2.3 Weitere Einstellungen Autovoice
Autovoice verfügt über verschiedene Einstellungen mit deren Hilfe man die Überwachung bzw. die Ausführung der angelegten Tasks auslösen kann. Hierzu zählt eine permanente Überwachung der eingehenden Sprachsignale möglich ist, ebenfalls kann man hier auch Keywords voranstellen, um bestimmte Tasks auszuführen. Andernfalls kann man die Google-Sprachsuche so einrichten, dass Autovoice darauf hört.Diese Auswahl muss jeder Anwender für sich treffen, daher wird dies hier nicht weiter ausgeführt.
3 Miniserver-Konfiguration
3.1 Auswählen/ Anlegen der Schaltstellen
Damit auf dem Android-Gerät der richtige HTTP-Post zusammengestellt werden kann, müssen wir uns die gewünschten Schaltstellen heraussuchen, bzw. diese erstellen. Wie im Beispiel angeführt, stellt sich das Ziel des Posts als die Bezeichnung des jeweiligen Eingangs ein.
3.2 Beispiel Esszimmerlicht
Randbedingungen für dieses Beispiel sind:
- Ext. Adresse des MS: www.wtf.com
- Oder interne Adresse: 192.168.178.22:4780
- Nutzername: ich
- Passwort: 1234
- Ein Eingang mit dem Namen „LichtEsszimmer“ wurde angelegt, bzw. existiert in der Konfiguration
Daher setzt sich der Post zum Schalten dieses Eingangs wie folgt zusammen:
Für Zugriff über LAN
Damit haben wir das Grundgerüst eines jeden Posts den wir in Tasker anlegen und mit Autovoice absenden wollen. Jeder abweichende Post unterscheidet sich lediglich durch die Bezeichnung des Eingangs und den Befehl wie geschaltet, bzw. welcher Analogwert gesetzt werden soll.
4 Tasker-Konfiguration
4.1 Aufbau und Funktion von Tasker
Tasker folgt drei eigentlichen Funktionsblöcken.
- TASKS
Der wichtigste Block (obwohl im zweiten Tab angeordnet), sind die sog. Tasks. Diese repräsentieren die Funktion die ausgeführt werden soll. In unserem Fall eine HTTP-Post. - PROFILE
Die Profile (im ersten Tab angeordnet), stellen den Kontext dar, aus welchem die zuvor genannten Tasks ausgeführt werden. - SZENEN
Vereinigt Profile und Tasks und erlaubt die Funktionen z. B. mittels beliebig herstellbarer Buttons oder Schieberegler vom Desktop des Gerätes zugänglich zu machen.
Für unseren Bedarf sind jedoch lediglich die ersten beiden Punkte interessant.
4.2 Anlegen des Tasks “Esszimmer Licht Ein/ Aus”
1. Tasker aufrufen 2. Wechseln zum Tab TASKS 3. Klick auf + um einen Task hinzuzufügen 4. Vergabe eines eindeutigen Namens: „Esszimmer Licht“ | |
5. Im leeren Task auf + 6. Aktionskategorie Netzwerk auswählen | |
7. Innerhalb Aktionskategorie Netzwerk: HTTP-Post auswählen 8. Und hier die unter 9. Beispiel Esszimmerlicht entwickelte URL eintragen. 10. Zurück zur Taskansicht.
|
|
Erweiterte Autovoice-Funktionen
Mit dem Playsymbol unten links kann die eingerichtete URL getestet werden.
4.3 Anlegen des Profils “Esszimmer Licht”
1. Wechseln zum Tab PROFILE 2. Klick auf + um ein Profil hinzuzufügen 3. Vergabe eines eindeutigen Namens: „Esszimmer Licht“ | |
4. Anlegen eines Kontexts, nach welchem dann der Task „Esszimmer Licht“ ausgeführt werden soll 5. Status auswählen und in der Kategorieauswahl Plugin anklicken | |
6. Status AutoVoice Recognized auswählen 7. Im Folgebildschirm auf Bearbeiten klicken und Autovoice wie gewünscht konfigurieren | |
8. Meine Konfiguration für Autovoice ist: - Event Behaviour angehakt, d. h. dass Autovoice nach Erkennung des hier konfigurierten Events nicht automatisch weiter reagiert - Unter Command Filter habe ich die Einträge auf dem rechten Screenshot - Die Art und Weise der Interpretation des empfangenen Sprachbefehls habe ich Use Regex gewählt. 9. Mehrere Kommandos kann man doch den Senkrechtstrich getrennt aufführen 10. Nachdem alle Kommandos eingetragen sind, zurück zur Startansicht |
Erweiterte Autovoice-Funktionen
Es gibt auch eine Funktion (statt Regex) namens Contains All.
Dazu gibt man die zu filternden Kommandos als Stichworte (besser nie mehr als 2 oder 3) ein und Autovoice hört sich einen gesprochenen Satz an.
Sollten die zuvor festgelegten Kommandos, egal in welcher Reihenfolge auftauchen, erkennt Autovoice dies.
Das ist intuitiver, lässt sich aber nicht mit jeder Funktion gleich gut kombinieren. Daher muss es Jeder für sich herausfinden.
Dazu gibt man die zu filternden Kommandos als Stichworte (besser nie mehr als 2 oder 3) ein und Autovoice hört sich einen gesprochenen Satz an.
Sollten die zuvor festgelegten Kommandos, egal in welcher Reihenfolge auftauchen, erkennt Autovoice dies. Das ist intuitiver, lässt sich aber nicht mit jeder Funktion gleich gut kombinieren. Daher muss es Jeder für sich herausfinden.
11. In der Startansicht das angelegte Profil gedrückt halten. Im Folgenden Kontextmenü Esszimmer Licht auswählen. | |
12. Der hinzugefügte Task erscheint nun als sog. Eingangstask. |
Erweiterte Autovoice-Funktionen
5 Auslösen des Profils mittels Sprachbefehl
5.1 Stimmschnittstelle für Autovoice
Für meinen Anwendungsfall habe ich die Google-Sprachsuche als „Standard-Mikrofon” für Autovoice ausgewählt. Man gehe zurück auf den Homescreen, betätige die Sprachsuche (Mikrofonsymbol in der Suchleiste).
Nun erscheint ein Dialog in welchem man auswählen kann, ob Google Suche oder Autovoice die gewünschte Funktion aufnehmen soll. Hier stoßen Millionen Ansichten und Philosophien auf einander, daher soll bitte jeder seine eigene Konfiguration finden.
Autovoice verfügt auch über eine Funktion zur Dauerüberwachung, sodass man nicht ausdrücklich ein Keyword für die Aufmerksamkeit, oder den Such-Taster verwenden muss.
5.2 Ausführung des Sprachbefehls
Nachdem der gewünschte Befehl erfolgreich eingerichtet und getestet wurde, sprechen wir ins Mikrofon und freuen uns darüber, dass das Esszimmerlicht ein- und ausgeschaltet wird. Das hier aufgeschlüsselte Beispiel funktioniert als Impulsgeber, d. h. dass der vorhandene Status umgeschaltet wird.
6 Einschränkungen und Möglichkeiten
6.1 Einschränkungen
Der Einsatz dieser Sprachbefehle ist nur so begrenzt wie das vorhandene Loxone-System.
6.2 Möglichkeiten
Die Anzahl der Möglichkeiten wächst proportional zur Zunahme der Fantasie des Einrichters ;-)
Feedback ist jederzeit gerne willkommen, sofern es nachvollziehbar und begründet ist.
7 Autovoice-Funktionen mit Mehrwert für Sprachsteuerung
Tasker und Autovoice sind ein mächtiges Gespann. Nach Versuchen und Internetrecherche bin ich auf die Möglichkeit mit sog. Variablen einzelne Textbausteine gezielt herauszunehmen und als Kommando aufbauen.
7.1 Mehrere Profile in einem Satz aufrufen
Wenn mehrere Profile erstellt wurden, z. B. “Esszimmerlicht einschalten” und “Rolladen im Esszimmer öffnen”, muss man nicht jede Funtkion für sich aufrufen, sondern kann sagen:
Sprachbefehl
Rolladen im Esszimmer öffnen und Licht im Esszimmer ausschalten.
Tasker wird nun die zugehörigen Tasks automatisch abwickeln, d. h. den Rolladen öffnen und den Lichtzustand umschalten.
7.2 Post mit variablem Inhalt
Diese Funktion ist die für mich reizvollste Möglichkeit den Funktionsumfang von Autovoice zu nutzen. Zuvor haben wir einzig Tasks angelegt, deren HTTP-Posts mit statischem Inhalt ausgeführt waren.
Dies kann man mit der Funktion Regex und frei bestimmbaren Variablen sehr elegant ändern.
Angenommen es soll eine Lüftungsanlage mit 8 Stufen gesteuert werden.
Die Lüfterstufe werden durch einen analogen virtuellen Eingang an die Lüftung übergeben
Möglichkeit 1:
Man legt 8 einzelne Tasks an, von denen jeder eine Lüftungsstufe setzt:
Befehlsaufbau
Dazu gehören 8 identische Profile, außer dass der Commandfilter mit einem anderen Analogwert ausgeführt wird.
Möglichkeit 2:
Nutzung von Variablen in Verbindung mit Regex.
Eine solche Konstellation erlaubt es, dass Autovoice selbstständig den zu setzenden Wert aus dem gesprochenen Kommando ermittelt und in den im zugehörigen Task festgehaltenen HTTP-Post einsetzt.
Beispiel:
1. Ein Profil Namens LFT Variabel erstellen 2. Kontext Autovoice Recognized hinzufügen | |
3. In der Konfiguration des Autovoice Recognized tragen wir wie folgt ein: Lüftung auf stufe|lüftung stufe (?<lftstufe>.+) Dieses Kommando muss nach dem Regex-Verfahren interpretiert werden, also unbedingt Regex anhaken, sonst funktioniert dies nicht! |
Befehlsaufbau
Diese Eingabe hat zur Folge, dass Autovoice weiß, dass nach den Kommandoworten “Lüftung Stufe” der Wert folgt, den es als Variable für %lftstufe einsetzen soll
4. Anlegen eines Tasks mit dem variablen HTTP-Post. Wobei wir statt dem zu setzenden Analogwert, die selbst erzeugte Variable einsetzen, siehe Hinweis. |
Befehlsaufbau
Das Schildchen-Symbol rechts oben zeigt eine Übersicht der verfügbaren Variablen an. Eigentlich sollte die Variable die im Commandfilter angelegt wurde, dort auftauchen. Dies ist bei mir nicht der Fall, es sollte aber nicht abschrecken, denn Variablen sehen immer wie %variable aus. Unsere Selbsterzeugte Variable lautete nun ?<lftstufe>, daher tragen wir im HTTP-Post ein %lftstufe.
Nun wird dieses Profil mit folgendem Satz ausgelöst:
Sprachkommando
Lüftung Stufe 4.
- Nach den Worten “Lüftung Stufe” folgt der zu übertragende Wert.
- Der zu übertragende Wert wird für die Variable in den angelegten HTTP-Post übertragen.
Die überaus reizvolle Folge ist, dass Tasker nun den folgenden Post senden wird:
Folglich braucht man nur einen Post und ein Profil anzulegen, um 8 Lüftungsstufen zu steuern.
Weitere Einsatzmöglichkeiten von variablen Posts
- Per Sprachvorgabe variable Zeitabläufe, z. B. Komfortschalter soll 3 Minuten in Betrieb bleiben
- Gartenbewässerung soll 60 Minuten in Betrieb bleiben
- Rolladen können auf 42 % gefahren werden, ohne Lang-/ Kurzfahrten und abwarten um am richtigen Punkt manuell zu stoppen
- Lüftungsanlagen können mit Stoßlüftung in beliebiger Länge geschaltet werden
- Ein Dimmer der aufs Wort hört
- etc.
Verwandte Artikel