29 Kommentare

Science Fiction? Sprachsteuerung mit Google now im Smart Home – so gehts!

von am 31. Januar 2015
 

In allen tollen Sciense Fictions Filmen, schaltet das Haus das Licht oder den Fernseher per Sprachkommando ein. Inzwischen ist Sprachsteuerung schon lange keine Zukunftsmusik mehr. So kannst auch du deinen vier Wänden Kommandos erteilen!

Wie funktioniert es? Geht das auch bei mir?

Für die Spracherkennung nutzen wir Google Now – ein äußerst zuverlässiger und ausgereifter Dienst. Voraussetzung ist eine ständige Internetverbindung und bestenfalls ein modernes Android Tablet oder Smartphone. Google Now an sich kann zwar Text erkennen und auch ein paar Dinge auf dem Telefon erledigen (Bsp. SMS oder Termine erstellen) aber wir wollen mehr. Was nun, wenn wir diesen Service für uns arbeiten lassen können und eigene Sprachkommandos programmieren? Genau das geht. Und es wird noch besser. Mit den neuen Google Updates kann die Sprachsuche via “OK Google” gestartet werden. Das Telefon muss also nur am Netz Stecken, bedienen oder anfassen müssen wir es später nicht mehr. Ziemlich cool, oder?

Ihr braucht natürlich irgendeine Art von Smart Home Zentrale. Meine Tutorial Reihe zum Raspberry Pi wäre ein günstiger Anfang und funktioniert. Ich habe mich hier mit der Fibaro Home Center 2 beschäftigt. Diese ist schon recht alltagstauglich und bietet Unmengen von Möglichkeiten. Leider auch zum entsprechenden Kostenpunkt.

Die passende Software – Das Herz eurer Spracherkennung

Um die entsprechenden API Befehle an der Zentrale auszuführen nutzen wir Tasker mit RESTask. Bei Fibaro kann man fast alle Funktionen via Browserzeile ausführen. Das heißt: Was ihr an der Zentrale via Web-GUI klicken könnt, kann auch via Sprachbefehl aktiviert werden. Es kommt noch besser: Eigene Scripts können via Kommando gestartet werden. Wie wäre es z.B. mit einer Nachtszene oder einem Kino-Modus? Das ist alles kein Thema. Ich zeige euch, wie es geht:

Um die Kommandos und Abfolgen via Sprache zu aktivieren wird das Plugin AutoVoice verwendet. Auch hier haben wir ein sehr mächtiges Tool. Im 2. Teil dieses Tutorials werde ich etwas mehr ins Detail gehen, was hier alles noch möglich ist. 

Materialaufwand noch einmal zusammengefasst:

Installation und Einrichtung in wenigen Schritten

Am Computer

Fangen wir einmal mit der Fibaro API an. Diese ist eigentlich recht einfach aufgebaut. An einem Beispiel möchte ich die Struktur erklären. Der folgende Aufruf schaltet einen Schalter, einen Stecker usw. ein:

Eingesetzt werden müssen die IP eurer Fibaro Zentrale und auch die ID des Steckers. Beides könnt ihr über das Webinterface erfahren:

Fibaro Web-Oberfläche mit Device IDs

Fibaro DeviceIDs anzeigen

 

Das “turnOn” am Ende steht hier logischerweise für Einschalten. “turnOff” an gleicher Stelle deaktiviert die Komponente. Ich denke, damit sollte jedem das Grundprinzip klar sein. Weiter geht es mit ein paar anderen Aufrufen:

    • Einen VirtualDevice und dabei den Button X drücken:

    • Einen VirtualDevice und dabei den Slider auf X setzen:

    • Ein LUA-Script starten

Viel weiter würde ich erst einmal nicht gehen. Es gibt auch die Möglichkeit ganze Werte zu manipulieren. Die Farbe bei LED Stripes oder globale Variablen. Es ist aber übersichtlicher, dies in Scripts zu schreiben und sie dann auszuführen. Änderungen können dann auf der Zentrale vorgenommen werden und man muss nicht am Tablet/Smartphone herumexperimentieren. Sicherer ist es zudem auch noch.

Einrichtung auf dem Smartphone bzw. Tablet

Erst einmal wird alles installiert. Google Now, Tasker, RESTask und AutoVoice. Fangen wir mit einem einfachen Beispiel an: Die Raumbeleuchtung per Sprachbefehl ein und ausschalten. Dabei erst einmal zur Funktionsweise. AutoVoice erwartet keinen exakten Satz, sondern jeder Aktion werden Schlüsselwörter oder Phrasen zugeordnet. Wenn also der Befehl als “Licht ein” hinterlegt wird, funktioniert “Ich möchte das LICHT EINschalten” oder “Bitte das LICHT EIN” auch. Nicht funktionieren wird: “Schalte die Lampe an” oder “Bitte das Zimmer beleuchten”. Wie wir das umgehen, zeige ich euch weiter unten.

