Präsenzerkennung mit Bluetooth oder WLAN

Eine Königsdisziplin im Smarthomebereich ist die zuverlässige Präsenzerkennung. Dabei gibt es verschiedene Möglichkeiten. Die offensichtlichste ist natürlich die Erkennung von Bewegungen über Bewegungsmelder (PIR/Radar/etc.). Eine durchaus interessante Alternative ist die Beobachtung der Umgebung via WLAN oder Bluetooth. Nach einigen Tests stellt man schnell fest wie viele Informationen so über den Äther gehen die Aufschluss über Bewegungsmuster von mobilen Endgeräten geben. D.h. man nutzt hier nicht Sensoren um Personen zu erkennen sondern die Geräte die diese Personen i.d.R. immer dabei haben – Smartphones.

Technisch sind da 2 Funkstandards interessant: Wifi/WLan und Bluetooth.

Wifi/WLAN

Hier geht es darum mobile Endgeräte über den Funktstandard WLan zu erkennen. An dieser Stelle gibt es dann nochmal 2 mögliche Ansätze, die im Folgenden weiter erläutert werden.

bekanntes Gerät

Eine nahe liegende und simple Methode ist ein bekanntes Smartphone, welches in einem Netzwerk per WLAN angemeldet, ist einfach über die IP Adresse zu identifizieren. Hier könnte man sich z.B. vorstellen Alarmfunktionen rund um’s Haus zu deaktivieren sobald ein bekanntes Smartphone im WLAN auftaucht. (Zynismus-Mode ein)Dabei gibt es dann noch zu berücksichtigen dass evtl. die Dame des Hauses Ihr Telefon auch gerne Mal zuhause liegen lässt und das Haus verlässt.(Zynismus-Mode aus)
Das geht zum Beispiel mit einem simplen “Ping” Befehl. Mit einem Ping kann man jeden beliebigen Netzteilnehmer über seine IP Adresse fragen ob er gerade erreichbar ist oder nicht. Das setzt natürlich voraus dass:

    1. ein Gerät bereits bekannt ist(z.B. Eurer eigenes Smartphone)
      Heißt im Klartext: Das hier funktioniert nur mit Geräten die sich erfolgreich in einem WLAN angemeldet haben. Dafür muss auf dem Gerät der richtige WPA/WPA2/WEP Schlüssel hinterlegt sein. Ergo: Damit lassen sich nur die eigenen Geräte erkennen.
    1. Dieses Gerät in Eurem Netz immer die GLEICHE IP Adresse erhält
      Um zu erreichen dass ein bestimmter Netzteilnehmer über einen Router immer die gleiche IP erhält bieten die meisten Router sog. statische DHCP Zuweisungen über die MAC-Adresse an. Die MAC-Adresse findet man immer irgendwo in den Einstellungen Eures Telefons. Bei Android aktuell z.B. unter “Einstellungen” -> “System” -> “Über das Telefon” -> “Status” -> “WLAN-MAC-Adresse”. Die MAC-Adresse hat eine hexadezimale Darstellung und ist in 6 Blöcke aufgeteilt(z.B. 70:8A:09:29:B4:7E). Im Router muss nun diese MAC einer festen IP zuordnet werden. Wenn das fest eingetragen ist lässt sich dieses Telefon in Zukunft immer über diese IP Ansprechen.
  1. Das Endgerät auf eine Ping Anfrage reagiert und eine Antwort schickt
    Testen kann man das dann unter Linux und Windows so:

    In diesem Fall ist das Gerät erreichbar.

Sind diese Vorrausetzungen gegeben müsst Ihr nur noch ein bisschen Code drumherum schreiben und könnt damit bereits erfolgreich Eure Smartphones detektieren. Hier wäre z.B. ein Python Beispiel:

unbekannte Geräte

Interessant kann es unter Umständen auch sein noch nicht bekannte Geräte zu erfassen um diese Daten weiter zu analysieren oder bestimmte Aktionen auszulösen. In dicht besiedelten Gebieten wird man hier i.d.R. große Mengen an Daten erhalten. Ein Smarthome Szenario könnte hier z.B. sein sämtliche Strahler rund um’s Haus einzuschalten sobald eine MAC-Adresse erkannt wird, die nicht in einer Liste von bereits bekannten MAC-Adressen zu finden ist. Dann klammert man z.B. die eigenen Smartphones und die WLAN Geräte der Nachbarn aus. Alle anderen würden mit Flutlicht begrüsst. Sicherlich schwierig in der Umsetzung – soll aber auch nur als Beispiel dienen.

