Der PI-ibeacon mit über 30-40m Reichweite, perfekt für Anwesenheitserkennung !

Ich habe endlich einen sehr starken ibeacon mit dem Raspberry PI (2) gebastelt :cool:

Was braucht man:

1 x Raspberry PI egal welchen

1 x LogiLink BT0015 USB bluetooth V4.0 EDR Class1 Micro, CSR Chip

Und so richtet man Ihn ein :

Man logt sich auf den Pi per SSH ein und arbeitet folgende Befehle ab:

sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev
sudo apt-get install libical-dev libreadline-dev libical-dev libreadline-dev
sudo mkdir /ibeacon
sudo chmod 755 /ibeacon
cd /ibeacon
sudo wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.35.tar.gz
sudo tar xzf bluez-5.35.tar.gz
cd /ibeacon/bluez-5.35
sudo ./configure --disable-systemd
sudo make
sudo make install
sudo reboot

So jetzt testen wir mal, ob das was wir installiert haben auch funktioniert:

sudo /ibeacon/bluez-5.35/tools/hciconfig

Wenn die Ausgabe schreibt das es „DOWN“ ist, dann haben wir alles richtig gemacht…

jetzt schreiben wir uns ein ibeacon start script :

sudo nano /ibeacon/ibeacon_start.sh

Jetzt hat sich der Editor mit einer leeren Seite geöffnet, dort kopiert man folgende Befehle rein :

#!/bin/sh
sudo hciconfig hci0 up
sudo hciconfig hci0 noscan
sudo hcitool -i hci0 cmd 0x08 0x0006 A0 00 A0 00 03 00 00 00 00 00 00 00 00 07 00
sudo hcitool -i hci0 cmd 0x08 0x000a 01
sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 D2 C5 6D B5 DF FB 48 D2 B0 60 D0 F5 A7 10 96 E0 00 00 00 00 C8 00

dann beendet man den Editor mit STRG+X, dann y zum speichern, und dann enter drücken, dann gelangt man wieder auf Shell.

Rechte zum Ausführen braucht die Datei noch:

sudo chmod 777 /ibeacon/ibeacon_start.sh

Zur Erklärung der letzten Zeile :

0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 [UUID] [Major] [Minor] [Power]

UUID ist die ID des ibeacon !

Der ibeacon hat so folgende Daten:

UUID: E02 01 1A 1A FF 4C 00 02 15 D2 C5 6D B5 DF FB 48 D2 B0 60 D0 F5 A7 10 96 E0
Major: 0
Minor: 0
Power: C8

nun erstellen wir noch ein ibeacon_stop.sh Script:

sudo nano /ibeacon/ibeacon_stop.sh

Jetzt hat sich der Editor mit einer leeren Seite geöffnet, dort kopiert man folgende Befehle rein :

#!/bin/sh
sudo hciconfig hci0 noleadv

dann beendet man den Editor mit STRG+X, dann y zum speichern, und dann enter drücken, dann gelangt man wieder auf Shell.

jetzt noch die Rechte setzten :

sudo chmod 777 /ibeacon/ibeacon_stop.sh

Der ibeacon ist fertig :slight_smile: jetzt kann man mit diesen Befehlen :

/ibeacon/ibeacon_start.sh

Den ibeacon start und mit diesem Befehl :

/ibeacon/ibeacon_stop.sh

wieder beenden :slight_smile:

Aber wir wollen doch, das der ibeacon auch automatisch nach einem Reboot wieder läuft, ohne per Hand zu starten :

sudo nano /etc/rc.local

Jetzt hat sich der Editor mit einer Seite geöffnet, dort kopiert man folgende Befehle vor „exit 0“ rein :

/ibeacon/ibeacon_start.sh

dann beendet man den Editor mit STRG+X, dann y zum speichern, und dann enter drücken, dann gelangt man wieder auf Shell.

fertig :slight_smile:

Ich hoffe die Anleitung ist verständlich geworden :confused:

Ich lasse den Pi-ibeacon neben IPS auf den Raspberry PI 2 laufen.

Wenn jemand das auf einem Rasplex Pi laufen lassen will, soll mir eine PM schreiben :slight_smile:

Den Pi-ibeacon kann man dann z.B. mit der IOS APP Geofency wunderbar zur Anwesenheitsfestellung benutzen :slight_smile:

Vielen Dank für die Anleitung - habe mal zwei Dongles bestellt :wink: Arbeitet der Dongle mit Geofency stabil? Wie schnell erkennt Geofency den Ein-/Austritt?
Gruß
Peter

Ja der BT LE Dongle arbeitet sehr zuverlässig :slight_smile:

Und man kann die Reichweite ganz einfach erweitern, in dem man einen 2 Ten Pi Beacon baut z.B. einen PI nehmen, den man für Plex oer XBMC / Kodi verwendet und dort den selben PI-Beacon einsetzt.

Anleitung ist schon verständlich, das Prinzip ist mir nicht klar:

Der Raspberry ist also der Beacon!?
Ist eigentlich richtig, denn Leuchttürme sind von Natur aus an fester Stelle verankert :slight_smile:

Ich habe allerdings das ganze Gedöns um die Bluetooth LE Technologie so verstanden, dass die iBeacons und Bluetooth Schlüsselfinder/Ortungsgeräte unter dem Stichwort Keep Your Belongings Safe als „tracking device“ die mobile Seite der Kommunikation darsellen. Den Raspberry willst Du ja sicher nicht mit Dir rumtragen :rolleyes:

Der Hintergrund meiner Rückfrage:

Ich experimentiere seit einiger Zeit mit dem Raspberry PI 2 und einem USB-Dongle, um eine Anwesenheitsindikation für das Auto zu haben (bei Kontaktaufnahme nach langer Zeit Abwesend soll das Garagentor geöffnet werden, ggf. die Beleuchtung eingeschaltet werden nachdem vorher beim „Verschwinden“ das Garagentor ggf. geschlossen und evtl. die Alarmanlage scharf geschaltet wurde).

Dazu verwende ich einen Gigaset G-tag Bluetooth Schlüsselfinder und den X4-Life Bluetooth Schlüsselfinder (xmarty mit Kamera-Fernauslöser,Schlüsselfinder und Diebstahlsicherung).

Dazu hab ich ebenfalls die BlueZ installation ausgeführt.
Binn dann allerding von dem Ansatz ausgegangen, IPS aktiv werden zu lassen.
Dazu schreibe ich die Shell-Skripte im IPS-Editor und lasse sie im Directory /usr/share/symcon/scripts abspeichern; das hat auch den Vorteil dass sie gleich root gehören und IPS die gleich aufrufen kann, z. B. Lescan.sh:

#!/bin/bash
sudo hcitool lescan > /tmp/Lescan.txt & sleep 6;
pkill --signal SIGINT hcitool;
sleep 1;

Wird in einem IPS-Skript aufgerufen und die erzeugte Datei ausgewertet:

$SkriptDir = IPS_GetKernelDir() . 'scripts/';
$DatenDir = '/tmp/';

exec ('sh ' . $SkriptDir . 'Lescan.sh');

            $handle = fopen ($DatenDir . 'Lescan.txt', "r");
            if ($handle) {
                while (($buffer = fgets ($handle, 4096)) !== false) {
//        echo $buffer;
                    $buffer = trim ($buffer);
                    $Teil = explode (' ', $buffer);
                    $MAC = ($Teil[0]);           // MAC
....

                if ( ! feof ($handle)) {
                    echo "Fehler: unerwarteter fgets() Fehlschlag
";
                }
                fclose ($handle);
            }


Vielleicht gibt es ja in Kürze einen Darmstädter Stammtisch und wir können uns direkt zu dem Thema austauschen :wink:

Viele Grüsse
Harald

Also ich versuche mal dir das Prinzip zu erklären:

Der Pi-beacon strahlt ein sehr starkes BT LE ibeacon Signal aus, was z.B. vom iPhone erfasst wird, wenn du in Rage bist.

Solange du mit dem iPhone in der Rage (also auf deinem Grundstück bist) bist du Anwesend :wink:

Wenn du außerhalb dieser Rage bist, also ausserhalb deinem Grundstück bist, schickt dein iPhone via Geofency an IPS das du weg bist…

Der PI-beacon ist nur der Sender, der macht nichts aktives, dein iPhone ist der Empfänger und schickt die INfos an IPS per Geofency.

Ich hab mal versucht den PI-beacon auf einem Raspberry Pi Typ B, 512 MB zu installieren, hab aber keine Funktion.
Eigentlich müßte das Signal auf dem Raspberry Pi 2 B, 1 GB, auf dem ich wie beschrieben meinen Bluetooth LE-Scanner installiert habe, zu erkennen sein (mit meinen beiden nicht-Apple-Beacons funktionierts).

Ist das ganze wieder mal nur für die Apple-Welt gedacht ?
Oder sind die Cmd’s in Deinem Skript hardware-abhängig? (ich habe einen "Bluetooth CSR V4.0 Dongle ", auf den auch bei der BlueZ installation hingewiesen wird)

Das folgende läuft ab:

pi@RaspiA2 /usr/share/symcon/scripts $ sudo hciconfig hci0 down
pi@RaspiA2 /usr/share/symcon/scripts $ hciconfig
hci0:   Type: BR/EDR  Bus: USB
        BD Address: 00:1A:7D:DA:71:0A  ACL MTU: 310:10  SCO MTU: 64:8
        DOWN
        RX bytes:52128 acl:1 sco:0 events:720 errors:0
        TX bytes:2361 acl:1 sco:0 commands:201 errors:0

pi@RaspiA2 /usr/share/symcon/scripts $ sh ibeacon_start.sh
< HCI Command: ogf 0x08, ocf 0x0006, plen 15
  A0 00 A0 00 03 00 00 00 00 00 00 00 00 07 00
> HCI Event: 0x0e plen 4
  01 06 20 00
< HCI Command: ogf 0x08, ocf 0x000a, plen 1
  01
> HCI Event: 0x0e plen 4
  01 0A 20 00
< HCI Command: ogf 0x08, ocf 0x0008, plen 32
  1E 02 01 1A 1A FF 4C 00 02 15 D2 C5 6D B5 DF FB 48 D2 B0 60
  D0 F5 A7 10 96 E0 00 00 00 00 C8 00
> HCI Event: 0x0e plen 4
  01 08 20 00
pi@RaspiA2 /usr/share/symcon/scripts $ hciconfig
hci0:   Type: BR/EDR  Bus: USB
        BD Address: 00:1A:7D:DA:71:0A  ACL MTU: 310:10  SCO MTU: 64:8
        UP RUNNING
        RX bytes:52716 acl:1 sco:0 events:753 errors:0
        TX bytes:2780 acl:1 sco:0 commands:234 errors:0

pi@RaspiA2 /usr/share/symcon/scripts $ lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 006: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
pi@RaspiA2 /usr/share/symcon/scripts $

Viele Grüsse
Harald

Hm eigentlich nicht :

/usr/share/symcon/ibeacon/ibeacon_start.sh
< HCI Command: ogf 0x08, ocf 0x0006, plen 15
  A0 00 A0 00 03 00 00 00 00 00 00 00 00 07 00 
> HCI Event: 0x0e plen 4
  01 06 20 0C 
< HCI Command: ogf 0x08, ocf 0x000a, plen 1
  01 
> HCI Event: 0x0e plen 4
  01 0A 20 0C 
< HCI Command: ogf 0x08, ocf 0x0008, plen 32
  1E 02 01 1A 1A FF 4C 00 02 15 E2 C5 6D B5 DF FB 48 D2 B0 60 
  D0 F5 A7 10 96 E0 00 00 00 00 C8 00 
> HCI Event: 0x0e plen 4
  01 08 20 00 

Hm habe es noch versucht mit einem Scanner zu finden, aber wenn ich auf IOS die APP Locate nehme und dort die UUID von PI-Beacon eintrage sehe ich ihn und kann die Entfernung damit messen :wink:

mea culpa, mein überzüchtetes Skript hat das Gerattere des PI-beacon einfach ignoriert, weil ich es so programmiert habe:

pi@RaspiB3 ~ $ sudo hcitool lescan
LE Scan ...
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
7C:2F:80:91:79:E4 (unknown)
7C:2F:80:91:79:E4 Gigaset G-tag
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
00:1A:7D:DA:71:0A (unknown)
^Cpi@RaspiB3 ~ $


Neu erkannte Verbindungen werden registriert, aber erst wenn zusätzlich zur MAC auch der Name übertragen wird (weil der manchmal ausfällt, s.o.).
Beim PI-beacon kommt aber NIE ein Name, deshalb wurde die Verbindung von meinem Skript nie „registriert“ und deshalb nie angezeigt.

Sorry für die Konfusion :loveips:

Viele Grüsse
Harald

Kein Problem, ich finde aber leider nichts, wie man den Namen vom Pi beacon übertragen kann :frowning:

Meine beiden Pis sind mit Wlan angebunden.

Gibt es eigentlich Probleme, wenn man den BT0015 direkt neben einem Wlan-Stick (Edimax oder LogiLink)betreibt?

Hi nicht das ich was festgestellt habe :slight_smile:

Hallo drapple,
so, habe meine beiden Dongles bekommen und die Software gemäß Deiner guten Anleitung installiert. Funktioniert mit Geofency sehr gut. Nach dem Start des ibeacons wird der Status innerhalb einer Sekunde in Geofency sicher erkannt. Nach dem Ausschalten dauert es ca. 25 sec, bis Geofency dies erkennt. Ich nehme an, dass dies in der Geofency-App so gewollt implementiert ist, damit der Status am Rande der Funkversorgung nicht „flattert“. Als nächstes werde ich mal die Reichweite testen und dann ggf. den zweiten Dongle an einem meiner Raspbberys anbringen.

Noch eine Kleinigkeit zur Anleitung:
Vor dem wget-Befehl sollte noch ein
cd /ibeacon
eingefügt werden, und beim ersten Test sollte die Zeile dann so aussehen:
sudo /ibeacon/bluez-5.23/tools/hciconfig.

Im späteren Betrieb kann man den Unterordner bluez-5.23 vermutlich auch löschen.

Eine Alternative sind übrigens die BT-Dongle von Bluegiga (BLED112), Diese haben leider eine deutlich geringere Reichweite, benötigen jedoch keine Raspberrys, sondern arbeiten autark und brauchen lediglich einen USB-Anschluss für die Stromversorgung.

Vielen Dank nochmla und Grüße
Peter

Hallo Peter,

was meint denn bei Bluegiga geringere Reichweite (in m :D) und „autark“ Funktion hinsichtlich der Anwesenheitserkennung.

Danke und Grüsse,
MaLu

Mal eine Frage zum Pfad:
Wenn ich es gem. Post1 installiere erstellt er einen Ordner in „/“
Bei dir sehe ich aber, dass unter /usr/share/symcon der ibeacon-Ordner besteht.
Muss ich es dahin installieren ?

[QUOTE=PumpkinEater;255741]

Noch eine Kleinigkeit zur Anleitung:
Vor dem wget-Befehl sollte noch ein
cd /ibeacon

Danke dir, habe ich abgeändert…

Der Pfad kannst du dir frei aussuchen :slight_smile:

Hallo MaLu,
das wurde entweder hier im Forum oder aber im Forum Forum für HomeMatic- und FHZ-Hausautomationssysteme von ELV beschrieben. Von Bluegiga gibt es USB-Dongles (BLED112), auf die man eine ibeacon-Firmware aufspielen kann. Wenn man das gemacht hat, kann man diese Dongles in irgendeinen USB-Port stecken, der nur für die Stromversorgung benötigt wird. Der Dongle selbst sendet dann die iBeacon aus, ohne dass es noch irgendeiner weiteren Software bedarf. Für die Anwesenheitserkennung nimmt man dann einfach ein Netzteil mit USB-Anschluss und steckt dort den Dongle ein - fertig.
Aber wie schon erwähnt: die Reichweite ist deutlich geringer (ca. 10m):

Vergleich:
BLED112 bei mir im Erfgeschoss: Die Geofency-App erkennt das Signal erst, wenn ich direkt vor der Haustür stehe. Wenn ich die Stockwerke wechsele, wird das Signal nicht mehr erkannt und Geofency interpretiert dies als „abwesend“.

BT0015: Bei dem hier beschriebenden USB-Dongle BT0015 handelt es sich um ein Class 1 USB-Dongle mit deutlich größerer Reichweite. Ich habe es heute mal kurz ausprobiert: bereits 20 Meter vor dem Haus erkennt Geofency das Signal. Im Haus ist der Empfang natürlich deutlich stabiler.

Letztendlich kommt es darauf an, was man unter Anwesenheitssteuerung versteht. Wenn man in den verschiedenen Etagen eine differenzierte Anwesenheit verwenden will (also gezielt erkennen will, ob man sich z.B.in der ersten oder zweiten Etage befindet, sollte man Dongles mit unterschiedlicher ibeacon-ID und kleinerer Reichweite verwenden. In diesem Fall haben die BLED112 ggf. Vorteile. Ich möchte eher schon einige Meter vor dem Haus durch eingeschaltetes Licht o.ä. „begrüßt“ werden und eine stabile Information darüber haben, dass ich irgendwo im Haus/auf dem Grundstück bin - hier macht der BT0015 mehr Sinn.

Gruß
Peter

Hallo.

Könnte man die Leistung gegebenenfalls bei den BLED112 noch reduzieren um Anwesenheiten pro Raum erfassen zu können?

Ich kann dir nur den Tipp geben bei PI-beacon (USB-Dongle BT0015) kannst du die Signalstärke bestimmen (Power):

hier ein Beispiel:

sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 D2 C5 6D B5 DF FB 48 D2 B0 60 D0 F5 A7 10 96 E0 00 00 00 00 C8 00  

Dort ist der Wert C8 in Hex angeben in Dez ist das 200

Wenn du es schwächer haben willst dann versuche das mal aus und erhöhe in 1 Schritten :

sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 D2 C5 6D B5 DF FB 48 D2 B0 60 D0 F5 A7 10 96 E0 00 00 00 00 00 00  

Jetzt ist der Wert 00 in Hex angeben in Dez ist das 0, also das schwächste Signal wo er ausgeben kann…

Sorry - ich will Deinen Thread nicht kapern mit meinem Thema. :slight_smile:

Mir geht es darum Anwesenheit auf per Raum Basis festzustellen. Da bieten sich die autark arbeitenden Dongles von der Preis/Leistung natürlich an.