als ich mich letztes mal, bei meinem kleinen Experiment eine “Sprachbedienung” für den Webradio zu kreieren etwas in die Funktion des “Google Assistant” einarbeiten musste, habe ich Blut geleckt und ein Interesse an diesem Thema entwickelt.
Wenn man sich länger mit dem Thema “Sprachassistenten” beschäftigt (sei es nun Alexa, Google Assistant oder Siri) landet man sehr schnell beim Thema “Heim-Automatisierung”.
Hier wiederum trifft man schnell auf einen nicht zu verachtenden Kostenfaktor der hiermit einhergeht. Spar-Fuchs wie ich nun mal bin, versuchte ich mir eine Lösung zu erarbeiten, wie ich für diese Aufgabe mit möglichst günstiger Hardware und kostenlosen Softwaretools angehen könnte.
Ich möchte euch meine Lösung nicht vorenthalten und sie euch hier mal beschreiben:
Hardware:
- Google Home Mini (49,-€)
- Raspberry-Pi 1 (39,-€ / hatte ich allerdings noch rumliegen… somit eigentlich keine Kosten
- 433Mhz Funkempfänger-/Sender (5,-€)
- 3 Funksteckdosen aus dem Baumarkt (11,-€)
Software:
- Online-Account bei IFTTT (If this, than that)
- Raspian Jessie auf dem Raspberry Pi
- Pilight, zum ansteuern der Funksteckdosen
- Ein Webserver mittels Python und “Bottle.py“
- … alle Softwarelösungen sind kostenlos und teilweise Open Source, also 0€
Gesamtkosten:
Somit liegt man beim Anschaffungspreis unter 150€, für das Schalten von 3 Steckdosen mittels Sprachkommando… das klingt zwar verhältnismäßig teuer, allerdings im Vergleich mit auf dem Markt erhältlichen Fertiglösungen durchaus erschwinglich… (wobei der Löwenanteil natürlich reine Initialkosten sind, die sich bei Erweiterung schnell relativieren…)
Der Ablauf:
Um dem Google-Assistant etwas bei zu bringen, das er noch nicht kann, gibt es sog. “Skills”, welche von den Herstellern der Smart-Home Geräte bereitgestellt werden, welche sich allerdings für solche “hausgemachten” Lösungen nicht eignen bzw. nicht adaptieren lassen. Um GH selbst (einfache) Fähigkeiten bei zu bringen, eignet sich ein Online-Service namens “If this, than that” (http://ifttt.com), also “wenn dies, dann das”. Der Name ist hier Programm! Man kann aufgrund bestimmter Ereignisse, bestimmte Tätigkeiten auslösen.
In meinem Fall, wäre also das Ereignis, ein Sprachbefehl, z.B. “ok google, schalte Steckdose 1 ein”. Daraufhin, sollte sich die Funksteckdose die neben mir auf dem Tisch liegt einschalten…
Aber wie kann dies denn nun ein “Online-Dienst” bewerkstelligen??
Im ersten Moment natürlich gar nicht. Daher benötigt man 3 zusätzliche Dinge:
- einen Zugang, mit dem man von außen auf sein Heimnetzwerk zugreifen kann. So etwas wie eine DynDNS Adresse, oder seine (feste) externe IP Adresse.
- Außerdem, muss der Online-Dienst auch einen “Ansprechpartner” am anderen Ende haben… einen Webserver.
- Dieser allein kann jedoch auch nichts ausrichten. Er braucht die Möglichkeit ein 433Mhz Signal aus zu senden, welches auf die Funksteckdosen abgestimmt ist und einen Schaltvorgang auslöst.
Der Ablauf sieht also wie folgt aus:
- Ich spreche einen Befehl an meine Google Home Mini (z.B. “schalte Steckdose 1 ein”)
- Dieser Befehl wird von IFTTT abgefangen und analysiert. Besteht eine “Aktion” dafür, wird diese ausgeführt, ansonsten wird die Anfrage einfach von Google weiterverarbeitet
- Aufgrund des Befehles, wird ein voreingestellter Webhook aktiviert (der IFTTT-Server stellt eine POST Anfrage an meine Heim-Netzwerkadresse)
- Mein Webserver nimmt die Anfrage entgegen und verarbeitet sie
- Mein Webserver sendet über das Programm Pilight ein 433Mhz Signal aus, welches die entsprechende Dose schaltet
- die entsprechende Funksteckdose schaltet ein
Ich teste nun das Ganze schon einige Zeit und kann bestätigen, dass dieses Setup erstaunlich zuverlässig funktioniert. Neben der Steuerung der 433Mhz Funksteckdosen, kann der Server natürlich auch jede andere beliebige Aufgabe erledigen (welche man mit einem PC eben machen kann).
Zusätzlich zum Schalten von Steckdosen, habe ich meinem Server mittlerweile beigebracht,
- Zeitgesteuerte Aktionen (mit Verzögerung) durch zu führen, z.B. wenn ich sage “schalte mein Flur-Licht in 5 min. aus”
- meinen Fernseher und Receiver ein oder aus zu schalten, (ohne diese vom Stromnetz zu trennen)
- Sender meines Receivers zu wechseln (ich habe natürlich einen Linux-Receiver)
- Timeshift Aufnahmen meines Receivers zu steuern (Play, Pause, Stop)
- meinen Webradio zu bedienen
- … die Möglichkeiten sind dank des Einsatzes des Raspberry-Pi´s und seinen GPIOs nahezu unbegrenzt und können mit kleinen Programmierkenntnissen leicht erweitert werden.
Denkbar wäre auch der Einsatz von Sensoren, die wiederum Aktionen bei IFTTT auslösen, z.B. Push-Nachrichten, Emails oder andere Aktionen, welche der Dienst unterstützt.
Schreibe einen Kommentar