Präsenz / Anwesenheitserkennung Smart Mirror – Geofence

Eigentlich wollte ich die Anwesenheitserkennung meines Smart Mirrors über einen Bluetooth Ping regeln, was sich aber leider aufgrund von Problemen mit dem Bluetooth Stack bluez als nicht machbar herausgestellt hat. Ich habe hier darüber geschreiben.

Das schöne am l2ping wäre die sehr einfache Implementierung gewesen und man wäre nicht auf das Smartphone als Partnergerät angewiesen gewesen. Auch Geräte wie z.B. Wearables hätte man einbinden können.

Geofence

Mit Apps wie z.B. Geofency (iPhone) oder EgiGeoZone (Android) kann man einen virtuellen Zaun um den eigenen Wohnort ziehen und bei dessen Betreten und Verlassen Events triggern.

Ich habe meine App Geofency so eingerichtet, dass mein Smartphone beim Betreten des Grundstücks eine URL mit Parametern auf meinem Smart Mirror aufruft und dort ein Flag setzt, das für meine Anwesenheit steht.

Damit der Smart Mirror nicht nur auf meine Anwesenheit sondern auch auf die meiner Freundin reagiert, ist der HDMI Port nur dann aus, wenn wir beide nicht anwesend sind.

Auf dem Smart Mirror läuft ein Webserver mit einem .php Script, das die Befehle unserer Geofence Apps entgegennimmt und verarbeitet. Es werden die Befehle unterteilt in die Zugehörigkeit von „Silvan“ und „Sabine“ sowie „Ist anwesend – 1“ und „Ist abwesend – 0“.

Die beiden Werte werden in zwei Textdateien festgehalten auf die im weiteren Schritt ein Code Snippet zugreift, das den Innhalt auswertet und den HDMI Port abschaltet, sobald beide Werte auf „Ist abwesend – 0“ stehen.

Geofency arbeitet mit POST und EgiGeoZone mit GET. Deshalb muss ich beide Varianten auswerten.

In dem Code Snippet sind noch Log- und Diagnosefunktionen auskommentiert, die bei der Einrichtung helfen und euch z.B. die ID zeigen mit der sich das iPhone meldet.

Zu beachten ist, dass die Logfiles auf dem Apache die entsprechenden Zugriffsrechte besitzen und der Gruppe www-data gehören.

geofence.php

onoff.sh

Das Script „onoff.sh“ wird entweder mit den Parametern „1“ (on) und „0“ (off) aufgerufen und steuert den HDMI Port.

#!/bin/bash if [ $1 == "0" ] then vcgencmd display_power 0 else vcgencmd display_power 1 fi