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.

Bildschirmfoto 2016-03-21 um 00.00.10

geofence.php

<!--?php //print_r($_POST); if(isset($_GET['entry'])){ $entry=$_GET["entry"]; $device=$_GET["device"]; $name=$_GET["name"]; $id=$_GET["id"]; } else if(isset($_POST['entry'])){ $entry=$_POST["entry"]; $device=$_POST["device"]; $name=$_POST["name"]; $id=$_POST["id"]; }else{ $entry=""; $device=""; $name=""; $id=""; } if ($device == "D07D3xxx-Bxxx-4xxx-Bxxx-4BE759DE9xxx"){ if($entry == 1) file_put_contents("silvan.log", "1"); else file_put_contents("silvan.log", "0"); } if ($device == "sabine"){ if($entry == 1) file_put_contents("sabine.log", "1"); else file_put_contents("sabine.log", "0"); } $t_sabine = file_get_contents('sabine.log'); $t_silvan = file_get_contents('silvan.log'); if ($t_sabine == "1" || $t_silvan == "1") exec("sudo /var/www/html/modules/geofence/onoff.sh 1"); else exec("sudo /var/www/html/modules/geofence/onoff.sh 0"); // $filename = "geofence.log"; // file_put_contents($filename, $_POST, FILE_APPEND); ?-->

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

2 Gedanken zu „Präsenz / Anwesenheitserkennung Smart Mirror – Geofence

  1. Das ist eine sehr sehr geile Idee den Monitor abzuschalten wenn man nicht da ist. Vielleicht kann mir jemand weiterhelfen. Ich habe soweit alles fertig eingerichtet und auch wenn ich nicht da bin wird in der Log Datei eine 0 für Abwesenheit geschrieben jedoch wird der Befehl nicht an den Monitor weitergegeben das er ausgeht. Wäre total nett wenn sich jemand zu dem Thema bei mir melden könnte.

Schreibe einen Kommentar

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

*