Lichtwecker mit Hue und Alexa in FHEM erstellen
+++ Update +++ Neue, einfachere Möglichkeit: Alexa Wecker direkt in FHEM übernehmen
Zum Smarthome gehört irgendwie auch die Anbindung der Weckfunktion. Ich habe die bisherigen Ansätze gescheut, da es mir irgendwie zu aufwendig war und ich ohnehin ein Fitbit Charge2 besitze, welches mich morgens mit einem sanften Vibrationsalarm weckt. Da ich allerdings seit einiger Zeit auch einen Amazon Echo Dot im Schlafzimmer habe, wollte ich die Weckfunktion von Alexa nicht ungenutzt lassen. Der Echo Dot muss aber FHEM mitteilen können, dass soeben der Weckeralarm ausgelöst wurde. Dies wird mithilfe einer Verknüpfung mit IFTTT bewerkstelligt.
Man könnte damit beispielsweise eine Sonnenaufgangssimulation mit HUE Lampen (oder allen anderen Lampen die übers Smarthome erreichbar sind) realisieren. Weiter gedacht könnte man sich in der Küche bereits einen Kaffee zubereiten lassen, die Fussbodenheizung im Bad anschalten oder das Küchenradio einschalten lassen. Ich habe vorerst erstmal eine Sonnenaufgangssimulation eingerichtet.
Gliederung
- Alexa soll mit FHEM kommunizieren
- WEB-Device für IFTTT anlegen</a
- IFTTT Dummy Device in FHEM anlegen
- IFTTT Applet anlegen
- Notify für Sonnenaufgang bei Alarm erstellen
- Code anpassen
- Weitere Möglichkeiten
Alexa soll mit FHEM kommunizieren
Zuerst einmal muss FHEM wissen sobald der Wecker vom Amazon Echo Dot losging. Hierfür verwende ich IFTTT. Eingerichtet habe ich das ganze mithilfe der Anleitung von haus-automatisierung.com (Link zum IFTTT Tutorial). Vorausgesetzt ist hierfür, dass vorher ein Reverse Proxy mit Apache auf dem Raspberry Pi eingerichtet wurde (Link zum Reverse Proxy Tutorial). Wer keinen Reverse Proxy besitzt, kann sich auch mit einem DynDNS Service behelfen. Eine entsprechende Anleitung zur Anbindung findest du hier (Link zum DynDNS IFTTT Tutorial).
WEB-Device für IFTTT anlegen
Im folgenden nochmal die groben Arbeitsschritte für das Anlegen eines sicheren WEB Devices für IFTTT. Der Sinn eines eigenen WEB-Devices für den IFTTT Services ist, dass man damit relativ sicher fährt. Das heißt, dass IFTTT nur auf den Port 8089 zugreifen kann, und dass auf dem Port 8089 auch nur der FHEM Befehl "setreading" ausgeführt werden kann. Somit lässt sich in dem Dummy, den wir später anlegen auch nur ein Reading verändern.
define WEBApi FHEMWEB 8089 define WEBApi FHEMWEB 8089 attr WEBApi csrfToken none attr WEBApi room webAPI define allowedWEBApi allowed attr allowedWEBApi allowedCommands setreading attr allowedWEBApi room webAPI attr allowedWEBApi validFor WEBApi
IFTTT Dummy Device in FHEM anlegen
In FHEM legen wir uns ein Dummy Device mit dem Namen IFTTT an. In diesem Device werden später von IFTTT sämtliche Readings geschrieben. Wir erinnern uns: IFTTT soll nur Readings schreiben dürfen. Dies dient der Sicherheit, falls doch jemand an deine Zugangsdaten kommt.
define IFTTT dummy attr IFTTT room webAPI
IFTTT Applet anlegen
Erstelle dir einen IFTTT Account und verlinke dein Amazon Echo mit dem Service. Der Service ist übrigens kostenlos. Dann ist es an der Zeit, ein eigenes Applet auf IFTTT zu erstellen.
Hierzu logge dich in deinen Account ein und klicke auf "My Applets", dann auf "New Applet" und zuletzt auf das blau hinterlegte "+this".
Als URL gibst du folgendes ein (bitte mit eigenen Logindaten einpassen)
https://nutzername:passwort@fhem.deineinternetseite.de/api?cmd=setreading%20IFTTT%20alarm%20{{AlertTime}}&XHR=1
Als Method wählst du "GET". Content Type ist "plain/text". Klicke dann auf "Save".
Jetzt kannst du einen ersten Testlauf starten. Sage Alexa, sie solle einen Wecker in 5 Minuten erstellen. Sobald der Alarm ertönt, müsste in deinem Device IFTTT in FHEM ein neues Reading mit dem Namen "alarm" auftauchen. Als Wert des Readings erhälst du die Weckzeit.
Notify für Sonnenaufgang bei Alarm erstellen
Den Code habe ich bei Computerhilfen.de gefunden (Link zum Code). Nur ein Leerzeichen hat gefehlt, damit man den Code so ausführen kann. Solltest du den Code nicht über die FHEM Kommandozeile eingeben können, so erstelle zuerst ein notify ohne code und klicke dann auf DEF und füge den restlichen Code ein.
define act_on_alexa_alarm notify IFTTT:alarm.* { fhem("set HUEDevice1 rgb 030100; set HUEDevice3 rgb 030100;"); my @sonne = ('0B0300','190601','230902','2F0D03','370F03','401204','481405','521806','591007','622108','6E2508','772809','7F2A09','882D0A','90300A','96320A','9D330A','A6360A','B0390A','B0450A','B9480B','C1580B','CB610B','D3650C','D6740C','DC770B','DC810B','E5860B','ED8E12','F2A113','F2B013','F5B51A','F9BA22','FBBD29','FEC232','FFC742','FECC55','FED166','FDD473','FDD880','FEDD8C','FDDF97','FDE4A7','FDEABC','FDEEC8','FDF0D1','FDF3DA','FCF4E2'); my $counter = 2; for(my $i = 0; $i < @sonne; $i++) { fhem("sleep ".$counter." ; set HUEDevice1 rgb ".$sonne[$i]." ; set HUEDevice3 rgb ".$sonne[$i].";"); $counter = $counter + 4; } }
Code anpassen
Je nachdem welche HUE Lampen du verwendest musst du den Code natürlich noch anpassen. Lampen löschen oder hinzufügen, oder den Namen entsprechend ändern.
- Änderst du die Zeile "my $counter = 2;" kannst du ändern wie viele Sekunden es dauern soll, bis der erste Farbwechsel / Helligkeitswechsel stattfindet
- Wenn du "$counter = $counter + 3;" änderst kannst du die Zeit (in Sekunden) zwischen den einzelnen Farbwechselvorgängen beeinflussen
Weitere Möglichkeiten
Du kannst das ganze auch an Anregung für weitere Einsatzmöglichkeiten von IFTTT mit Alexa und FHEM verwenden. Du kannst in das Device IFTTT in FHEM jedes erdenkliche Reading schreiben lassen. Beispielsweise wenn der Timer von Alexa rum ist, um dann die Lichter blinken zu lassen oder ein Soundfile abspielen zu lassen. Hier bin ich gespannt, auf was für Ideen ihr kommt und freue mich über Kommentare.

Ähnliche Beiträge
- deCONZ: Hue-Bridge auf dem Raspberry Pi emulieren
- Vergleich: RGBW LED Stripe Controller für FHEM
- FreeNAS / TrueNAS für PLEX im HP Microserver Gen8 + Steuerung durch FHEM
- HomeMatic CCU2 mit YAHM auf Raspberry Pi 3
- Intel NUC: Proxmox mit Ubuntu VM für FHEM
- Max2Play als Multiroom Audiosystem
- Kostenloses FHEM Backup in die Cloud (z.B. Dropbox)
- QNAP NAS mit SNMP in FHEM einbinden
- BMP180 Luftdrucksensor in FHEM integrieren
- GPIO Sensor / Aktor in FHEM integrieren