Anwesenheitserkennung: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Ergänzung und Umformatiert)
 
(186 dazwischenliegende Versionen von 29 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Viele User führen bereits eine eigene Anwesenheitserkennung durch. Diese basiert in den meisten Fällen auf Ping Checks oder bei FritzBoxen über den Befehl ''ctlmgr_ctl''. Diese Lösungen können aber je nach Aufbau und Funktion FHEM massiv beeinträchtigen. Aufgrund des Aufbaus vom FHEM kann dieses dadurch für mehrere Sekunden zum völligen Stillstand gebracht werden.
== Vorüberlegungen ==
 
Daher gibt es nun ein Modul, welches eine zuverlässige Anwesenheitserkennung bietet, ohne dabei FHEM bei der Ausführung zu beeinträchtigen.
 
= Vorüberlegungen =
 
Generell gibt es mehrere Ansätze um Anwesenheitserkennung mit Handys/Smartphones durchzuführen.
Generell gibt es mehrere Ansätze um Anwesenheitserkennung mit Handys/Smartphones durchzuführen.


Zeile 10: Zeile 5:
* Aktivitätsprüfung auf einer FritzBox
* Aktivitätsprüfung auf einer FritzBox
* Bluetooth Checks in der gesamten Wohnung
* Bluetooth Checks in der gesamten Wohnung
* via überwachung der per DHCP vergebenen Adresse auf einer Airport Basestation per snmp
* eigene Perl-Funktion
* aktive Benachrichtigung des Smartphones, ausgelöst z.B. über Geo-Lokation/Geofence


Dabei gilt bei der Auswahl der Art darauf zu achten wie sich das jeweilige Device im Bereich WLAN/Bluetooth verhält.
Dabei gilt bei der Auswahl der Art darauf zu achten wie sich das jeweilige Device verhält. Aufgrund der Vielfältigkeit kann man hier keine allgemeine Vorgehensweise empfehlen. Als einfacher Start (zumindest für Nicht-Apfel Telefone) eignet sich die Ping-Überprüfung und die FritzBox-Abfrage sehr gut.


Es gibt Geräte, welche ihr WLAN/Bluetooth auch im Standby ständig an haben und auf Anfragen antworten können (fast alle Android-Geräte). Gerade bei Tests über WLAN kann sich das aber signifikant auf die Akku Leistung auswirken.
{{Randnotiz|RNText=Eine mögliche Lösung für diesen Effekt, ist die Verwendung von [[Blocking Call]] in eigen entwickelten Anwesenheitserkennung}}Viele Benutzer führen bereits eine '''eigen''' entwickelte Anwesenheitserkennung durch. Diese basiert in den meisten Fällen auf Ping Checks oder bei [[AVM Fritz!Box|FritzBoxen]] auf dem Befehl ''ctlmgr_ctl''. Diese Lösungen können aber je nach Aufbau und Funktion FHEM massiv beeinträchtigen. Aufgrund des Aufbaus vom FHEM kann dieses dadurch für mehrere Sekunden zum völligen Stillstand gebracht werden.


Andere Geräte wiederum schalten WLAN im Standby Betrieb aus um Akku zu sparen. Bluetooth hingegen bleibt weiterhin aktiviert und kann auf Anfragen reagieren. (iPhone)
Da es in FHEM aber mittlerweile '''mehrere''' Module gibt, die eine zuverlässige '''Anwesenheitserkennung''' bieten, ohne dabei FHEM bei der Ausführung zu beeinträchtigen, empfiehlt sich deren Einsatz.


Wenn man bei einem iPhone die Funktion "über WLAN synchronisieren" aktiviert hat, so ist dies auch im Standby jederzeit pingbar wenn der Recher auf dem iTunes zum synchroniseren läuft auch an ist. Ansonsten ist bei iPhone Geräten nur die Aktivitätsprüfung mit einer FritzBox oder das überwachen der DHCP lease auf einer Airport Basestation wirklich zuverlässig.
Eine erweiterte Funktion der Anwesenheitserkennung ist die Standortverfolgung, die sich nicht nur auf ein oder sehr wenige mit (eigenem) WLAN versorgte Gebiete beschränkt.


Auch wenn man Bluetooth aktiviert hat, so bleiben einige Handys erst dann empfangsbereit, wenn sie bereits zu irgend einem Bluetoothgerät gekoppelt wurden. Sind diese Geräte noch nie gekoppelt worden, so deaktivieren diese ihren Bluetooth Empfänger beim verlassen des Bluetooth-Menüs im Gerät (iPhone).
=== Randbedingungen ===
Es gibt Geräte, die ihr WLAN/Bluetooth auch im Standby ständig aktiv haben und auf Anfragen antworten können (fast alle Android-Geräte). Gerade bei Tests über WLAN kann sich das aber signifikant auf die Akku Leistung auswirken.


Hier gilt es vor allem auszuprobieren wie stark der Akku durch eine Anwesenheitserkennung beeinträchtigt wird. Entscheidend ist hier in welchem Abstand man eine Anwesenheitserkennung durchführt. Viele Abfragen wirken sich stärker auf den Akku aus als wenige. Wenige Abfragen bieten aber keine zuverlässige und zeitnahe Erkennung.
Andere Geräte wiederum schalten WLAN im Standby Betrieb aus, um Akkukapazität zu sparen. Bluetooth hingegen bleibt weiterhin aktiviert und kann auf Anfragen reagieren. (iPhone)


Da sich jedes Gerät hierbei anders verhält, kann man hier pauschal keine allgemeine Vorgehensweise empfehlen.
Wenn man bei einem iPhone die Funktion "über WLAN synchronisieren" aktiviert hat, so ist dies auch im Standby jederzeit pingbar, wenn der Recher auf dem iTunes zum synchroniseren läuft auch an ist. Ansonsten ist bei iPhone Geräten nur die Aktivitätsprüfung mit einer FritzBox oder das überwachen der DHCP Lease auf einer Airport Basestation wirklich zuverlässig.


= Das PRESENCE Modul =
Auch wenn Bluetooth aktiviert ist, so bleiben einige Mobiltelefone erst dann empfangsbereit, wenn sie bereits zu irgend einem Bluetoothgerät gekoppelt wurden. Sind diese Geräte noch nie gekoppelt worden, deaktivieren diese ihren Bluetooth Empfänger beim verlassen des Bluetooth-Menüs im Gerät (iPhone).


Das PRESENCE Modul bietet für die Anwesenheitserkennung mehrere Varianten an. Diese sind aktuell folgende:
Hier gilt es vor allem auszuprobieren, wie stark der Akku durch eine Anwesenheitserkennung belastet wird. Entscheidend ist hier, in welchem Abstand man eine Anwesenheitserkennung durchführt. Viele Abfragen wirken sich stärker auf den Akku aus als wenige. Wenige Abfragen bieten aber keine zuverlässige und zeitnahe Erkennung.


* '''lan-ping''' - Das überwachen via PING Checks, welche durch den FHEM Server versandt werden.
Als Alternative, unabhängig vom WLAN und der Erkennung, ob ein Gerät dort eingebucht ist oder nicht, bzw. unabhängig von Bluetooth kann zumindest bei einem iPhone die seit iOS 7 nochmals stark verbesserte Geo-Lokation (Geofencing) genutzt werden. Die iPhone Apps [http://geofency.com/ Geofency] oder [http://geofancy.com/ Geofancy] werden über das FHEM-Modul GEOFANCY angebunden und übertragen ihren Status immer dann, wenn ein definierter Standort betreten oder verlassen wird. Gekoppelt mit entsprechenden Notify und/oder Watchdog Kommandos ist so ebenfalls eine sehr zuverlässige Anwesenheitserkennung möglich (und das nicht nur für das eigene Zuhause).
* '''fritzbox''' - Das überwachen von Geräten auf einer FritzBox via ctlmgr_ctl (Nur auf einer FritzBox möglich)
* '''local-bluetooth''' - Das überwachen via Bluetooth Checks, welche vom FHEM Server direkt durchgeführt werden (angeschlossener Bluetooth-Stick und die Software bluez voraussgesetzt)
* '''lan-bluetooth''' - Das überwachen von Bluetoothgeräte, über Netzwerk. Auf einer oder mehreren Maschinen im Netzwerk (z.B. [[Raspberry Pi]]) läuft eine Presence-Daemon, welcher nach Bluetooth-Geräten sucht. Um mehrere Presence-Daemon mit FHEM zu verbinden, gibt es den Collector-Daemon, welche sich zu allen Presence-Damons im Netzwerk verbindet und das Ergebnis von allen zusammenfasst.


== Ping-Überwachung von Geräten im WLAN/LAN ==
== PRESENCE-Modul ==
Um ein Gerät via Ping zu überwachen definiert man folgendes in der fhem.cfg:
Das [[PRESENCE]] Modul bietet für die Anwesenheitserkennung mehrere Varianten an. Diese sind aktuell folgende:


<pre>
* '''lan-ping''' - Das Überwachen via PING Checks, die durch den FHEM Server versandt werden.
define Handy PRESENCE lan-ping 192.168.0.30
* '''fritzbox''' - Das Überwachen von Geräten auf einer FritzBox via ctlmgr_ctl (Nur auf einer FritzBox möglich) '''Abgekündigt'''
</pre>
* ''' Bluetooth'''
:- '''local-bluetooth''' - Das Überwachen via Bluetooth Checks, die vom FHEM Server direkt durchgeführt werden (angeschlossener Bluetooth-Stick und die Software bluez voraussgesetzt)
:- '''lan-bluetooth'''  - Das Überwachen von Bluetoothgeräten, über Netzwerk. Auf einer oder mehreren Maschinen im Netzwerk (z.B. [[:Kategorie:Raspberry Pi|Raspberry Pi]]) läuft ein Presence-Daemon, der nach Bluetooth-Geräten sucht. Um mehrere Presence-Daemon mit FHEM zu verbinden, gibt es den Collector-Daemon, der sich zu allen Presence-Damons im Netzwerk verbindet und das Ergebnis von allen zusammenfasst.
* '''function''' - Das Überwachen mithilfe einer selbst geschrieben Perl-Funktion, die den Anwesenheitsstatus zurückgibt (0 oder 1)
* '''shell-script''' - Das Überwachen mithilfe eines selbst geschriebenen Shell-Programms/Skript, das eine 0 oder 1 ausgibt, um den Anwesenheitsstatus mitzuteilen.


Dadurch wird die IP-Addresse 192.168.0.30 aller 30 Sekunden geprüft, ob sie erreichbar ist. Wenn sie erreichbar ist, ist der Status "present" (anwesend), ansonsten "absent" (abwesend)
Für eine bessere Übersicht befinden sich die '''Details''' zur '''Einrichtung''' und '''Benutzung''' von PRESENCE auf folgende '''Seite''' [[PRESENCE|PRESENCE]]


Mann kann das Timeout verändern indem man es als zusätzlichen Wert hinten anhängt:
Im Forum [https://forum.fhem.de/index.php/topic,76342.0.html] findet man eine Lösung zum Problem des "deep standby" Modus von den neuen iPhones und Android Geräte. Mittels hping3 werden Packete an das Gerät geschickt, damit die "wach" bleiben. Dann werden die Mac-Adressen via 'arp' gelesen.


<pre>
== GEOFANCY-Modul ==
define Handy PRESENCE lan-ping 192.168.0.30 60
Das Modul ermöglicht über einen sogenannten Webhook Mechanismus (umgangssprachlich oft auch als "Push" benannt) das aktive Melden des aktuellen Standortes. Die iPhone Apps  [http://geofency.com/ Geofency] und [http://geofancy.com/ Geofancy] können dann aktiv und quasi in dem Moment, wo man den Wohnbereich betritt oder verlässt, benachrichtigen. Android Nutzern können [https://play.google.com/store/apps/details?id=de.egi.geofence.geozone&hl=de EgiGeoZone Geofence] nutzen. Das geht nochmals um einiges schneller, als die Erkennung im WLAN, bei der die Anwesenheit nur in (engen) Zyklen aktiv geprüft werden muss. Gleichzeitig werden Ressourcen in FHEM geschont. Die aktuelle Implementierung im iPhone 5S mit dediziert für das Tracking zuständigem Chip ist so gut, dass der Akku ebenfalls sehr geschont wird.
</pre>


Nun würde das Handy aller 60 Sekunden geprüft werden.
Für eine bessere Übersicht befinden sich die '''Details''' zur '''Einrichtung''' und '''Benutzung''' von GEOFANCY auf folgende '''Seite''' [[GEOFANCY|GEOFANCY]]


Nur wenn man bei einem iPhone/iPad die Funktion "über WLAN synchronisieren" aktiviert hat, so ist dies auch im Standby zuverlässig pingbar. Standardmäßig deaktivieren Apple-Geräte ihr WLAN im Standby-Betrieb um Akku zu sparen.
== livetracking-Modul ==
Das [[livetracking]] Modul baut auf der App Owntracking auf. Wird sie installiert, so kann man via MQTT oder HTTP an FHEM Angaben über den eigenen Standort, die Batteriestärke und die Entfernung zum Heimatort senden.  


== FritzBox: direktes Abfragen der Aktivität via ctlmgr_ctl ==
Livetracking ist unter Linux (RPi) wie folgt zu installieren. Zuerst sind zwei Perl-Module zu holen
Eine sehr häufige und auch zuverlässige Methode ist auf einer FritzBox die Abfrage mittels ctlmgr_ctl Befehl. Über diesen lassen sich alle Geräte abfragen ob sie aktiv sind. Ist ein Gerät aktiv, so gilt es als anwesend.
sudo apt-get -y install libnet-oauth-perl
sudo apt-get -y install libmath-round-perl
Das Modul selbst wird ohne weitere Angaben durch
define <name> livetracking
in FHEM angelegt. Es erhält ein Attribut, das auf das owntracking-Gerät in FHEM verweist durch
attr owntracksDevice <hier-owntracking-device-angeben>
Das owntracking-device selbst ist ein MQTT-Gerät, das in der App entsprechend anzulegen ist. Eine beispielhafte Installation (hinter einem VPN) sieht hier so aus
defmod <hier-owntracking-device-angeben> MQTT_DEVICE
attr <hier-owntracking-device-angeben> IODev Mosquitto
attr <hier-owntracking-device-angeben> subscribeReading_OWNTRACKS owntracks/<nutzer-und-app-spezifische-angaben>


Dieser Modus kann allerdings nur in FHEM Installationen direkt auf einer FritzBox verwendet werden. Desweiteren muss FHEM unter dem User root laufen.
Um ein Gerät zu überwachen wird lediglich der Gerätename benötigt, so wie er unter dem Menüpunkt "Heimnetz" auftaucht. In der fhem.cfg sieht dies folgendermaßen aus.


<pre>
== Beispiele für die Nutzung der Anwesenheitserkennung ==
define Handy PRESENCE fritzbox iPhone-4S
Hier sollen Beispiele für den Nutzen von Anwesenheitserkennung aufgezeigt werden.
</pre>


=== FHEM Ausführung von User boxusr99/fhem zu root ändern ===
=== Abschalten aller Verbraucher (Licht, Musikanlage) beim Verlassen der Wohnung ===
Typisches Szenario: Man geht ausser Haus, aber hat vergessen im Bad das Licht aus zu machen. Allerdings geht man heutzutage fast gar nicht mehr ohne Handy aus dem Haus.


Eine detaillierte Beschreibung um FHEM wieder unter root auf der FritzBox zu starten findet ihr in dem Artikel [[FritzBox: fhem unter root starten]]
Nun soll FHEM in der gesamten Wohnung das Licht, sowie sonstige Verbraucher ausschalten, wenn ich länger als 15 Minuten ausser Haus bin. Dazu benötigt man zuerst eine structure, die alle Verbraucher und sonstigen Devices, die das betrifft, zusammenfasst.


== Bluetooth-Überwachung von Geräten durch den FHEM Server ==
<pre>
[[Datei:Bluetooth-Adresse-iPhone.png|thumb|Bluetooth-Adresse eines iPhones]]
define Gesamte_Wohnung structure Gesamtes_Licht Licht_Wohnzimmer Licht_Kueche LED_Kueche Licht_Bad Licht_Schlafzimmer AV_Receiver TV_Steckdose
Jenach Aufstellungsort des FHEM Servers kann es sinnvoll sein, eine Bluetooth-Überwachung direkt durch den FHEM Server durchzuführen. Hierbei gilt allerdings zu beachten, das Bluetooth nicht für große Reichweiten gedacht ist und in den meisten Fällen keine Wände überwinden können. Das heist, dass man in den meisten Fällen damit nur einen Raum überwachen kann.
attr Gesamte_Wohnung room Wohnung
</pre>


Je nach Einsatzzweck kann das auch so gewollt sein. Bluetooth USB Sticks welche bereits Bluetooth 4.0 unterstützen können höhere Reichweiten über Zimmerwände hinaus erreichen. Voraussgesetzt das Handy unterstützt Bluetooth 4.0.
Nun kann man mittels eines watchdogs eine Überwachung für sein Handy anlegen:


Um eine Überwachung per Bluetooth durchführen zu können benötigt man die Bluetooth-Adresse eines Gerätes. Diese ähnelt sich vom Aufbau einer MAC-Adresse. Generell wird die Adresse in den Telefon-Informationen bei Smartphones angezeigt.
<pre>
# Überwachen der gesamten Wohnung mittels collectord sowie presenced in jedem Raum
define Handy PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 127.0.0.1:5222
attr Handy event-on-change-reading state  # Ein Event soll nur bei der Änderung des Anwesenheitsstatus (Reading: status) erfolgen. Wichtig für den watchdog!!!


Um eine Anwesenheitserkennung via Bluetooth durchzuführen wird folgende Zeile in der fhem.cfg benötigt:
# Nach 15 Minuten Abwesenheit (Handy im Status "absent") soll die gesamte Wohnung ausgeschaltet werden.
 
define watchdog_Anwesenheit watchdog Handy:absent 00:15 Handy:present set Gesamte_Wohnung off ; trigger watchdog_Anwesenheit .
<pre style="margin-right: 210px;">
attr watchdog_Anwesenheit regexp1WontReactivate 1
define Handy PRESENCE local-bluetooth XX:XX:XX:XX:XX:XX
</pre>
</pre>


== Bluetooth-Überwachung von Geräten durch verteilte Agenten in der Wohnung (presencd/collectord) ==
[[Datei:Raspberry-Pi-mit-WLAN-und-Bluetooth-Stick.jpg|thumb|left|Raspberry Pi mit Bluetooth- und WLAN-USB-Stick]]
Um eine zuverlässige und flächendeckende Bluetooth-Anwesenheitserkennung durchzuführen, ist es unerlässlich mehrere Bluetooth-Empfänger zu verwenden, welche auf mehrere oder alle Räume verteilt sind.


Hierführ bietet sich zum Beispiel ein Raspberry Pi mit einem Mini-Bluetooth-USB-Stick und evtl. einem WLAN-USB-Stick an. Jeder Raum wird mit solch einem Raspberry ausgestattet und ist im WLAN Netz verfügbar.
=== Benachrichtigung bei Batteriewechsel ===
Mit Hilfe des PRESENCE-Moduls kann man auch bei batteriebetriebenen Geräten eine Meldung ausgeben, sobald ein Batteriewechsel ansteht. Hier im Beispiel wird der Eve-Room-Sensor von Elgato eingebunden und anschließend mit einer DOIF-Nachricht ausgestattet.
Die Bluetooth-Adresse des Sensors kann mittels eines BLE-Scanners ermittelt werden.


Dieses Netz aus Raspberrys wird mit dem presenced (Download-Link ist in der Commandref zum Modul enthalten) ausgestattet. Es stehen bereits entsprechende Pakete für das Raspberry zur Verfügung.
<pre>
 
# PRESENCE-Modul für Elgato Eve Room Sensor mit Aktualisierung alle 6 Minuten
Beide Programme (presenced/collectord) sind Perl-Skripte welche als Daemon im Hintergrund laufen und auf Anfragen via Netzwerk warten. Es wird lediglich eine vollständige Perl-Grundinstallation benötigt mit Standardmodulen. Nach Installation der *.deb Paket sollten diese noch angewiesen werden, automatisch beim Rechner-Neustart gestartet zu werden:
define Eve_Room_BLE lan-bluetooth <Bluetooth-Adresse> 127.0.0.1:5333 360
</pre>


Anschließend wird eine DOIF-Regel definiert, die eine Nachricht an die installierte FHEM App absendet:
<pre>
<pre>
sudo update-rc.d presenced defaults
define Eve_Room_BLE_Battery_Msg DOIF ([Eve_Room_BLE] eq "absent") (set Msg_iPhone message 'Batteriewechsel beim Eve Room Sensor im Wohnzimmer.')
sudo update-rc.d collectord defaults
attr Eve_Room_BLE_Battery_Msg wait 600
</pre>
</pre>


Eine detaillierte Benutzung von presenced findet man in der Commandref zum PRESENCE Modul.
Die Aktualisierung des PRESENCE-Eintrages sollte nicht größer sein als das WAIT-Attribut der DOIF-Regel. Ansonsten könnte eine kurze Systemstörung zum Fehlalarm führen.
 
[[Kategorie:Code Snippets]]
=== Jeden Raum einzeln ansprechen (presenced) ===
[[Kategorie:Glossary]]
 
[[Kategorie:Anwesenheitserkennung]]
=== Alle Räume gemeinsam ansprechen (collectord) ===
 
== Überwachung von Geräten mit Perl-Code ==
 
=== Beispiel DHCP überwachung auf Airport Basestation ===
 
= Beispiele für die Nutzung der Anwesenheitserkennung =
Hier sollen Beispiele für die Nutzung von PRESENCE aufgezeigt werden.
 
== Abschalten aller Verbraucher (Licht, Musikanlage) beim Verlassen der Wohnung ==

Aktuelle Version vom 23. Januar 2024, 20:23 Uhr

Vorüberlegungen

Generell gibt es mehrere Ansätze um Anwesenheitserkennung mit Handys/Smartphones durchzuführen.

  • via PING Checks im gesamten WLAN
  • Aktivitätsprüfung auf einer FritzBox
  • Bluetooth Checks in der gesamten Wohnung
  • eigene Perl-Funktion
  • aktive Benachrichtigung des Smartphones, ausgelöst z.B. über Geo-Lokation/Geofence

Dabei gilt bei der Auswahl der Art darauf zu achten wie sich das jeweilige Device verhält. Aufgrund der Vielfältigkeit kann man hier keine allgemeine Vorgehensweise empfehlen. Als einfacher Start (zumindest für Nicht-Apfel Telefone) eignet sich die Ping-Überprüfung und die FritzBox-Abfrage sehr gut.

Info green.pngEine mögliche Lösung für diesen Effekt, ist die Verwendung von Blocking Call in eigen entwickelten Anwesenheitserkennung

Viele Benutzer führen bereits eine eigen entwickelte Anwesenheitserkennung durch. Diese basiert in den meisten Fällen auf Ping Checks oder bei FritzBoxen auf dem Befehl ctlmgr_ctl. Diese Lösungen können aber je nach Aufbau und Funktion FHEM massiv beeinträchtigen. Aufgrund des Aufbaus vom FHEM kann dieses dadurch für mehrere Sekunden zum völligen Stillstand gebracht werden.

Da es in FHEM aber mittlerweile mehrere Module gibt, die eine zuverlässige Anwesenheitserkennung bieten, ohne dabei FHEM bei der Ausführung zu beeinträchtigen, empfiehlt sich deren Einsatz.

Eine erweiterte Funktion der Anwesenheitserkennung ist die Standortverfolgung, die sich nicht nur auf ein oder sehr wenige mit (eigenem) WLAN versorgte Gebiete beschränkt.

Randbedingungen

Es gibt Geräte, die ihr WLAN/Bluetooth auch im Standby ständig aktiv haben und auf Anfragen antworten können (fast alle Android-Geräte). Gerade bei Tests über WLAN kann sich das aber signifikant auf die Akku Leistung auswirken.

Andere Geräte wiederum schalten WLAN im Standby Betrieb aus, um Akkukapazität zu sparen. Bluetooth hingegen bleibt weiterhin aktiviert und kann auf Anfragen reagieren. (iPhone)

Wenn man bei einem iPhone die Funktion "über WLAN synchronisieren" aktiviert hat, so ist dies auch im Standby jederzeit pingbar, wenn der Recher auf dem iTunes zum synchroniseren läuft auch an ist. Ansonsten ist bei iPhone Geräten nur die Aktivitätsprüfung mit einer FritzBox oder das überwachen der DHCP Lease auf einer Airport Basestation wirklich zuverlässig.

Auch wenn Bluetooth aktiviert ist, so bleiben einige Mobiltelefone erst dann empfangsbereit, wenn sie bereits zu irgend einem Bluetoothgerät gekoppelt wurden. Sind diese Geräte noch nie gekoppelt worden, deaktivieren diese ihren Bluetooth Empfänger beim verlassen des Bluetooth-Menüs im Gerät (iPhone).

Hier gilt es vor allem auszuprobieren, wie stark der Akku durch eine Anwesenheitserkennung belastet wird. Entscheidend ist hier, in welchem Abstand man eine Anwesenheitserkennung durchführt. Viele Abfragen wirken sich stärker auf den Akku aus als wenige. Wenige Abfragen bieten aber keine zuverlässige und zeitnahe Erkennung.

Als Alternative, unabhängig vom WLAN und der Erkennung, ob ein Gerät dort eingebucht ist oder nicht, bzw. unabhängig von Bluetooth kann zumindest bei einem iPhone die seit iOS 7 nochmals stark verbesserte Geo-Lokation (Geofencing) genutzt werden. Die iPhone Apps Geofency oder Geofancy werden über das FHEM-Modul GEOFANCY angebunden und übertragen ihren Status immer dann, wenn ein definierter Standort betreten oder verlassen wird. Gekoppelt mit entsprechenden Notify und/oder Watchdog Kommandos ist so ebenfalls eine sehr zuverlässige Anwesenheitserkennung möglich (und das nicht nur für das eigene Zuhause).

PRESENCE-Modul

Das PRESENCE Modul bietet für die Anwesenheitserkennung mehrere Varianten an. Diese sind aktuell folgende:

  • lan-ping - Das Überwachen via PING Checks, die durch den FHEM Server versandt werden.
  • fritzbox - Das Überwachen von Geräten auf einer FritzBox via ctlmgr_ctl (Nur auf einer FritzBox möglich) Abgekündigt
  • Bluetooth
- local-bluetooth - Das Überwachen via Bluetooth Checks, die vom FHEM Server direkt durchgeführt werden (angeschlossener Bluetooth-Stick und die Software bluez voraussgesetzt)
- lan-bluetooth - Das Überwachen von Bluetoothgeräten, über Netzwerk. Auf einer oder mehreren Maschinen im Netzwerk (z.B. Raspberry Pi) läuft ein Presence-Daemon, der nach Bluetooth-Geräten sucht. Um mehrere Presence-Daemon mit FHEM zu verbinden, gibt es den Collector-Daemon, der sich zu allen Presence-Damons im Netzwerk verbindet und das Ergebnis von allen zusammenfasst.
  • function - Das Überwachen mithilfe einer selbst geschrieben Perl-Funktion, die den Anwesenheitsstatus zurückgibt (0 oder 1)
  • shell-script - Das Überwachen mithilfe eines selbst geschriebenen Shell-Programms/Skript, das eine 0 oder 1 ausgibt, um den Anwesenheitsstatus mitzuteilen.

Für eine bessere Übersicht befinden sich die Details zur Einrichtung und Benutzung von PRESENCE auf folgende Seite PRESENCE

Im Forum [1] findet man eine Lösung zum Problem des "deep standby" Modus von den neuen iPhones und Android Geräte. Mittels hping3 werden Packete an das Gerät geschickt, damit die "wach" bleiben. Dann werden die Mac-Adressen via 'arp' gelesen.

GEOFANCY-Modul

Das Modul ermöglicht über einen sogenannten Webhook Mechanismus (umgangssprachlich oft auch als "Push" benannt) das aktive Melden des aktuellen Standortes. Die iPhone Apps Geofency und Geofancy können dann aktiv und quasi in dem Moment, wo man den Wohnbereich betritt oder verlässt, benachrichtigen. Android Nutzern können EgiGeoZone Geofence nutzen. Das geht nochmals um einiges schneller, als die Erkennung im WLAN, bei der die Anwesenheit nur in (engen) Zyklen aktiv geprüft werden muss. Gleichzeitig werden Ressourcen in FHEM geschont. Die aktuelle Implementierung im iPhone 5S mit dediziert für das Tracking zuständigem Chip ist so gut, dass der Akku ebenfalls sehr geschont wird.

Für eine bessere Übersicht befinden sich die Details zur Einrichtung und Benutzung von GEOFANCY auf folgende Seite GEOFANCY

livetracking-Modul

Das livetracking Modul baut auf der App Owntracking auf. Wird sie installiert, so kann man via MQTT oder HTTP an FHEM Angaben über den eigenen Standort, die Batteriestärke und die Entfernung zum Heimatort senden.

Livetracking ist unter Linux (RPi) wie folgt zu installieren. Zuerst sind zwei Perl-Module zu holen

sudo apt-get -y install libnet-oauth-perl
sudo apt-get -y install libmath-round-perl

Das Modul selbst wird ohne weitere Angaben durch

define <name> livetracking

in FHEM angelegt. Es erhält ein Attribut, das auf das owntracking-Gerät in FHEM verweist durch

attr owntracksDevice <hier-owntracking-device-angeben>

Das owntracking-device selbst ist ein MQTT-Gerät, das in der App entsprechend anzulegen ist. Eine beispielhafte Installation (hinter einem VPN) sieht hier so aus

defmod <hier-owntracking-device-angeben> MQTT_DEVICE
attr <hier-owntracking-device-angeben> IODev Mosquitto
attr <hier-owntracking-device-angeben> subscribeReading_OWNTRACKS owntracks/<nutzer-und-app-spezifische-angaben>


Beispiele für die Nutzung der Anwesenheitserkennung

Hier sollen Beispiele für den Nutzen von Anwesenheitserkennung aufgezeigt werden.

Abschalten aller Verbraucher (Licht, Musikanlage) beim Verlassen der Wohnung

Typisches Szenario: Man geht ausser Haus, aber hat vergessen im Bad das Licht aus zu machen. Allerdings geht man heutzutage fast gar nicht mehr ohne Handy aus dem Haus.

Nun soll FHEM in der gesamten Wohnung das Licht, sowie sonstige Verbraucher ausschalten, wenn ich länger als 15 Minuten ausser Haus bin. Dazu benötigt man zuerst eine structure, die alle Verbraucher und sonstigen Devices, die das betrifft, zusammenfasst.

define Gesamte_Wohnung structure Gesamtes_Licht Licht_Wohnzimmer Licht_Kueche LED_Kueche Licht_Bad Licht_Schlafzimmer AV_Receiver TV_Steckdose
attr Gesamte_Wohnung room Wohnung

Nun kann man mittels eines watchdogs eine Überwachung für sein Handy anlegen:

# Überwachen der gesamten Wohnung mittels collectord sowie presenced in jedem Raum
define Handy PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 127.0.0.1:5222
attr Handy event-on-change-reading state  # Ein Event soll nur bei der Änderung des Anwesenheitsstatus (Reading: status) erfolgen. Wichtig für den watchdog!!!

# Nach 15 Minuten Abwesenheit (Handy im Status "absent") soll die gesamte Wohnung ausgeschaltet werden.
define watchdog_Anwesenheit watchdog Handy:absent 00:15 Handy:present set Gesamte_Wohnung off ; trigger watchdog_Anwesenheit .
attr watchdog_Anwesenheit regexp1WontReactivate 1


Benachrichtigung bei Batteriewechsel

Mit Hilfe des PRESENCE-Moduls kann man auch bei batteriebetriebenen Geräten eine Meldung ausgeben, sobald ein Batteriewechsel ansteht. Hier im Beispiel wird der Eve-Room-Sensor von Elgato eingebunden und anschließend mit einer DOIF-Nachricht ausgestattet. Die Bluetooth-Adresse des Sensors kann mittels eines BLE-Scanners ermittelt werden.

# PRESENCE-Modul für Elgato Eve Room Sensor mit Aktualisierung alle 6 Minuten
define Eve_Room_BLE lan-bluetooth <Bluetooth-Adresse> 127.0.0.1:5333 360

Anschließend wird eine DOIF-Regel definiert, die eine Nachricht an die installierte FHEM App absendet:

define Eve_Room_BLE_Battery_Msg DOIF ([Eve_Room_BLE] eq "absent") (set Msg_iPhone message 'Batteriewechsel beim Eve Room Sensor im Wohnzimmer.')
attr Eve_Room_BLE_Battery_Msg wait 600

Die Aktualisierung des PRESENCE-Eintrages sollte nicht größer sein als das WAIT-Attribut der DOIF-Regel. Ansonsten könnte eine kurze Systemstörung zum Fehlalarm führen.