iBeacon mal anders rum

WebUIs (DashUI, yahui, ...), Adapter (Hue, IRTrans, Sonos, ...), Logging, Scripting

Moderator: Co-Administratoren

ThomasF
Beiträge: 13
Registriert: 10.06.2014, 10:07

iBeacon mal anders rum

Beitrag von ThomasF » 30.11.2014, 11:34

Guten Morgen liebes Forum,

es gibt ja schon einige Vorschläge per iBeacon eine An-/Abwsenheitserkennung zu realisieren. Allerdings ist bei allen Vorschlägen der iBeacon stationär und das iPhone führt eine Aktion aus, sobald es den iBeacon sieht.
Ich finde das nicht praktikabel, da ich wenn ich mein Haus verlasse keine Möglichkeit habe eine Variable zu setzen (WLAN ist außer reichweite, Firewall ist zu).

Meine Idee ist, dass ich einen BT dongle zu Hause im Raspberry (oder NAS) laufen habe, der ständig auf iBeacons lauscht. Das könnte per CCU.IO Adapter sehr komfortabel zu konfigurieren sein und durch die Einbindung in CCU.IO ist es praktisch egal auf welcher Hardware es läuft.
Wird ein iBeacon erkannt wird eine Aktion ausgeführt. Ist meldet sich der iBeacon für X minuten nicht mehr, gilt man als abwesend -> nächste Aktion.

All das passiert im LAN und der iBeacon kann einfach in der Schlüsselmappe oder dem Auto bleiben.
Keine offene Firewall nötig, kein Webserver ausserhalb nötig.

Was meint ihr?

ThomasF
Beiträge: 13
Registriert: 10.06.2014, 10:07

Re: iBeacon mal anders rum

Beitrag von ThomasF » 08.12.2014, 21:45

So, nachdem das Thema hier nicht interessant zu sein scheint, teile ich zumindest mal meine Vorschritte fall es doch mal noch jemanden gibt der's interessant findet:

Ich habe meinen RaspberryPi mit einem Bluetooth Dongle ausgestattet und nutze das PiBeacon image von Radius Networks (http://developer.radiusnetworks.com/pib ... pdate.html)

Nach dem Startup kann ich bereits nach vorhandenen iBeacons scannen:

Code: Alles auswählen

ibeacon scan -b
Um den output zu verarbeiten, habe ich ein script geschrieben (kopiert und angepasst), und unter dem Namen 'beacon' gespeichert:
http://developer.radiusnetworks.com/201 ... eacon.html

Code: Alles auswählen

#!/bin/bash

 while read line
 do
   if [[ `echo $line | grep "IBEACON-UUID-XXXX-XXXX-XXXXXXXXXXXXXXXX 1 1" ` ]]; then
#     echo $line 
     wget -q -O /dev/null 'http://ccu-ip/config/xmlapi/statechange.cgi?ise_id=SYSVAR_ID&new_value=true'
   fi
 done
Nachdem ich auf dem Raspi das Programm mit folgenden Befehl starte

Code: Alles auswählen

sudo beacon scan -b | ./beacon
scannt er fleißig nach iBeacons und setzt jedesmal wenn der configurierte iBeacon erfasst wird eine Systemvariable auf TRUE.
Das macht er in meinem Fall alle 5 Sekunden (konfigurierbar im iBeacon).

Was jetzt fehlt ist eine Erkennung, wenn der iBeacon nicht mehr da ist.

PaulG4H
Beiträge: 1184
Registriert: 11.08.2011, 10:09

Re: iBeacon mal anders rum

Beitrag von PaulG4H » 08.12.2014, 22:01

Hallo ThomasF,

Interessantes Projekt, aber ich würde das nicht unbedingt in bash Programmieren sondern Python vorziehen, damit kannst du einfacher Datenpunkte in der CCU befüllen.

Auch alles andere wird damit leichter und du kannst natürlich auch mit Python ein shell command ausführen und die Ausgabe damit verarbeiten, in deinem Fall würde ich ein Ramdrive machen und mir dort mit einer simplen Textdatei den Status jedes iBeacons merken (oder couchDB) und dementsprechend die Systemvariablen in der CCU setzen.

PN wenn du ein Beispiel haben willst...

Paul
Apache Reverse Proxy fuer sicheren Zugriff auf die CCU von Unterwegs
Zeitgesteuertes LXCCU / CCU2 Backup damit es immer eine Aktuelle Sicherung gibt!
Diverse weitere Anleitungen für CCU / LXCCU / Raspberry PI

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: iBeacon mal anders rum

Beitrag von Tobias78 » 08.12.2014, 22:17

Hallo Thomas,
ich finde es sehr interessant und habe ähnliches vor. 2 programmierbare BT Beacons habe ich schon, tue mich mit Linux allerdings noch schwer. Auf meinem Cubietruck habe ich BT noch nicht zum funktionieren gebracht.
Meine Vision ist es, mit 3 BT Empfängern die Beacons per 3-Punktpeilung exakt im Haus bestimmen zu können, so dass z.B. das Licht und die Musik beim Betreten des Raumes automatisch aktiviert werden.... Naja, ne Langzeitvision...
Gruß, Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

ThomasF
Beiträge: 13
Registriert: 10.06.2014, 10:07

Re: iBeacon mal anders rum

Beitrag von ThomasF » 16.12.2014, 17:46

Guten Abend!

Danke für eure Antworten. Leider bin ich zZ im Jahresendstress so dass ich noch keine Zeit hatte weiterzubasteln.
Tobias78 hat geschrieben:Hallo Thomas,
ich finde es sehr interessant und habe ähnliches vor. 2 programmierbare BT Beacons habe ich schon, tue mich mit Linux allerdings noch schwer. Auf meinem Cubietruck habe ich BT noch nicht zum funktionieren gebracht.
Meine Vision ist es, mit 3 BT Empfängern die Beacons per 3-Punktpeilung exakt im Haus bestimmen zu können, so dass z.B. das Licht und die Musik beim Betreten des Raumes automatisch aktiviert werden.... Naja, ne Langzeitvision...
Gruß, Tobias.
Finde ich interessant! Allerdings habe ich bei mir das Problem dass unser Hauß sehr massiv ist (Stahlbeton UG-EG und auch EG-OG) da ist das signal einfach zu schwach und ich müsste mit 3 Empfänger per Ebene arbeiten. Das ist dann doch etwas viel. Zu wissen wann die Schlüssel zu Hause sind, reicht mir (erstmal :D)
PaulG4H hat geschrieben:Hallo ThomasF,

Interessantes Projekt, aber ich würde das nicht unbedingt in bash Programmieren sondern Python vorziehen, damit kannst du einfacher Datenpunkte in der CCU befüllen.

Auch alles andere wird damit leichter und du kannst natürlich auch mit Python ein shell command ausführen und die Ausgabe damit verarbeiten, in deinem Fall würde ich ein Ramdrive machen und mir dort mit einer simplen Textdatei den Status jedes iBeacons merken (oder couchDB) und dementsprechend die Systemvariablen in der CCU setzen.

PN wenn du ein Beispiel haben willst...

Paul
Danke für das Angebot. Ich bin leider sehr sehr bluter Anfänger und stückel mir hier was zusammen was nacher funktionier aber nicht umbedingt hübsch ist. (Frankenstein-Version) wenn das Prinzip sich bewährt hat (zuverlässige Erkennung) dann kommt Schritt 2 :)

Mir währe im Moment sehr dabei geholfen wenn ich bash script so umbauen könnte dass es erkennt wenn kein beacon mehr da ist.

Idee: Immer wenn ein Beacon gefunden wird, wird ein timestamp gesetzt (für jeden beacon eines) ein 2. script oder eine 2. schleife checkt diesen zeitstempel und wenn dieser älter als X ist, dann wird die variable auf "false" gesetzt.

Keinen schimmer wie ich das machen kann :)
Wenn du da nen Tip hast wäre ich dankbar!

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: iBeacon mal anders rum

Beitrag von Tobias78 » 16.12.2014, 19:33

Hallo Thomas!
hab heute meine ersten 2 iBeacons programmiert. Hab die HM10 für ~7 EUR aus China gewählt. Erste Erkenntnis: mein Haus ist zu groß ;-).
Selbst wenn ich einen Sender genau in der Mitte des Hauses positioniere, ist der Empfang nach spätestens 8 m Luftlinie weg. Geofency schaltet so immer fleißig hin und her.
Als Stromversorgung hab ich einfach ein USB Kabel dran gelötet und dabei ist mir eine Idee gekommen, wie ich zumindest das "unterwegs im Auto" gut setzen könnte. Mein Auto ist für ein iBeacon klein genug.
Naja, man könnte natürlich auch jeden anderen HM Sender auswerten, aber ich wollte mal mit iBeacons experimentieren.
Kann man die Sendeleistung eigentlich irgendwie anpassen? Ich brauch entweder mehr Power für die 3-Punkt Peilung oder wesentlich weniger Power und dann je einen Sender pro Zimmer.
Naja, alles noch "Frankenstein"-Stadium.
Gruß, Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

ThomasF
Beiträge: 13
Registriert: 10.06.2014, 10:07

Re: iBeacon mal anders rum

Beitrag von ThomasF » 16.12.2014, 19:56

Hi Tobias,

die Sendeleistung kannst du per TX_POWER ändern. Bei mir gehen folgende Werte:

0: -23 dBm
1: -6 dBm
2: + 0 dBm
3: +4Bm

Quelle: http://ibeacon.accent-systems.com/wp-co ... asheet.pdf

Aber auch bei stärkster Leistung ist bei mir nach ca.8 Metern Luftlinie Schluss (mit Stahlbetondecke und Treppenhaus dazwischen)

Das mit dem hin- und herschalten ist ein Problem, egal ob mit Geofency oder mit einem stationären RaspberryPi der auf iBeacons lauscht.
Ich will daher das Script so schreiben dass es die variable immer wieder setzt wenn der iBeacon da ist. Erst wenn der iBeacon für X sekunden nicht mehr empfangen wird, setzt das script die Variable auf "False".

Wenn ich dich aber richtig verstehe, verwendest du das normale vorgehen: Beacon fix, iPhone empfängt den beacon und feuert einen Webhook.
Genau das will ich ja nicht, weil der Webhook beim verlassen der Zone u.U. erst gesendet wird wenn WLAN schon weg ist, also muss ich die Firewall öffnen...

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: iBeacon mal anders rum

Beitrag von Tobias78 » 11.01.2015, 22:14

Hallo Thomas,
hab Deine Antwort leider gerade erst entdeckt. Mit der Powereinstellung hab ich etwas experimentiert, mein Ergebnis deckt sich mit Deinem. Stationär taugt das überhaupt nicht. Geofency schaltet im Sekundentakt hin und her wenn man genau an der Grenze der Reichweite ist.
Mein einziger verbliebener Ansatz ist es den iBeacon ins Auto an die USB-Steckdose anzuschließen. Dann könnte ich tracken wann und wo ich persönlich mein Auto benutze. Jetzt fehlt nur noch der Nutzen ;-).
Gruß, Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

Free_Dom
Beiträge: 20
Registriert: 07.04.2015, 08:39

Re: iBeacon mal anders rum

Beitrag von Free_Dom » 09.04.2015, 00:20

Hallo in die Runde,

habe eine ähnliche Idee gehabt und für 15 EUR umgesetzt. Zumindest wenn man einen Raspberry hat und "nur" die generelle Anwesenheit steuern möchte :D.

Hier eine schnelle Beschreibung:

Habe mir bei Gimbal ein paar Gimbal Proximity Beacon Series 10 geholt. Stück 5 Dollar. Passt perfekt an meinen Schlüsselbund. Meinem RPi habe ich einen USB BT LE Dongel (10 eur) verpasst und scanne jede Minute für 5s ob einer der iBeacons in der Nähe ist (wenn ich zu Hause bin liegt der Schlüssel neben dem RPi). Das Script, welches jede Minute läuft, setzt eine Variable auf TRUE (wenn eine passende UUID in der nähe ist) welche per ScriptGUI weiterverarbeitet wird und so die Anwesenheit steuert. Habe im Script noch eine Latenz zur Abwesenheit eingebaut, dass wenn der Schlüsselanhänger mal nicht gefunden wird, oder ich mal schnell im Keller bin die Anwesenheit erst nach 600 Sekunden auf FALSE gesetzt wird.

Bild

Es sind natürlich noch so einige Dinge zu verbessern. Aber grundlegend funktioniert das ganze super und mein IPhone Akku dankt es mir, dass ich nicht mit Homezone arbeiten muss :D

Werde die Tage noch etwas dran rumspielen...

LG Free_Dom

grazcrew
Beiträge: 295
Registriert: 14.12.2010, 23:27
Danksagung erhalten: 1 Mal

Re: iBeacon mal anders rum

Beitrag von grazcrew » 09.04.2015, 11:23

Die geben für den "Gimbal Proximity Beacon" eine Reichweite von 50 meter an. Ist das realistisch?

Antworten

Zurück zu „CCU.IO“