Anwesenheit mit hoher Indoorauflösung per ibeacon

Hi,

aktuell steuere ich meine Anwesenheit per bluetooth mit einem Iphone. Das funktioniert ziemlich gut. Man könnte die Genauigkeit noch stark steigern wenn man ibeacons verwendet.
Das sind usb bluetooth dongles mit spezieller vom user editierbarer firmware, welche nur eine ID ausstrahlen.
Ein Smartphone „sieht“ dann ein ibeacon und kann über eine app im Hintergrund Befehle ausführen.

Die IDs der ibeacons sind editierter. Hat man mehrere mit der gleichen ID, kann man große Bereiche abdecken. Hat man verschiedene IDs kann man feststellen in welchem Raum man sich befindet.

Die usb dongles brachen nur Strom und keine Computer an den sie gesteckt werden. Die Intelligenz sitzt in der Smartphone App.

Wie könnte man das in IPS integrieren? Könnte man die Funktionalität in ifront integrieren?
Das Smartphone teilt dem eigenen IPS Server mit, welche ibeacons „gesehen“ werden. Vielleicht wäre das sogar nur ein relativ kleiner Programmieraufwand. IPS setzt dann einen Status.

Damit kann man dann auch feststellen ob man schlafen gegangen ist und entsprechend Bewegung oder Fenster- und Türenöffnen anders bewerten.

Unendliche Möglichkeiten der indoor Lokalisierung.

Die Dongles kosten keine 20€.
Software zum programmieren der IDs und Sendestärke ist kostenlos erhältlich.

Die meisten Infos dazu stammen aus dem Homematic-forum. Chris Schwarzfischer entwickelt gerade eine App die per Geofencing die Anwesenheit steuert. Er hat diese App um ibeacons erweitert. Momentan läuft aber eine nicht öffentlich beta.
Die Entwicklung geht allerdings schon über längere Zeit. Man findet den Thread unter Projektvorstellungen.

Sebastian

Hallo Sebastian,

hört sich sehr interessant an.

Hast du so einen Dongle?

Grüße

Oli

Ich habe noch keins weil ich keine passende App dafür habe.
Habe eben geohopper installiert. Das kann per post request ein json file senden.
Es kann auch mit ibeacons umgehen.

Wie kriege ich diesen post mit json Inhalt auf meinen ips server?

Eine Verbindung zur Json Schnittstelle über meinen ips server kann schon herstellen.
Wie kriege ich den Inhalt in Variablen?

In der app muss man ein URL eintragen. Der Inhalt der payload sieht so aus:

When a web service is notified, it sends a HTTP POST to the specified URL. It posts a JSON payload:

{„sender":"tperfitt@twocanoes.com“,„location“:„Beacon in upstairs office“,„event“:„LocationExit“,„time“:„2013-09-11 02:03:33 +0000“}

The fields are defined as follows:

Sender: The email address of the sender.
Location: The name of the defined location that triggered the event.
Event: The type of event. Possible values are LocationEnter, LocationExit, LocationTest
Time: time the event occurred in RFC 3339 format.

Sebastian

Da bin ich auch gerade dran. Webservice in der App hab ich eingerichtet und Skript in Webfront User Verzeichnis gelegt. Dort versuche ich die Variable $_POST auszuwerten und dann ein SetValue… Geht aber noch nicht.

Ein anderes Thema ist dann das ganze nach aussen zu öffnen - nginx ist da bestimmt mein Freund.

Gesendet von meinem iPhone mit Tapatalk

Was genau hast Du in die App eingetragen?

Http://Benutzer:passwort@ip:Port/ und wie geht’s dann weiter

Welches Script gehört wohin?
Ein Xy.php ins ipsymcon Verzeichnis das man dann per URL aufruft?

Man bekommt dann das payload übergeben und muss das dann parsen wie im wunderground Wetter script?

Danke!

Sebastian

Jein, aktuell nur http://ip/user/script.php, also ohne Auth.

Gesendet von meinem iPhone mit Tapatalk

Das Problem mit der Payload-Übergabe hatte ich mit Geohopper auch :smiley:

Den Payload holst Du folgendermaßen aus dem Stream.

$body = @file_get_contents('php://input');
$obj = json_decode($body);

in $obj, hast Du dann ein schönes JSON-Paket.

Ok, danke dafür

Aber wie rufe ich das von außen aus auf.
Ich dachte ich benutze dafür die json Schnittstelle. Die hat dann einen Benutzernamen und Kennwort. Aktuell habe ich mein webfront per ssl erreichbar von außen.

Sebastian

http(s)://dein.dyndns.name:port/user/datei.php

die datei.php erstellst Du in den webfront/user - Verzeichnis

Hier noch das komplette Skript wie Du dem extrahierten Payload noch den Variablen zuweist.

