openHAB :: Präsenzerkennung via Bluetooth und Ping

34In vielen denkbaren Szenarien macht es Sinn, dass unsere openHAB-Instanz weiß, dass jemand zuhause ist und vielleicht auch wer im Einzelnen. Denkbar wäre das Einschalten von bestimmten Geräten nach einer Heimkehr eines Bewohners. Zudem können nicht benötigte Geräte ausgeschaltet werden, wenn niemand anwesend ist und diese somit nicht unnötig Strom verbrauchen. In diesem Artikel zeigen wir, wie wir die Präsenz eines Bewohners mittels WLAN und Bluetooth ermitteln und situationsabhängig Schaltungen durchführen können.

 

Verfügbare Artikel zu openHAB

little_blue_dot Einleitunglittle_blue_dot Einbinden der Internetgeschwindigkeitlittle_blue_dot RFID-Lesegerät einbinden
little_blue_dot Installationlittle_blue_dot Präsenzerkennung via Bluetooth und Pinglittle_blue_dot Einbinden von DS18B20-Sensoren
little_blue_dot Konfigurationlittle_blue_dot Kleines Netzwerkmonitoringlittle_blue_dot ical-Abfallkalender einbinden
little_blue_dot Reverse-Proxy für OpenHABlittle_blue_dot Einbinden von LG-Fernsehern [Update]little_blue_dot openHAB als Wecker
little_blue_dot Datenspeicherung und Statistikenlittle_blue_dot Einbinden Schaltern und Kontaktenlittle_blue_dot Einbinden von Bewegungssensoren
little_blue_dot Regeln planen und konfigurierenlittle_blue_dot Einbinden von Funksteckdosen (433 MHz)little_blue_dot Einbinden einer FritzBox
little_blue_dot Einbinden von USB-Steckdosenleisten (SIS-PMS)little_blue_dot Infrarotgesteuerte Geräte einbindenlittle_blue_dot Sprachausgabe auf einem Raspberry
little_blue_dot Einbinden von Temperatursensorenlittle_blue_dot Steuerung mit NFC-Tagslittle_blue_dot Schaltbare Steckdosenleiste mit Relais
little_blue_dot Externer Zugriff mit my.openhab

 

 

 

Präsenzerkennung mittels Bluetooth

Einrichtung auf dem Raspberry Pi

Auf unserem Raspberry Pi, welcher mit der IP-Adresse „192.168.23.235“ konfiguriert wurde, haben wir zunächst alle Schritte aus dieser Anleitung ausgeführt und sind in der Lage, lokal vom Raspberry Pi aus Bluetooth Endgeräte mittels L2-Ping zu erreichen. Alternativ kann der Bluetooth-Stick auch am openHAB-Server selbst betrieben werden, wenn bei diesem ein Anschließen von USB-Geräten möglich ist.

Ist der Betrieb des Bluetooth-Adapters sichergestellt, erstellen wir nun auf dem Raspberry ein Bash-Script mit folgendem Inhalt:

Das Script könnte nun bereits auf dem Raspberry per Hand gestartet werden. Dazu müssen lediglich zuvor alle notwendigen Bluetooth-MAC-Adressen im Script hinterlegt und die zu prüfende Nummer als Parameter beim Starten des Scripts übergeben werden. Als Beispiel möchte ich die Präsenz von Tinas Mobilfunktelefon feststellen:

 

48

 

Hier scheint wohl entweder:

  • Tina nicht zuhause zu sein
  • Auf Tinas Mobilfunktelefon ist Bluetooth nicht aktiviert
  • Beim Einrichten gemäß dieser Anleitung ist etwas schief gelaufen

 

Einrichtung auf dem openHAB-Server

Wie auch bei vielen anderen hier zu findenden openHAB-Anleitungen benötigen wir hierbei jeweils ein Script auf dem Raspberry sowie auch auf dem openHAB-Server. Das erstere wurde an diesem Punkt der Anleitung bereits umgesetzt, widmen wir uns also dem Bash-Script auf dem Server. Dies gestaltet sich etwas weniger umfangreich mit folgenden Zeilen des neuen Scripts „/scripts/bt.sh„:

 

Wir erlauben die Ausführung des Scripts durch

und übertragen den Besitz an „openhab“ durch

 

