Anwesenheitserkennung

Anwesenheitserkennung

Eine recht interessante Option ist die Anwesenheitserkennung. Ich selbst verwende die Möglichkeit von Lan-Ping auf mein Tablet. Weitere Möglichkeiten werden in der Wiki-Seite beschrieben. Dazu verwende ich folgende Zeilen:

#######################################################
# Ping-Ueberwachung
define JT_Tablet PRESENCE lan-ping 192.168.2.181 60
attr JT_Tablet ping_count 4

Selbstverständlich ist darauf zu achten, dass das Tablet oder Smartphone immer die gleiche IP-Adresse hat. Dies geschieht am Besten im Router und/oder DHCP-Server.

In der FHEM-Web-Oberfläche sieht die Anwesenheit dann wie folgt aus:

Die folgende Zeile bewirkt das Abschalten einer Lampe zu einer bestimmte Zeit nur bei Abwesenheit.

define Stehlampe_Aus_1 at *22:30:00 {if(ReadingsVal("JT_Tablet","presence","") eq "absent"){fhem("set Stehlampe off")}}

Bei Anwesenheit bleibt die Lampe an. Dadurch lässt sich recht einfach eine Anwesenheitssimulation realisieren.

Sollte es nötig sein, dass die Anwesenheitssimulation auf mehr als eine Person(Gerät) reagiert, empfiehlt sich die Verwendung einer Variablen, die das Ergebnis einer Oder-Verknüpfung enthält. In meinem Fall sind es zwei Zeilen:

define jemand_da dummy
define bewohnt at +*00:01 {if((ReadingsVal("JT_Tablet","presence","") eq "present")||(ReadingsVal("Partner_Smart","presence","") eq "present")){fhem("set jemand_da present")} else {fhem("set jemand_da absent")}}

Die Oder-Verknüpfung von JT_Tablet und Partner_Smart kann bei Bedarf erweitert werden. Eine Auswertung der neuen Variablen erfolgt wie im folgenden Beispiel:

define Nachttischlampe_An_1 at *22:28:00 {if(ReadingsVal("jemand_da","state","") eq "absent"){fhem("set Nachttischlampe blink 1 420")}}

 

Anwesenheitserkennung mit dem Modul FRITZBOX

Jetzt kann es aber sein, dass diese Anwesenheitserkennung einfach nicht funktioniert, weil das Smartphone, wenn es nicht benutzt wird, sich einfach in den Stromsparmodus schaltet und sein WLAN deaktiviert. Von diesen Geräten gibt es ja löblicherweise immer mehr, so dass der Akku etwas länger durchhält, was aber dazu führt, dass die oben beschriebene Anwesenheitserkennung nicht funktioniert. Für Haushalte, die eine Fritzbox benutzen, gibt es eine Lösung, die ich unter folgendem Link gefunden habe:

https://wiki.fhem.de/wiki/FRITZBOX

Ich selbst habe sie an einer Fritzbox 6490 Cable erfolgreich getestet. Allerdings ist mir aufgefallen, dass die Subroutine bei mir einfach nicht funktionieren will. Aber es gibt trotzdem die Möglichkeit einer Abfrage.

Was ist also zu tun? Als Erstes müssen als User root ein paar Packete nachinstalliert werden:

apt-get install libjson-perl libwww-perl libsoap-lite-perl libjson-xs-perl

apt-get install libnet-telnet-perl

Ist die Installation erfolgreich verlaufen, können in der fhem.cfg zwei weitere Zeilen eingefügt werden:

define FritzBox FRITZBOX 192.168.2.1
attr FritzBox boxUser Benutzername

Die IP-Adresse ist der jeweiligen Umgebung anzupassen und der Benutzername muss in der Fritzbox unter System > FRITZ!Box-Benutzer angelegt werden. Damit sich dieser Benutzer auch anmelden kann, muss noch im Reiter "Anmeldung im Heimnetz" die Auswahl "Anmeldung mit FRITZ!Box-Benutzernamen und Kennwort" getroffen und übernommen werden.

Als nächstes wird das Kennwort für den Benutzer in fhem gesetzt.

set FritzBox password Kennwort

Diese Zeile hat in der fhem.cfg aber aus Sicherheitsgründen nichts verloren.

Dann wird noch die letzte Zeile eingefügt.

attr FritzBox allowTR064Command 1

Nun sollte nach einem Neustart von fhem das Modul FRITZBOX funktionieren. - Leider war ich nicht in der Lage die Subroutine fehlerfrei in Betrieb zu nehmen. Deshalb habe ich mir meine eigene Abfrage erstellt:

define Juergen_da dummy
define JT_LG at +*00:02 {if((ReadingsVal("FritzBox", "mac_10_F1_F2_4C_9F_62", "weg")) eq "weg"){fhem("set Juergen_da absent")} else {fhem("set Juergen_da present")}} 

nach oben