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.
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.
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
http://Benutzer:Passwort@AdresseMiniserver/command/control/value |
Weitere Angaben siehe Dokumentation Loxone
Randbedingungen für dieses Beispiel sind:
Daher setzt sich der Post zum Schalten dieses Eingangs wie folgt zusammen:
http://ich:1234@192.168.178.22:4780/dev/sps/io/LichtEsszimmer/ImpulsPlus |
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.
Tasker folgt drei eigentlichen Funktionsblöcken.
Für unseren Bedarf sind jedoch lediglich die ersten beiden Punkte interessant.
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.
|
|
Mit dem Playsymbol unten links kann die eingerichtete URL getestet werden. |
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 |
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. |
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. |
Es gibt Eingangs- und Ausgangstasks. Ein Eingangstask wird ausgeführt wenn der festgelegte Kontext eintritt, der Ausgangstask wird ausgeführt, wenn der Kontext nicht mehr zutrifft. Man muss mindestens eine Art Tasks zugewiesen haben, sonst wird das Profil automatisch gelöscht. |
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.
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.
Der Einsatz dieser Sprachbefehle ist nur so begrenzt wie das vorhandene Loxone-System.
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.
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.
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:
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.
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
Man legt 8 einzelne Tasks an, von denen jeder eine Lüftungsstufe setzt:
Dazu gehören 8 identische Profile, außer dass der Commandfilter mit einem anderen Analogwert ausgeführt wird.
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! |
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. |
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:
Lüftung Stufe 4. |
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
Verwandte Artikel erscheinen hier basierend auf den Stichwörtern, die Sie auswählen. Klicken Sie, um das Makro zu bearbeiten und Stichwörter hinzuzufügen oder zu ändern.
|