Dieses Script bewirkt nur, dass das Script auf der Himbeere remote via SSH ausgeführt wird. Ein Test vom openHAB-Server aus sollte das gleiche Ergebnis wie auf dem Raspberry selbst liefern:

 

 

49

 

 

Das Item definieren

Nun erstellen wir für die beiden Smartphones unseres Beispielszenarios zwei entsprechende Item-Definitionen in der passenden Konfigurationsdatei von openHAB:

 

Auch in diesem Fall nutzen wir erneut das Addon „exec„, welches wir mittels

installieren.

 

Integration in die Sitemap

Anschließend können diese Items bereits in die Sitemap eingefügt werden:

 

Das hier konfigurierten Symbole „present“ und „network“ müssen ebenfalls zuvor bereitgestellt werden, indem sie in den Ordner „/usr/share/openhab/webapps/images/“ kopiert werden. Die Einbindung an dieser Stelle macht jedoch noch wenig Sinn, am Ende des Artikels wird die Einbindung einer Präsenzerkennung gezeigt, die jedes Gerät auf mehrfache Arten auf eine Anwesenheit prüft.

 

Ausgabe übersetzen

Die dazugehörige Übersetzungsdatei „praesenz.map“ umfasst folgenden Inhalt:

 

 

Präsenzerkennung mittels WLAN

Die Network-Health Items definieren

Update
Leider gibt es zur Zeit Probleme bei der Art und Weise, wie Java als nicht priviligierter Benutzer die Erreichbarkeit via TCP/IP prüft.
Daher nutzen wir in dieser Anleitung nicht das Addon „network-health„, was naheliegend wäre, sondern erstellen ein eigenes Script.

 

Für die Prüfung der Erreichbarkeit eines Netzwerkteilnehmers erstellen wir uns ein neues, kleines Bash-Script: „/scripts/ping.sh

 

Wir erlauben die Ausführung des Scripts durch

und übertragen den Besitz an „openhab“ durch

 

Nun definieren wir die entsprechenden Items wie folgt:

 

Kombinierte Präsenzerkennung

Nun sind wir an einem Punkt angelangt, an dem wir feststellen können, ob ein Smartphone via Bluetooth oder WLAN erreichbar ist. Jetzt wäre es aber sinnvoll, diese beiden Informationen für jedes Gerät zu kombinieren, um mit zwei Methoden die Präsenz eines Geräts festzustellen. Dazu führen wir die beiden Werte in ein neues Item zusammen.

 

Dummy-Item definieren

Dazu benötigen wir zunächst ein sogenanntes Dummy-Item, das nur innerhalb von openHAB existiert und von außen weder geschaltet noch dessen Wert verändert wird:

Doch wenn nicht durch eine Änderung eines externen Zustandes, wie kann dieses Item nun „geschaltet“ werden?

 

Zusammenführende Regeln erstellen

Dazu erstellen wir uns Regeln, die beispielsweise das Item „MOB188“ auf „ON“ setzen, wenn entweder das Item „MOB188_WLAN“ oder „MOB188_BT“ aktiv ist. Anders ausgedrückt reicht es, wenn das Smartphone entweder per WLAN oder Bluetooth erreichbar ist. Dann wird das Dummy-Item „MOB188“ ebenfalls auf „ON“ gesetzt. Andersherum wird das Item „MOB188“ auf „OFF“ gesetzt wenn das Smartphone weder per WLAN noch via Bluetooth erreicht werden konnte.

 

Noch mehr kombinieren

Dieser Schritt lässt sich natürlich wiederholen und es sind Verschachtelungen in unendlicher Tiefe möglich, zumindest so tief, wie man es selbst noch überblicken kann:

In diesem Beispiel wurde zuvor ein weiteres Dummy-Item definiert:

 

Diese beiden Regeln aktualisieren das Item „PRAESENZ“ je nach dem, ob eins der beiden vorhandenen Mobilfunktelefone anwesend ist oder nicht. Zudem wird bei einer festgestellten Präsenz einer der beiden beispielhaften Personen der Springbrunnen ein- und bei Abwesenheit aller Personen wieder ausgeschaltet.

 

Darstellung in der Sitemap

Die beiden Mobilfunktelefone dieser Anleitung binden wir nun in Form der kombinierten Präsenzermittlung wie folgt in die Sitemap ein:

 

Dies wird nun so oder so ähnlich dargestellt:

 

50