Die Variablen mit den entsprechenden IDs müssen natürlich in IPS vorhanden sein.

<?php

$body = @file_get_contents('php://input');
$obj = json_decode($body);

// If script called directly, nothing to do
if (!$obj) die("Oops! No payload!");
// Log the results obtained from GeoHopper
$results = print_r($obj, true);
//__log("Event logged with data: $results");

// Grab the values passed from GeoHopper

$sender = $obj->{'sender'};
$location = $obj->{'location'};
$event = $obj->{'event'};
$time = $obj->{'time'};

SetValue(46596, $sender);
SetValue(44224, $location);
SetValue(39874, $event);
SetValue(35534, $time);
?>

Danke für das Skript. Leider sendet Geohopper bei mir nichts. Hab das Skript wie beschrieben angelegt:

Wenn ich die gleiche URL im Safari aufrufe, dann wird das Skript aufgerufen (Ergebnis natürlich „Missing payload“). Geohopper test geht nicht :frowning: Wie schaut das bei euch aus?

Hast Du bei Geohopper auch die kostenpflichtige Erweiterung gekauft um überhaupt an einen Webserver senden zu dürfen :wink:

Ist ein InApp-Kauf.

Moin…
… gibt es die iBeacons-Sticks schon irgendwo in Deutschland zu kaufen oder nur in den USA per Import?
Info auch gern per PM. Links zu shops sind hier ja nicht gern gesehen.
Hab schon gegoogelt, aber keine Dongles gefunden!
Danke,
Peter

Ja, sonst kann man das ja gar nicht einstellen. Die Installation hakte aber angangs gehörig. Ich installier es mal neu…

Gesendet von meinem iPhone mit Tapatalk

Melde auch mal Interesse an :slight_smile:
dürfte für Steiner doch kein Problem sein diese Dongles zusammen zu „löten“ :wink: AKM 2.0 ?

Versteh ich nicht? Oben hat doch jemand was von den Dongles geschrieben!

Jupp… Ein Dealer verschifft nur in die USA … Der andere akzeptiert zur Zeit nur preorder …

Zu kaufen gibts die Dinger bei ju-tec.de

Zu geohopper

das gepostete Skript funktioniert einwandfrei. Das einzige Problem dabei ist, dass geohopper offensichtlich keine ssl Verschlüsselung unterstützt. Sobald beim entsprechenden Webserver das ssl deaktiviert ist, wird alles korrekt in die Variablen geschrieben.

Ich habe derzeit einen port offen und die Kommunktion ist per ssl verschlüsselt.

Wie kriegt man das jetzt eingermassen sicher hin?
Mich stört ja schon, dass man das skript ohne passwort ausführen kann.

ich könnte einen zusätzlichen webserver ohne ssl laufen lassen, aber ohne passwort und unverschlüsselt?

Was ist denn mit der json Schnittstelle die es seit 3.0 gibt? Kann man die nicht verwenden und ist das irgendwie sicherer?

Sebastian

Ich werde ein reverse proxy nutzen (nginx). Damit werde ich nur eine spezielle url durchlassen. Nicht 100% sicher, aber der Angreifer müsste schon die genaue url kennen, Risiko also minimal.

Gesendet von meinem iPhone mit Tapatalk

Hab mich eingelesen, aber das ist leider nichts für mich.

Vielleicht kann sich jemand noch zur json Schnittstelle äußern, ob man da auch solche Datenpakete empfangen kann.

Danke,
Sebastian

In der Firma experimentieren wir bereits mit iBeacons. Leider haben wir das Gefühl dass man diese Technologie nicht zur Anwesenheitserkennung nutzen kann.

Das Problem liegt daran, dass das Handy nicht durch Bluetooth innerhalb eines akzeptablen Zeitraums von zum Beispiel 1 Sekunde aufgeweckt werden kann. in unseren Tests hatten wir zeitweise Zeiten von über 30 Sekunden bis das Gerät die App weckte.
eine automatische Öffnung der Haustür ist in diesem Fall für mich nicht akzeptabel.

Soweit ich das weiß, sind iBeacons für Werbezwecken einsetzbar. Da jedes iBeacon eine eindeutige ID hat, und man ja nicht durch jedes Gerät was im Umlauf ist penetriert werden möchte, muss man die jeweiligen Geräte vorher anlernen. Das wiederum wäre aber Quatsch weil man in einem Geschäft ja vorher auch nicht die iBeacons anlernen wird.
Außer es wird eine App geschrieben die nur auf eine spezielle ID Triggert. Zusätzlich muss man dann zu dieser App die jeweiligen iBeacons ausliefern.

Für den Fall dass jemand mehr Informationen dazu hat, bin ich sehr interessiert.