Im ersten Schritt konfigurieren wir AutoVoice auf Google Now. Dazu einfach AutoVoice starten, “Google Now Integration” auswählen und dann noch “NOT ENABLED” klicken. In der Bedienungshilfe nun AutoVoice auf “An” stellen. Die angezeigte Warnmeldung ist in Ordnung. Als nächstes aktivieren wir das “OK Google” Feature. Im Android Startmenü “Google Einstellungen” auswählen. Dort “Suche & Google Now”, dann “Sprache” anklicken. Ins Menü “OK Google Erkennung” und dort alles aktivieren und gegebenenfalls den Anweisungen folgen.

In der Praxis: Ein Beispiel zum nachbauen

Dazu starten wir Tasker. Bei „Profile“ erstellen wir ein Neues mit “+” und wählen “Ereignis” aus dem Popup-Menü. Weiter gehts:

  • Plugins ->AutoVoice -> “Recognized” auswählen
  • Stift oben Rechts -> Command Filter -> “Licht ein” hinterlegen
  • Via Haken oben rechts speichern-> in Tasker oben links zurück
  • “Neuer Task” poppt auf, wir klicken darauf und geben einen Namen ein (z.B.”licht_ein”)
  • Mit dem Plus in der Mitte einen Schritt hinzufügen
  • Plugins->RESTask->Stift oben rechts
  • Bei HOST wird die entsprechende API URL für “Lame Einschalten” hinterlegt
  • Etwas nach unten scrollen und bei BasicAuth die Zugangsdaten der Fibaro HC2 hinterlegen (normal “admin” und “admin”)
  • Via Diskette oben Speichern->in Tasker oben links zurück
  • Mit Play unten links kann “Licht ein” getestet werden
  • oben links zurück -> Tasker schließen 

Jetzt kommt die Stunde der Wahrheit. Testen wir unsere Kommandos doch einfach. Licht (manuell) ausschalten um in Ausgangssituation zu gelangen und mit “Okay Google, schalte das Licht ein” sollte nun Tasker den Befehl übertragen. Das Licht geht an. Herzlichen Glückwunsch, der erste Schritt ist geschafft.

Diese Vorlage sollte es euch nun ermöglichen diverse Sprachkommandos für Komponenten und Scripts zu programmieren. Eurer Kreativität sind keine Grenzen gesetzt. Wie wäre es z.B. mit Wake On LAN für den PC und dem Sprachkommando “Okay Google, schalte meinen Computer ein”?

Für Experten: Was geht noch? – RegEx – Scripts

AutoVoice arbeitet auch mit sogenannten reguläreren Ausdrücken (RegEx). Ist diese Option aktiv, können wir per Sonderzeichen unsere Spracherkennung bzw. unseren Auslöser weiter verfeinern. Ich habe am Anfang neben 2 funktionierenden auch 2 nicht erkannte Beispiele genannt. Folgender Ausdruck erkennt alle 4 Spracheingaben: (licht|lampe|zimmer) (ein|an|beleuchten). Der “|” ist kein kleines L oder großes i sondern ein Trennstrich. Er steht hier für “oder”. Es werden also alle Befehle, welche irgendeinen Begriff aus der 1. und einen Begriff aus der 2. Klammer enthalten erkannt. Hier sollte man schon einmal weiter denken. Man könnte auch auf nur ein einziges Wort wie “beleuchten” matchen. Wer noch “Bad beleuchten” oder “Schreibtisch beleuchten” voneinander abtrennen möchte wird Probleme bekommen. Besser ist es also, wenigstens 2 Schlüsselwörter einzubauen. Was ihr alles für Satzkombinationen nutzt, werdet ihr spätestens im täglichen Gebrauch merken.

Sprachsteuerung in AutoVoice

Sprachbefehle als RegEx Syntax

Eine weitere interessante Möglichkeit ist es, komplette LUA Scripts zu starten. Es können komplexe Abfolgen oder Aktionen geplant und per Sprachkommando gestartet werden. In meinem Beispiel führe ich einen “Nachtmodus” aus. Er schaltet alle Geräte ab und setzt meine Variable “Nacht”. Die Variable dient bei mir dazu, die Beleuchtung nachts gedimmt zu nutzen.

