Sprachsteuerung: ZWay Smarthome mit Google Now steuern - so gehts

Google Now Sprachsteuerung für ZWay
Geschrieben von AlphaX2

Sprachsteuerung ist gerade jetzt, zu Zeiten von Amazon Echo total hipp. In diesem How-to zeige ich euch, wie Ihr Z-Way mit einem Android Tablet oder Smartphone via Google Now Sprachassistenten steuert.

Spätestens seit Amazons Alexa ist ja das Thema Sprachsteuerung für das SmartHome total angesagt, wer – wie ich – immer noch keine Einladung für den Kauf eines Amazon Echo erhalten hat, oder jetzt in der Weihnachtszeit nicht viel Geld erübrigen möchte, kann trotzdem eine Sprachsteuerung umsetzen. Nach all den Fibaro-Tutorials zeig ich euch, wie es zudem auch mit ZWay funktioniert. Alles was ihr benötigt - ein Android Smartphone oder Tablet.

Dank der Sprachsuche, die Teil von "Google Now" ist, kann quasi jedes Android-Gerät für die Sprachsteuerung Eures SmartHome genutzt werden. Dieses Tutorial bezieht sich speziell auf ZWay, sollte aber mit leichten Änderungen mit jedem Gateway funktionieren, insofern ihr Geräte über eine API steuern könnt.

Was brauchen wir?

  1. Android Smartphone/Tablet mit Goolge Now
  2. Automate App aus dem Google PlayStore
  3. Vielleicht eine Wandhalterung für's Tablet.

Das war's dann auch schon. Größter Vorteil: die App "Automate" kostet nicht mal Geld und kann noch für vielfältige andere Zwecke genutzt werden. Alternativ könnte man die App "Tasker" mit dem Plugin "AutoVoice" nutzen, wie es Daniel im Zusammenhang mit Fibaro schon umgesetzt hatte. Einzig etwas Zeit sollte man für die Einrichtung einplanen.

Schritt 1: Geräte-Details ermitteln

Der erste Schritt ist natürlich zu entscheiden, welches Gerät/e Ihr überhaupt steuern möchtet. In meinem Beispiel ist es ein LED-Streifen, an einem Fibaro-RGBW. Folglich öffnen wir die Zway-Weboberfläche, suchen unser Gerät heraus und klicken auf der Kachel das Zahnrad oben rechts an, anschließend notieren wir uns die Gerätenummer, in meinem Fall z.B.: ZWayVDev_zway_24-1-38.

Außerdem müsst Ihr die IP eures ZWay-Gateways zur Hand haben, also jene IP die in eurem Heimnetzwerk dem Raspberry, der WD MyCloud oder dem PoppHub zugewiesen ist. In meinem Fall wäre das die 192.168.1.121, auch die ZWay-Login-Daten braucht ihr.

Schritt 2: Automate-App Installation/Vorbereitung

Als nächstes ladet Ihr im PlayStore die App "Automate" herunter. Diese kann - wie der Name andeutet - so ziemlich alles an Eurem Android-Gerät automatisieren. So könnte der Media-Player eurer Wahl starten, sobald ihr die Kopfhörer ansteckt, es kann das WLAN in Abhängigkeit eures Standort aktiviert, oder deaktiviert werden oder Ihr sichert eure Daten automatisch in GoogleDrive. Ein großer Pluspunkt der App ist (meiner Meinung nach), dass ihr nur die für die jeweilige Automatisierung nötigen Rechte einräumen müsst und nicht schon mit der Installation eurer Gerät vollständig aus der Hand gebt.

Eine Möglichkeit, die Automate nun auch bietet, ist es die Google Now Sprachsuche abzupassen und auf deren Inhalt zu reagieren. Genau hier setzt auch unsere Lösung an. Damit dies klappt, wechselt ihr direkt nach der Installation in die Einstellungen zum Punkt "Eingabehilfen" hier sollte unter Dienste auch Automate auftauchen und auf Aus stehen - damit der Zugriff auf Google Now klappt, muss diese Funktion aktiviert werden.

Schritt 3: Automate-Sprachsteuerung-Programmieren

Nun starten wir Automate. Nach der grundlegenden Einrichtung finden sich links bereits einige "Flows" - so werden die Automatisierungen in Automate genannt. Über das "+" rechts oben, können wir nun einen neuen Flow anlegen.

automate_tut_1

