Mastodon

Google Home steuert 433 MHz-Funksteckdosen

20.08.2017 | Digital, Sprachassistenten | 9 Kommentare

Google Home ist da. Damit ist das nächste Sprachutensil zum Beantworten von Fragen, aber auch zur Steuerung des Zuhauses. Nartürlich hat Google Home genau so wie der Echo keine eigene Schnittstelle, um die guten, alten 433MHz-Steckdosen zu steuern. Deswegen empfehle ich in diesem Fall wieder wie bei Amazons Echo einen Raspberry-Pi zur Steuerung.

Da die Stelle der Steuerung der Box der Steuerung über Alexa gleicht, verweise ich für diesen zweiten Teil jetzt schon mal auf den Abschnitt im Artikel über Alexa. Es geht los bei „Der Raspberry muss die Botschaft empfangen“. Der vorgelagerte Teil, wie die Steuerinformationen zum Raspberry kommen, läuft über ifttt.com.

Steuerbefehle über ifttt.com schicken

ifttt.com bietet die Möglichkeit verschiedene Schnittstellen miteinander zu verbinden. Auch der Google Assistant steht dort inzwischen zur Verfügung. Hier kann man Sprachbefehle hinterlegen und sie hinterher mit anderen Schnittstellen kombinieren. Für die Steuerung der Steckdosen habe ich folgendes Beispiel angelegt:

Wie man schon in der Konfiguration sehen kann, ist die Einstellung sehr leicht: man gibt an, auf welchen Satz hin Google Home reagieren soll. Das schöne ist: im Gegensatz zu Amazon Echo muss man keinen Skillnamen vorher sagen. Eigene Sätze werden einfach in das System integriert, als ob sie von Google selbst kommen. Entsprechend habe ich hinterlegt „Wohnzimmerlicht an“. ifttt.com legt diese Aussage im Google Assistant an. Das ist dann auch schon der erste Teil der Schnittstellenbrücke. Die zweite ist nun die Brücke zur Webschnittstelle aus dem obigen Artikel. Diese realisiert man als „Webhook“. Eine Webhook ist nichts anderes, als ein URL-Aufruf. Ich übergebe also an meinen Webserver per URL-Aufruf den Status, welche Steckdosennummer geschaltet werden soll und ob diese ein- oder ausgeschaltet werden soll. Also zum Beispiel so:

http://www.meinserver.de/input.php?steckdose=1&zustand=1

Die wird dann mit dem PHP-Skript in einer Datenbank gespeichert. Damit, wenn mehrere Befehle kommen, diese nicht verloren gehen und der Reihe nach abgearbeitet werden können. Die Tabelle sieht entsprechend einfach aus:

CREATE TABLE IF NOT EXISTS `befehle` ( `id` int(11) NOT NULL AUTO_INCREMENT, `datum` datetime NOT NULL, `schalter` varchar(5) NOT NULL, `zustand` int(1) NOT NULL, PRIMARY KEY (`id`) )

In diese Tabelle werden dann die Einträge mit folgendem Eintrag eingefügt:

// Über $db die DB-Verbindung herstellen if(is_numeric($_POST[schalter]) && is_numeric($_POST[zustand]) { $db->query("INSERT INTO befehle SET datum=NOW(), schalter='$_POST[schalter]', zustand='$_POST[zustand]'"); }

Damit hat dann Google Home die Information abgelegt, die dann der Raspberry mit dem Funkmodul ausliefert.

Eine Alternative dazu sind Google-Actions. Diese sind aktuell aber nur in Englisch verfügbar. Eine deutsche Implementation ist zwar für 2017 vorgesehen, wann das aber letztlich sein wird, steht wohl noch ein wenig in den Sternen. Aber über ifttt.com ist es ohnehin schneller und leichter realisiert.

Die weiteren Schritte sind, wie oben beschrieben, auch im Artikel über die Steuerung wie bei Alexa zu entnehmen, denn ab dieser Stelle arbeitet der Raspberry und dem ist es letztlich egal, wer die Information liefert.

Ist das steuern von so dummen Steckdosen überhaupt interessant? Oder sind die smarten Steckdosen über WLAN interessanter und lohnenswerter? Schreibt mir gerne Eure Meinung in die Kommentare.

About Sebastian
Medieninteressierter Kölner mit einem Hang zum allen neueren, technischen Möglichkeiten mit einer großen Vorliebe zum Fortbewegen mit Bus, Straßenbahn und Bahn. Dies ist sein privater Blog, in dem er sich genau im Schwerpunkt  mit diesen großen Themenbereichen beschäftigt.