Die vollständige technische Umsetzung möchte ich hier nicht beschreiben. Abstrakt gesehen müsst Ihr dazu Euren WLAN-Adapter in einen sogenannten “Monitoring Mode” setzen. Idealerweise kauft Ihr Euch dazu ein zusätzliches Wifi-USB Donge um Euch Eure bestehende Verbindung nicht zu zerschießen. Desweiteren benötigt Ihr dann noch ein bisschen Software die das Scannen von in Reichweite befindlichen WLAN Geräten übernimmt. Als mächtiges Werkzeug sei an dieser Stelle Aircrack-NG genannt. Dieses Paket beinhaltet z.B. das Tool “airodump-ng” das genau diese Scan Funktionalität liefert. Alternativ kann man sich auch an bereits bestehenden Python Libraries bedienen(wireless-radar, wifispy, netattack, etc.) Diese Tools liefern Euch in Reichweite befindliche Geräte(Adressen) – auch dann wenn Sie für Euch völlig unbekannt sind. Diese kann man dann z.B regelmäßig in eine Datenbank schreiben und weiter auswerten. Ich könnte mir vorstellen, dass es sogar ganz interessant ist diese Daten in Grafana zu importieren um grafische Auswertung zu erhalten. Damit könnte man Bewegungsprofile erkennen(Wer ist wann wie lange wo ?). Daraus kann man dann weitere Schlüsse ziehen. Im Endeffekt könntet Ihr so dem Postboten, der Nachbarin, dem Zeitungsjungen und der Schwiegermutter(Alarm ! 😉 ) eindeutige ID’s zuordnen und entsprechend darauf reagieren.

Bluetooth

Eine durchaus sehr interessante Alternative dazu ist Bluetooth. I.d.R. ist dieser Nahbereichsfunk auf Smartphones aktiviert um z.B. bei Bedarf die Freisprechanlage im Auto zu nutzen, Kontakt zur Smartwatch zu halten oder Musik über die Bluetoothbox abzuspielen. Kaum jemand wird Bluetooth nur bei Bedarf ein- und wieder ausschalten. Zwar muss man 2 Geräte vor der ersten Nutzung immer koppeln(Pairing) um erfolgreich eine Verbindung herzustellen, aber man ist darüberhinaus in der Lage einfach nur zu Lauschen welche Geräte in der Umgebung sichtbar sind. Und dann wird es für die Präsenzerkennung interessant. Günstig ausprobieren kann man das Ganze z.B mit einem Raspberry Pi Zero W (Achtung “W” am Ende ist wichtig). Dieser hat nämliche WLan und Bluetooth gleich mit an Bord und kostet rund 20 EUR. Im folgenden Beispiel zeige ich Euch die konkrete Umsetzung. Ich habe mich -natürlich- für Python und das passende Modul PyBluez entschieden.

Installation von PyBluez auf Ubuntu/Raspian:

Im hier gezeigten Code werden in einem Python Dict(known) bekannte Geräte hinterlegt. Mit while 1 wird dann eine Endlosschleife gestartet. Damit könnt Ihr das Ganze bereits als Daemon über Systemd einbinden. Danach erfolgt immer wieder eine Iteration über die bekannten Geräte. Die Magie passiert dann an der Stelle wo die Funktion “bluetooth.lookup_name()” verwendet wird. Hier wird nun mit einem Timeout von 3 Sekunden nach der hinterlegten Adresse gesucht. Der Rückgabewert ist dann true oder false – je nachdem ob das Gerät sichtbar war. Weiter unten wird dann der aktuelle Status – nur wenn er sich verändert hat – an ein Openhab2 System übermittelt(über einen API-Call).

Ermittlung der genauen Position

Je nachdem was über man über eine Präsenzerkennung via WLAN/Bluetooth regeln möchte muss man dabei natürlich vorsichtig sein. Wlan und Bluetooth Strahlung(ab Klasse 2) gehen ohne Probleme durch massive Wände und stahlen in alle Richtungen. Es ist also oft nur mit ein paar Tricks möglich eine Person im oder am Haus exakt zu orten. Die erste Möglichkeit eine etwas genauere Position zu ermitteln wäre eine Detektion über mehrere Scanner (Stichwort “Kreuzpeilung”). Die zu ermittelnde Position sollte dann im Idealfall von beiden Geräten in der Sichtlinie sein. Nur wenn beide Geräte das Smartphone sehen sollte man den Status als “sichtbar” einstufen. Ein anderer Trick wäre noch den Empfänger(z.B. das Bluetooth-Dongle) so abzuschirmen dass die Reichweite deutlich reduziert wird. Ich habe z.B. (bitte nicht lachen) einige Versuche mit einer Vorratsdose gemacht, bei der der Deckel aus Plastik und der untere Teil aus Metall ist. Mit einem USB-Flachbandkabel lässt sicher das Dongle auf dem Boden der Dose fixieren und der Deckel kann geschlossen werden. Dadurch lässt sich das Signal ein bisschen in eine bestimmte Richtung bündeln. Wenn das Abschirmung nicht ausreicht kann man das Dongle z.B. zusätzlich in Alufolie einpacken um stärke Schirmung zu erreichen.

Fazit

Die Identifikation von Personen über Bluetooth oder WLAN stellt eine interessante Ergänzung zur reinen Bewegungserkennung dar. Bei sicherheitsrelevanten Themen(z.B. Haustür öffnen, Alarmanlage, etc.) sollte man allerdings sehr vorsichtig sein sich blind darauf zu verlassen. Entweder man testet die Erfassung sehr intensiv und schaltet diese erst dann scharf wenn es über mehrere Tage hinweg einwandfrei funktioniert oder man kombiniert diese Variante mit anderen Systemen. Für mich war es hier nur wichtig zu verdeutlichen welches Potenzial “in der Luft liegt”.

Viel Spass beim Ausprobieren 🙂

Please follow and like us:

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.