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

  1. die Authentifizierungsdaten
  2. die Name der gewünschten Schaltstelle (Virtueller oder physischer Eingang) und
  3. den zu setzenden Status/ Wert (Ein, Aus oder Dezimalwert) enthält

Weitere Angaben siehe Dokumentation Loxone

2.2 Notwendige Software auf dem Android-Gerät

Um dieses Tutorial umsetzen zu können, benötigt man von Google Play die beiden Applikationen Tasker und AutovoiceMit Tasker kann beinahe jede Funktion eines Android-Gerätes automatisiert werden und das Plugin Autovoice erlaubt diese Funktionen auch per Sprachbefehl auszulösen.

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

Die Funktion „Schalten des Esszimmerlichts“ soll ausgeführt werden.

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:

 

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.

  1. 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.
  2. PROFILE
    Die Profile (im ersten Tab angeordnet), stellen den Kontext dar, aus welchem die zuvor genannten Tasks ausgeführt werden.
  3. 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

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.

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:

 

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.

 

Autovoice weiß:
  1.  Nach den Worten “Lüftung Stufe” folgt der zu übertragende Wert.
  2.  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