Das Smart Home weiß jetzt auch, wenn man nach Hause kommt oder das Haus verlässt: Das geht mit dem kostenlosen FHEM Server und einer einfachen Anwesenheitserkennung, zum Beispiel per Bluetooth oder WLAN. Im Test haben wir einen 10 EUR Bluetooth Funkempfänger mit einem Raspberry Pi gekoppelt: Nach einer kurzen Installation des Bluetooth-Sticks kann FHEM ihn bereits verwenden und erkennt andere Bluetooth-Geräte in der Nähe – zum Beispiel das eigene Smartphone.
Kommt man jetzt nach Hause, weiß FHEM bereits Bescheid, solange Bluetooth am Handy aktiviert ist: So kann FHEM zum Beispiel schon das Licht einschalten, für schöne Musik sorgen oder einen mit einer persönlichen Sprachansage begrüßen – zum Beispiel einem “Willkommen zuhause”.
Anwesenheitserkennung: Wer ist gerade zuhause?
Neben dem installierten Bluetooth-Stick braucht man dafür nur die MAC-Adressen der Geräte, die FHEM erkennen soll: Das ist die Geräte-Adresse für den Bluetooth-Chip im Smartphone (Achtung: Das ist nicht die WLAN MAC-Adresse, sondern eine eigene!). Diese gibt man in FHEM ein, anschließend kann man mit dem PRESENCE Modul überwachen, wann sich das Gerät innerhalb der Bluetooth-Reichweite (ca. 7-11 Meter) befindet:
# Bluetooth MAC-Adresse angeben:
define Handy_Nico PRESENCE local-bluetooth C0:00:05:AB:88:2B 10 60
# Dummy definieren als Zuhause-Erkennung
define Nico_Zuhause dummy
attr Nico_Zuhause devStateIcon on:HOME_Status.1 off:HOME_Status.3
attr Nico_Zuhause eventMap 1
attr Nico_Zuhause icon icoHouse
# Nico_Zuhause auf on setzen bei Anwesenheit
define Nico_Zuhause_Anwesend notify Handy_Nico:present { if (Value("Nico_Zuhause") ne "on") {\
fhem("set Nico_Zuhause on ;; setstate watchdog_Handy_Nico_Abwesend defined");;\
fhem("set myMPD playfile hallo-nico.mp3");;\
}}
# Nico_Zuhause auf off setzen nach 5 Minuten Abwesenheit
define watchdog_Handy_Nico_Abwesend watchdog Handy_Nico:absent 00:05 Handy_Nico:present set Nico_Zuhause off
attr watchdog_Handy_Nico_Abwesend regexp1WontReactivate 1
In dem Skript wird zunächst die Bluetooth Adresse definiert, anschließend eine “Dummy-Variable” definiert: In dem Dummy “Nico_Zuhause” wird dann der aktuelle Zustand gespeichert: Ist das Handy im Funkbereich anwesend oder nicht. Dieser Dummy wird dann auch mit Icon angezeigt – wer mag, kann ihn auch einem Raum zuweisen.
Die beiden nächsten Codeblöcke erkennen, ob das über das PRESENCE Modul definierte “Handy_Nico” anwesend (present) oder abwesend (absent) ist und speichern den aktuellen Zustand dann in der Variable “Nico_Zuhause”. Wenn diese nicht bereits auf “on” gesetzt ist, reagiert FHEM dann auch:
fhem("sleep 15 ;; set myMPD playfile hallo-nico.mp3");;\
Diese Zeile sorgt dafür, dass FHEM einen Willkommen-Sound abspielt – alternativ lassen sich hier auch Lichter oder die Stereoanlage einschalten.
Der letzte Code-Block setzt die Variable “Nico_Zuhause” schließlich auf “off”, falls innerhalb der letzten fünf Minuten das Handy nicht mehr innerhalb des Bluetooth-Bereichs erkannt wurde. So beugt man kurzzeitigen Problemen beim Funkempfang vor, falls das Handy kurz zu weit von dem Bluetooth-Empfänger entfernt war oder es Probleme beim Funk-Empfang gab.