Darauf erscheint eine nahezu leere Seite, die lediglich ein "Flow-Beginning" Element anzeigt. Links lässt sich nun das Menü öffnen und eine Vielzahl von Elementen auswählen. Dort findet sich unter Apps, auch "Google Now voice command" welches wir hinzufügen, wer möchte platziert es noch etwas günstiger (gedrückt halten und dann verschieben) und verbindet anschließend das "OK" des Startelements mit dem "IN" des Google Now Elements (gedrückt halten, dann ziehen).

automate_tut_3

Nun klicken wir ins Google Now Element und haben lediglich ein Feld, welches sich "spoken text" nennt. Hier wird allerdings nicht der Text eingetragen, den man später sagen möchte sondern ein beliebiges Wort. Unter diesem Wort wird später der erkannte Text gespeichert - also könntet Ihr ihm z.B. den Namen "result" geben, oder "text" oder "katzenklo" oder was auch immer.

automate_tut_4

Nun suchen wir uns im linken Menü das Element "Expression true?" - zu finden unter General. Wieder ordnen wir das Element sinnvoll an und verbinden "OK" und "IN". Klicken wir jetzt in das Expression-Element werden wir aufgefordert eine Formel einzugeben. Hier tragen wir, schematisch folgendes ein:

<Wort aus dem Google Element> = "<mein Text den ich sagen möchte>"

Dies bedeutet in meinem Fall:

result = "LED Streifen an"

Hier empfiehlt sich übrigens schon probeweise mögliche Ansagen im Vorfeld mit Google Now zu probieren und dann jene einzutragen, die am besten klappt und eben genau so, wie es in der Google Sprachsuche erkannt wurde - also 1:1 wie der Text erkannt wurde. Und dann speichert Ihr ab.

Wieder in der Elemente-Übersicht könnt ihr direkt das "NO" des Expression Elements mit dem Google Now "IN" verbinden. Damit entsteht nämlich eine Schleife: Automate wartet auf ein Google Now Kommando, nimmt dieses entgegen und prüft ob der Text enthalten ist, welcher euer ZWay-Gerät bedienen soll. Wenn ihr aber einen anderen Text/Befehl zu Google Now sagt, z.B. weil ihr das Wetter abfragt, oder Google eure Ansage einfach falsch erkannt hat, dann ist natürlich der Text zur Steuerung des SmartHome nicht enthalten, also erkennt Automate "NEIN" - der nötige Text ist nicht enthalten und springt daraufhin wieder zum Beginn und wartet auf die nächste Google Now Eingabe.

automate_tut_6

Jetzt werden wir die eigentliche Magie wirken, nämlich jenen Aufruf der unser ZWay-Gerät steueren wird. Dazu fügen wir ein "HTTP request" Element (zu finden in Connectivity) ein, ordnen es wieder vernünftig an und verbinden dieses mal "YES" mit "IN". Das "HTTP request" Element bietet nun sehr viele Einstellungen an, in die erste Zeile "REQUEST URL" tragen wir folgendes ein:

http://<IP:PORT>/ZAutomation/api/v1/devices/<Gerätenummer aus Schritt 1>/command/on

heißt also in meinem Fall, mit den richtigen Einsetzungen:

http://192.168.1.121:8083/ZAutomation/api/v1/devices/ZWayVDev_zway_24-1-38/command/on

oder für aus entsprechend:

http://192.168.1.121:8083/ZAutomation/api/v1/devices/ZWayVDev_zway_24-1-38/command/off

Damit sind wir noch nicht ganz fertig, denn unter "REQUEST METHODE" stellen wir noch "GET" ein und für das Feld "REQUEST CONTENT TYPE" entscheiden wir uns für "JSON".

Damit verbleibt nur noch ein wichtiger Eintrag: das Feld "BASIC AUTHORIZATION ACCOUNT". Klickt dieses an, gebt einen beliebigen Account-Namen an z.B. ZWay-Login und tragt anschließend Eure ZWay Login-Daten ein.

Dieses Feature von Automate ist ziemlich cool, denn es wird unter den Android Konten ein weiteres Konto mit dem angegebenem Namen hinzugefügt, indem eure Login-Details gespeichert sind. Damit sind die Daten für Dritte nicht auslesbar, sondern unter den Google-Konten sicher abgespeichert. Und vor allem könnt ihr bei jedem anderen Sprachbefehl einfach das Konto auswählen und müsst die Daten nicht neu eingeben.

automate_tut_7

Letzter Akt: das "OK" des "HTTP request" Element verbinden wir noch mit dem Google Now "IN". Damit haben wir eine weitere Schleife, die auch bei richtig erkanntem und ausgeführten Sprachbefehl zurückspringt, um auf den nächsten zu warten. Damit endet dieser "Flow" nie, sondern läuft solange im Hintergrund, bis er über die Automate-Oberfläche gestoppt wird.