Eine kleine Zaubervorstellung

An einem wirklich sehr einfachen Beispiel möchte ich euch das Resultat in der Praxis zeigen. Hier sind eurer Kreativität aber keine Grenzen gesetzt.

 
  • Shadow
    1. Februar 2015 at 15:46

    Hatte AutoVoice und Tasker unter Android 5.0.1 laufen und bin nun auf CyanogemMod12 Nightly vom 31.01.2015 umgestiegen. Dort reagiert es überhaupt nicht mehr. Kennt jemand das Problem?

    Antworten

  • Shadow
    1. Februar 2015 at 17:16

    Hat sich erledigt, Tasker war lediglich deaktiv… -.-

    Antworten

  • dirkg173
    1. Februar 2015 at 18:08

    Ist eine ähnliche Steuerung auch mit iOS-Endgeräten und Siri möglich?

    Antworten

  • dk00000
    1. Februar 2015 at 19:36

    Gleiche Frage hätte ich auch. iOS Lösung?DankeGruß Daniel

    Antworten

    • danielboe
      danielboe
      2. Februar 2015 at 15:00

      Also ohne Jailbreak stelle ich es mir sehr schwer vor. iOS wird alles dafür tun, dass nicht irgendwelche Aktionen automatisch ablaufen. Ob es ein API für Siri Output gibt, bezweifle ich auch. Von der Theorie ist es ja keine Zauberei. Es muss nur die Textausgabe von Siri erfasst und gefiltert werden. Genau so passiert es bei Google auch. Wenn sich gerade jmd mit iOS in der Richtung auskennt, immer her mit den Infos ;-)

      Gruß Daniel

      Antworten

  • Eldar
    2. Februar 2015 at 22:56

    Ich habe mich mal etwas belesen zum Thema iPhone. Siri sendet seine Anfragen an den Apple Server und der antwortet. Nun gibt es die Möglichkeit sich auf einem RaspberryPI siriproxy einzurichten. Die Anfragen laufen dann über den eigenen Server. Damit kann man dann Dinge programmieren…Das ist mir aber ehrlich gesagt zu kompliziert, da siriproxy keinen Bedienoberfläche biete. Meine Idee war jetzt, sich eine RaspberryPi zu nehmen, Android darauf zu installieren, obiges Tutorial zu verwenden und einfach 1-2 Räume mit diesen RaspberryPis auszustatten. Damit hätte man in den betreffenden Räumen immer die Möglichkeit ohne Handy/Tablet oder ähnliches einfach über ein „Ok Google“ seinen Befehle loszuwerden. Was meint ihr?

    Antworten

    • danielboe
      5. Januar 2016 at 16:53

      Ich glaube auf dem pi läuft kein android. einfacher ist es ein günstiges tablet mit android 5+ zu kaufen, dann hast du gleich noch ein schönes interface. ansonsten kann man tasker auch als chrome plugin nutzen, wenn es schon auf einem android gerät läuft (zusatzmikrofon). Chrome plugins unter linux auszuführen dürfte aber auch tricky werden.

      Grüße daniel

      Antworten

  • Eldar
    3. Februar 2015 at 10:20

    Okay, ich habe die Lösung!!!! utter! Eine Andoird-App die man jeder Zeit (auch im Screen Off) mit z.B. Wake Up initialisieren kann. In der App selbst kann man Verknüpfungen zu tasker herstellen und eigene Voice-Commands zu Aktivierung aufnehmen und festlegen. Funktioniert hervorragend, jedoch im Moment nur auf Englisch.

    Antworten

  • Eldar
    3. Februar 2015 at 15:35

    Utter. Sorry,hatte ich vergessen zu schreiben

    Antworten

  • Eldar
    3. Februar 2015 at 22:14

    Und? Ist gut, oder?

    Antworten

    • danielboe
      danielboe
      3. Februar 2015 at 22:28

      Sieht spannend aus. vorallem wenn es offline funktioniert! Googe Now benötigt natürlich immer eine internetverbindung

      Antworten

  • Splinter
    23. Juni 2015 at 20:42

    Hallo zusammen habe die Anleitung befolgt…… hat auch alles für den erste Task geklappt.

    Leider habe ich Probleme mit dem Anlegen vom zweiten Task.

    1. Task war Licht an geht super !!!

    2. Task soll Licht aus werden geht nicht ……

    Ich scheiter daran das ich bei dem Punkt Plugins ->AutoVoice -> “Recognized” auswählen leider nur Recognize auswählen kann liegt das an einer lizenz habe sogar die Auto Voice Pro Unlock für 1,20 € gekauft

    Woran liegt das was mache ich falsch ???

    Antworten

  • Biieeber
    17. Oktober 2015 at 20:43

    Hallo, hätte da mal n Problem: Das ausprobieren mit der playtaste bei Tasker funktioniert. Wenn ich es mit Sprachbefehl versuche zeigt er auch an der er den Befehl registriert hat führt ihn aber nicht aus. Wenn jemand ne Idee was der Fehler sein könnte bitte bitte melden :). Habe ein Samsung galaxy s5 und ein HCL. :/

    Antworten

    • danielboe
      10. November 2015 at 16:44

      mit großer wahrscheinlichkeit dann syntaxfehler im sprachbefehl. Du kannst dir in deine Aktion auch eine „Benachrichtigung“ legen. Dann siehst du, ob es ausgeführt wird.

      Grüße

      Daniel

      Antworten

  • 4. Dezember 2015 at 14:26

    Hey, hast du es vielleicht geschafft mit Tasker Google now automatisch zu deaktivieren? Zb in einem bestimmten Zeitraum oder bei trennen des Netzteils usw.

    Ich will nicht das Google ständig lauscht und Akku frisst.

    Antworten

  • Martin
    20. Dezember 2015 at 20:29

    Hallo,

    super Anleitung. Vielen Dank dafür. Leider habe ich ein „kleines“ Problem. Wenn ich „Ok- Google“ sage geht bereits das Licht an. :) Ich habe alles so gemacht wie beschrieben. Hat jemand eine Idee was das Problem sein könnte?

    Danke
    VG
    Martin

    Antworten

  • Fuzzy
    11. Februar 2016 at 13:17

    Danke für die tolle Anleitung, wahrscheinlich stehe ich auf dem Schlauch.
    Anfangs schreibst du dass man einen RasP oder ein anderes teures Gerät benätigt.

    „Zitat“ Ihr braucht natürlich irgendeine Art von Smart Home Zentrale. Meine Tutorial Reihe zum Raspberry Pi wäre ein günstiger Anfang und funktioniert. Ich habe mich hier mit der Fibaro Home Center 2 beschäftigt. Diese ist schon recht alltagstauglich und bietet Unmengen von Möglichkeiten. Leider auch zum entsprechenden Kostenpunkt.

    Also eins von denen braucht man definitiv wenn man sein Philips Hue Set per Sprache steuern möchte?

    Sorry, vielleicht steht ich auch voll auf dem Schlauch ^^

    Antworten

    • boomx
      11. Februar 2016 at 13:49

      Hi,

      solltest du ein iPhone besitzen, dann kannst du auch einfach HomeKit nutzen. Dafür benötigst du aber die neue HUE-Bridge.
      Ansonsten brauchst du natürlich eine SmartHome-Zentrale, welche die HUEs steuert.

      Gruß

      Antworten

    • danielboe
      16. Februar 2016 at 14:44

      Wenn due HUE eine API haben, dann geht es auch mit dieser. Dann ist ja der HUE-Hub deine „Zentral“. Das oben sind nur beispiele, die verdeutlichen sollen, dass die Sprachsteuerung als „Upgrade“ zur manuellen, zb per smartphone, zu sehen ist.

      Antworten

    • schpaik
      29. März 2016 at 14:04

      Die Verbindung zur (alten oder neuen) Hue-Bridge kannst Du auch über die kostenlose Android-App lampshade.io herstellen. Dort kannst Du Gruppen und Szenen definieren und lampshade dann als Plugin in Tasker auswählen. Funktioniert super!

      (Falls Sprachbefehle mal nicht erkannt werden, kann das auch mal an einem Leerzeichen am Ende des „Command Filters“ liegen. Das war zumindest bei mir der Grund…)

      Antworten

  • walhino
    7. April 2016 at 19:52

    Hallo, erstmal vielen danke für die nette Einleitung. Bei mir funktioniert den Aufruf von VirtualDevice nicht. Hat bei euch geklappt?

    Antworten

    • danielboe
      24. April 2016 at 12:50

      Sollte eigentlich gehen. Schau noch einmal, ob du die richtigen Buttons über die API Drückst. Bei Szenen müssen diese glaube ich auch Aktiv sein. Auch, wenn es keinen trigger gibt

      Grüße

      Antworten

  • Daniel
    7. Mai 2016 at 4:08

    Hey, das hört sich ja wirklich Super an. Hat jemand ein Erfahrungsbericht, ob es auch mit der Zipabox von Zipato geht? :) Danke.

    Antworten

Hinterlasse eine Antwort