Anwesenheitserkennung per LAN Ping

In diesem Beitrag wird beschrieben wie man die Anwesenheitserkennung per LAN Ping in Fhem in Betrieb nimmt.




 


Ping ausführen

Als erstes sollte man testen ob man als „normaler“ User einen Ping mit dem Rechner absetzen kann. Dazu logt man sich per ssh auf den Server ein auf dem Fhem läuft und führt einen Ping zu dem Gerät aus, dessen Anwesenheit überwacht werden soll.

ping -c 4 192.168.1.36

Wenn der Ping [1] erfolgreich war, sollten möglichst alle Pakete beantwortet werden [2]. Bei meinem Smartphone kam es hin und wieder mal vor das der erste nicht beantwortet wurde. Dies ist aber kein Problem, da wir später den LAN Ping mehrfach ausführen und es reicht aus wenn einer erfolgreich ist.

ping erfolgreich

Bekommt man die Fehlermeldung „Ping: icmp open socket: Operation not permitted“ dann kann folgender Befehl abhilfe schaffen:

sudo chmod u+s `which ping`

Danach sollte der Ping erfolgreich ausgeführt werden.




 


Anwesenheitserkennung in Fhem konfigurieren

In der Fhem Config muss für die Anwesenheitserkennung folgendes eingetragen werden:

define Handy_LAN PRESENCE lan-ping 192.168.1.36 30 600

Die beiden Zahlen am Ende sind der Intervall in Sekunden in dem der Ping ausgeführt werden soll. Die erste Zahl(30) ist der Intervall wenn der Status der Anwesenheitserkennung „absend“ bzw. „normal“ ist, also Abwesend. Die zweite Zahl wenn der Status „present“ ist, also Anwesend.

Damit Daten nur geschrieben werden wenn sich am Status was geändert hat(Event) folgendes hinzufügen:

attr Handy_LAN event-on-change-reading state

Um sicherzustellen das der Ping auch erfolgreich ist, sollte man die Anzahl der Pings die durchgeführt werden etwas erhöhen. Bei mir hat sich ein Wert von 4 als gut funktionierend erwiesen:

attr Handy_LAN ping_count 4

Nun muss noch das Filelog aktiviert werden:

define FileLog_Handy_LAN FileLog ./log/Handy_LAN-%Y.log Handy_LAN

Um die Anwesenheit auch grafisch anzuzeigen wird ein SVG-Plot erstellt:

define SVG_FileLog_Handy_LAN_1 SVG 
FileLog_Handy_LAN:SVG_FileLog_Handy_LAN_1:CURRENT



 

Das sieht dann folgendermaßen bei mir aus:

Definition Fhem Presence Modul

Im unteren Bild sieht man den definierten LAN Ping „Handy_LAN“. Der Status [2] ist gerade „present“. Klickt man auf [1] so kommt man zur nachfolgenden Übersicht.

Handy Lan Present

Hier sieht man ein paar Informationen zum definierten LAN Ping. Zum einen die IP Adresse die überprüft werden soll [1] und dann noch die Scanintervalle wenn die IP-Adresse nicht erreichbar ist [2] und wenn es erreichbar war [3].

Info LAN Ping

Das Presence-Modul hat leider einen Fehler der dazu führt das die Anwesenheitserkennung nicht mehr ordnungegemäß funktioniert. Um dies zu verhindern sollte folgende Zeile in die Fhem-Config eingefügt werden:

define localTelnet telnet 7075



 

Um die Anwesenheitserkennung im Diagramm darzustellen, muss die Datei „SVG_FileLog_Handy_LAN_1.gplot“ angepasst werden. Man findet sie wie im unteren Bild zu sehen unter „Edit files“ [1] und dann auf die Datei [2].

Navigation gplot Datei

Es müssen ein paar Anpassungen vorgenommen werden, da beim Logen des Anwesenheitsstatuses keine Zahlenwerte geschrieben werden, sondern nur „absent“ oder „present“. Diesen muss nun eine Zahl zugeordnet werden. Dies wird mit dem Eintrag [1] erledigt, er weist dem Status „present“ eine 1 zu, allen anderen eine 0.

svg.plot Definition




 

Öffnet man nach dem speichern der gplot-Datei das Diagramm dann sollte es in etwa so aussehen. Die Anpassung aus der gplot-Datei findet man bei [1] wieder.

Diagramm Anwesenheitserkennung

Dies ist hier alles, weiter geht es mit einem Beispiel wie die Anwesenheitserkennung genutzt werden kann.




 


Nutzung der Anwesenheitserkennung per Watchdog

Ein Beispiel wie die Anwesenheitserkennung genutzt werden kann, ist die Temperaturabsenkung der Heizungsthermostate wenn man ein bestimmte Zeit nicht da ist. Dazu muss man folgendes in die Fhem Config eintragen:

define watchdog_Anwesenheit watchdog Handy_LAN:absent 00:10 Handy_LAN:present set ThermKueche_Clima desired-temp 5.0;;set ThermBad_Clima desired-temp 5.0;;set ThermWohnzimmer_Clima desired-temp 5.0;;setstate watchdog_Anwesenheit defined
attr watchdog_Anwesenheit regexp1WontReactivate 1

In dem Beispiel werden, wenn man 10min nicht Anwesend ist, der Sollwert der Heizungsthermostate in der Küche, Wohnzimmer und Bad auf 5.0°C abgesenkt. So sieht die das in der Fhem-Config aus:

Definition Fhem Watchdog

Im unteren Bild sieht man den Status des Watchdogs [2] als „defined“, das heist das der Watchdog nicht „droht“ auszulösen. Klickt man auf [1], dann bekommt man das nachfolgendes Bild zu sehen.

Watchdog anwesend

Hier sieht man die in der Fhem-Config definierten Befehle [1] die beim Auslösen des Watchdogs abgesendet werden sollen und die Zeit [2] nach der der Watchdog auslösen soll wenn der Status „absent“ ist.

Info Fhem Watchdog

Hier sieht man wenn der Status der Anwesenheitserkennung gerade „absent“ geworden ist und der Watchdog noch nicht ausgelöst hat. Die Zeit bedeutet das dann der Watchdog auslöst (die Temperatur herunter gestellt wird), wenn bis dahin der Status der Anwesenheitserkennung nicht wieder auf „present“ geht.

Watchdog abwesend

Das war schon alles zur Konfiguration der Anwesenheitserkennung in Fhem. Ein weiteres Anwendungsgebiete für die Anwesenheitserkennung wäre z.B. die Abschaltung von elektr. Verbrauchern. Dazu vielleicht später mal ein Beispiel…




Schreibe einen Kommentar

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