automate_tut_8

Natürlich solltet ihr den Flow/die Flows noch sinnvoll benennen, damit ihr diese auch später noch unterscheiden könnt, z.B. wenn Ihr sie anpassen wollt, zudem habt ihr so klar im Blick welche Funktionen gerade aktiv sind.

Exkurs: Woher nimmt man diese Steuerbefehle?

Exzellente Frage! Grundsätzlich nennt man die Möglichkeit Geräte mit solchen Aufrufen zu steuern API. Dabei funktionieren APIs so, dass es Links gibt, welche aufgerufen werden und von der Empfängerseite als Befehl interpretiert werden und somit eine bestimmte Aktion ausführen. Was genau dabei alles möglich ist bzw. was dafür eingegeben werden muss legt der Software-Hersteller (hier also ZWay) fest. Im Fall von ZWay gibt es eine ganze Seite, welche sämtliche Möglichkeiten auflistet, nämlich HIER.

Im Bereich "Virtual Device Types" gibt es dann auch eine Übersicht der möglichen Befehle, je nach Gerät - so lassen sich quasi alle möglichen Geräte steuern, auch Schlösser oder Heizungen.

Meinen LED-Streifen könnte ich also auch auf einen bestimmten (gedimmten) Wert setzen, der Befehl sieht dann so aus:

http://192.168.1.121:8083/ZAutomation/api/v1/devices/ZWayVDev_zway_24-1-38/command/exact?level=30

Übrigens können diese Befehle auch in einem Standard-Browser ausgeführt werden, zum herum probieren natürlich ideal, außerdem kann man diese natürlich als Lesezeichen ablegen - schneller als irgendeine App oder Weboberfläche. Theoretisch könnte mit den API-Befehlen sogar eine alternative App, Weboberfläche oder Programm erstellt werden. Die echte ZWay-Oberfläche arbeitet unter der Haube fast nach dem selben Prinzip.

Fazit

Mit einem App-Download und ein wenig Tipp-Aufwand kann jedes beliebige Android-Gerät zur Sprachsteuerung genutzt werden. Mit dem "Ok Google" Kommando, kann ein fest installiertes Gerät (z.B. Wandhalterung) wie ein Amazon Echo genutzt werden. Ganz ohne Schwächen kommt es natürlich nicht aus: für jedes an/aus oder zu setzendem Wert braucht es ein neues "Flow". Um etwas Bastelarbeit und Zeit kommt man bei einer größeren Zahl von Geräten nicht herum. Außerdem müsst ihr euch die genauen Sätze merken, also wählt diese lieber nicht zu ähnlich. Und das ganze läuft "nur" im WLAN.

Welche Geräte werdet ihr demnächst via Sprachsteuerung steuern? Berichtet doch von euren Projekten in den Kommentaren! Auch wenn Interesse an anderen Möglichkeiten besteht, oder ihr andere coole Sachen umgesetzt habt, erzählt uns davon.

Diesen Blogpost hat geschrieben ...

AlphaX2

3 Kommentare

  • Hallo, tolle Anleitung!
    Habe versucht, es nachzustellen - leider erfolglos. Ich habe ein HTC One und benutze die Sprachsteuerung von Google Now regelmäßig. Aber mit Automate funktioniert es nicht. Ich benutze Homee und habe im HTTP Request den Webhook von Homee eingetragen! Muss ich etwas anderes machen?

    Danke für eine evtl. Antwort

    Rolf

    • Mit Homee habe leider keine Erfahrung. Der Request muss eben korrekt sein, mit dem Firefox Plug-in "Http Requester" (für Chrome gibt's das glaube ich auch) kann man gut probieren, bis es passt. Kann ja sein, das Homee ein POST oder PUT verwendet - da müsste ich mich erst einlesen. Ansonsten, was sagt denn der Log in Automate, lässt sich ja für gewöhnlich ganz gut verfolgen was passiert?!

      • ....danke für die schnelle Antwort.
        Zwischenzeitlich funktioniert es mit Homee und zwar genau nach deiner Beschreibung.
        Hatte versehentlich im Request ein Leerzeichen eingefügt. Hier nur einfach den WebHook von Homee einfügen und schon geht es.
        Bin total begeistert, denn ich kann jetzt mein komplettes Homee per "Ok Google" steuern.

Gib deinen Senf dazu!

Cookie Consent mit Real Cookie Banner