9 Kommentare

  1. Hi,
    da du schon einen Google Home Freund hast, hätte ich eine Frage.
    Kann man das lokale Netzwerkinterface auch für einen Webrequest nutzen. Ich würde meinen TV ungern von außen erreichbar machen, aber es wäre doch cool per Assi eine Aufnahme einzurichten.

  2. Hallo Sebastian,

    super Beschreibung & Homepage genau das was ich gesucht habe jedoch habe ich noch ein bis zwei Fragen dazu.

    Ich habe mir einen Google Home Voice Kit für meinen Raspberry Pi 3 gekauft (https://aiyprojects.withgoogle.com/) und diesen erfolgreich verbunden.
    Ich habe noch ein paar alte Funksteckdosen die ich gerne mit dem Google Home Kit steuern möchte. Auf Deiner Seite steht das zwar alles gut beschrieben und bei IFTTT bin ich jetzt auch angemeldet jedoch verstehe ich das nicht mit der Webschnittstelle (Webhook) und der Datenbank.

    Muss ich diese Datenbank zwingend haben oder kann ich auch anders den Befehl hinterlegen?

    Ich möchte per Sprachbefehl („OK, Google, Schalte das Licht an“) das ein bestimmtes Python-Script auf dem Raspberry Pi ausgeführt wird wo hinterlegt ist das die 433Mhz Funksteckdose angeschaltet wird.

    Könntest Du mir hier eine Hilfestellung geben?

    Gruß,
    Katsche

  3. Hallo Katsche,

    vielen Dank für das Lob. Die Idee des Google Homes selber basteln kenne ich auch. Ich finde es ganz cool, hat es denn gut geklappt oder war es viel fummelei?

    Es gibt wie gesagt viele Möglichkeiten. Es soll ja zeitnah funktionieren. Von daher ist ein Webaufruf am einfachsten. Der Webhook ruft also die URL von deinem Raspberry auf und der führt darauf hin, weil die URL ausgelöst wurde, die Aktion aus. Ich weiß nicht, wie fit du bist, ich skizziere es mal kurz und dann sag mir, wenn du zu etwas mehr Informationen benötigst.

    Der Raspberry muss aus dem Internet per URL erreichbar sein (dyndns, Portweiterleitung), die dann vom Webhook bei ifttt.com aufgerufen wird. Auf dem Raspberry läuft hierfür ein Apache. Da du mit Python arbeitest idealerweise mit einem Python-Apache-Modul (müsste ich selber nachlesen). Dann könntest du das Python-Skript direkt über den Apache aufrufen. Beim Aufruf kannst du auch direkt die Info mit übergeben, welche Steckdose eingeschaltet werden soll. Könnte also zum Beispiel so aussehen: http://meinserver.dyndns.de/python.py?steckdose=2&status=an&pass=passwort. Es kommt darauf an, wie sicher du es haben möchtest und was passiert, wenn ein Fremder da drauf Zugriff hat. Was kann dieser dann tun? Wenn Du sicher bist, dass er nichts machen kann, außer das Licht an und aus, dann reicht eine einfache Absicherung. Ansonsten solltest Du Dir noch Mechanismen zur Absicherung überlegen, damit nicht jeder einfach die Steckdosen steuern kann.

    Hilft Dir das in der Richtung etwas weiter?

    Liebe Grüße
    Sebastian

  4. Hallo Sebastian,

    vielen Dank für das Feedback und die kurze Anleitung.
    Das Google Home AIY Voice Kit nachzubauen war nicht schwer und ist gut beschrieben im Handbuch/ Online.
    Mit Apache und Webhooks habe ich bislang noch nie beschäftigt daher suche ich eine Quick & Dirty Methode ohne viele Programmiererei. Sofern ein Tutorial gut beschrieben und ich es verstanden habe könnte es man „leicht“ nachmachen.
    Ja, die Richtung hilft mir und werde mein Glück versuchen irgenwie zum Laufen zu bringen.
    Gruß aus Rheine,
    Katsche

  5. Also ich finde die Funktion nicht auf der Seite um so was zu erstellen, dazu wollte ich was anderes Testen aber irgenwie funktioniert nichts wenn ich ok google sage

  6. @Katsche: ich versuche in naher Zukunft mal einen Post zu machen, wie man es auch direkt zuhause ankommen lassen kann. Quick & Dirty. Dann auch ohne Datenbank sondern quasi direkt in der Verbindung, dass es direkt bei Deinem Raspberry ankommt.

    Hallo @Maciej,
    welche Funktion meinst Du wo genau? Geht es um die Erstellung des Applets bei ifttt.com?

  7. @Sebastian hast du villeicht Teamspeak/Skype? (Dauert nicht Lange)
    weil ich habe jetzt alles Richtig eingerichtet und alles Funktioniert jetzt nur ein Problem habe ich doch.

    ich weiß jetzt nicht genau wo ich die ganzen dateien hinterlegen soll und welcher code von dir in welche datei rein soll (Schritt: Steuerbefehle über ifttt.com schicken)

    Muss mein Raspberry Pi so eingestellt sein, dass wenn ich nicht mit wlan verbunden bin auch auf ihn zugreifen kann?

  8. Hey Maciej,

    wir können gerne mal sprechen, ich habe gestern Abend aber auch noch eine neuere Schritt-für-Schritt-Anleitung fertig gemacht, bei der man auch keinen Zwischenserver braucht, sondern wo die Anfragen direkt auf dem Raspberry ankommen. Die findest Du hier: https://blog.medienman.de/blog/2017/11/26/google-home-die-433-mhz-steckdosen-der-raspberry-pi-und-kein-zwischenserver/

    Ansonsten schick mir doch einfach per E-Mail deinen Skype-Namen oder Handynummer (für Whats-Ap-Call oder old school Telefon) :)

    Viele Grüße
    Sebastian

  9. Perfekt für mich! Als Web Entwickler mit einem verstaubten Raspberry ohne Aufgabe,12 Funksteckdosen und 2 Google Home in der Bude ist es der erste Schritt zum Smart Home für mich. Danke für die Anleitung. Bis jetzt erst überflogen und am Ende wird der Raspberry, zumindest der alte, nicht mehr als Server reichen aber das werd ich jetzt erstmal in Angriff nehmen.

Trackbacks/Pingbacks

  1. Google Home, die 433 MHz-Steckdosen, der Raspberry Pi und kein Zwischenserver – Medienman - […] habe neulich an dieser Stelle beschrieben, wie man mit dem Google Home 433 MHz-Steckdosen zum Laufen bringt und sie…

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert