Anwesenheitserkennung mit FHEM - Presence

,

Anwesenheitserkennung von Smartphones mit Fritzbox und FHEM

Die Anwesenheitserkennung von Smartphones mit Fritzbox und FHEM basiert auf der Idee mit Hilfe des Smartphones zu erkennen wer zuhause ist. Dabei wird einfach überprüft welche Smartphones im häuslichen WLAN angemeldet sind, um dann im Smarthome automatisch darauf zu reagieren. Wie die Anwesenheitserkennung von Smartphones mit Fritzbox und FHEM funktioniert, zeige ich dir in dieser einfachen Schritt für Schritt Anleitung.

Anwesenheitserkennung von Smartphones mit Fritzbox und FHEM

Die Anwesenheitserkennung von Smartphones mit Fritzbox und FHEM macht vor allem dann Sinn, wenn man das Smarthome darauf abstimmen möchte ob jemand zuhause ist oder nicht. Passende Smarthome Ideen für die Anwesenheitserkennung findest du wie immer am Ende. In den folgenden Schritten zeige ich dir erst einmal, wie du die Anwesenheitserkennung von Smartphones mit Fritzbox und FHEM einrichten kannst.

Fritzbox in FHEM einbinden

Bevor du mit die Anwesenheitserkennung von Smartphones mit Fritzbox und FHEM einrichten kannst, musst du natürlich zuerst deine Fritzbox in FHEM einbinden.

Wenn du anschließend deine Fritzbox in FHEM aufrufst, siehst du unter Readings auch alle angemeldeten WLAN Geräte. Dort findest du eben auch die Smartphones mit ihrer Mac-Adresse und dem auf der Fritzbox hinterlegten Namen.

WLAN Geräte die nicht im Heimnetz angemeldet sind, verschwinden aus der Liste. Um zu erkennen welches Smartphone angemeldet ist, prüft man einfach ob es in den Readings der Fritzbox erscheint oder eben nicht.

Eigene Template Datei erstellen

Wenn du noch keine eigene Template Datei erstellt hast, solltest du das nun tun. Wie genau das geht kannst du unter Eigenen Perl Code in FHEM einbinden nachlesen.

Code Schnipsel in Template Datei einfügen

Der folgende Code Schnipsel aus dem FHEM Wiki überprüft ob eine bestimmte Mac Adresse in den Readings aller eingebundenen Fritzboxen und Repeater vorhanden ist.

sub checkAllFritzMACpresent($) {
# Benötigt: nur die zu suchende MAC ($MAC),
# Es werden alle Instanzen vom Type FRITZBOX abgefragt
#
# Rückgabe: 1 = Gerät gefunden
# 0 = Gerät nicht gefunden
my ($MAC) = @_;
# Wird in keiner Instanz die MAC Adresse gefunden bleibt der Status 0
my $Status = 0;
$MAC =~ tr/:/_/;
$MAC = "mac_".uc($MAC);
my @FBS = devspec2array("TYPE=FRITZBOX");
foreach( @FBS ) {
my $StatusFritz = ReadingsVal($_, $MAC, "weg");
if ($StatusFritz eq "weg") {
} elsif ($StatusFritz eq "inactive") {
} else {
# Reading existiert, Rückgabewert ist nicht "inactive", also ist das Gerät am Netzwerk angemeldet.
$Status = 1;
}
}
return $Status
}

Du kannst den Codeschnipsel nun an der richtigen Stelle in die 99_myUtils.pm einfügen und die Datei speichern.

FHEM - 99_myUtils.pm - Perl Code einfügen

Anwesenheitserkennung in FHEM einbinden

Von allein macht der zuvor eingefügte Code natürlich noch nichts. Wir müssen nun noch eine Abfrage für jedes einzelne Smartphone erstellen, das wir überprüfen wollen. Dazu gibst du folgendes in die Befehlszeile in FHEM ein:

FHEM - Befehle eingeben
define Name PRESENCE function {checkAllFritzMACpresent("AA:BB:CC:DD:EE:FF")} 60 60

Dabei ersetzt du „Name“ durch einen beliebigen Namen, beispielsweise den des Smartphone Besitzers. Und anstatt „AA:BB:CC:DD:EE:FF“ fügst du natürlich die passende Mac-Adresse ein, die du in deiner Fritzbox oder in den Readings der Fritzbox unter FHEM findest.

FHEM - Menü - Raum Everything

Die Anwesenheitsabfragen findest du links im Menü bei „Everything“ unter dem Punkt „PRESENCE“. Dort wird der entsprechende Name aufgeführt und dahinter der Status mit „absent“ für abwesend und „present“ für anwesend.

Du kannst die einzelnen Presence Abfragen natürlich auch wieder in einen beliebigen Raum stecken, indem du das Attribut „room“ in den gewünschten Raum änderst.

Anwesenheitserkennung mit FHEM - Presence

Log Datei für Anwesenheitserkennung erstellen

Wenn man möchte, kann man die Daten der Anwesenheitserkennung noch in eine separate Log Datei schreiben lassen. Auf diese Weise kannst du einfacher über einen längeren Zeitraum nachvollziehen, ob die Anwesenheitserkennung wie gewünscht funktioniert.

Dazu definieren wir zuerst eine neue Log Datei, indem wir folgenden Befehl in FHEM in die Befehlszeile eingeben:

define FileLog_Smartphones FileLog ./log/Smartphones-%Y.log Mutter:.*|Vater:.*|Kind:.*

Damit heißt die neue Log Datei „FileLog_Smartphones“ und wird im entsprechenden Ordner unter dem Dateinamen „Smartphones-Jahr.log“ gespeichert. Anschließend wird definiert was in die Datei geschrieben werden soll. Du musst hier natürlich Mutter, Vater und Kind durch die Namen ersetzen, die du auch zuvor für die einzelnen Presence Abfragen definiert hast.

FHEM - Menü - Raum Everything

Den Eintrag für die Log Datei findest du nach einem Klick auf „Everything“ links im Menü unter dem Punkt FileLog. Du kannst den FileLog Eintrag natürlich auch in einen beliebigen Raum verschieben, indem du das Attribut „room“ änderst.

Anwesenheitserkennung in FHEM graphisch darstellen

Sobald du eine Log Datei erstellt hast, kannst du diese auch verwenden, um die Anwesenheitserkennung in FHEM graphisch darstellen zu lassen.

FHEM aufräumen

attr Name room Schaltzentrale
attr Name icon people_sensor

Smarthome Ideen für die Anwesenheitserkennung

  • wenn niemand zuhause ist: Notbeleuchtung und vergessene Beleuchtung ausschalten, Alarmanlage aktivieren, Anrufbeantworter einschalten, Heizbetrieb reduzieren, Therme abschalten, Garagentor schließen
  • wenn jemand nach hause kommt: Notbeleuchtung einschalten, Außenbeleuchtung einschalten, Anrufbeantworter abspielen, Heizbetrieb erhöhen, Therme anschalten, Begrüßung abspielen, Garagentor öffnen, Alarmanlage deaktivieren

6 Antworten zu “Anwesenheitserkennung von Smartphones mit Fritzbox und FHEM”

  1. Hallo erst einmal Super Tolle Website die hier zur Verfügung gestellt wird!!! Echt KLASSE=)

    Ich hätte da aber mal eine Frage:

    Ich habe das System erfolgreich eingerichtet alles läuft soweit damit meine ich die Anwesenheitserkennung.
    Zusätzlich habe ich noch mien Ikea Tradfri eingebunden und kann dies nun darüber Steuern. (Was erstaunlich schnell und einfach ging =)) Wäre auch mal eine coole Idee für diese Website =)

    So da ich nun sehr sehr frisch am start bin weis ich jetzt nicht genau wie ich das so machen kann dass wenn ich aus dem Haus gehe alle Lampen abgeschaltet werden fals ich mal eine vergessen habe dass heist er soll alles was leuchtet abschalten.

    Wo muss ich das einfügen bzw kann man mir das erklären wie genau das funktioniert?

    • Hallo Jan, vielen Dank für dein Lob. Das Tradfri schaue ich mir mal an. Das Abschalten des Lichtes kannst du einfach über eine Gruppe erledigen. Dann legst du eine Regel an, mit der er die Beleuchtung der Gruppe abschaltet, wenn du nicht anwesend bist. Voraussetzung ist natürlich das du deine Beleuchtung ansteuern kannst. Derzeit liegt der Blog ein wenig brach, aber ich werden schauen, das ich demnächst noch mehr Beispiele zeige. LG und viel Erfolg.

  2. Danke für die detailierte Beschreibung.
    Leider habe ich bisher mit dem Thema Anwesenheitserkennung keine guten Erfahrungen gemacht.
    Bisher hat bei mir keine Variante sowohl bei IOS- als auch bei Android-Devices zuverlässig funktioniert.

    Sobald die IOS etwas länger unbenutzt sind und in einen Powersave gehen, meldet die Fritzbox diese als abwesend. Gute Erfahrungen habe bei IOS mit der der Benachrichtigung per webhook aus IFTTT gemacht.

    Bei den Androids funktioniert die IFTTT Variante aber nur ein paar mal und gibt dann auf.

    Funktioniert die von Dir beschriebene Variante verlässlich, oder hast Du auch die Probleme mit dem Powersave?

    Was ist der Vorteil Deiner PErl-Variante gegenüber dem direkten Abfragen der Fritzbox via ctlmgr_ctl mit dem Presence modul?

  3. syntax error at ./FHEM/99_myUtils.pm line 29, near „sub checkAllFritzMACpresent($) “ Can’t use global @_ in „my“ at ./FHEM/99_myUtils.pm line 35, near „= @_“ syntax error at ./FHEM/99_myUtils.pm line 51, near „$Status }“

    was mache ich falsch?

  4. Guten Tag

    Ich benutze 3 FritzBoxen im Mash. Die Versionen sind alle 7.21.
    Habe versucht das wie hier beschrieben zu machen.
    Leider steht dann immer bei den Handynamen absent. Obwohl es über LAN Ping da ist. Was mache ich falsch? Oder geht das heute nicht mehr mit den Fritzbox Updates?

Schreibe einen Kommentar

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