Beacons
Im Sommer 2013 wurden sie offiziell vorgestellt und so langsam kommt die ganze Sache auch ins Rollen. Die Rede ist von der Beacon Technologie. Beacons (Signalfeuer) sind kleine Bluetooth-Sender, welche an einem Ort angebracht werden können und in regelmäßigen Zeitintervallen ein Erkennungssignal aussenden. Dieses Signal kann dann von einem Beacon-fähigen Gerät wie einem Smartphone oder Tablet empfangen und in ortsabhängige Informationen umgewandelt werden. Die Anzahl an Anwendungsgebieten ist dabei grenzenlos. Meistens werden Beacons mit typischen Einsatzgebieten wie …

  • dem Einkaufszentrum
    • Gezielte Sonderangebote, Rabatte, Punkte sammeln
  • der Heimautomation
    • Fernseher stoppt automatisch sobald der Raum verlassen wird
  • oder in Museen
    • Informationen zu Ausstellungen

… in Verbindung gebracht. Doch nicht nur die Anzahl an Use-Cases ist groß, auch immer mehr Start-ups schießen aus dem Boden, da sie das Potential hinter den kleinen Funksendern sehen und erkennen wie diese Technik unser Leben verändern könnte.

Wie bereits Jahre zuvor, fand auch dieses Jahr der Bechtle Competence Day in Neckarsulm statt. Der CC Day ist eine Kundenveranstaltung, welche die Möglichkeit bietet sich praxisnah über aktuelle IT-Lösungen zu informieren. Dabei finden an diesem Tag über 70 Vorträge – größtenteils parallel – in verschiedenen Räumen statt. Damit die Besucher der Veranstaltung einen Überblick über die Agenda haben, wurde hierfür eine Applikation von uns, der Bechtle AG und der Connect-IT entwickelt. Eine weitere Anforderung war es, einen standortbasierten Dienst zu entwickeln, welcher dem Nutzer mitteilt, welche Räume sich in seiner unmittelbaren Umgebung befinden und ihm dazu den aktuellen und nächsten Vortrag anzeigt. Dazu haben wir an jedem Veranstaltungsraum ein Beacon installiert, über welchen die Applikation signalisiert bekommt, wo sich der Besucher derzeit befindet um ihm die entsprechenden Informationen zum richtigen Zeitpunkt und am richtigen Ort anzuzeigen.

Technologie
Die allgemeine Technologie hinter den Beacons ist relativ simpel und auch schnell erklärt. Die wesentlichen Eigenschaften eines jeden Beacons ist die UUID (Unique Identifier), sowie die Major- und Minor-ID. Die UUID ist eine eindeutige Identifizierung eines Beacon-Sets, welches genutzt wird um über die CoreLocation-API oder das entsprechende Beacon-Hersteller-SDK die Beacons in der Anwendung schneller auffindbar zu machen. Die Major- und Minor-ID lassen sich nutzen um einen bestimmten Beacon zu identifizieren z. B.:

Major-ID: Filale Heilbronn, Neckarsulm, Mannheim, etc.

Minor-ID: Kühltheke, Backwaren, Kasse, etc.

Estimote Beacons
Einer der bekanntesten Start-up-Unternehmen auf dem Gebiet der „Nearables“ nennt sich Estimote.  Dieser bewirbt seine Beacons mit einer einfachen Konfiguration, einem schicken Design und einer – vor allem sehr wichtigen – langen Akkulaufzeit.

Estimote Beacons

Aufgrund der positiven Resonanz im Web entschlossen wir uns diese bei dem diesjährigen CC Day einzusetzen. 

Estimote-SDK (Android)
Da Android nicht über eine CoreLocation-ähnliche-API verfügt, bleibt es dem Entwickler  selbst überlassen einen eigenen Service zu entwickeln, welcher im Background nach Bluetooth Geräten in der Umgebung scant und nach Beacons filtert oder man greift auf das von Estimote bereitgestellte SDK zurück. Grundvoraussetzungen hierfür sind Android 4.3 und die Unterstützung von BLE. Das SDK ist dabei stark an das Estimote SDK für iOS angelehnt und mimt dieses nach.

Funktionalitäten:

  • Reichweiten-Abschätzung
    • Ermittelt die ungefähre Distanz zwischen dem Smartphone/Tablet und dem/den Beacon(s)
  • Überwachung einzelner Beacons
    • Beacon-Region betreten/ verlassen
  • Lesen und Schreiben der Beacon-Characteristics (UUID, Major-ID, Minor-ID, Reichweite, Aktualisierungsintervall)

Installation (GitHub)

Leider verfügt Estimote noch nicht über ein entsprechendes Maven-Repository, weshalb man nicht in den Genuss von Gradle kommt und stattdessen auf die altbewährte library-jar zurückgreifen muss.

Bei diesem SDK handelt es sich um einen IntentService welcher – neben den Bluetooth-Permissions – im Manifest angegeben wird.

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<service android:name="com.estimote.sdk.service.BeaconService" android:exported="false"/>

Wie bereits anfangs erwähnt, haben Beacons eine UUID. Diese wird jetzt benötigt um dem Service mitzuteilen, auf welche Beacons man reagieren möchte.

private static final String ESTIMOTE_PROXIMITY_UUID = "B9407F30-F5F8-466E-AFF9-25556B57FE6D";
private static final Region ALL_ESTIMOTE_BEACONS = new Region("regionId", ESTIMOTE_PROXIMITY_UUID, null, null);
...
..
.
mBeaconManager = new BeaconManager(context);
mBeaconManager.setRangingListener(this);
mBeaconManager.setMonitoringListener(this);

// Should be invoked in #onStart.
mBeaconManager.connect(new BeaconManager.ServiceReadyCallback() {
    @Override public void onServiceReady() {
       try {
         mBeaconManager.startRanging(ALL_ESTIMOTE_BEACONS);
         for (Region regionToMonitor : mMonitoringRegions) {
              mBeaconManager.startMonitoring(regionToMonitor);
         }
       } catch (RemoteException e) {
         Log.e(TAG, "Cannot start ranging", e);
       }
    }
});

Wie in diesem Beispiel zu sehen ist, ist das Starten des Services nicht allzu schwer. Nachdem wir den Service erfolgreich gestartet haben, können wir mit dem Ranging und dem Monitoring beginnen. Hierzu übergeben wir in beiden Fällen die UUID und ein Array mit Regions für die wir notifiziert werden wollen, sobald wir deren Reichweite betreten haben. Dies geschieht über die entsprechenden Interfaces des BeaconManager:

public class BeaconManager {
    ...
    ..
    .
    public static interface RangingListener {
      void onBeaconsDiscovered(Region region, List list);
    }

    public static interface MonitoringListener {
      void onEnteredRegion(Region region, List list);
      void onExitedRegion(Region region);
    }
}

Natürlich lassen sich über das SDK weitaus mehr Sachen treiben, wie z.B. das Setzen des Scan-Intervalls im Fore- und Background, die Schlafzyklen etc. Aber für eine simple Beacons-Anwendung welche dem Nutzer standortbasierte Nachrichten/ Informationen anzeigen soll, ist dies bereits genug.

In den meisten Nutzungsszenarien ist es wichtig den User nicht mit Informationen zu überladen. So sagt auch Alexander Oelling (Beacon-Anbieter aus Deutschland / Sensorberg): „Location-Services, nicht Location-Marketing“. Die Qualität bei solchen Apps ist sehr wichtig. So macht es Sinn, Informationen über den jeweiligen Standort nur dann anzuzeigen, wenn der User das Gerät anschaltet oder sich in der Beacon-Reichweite befindet und diese Information wieder verschwinden zu lassen sobald er sich davon entfernt. Es ist wichtig den Nutzer nicht vollzuspamen, das wirkt aufdringlich, verärgert ihn und wirft ein schlechtes Bild auf diese Technologie.

CC Day 2015 Testlauf
Unser erster Beacons-Testlauf auf dem CC Day 2015 in Neckarsulm lässt sich als Erfolg verbuchen. Im gesamten Gebäude wurden insgesamt 19 Beacons verteilt. 17 von diesen waren Räume zu denen der Anwender Informationen erhalten hat wenn er sich in deren Reichweite befand. Zusätzlich haben wir jeweils einen Beacon am Info-Stand der Connect-IT und der Bechtle-AG angebracht. Hier hat die Applikation eine Notification angezeigt, sobald das Gerät in Reichweite gelang.

B-Guided

Während dem CC Day 2015 Testlauf offenbarten sich aber auch einige Technik-Schwächen der Beacons. Ärgerlich war unter anderem die Konfiguration der Beacons, denn neben der Hardware, bietet das Estimote Unternehmen auch eine Applikation für das Konfigurieren der Beacons an. Laut Hersteller soll nach einer erfolgreichen Registierung alle unmittelbaren Beacons auf einem Radar angezeigt und einfach konfigurierbar sein. Neben der UUID, Major-ID und Minor-ID lassen sich hier auch die Reichweite und das Sende-Intervall einstellen. In der realen Welt stellt sich dies allerdings alles andere als einfach dar. Ständige Verbindungsabbrüche zu den Beacons und dem Estimote-Server waren nur einige der Gründe für das Ansetzen von grauen Haaren. Auch schien es uns, dass wenn doch mal eine Konfiguration erfolgreich an die Beacons übermittelt wurde, diese von der Hardware nicht korrekt übernommen wurde. Ein Beacon war von ca. 20 Metern noch erreichbar, obwohl nur eine Reichweite von 3,5 Metern eingestellt wurde. Ein weiterer Nachteil an diesen Beacons ist der fehlende An/Aus Schalter. Die Beacons werden mit einem Minimalen Sendeintervall und Reichweite ausgeliefert um die maximale Lebenszeit zu erreichen. Dennoch steht man hier vor größeren Problemen sobald man die Beacons auf Vorrat bestellen will. Mit einem Cutter lässt sich zwar das Gummigehäuse ablösen, wodurch die Knopfzelle austauschbar wird, allerdings bekommt man nach dieser Aktion den Beacon nie wieder so zusammengebaut wie er ausgeliefert wurde. Auf der Rückseite der Beacons befindet sich eine Art Klebefolie, welches für guten Halt sorgen soll. Wir haben unsere Geräte an Glasscheiben angebracht, einen Tag später lagen die Beacons auf dem Boden. Möglicherweise war die Oberfläche doch zu glatt, sodass wir nochmal mit Kabelbinder nachhelfen mussten. Über die tatsächliche Lebensdauer können wir noch kein Fazit ziehen, da sich unsere kleinen Helfer noch im Einsatz befinden und relativ „jung“ sind. Estimote preist bei einer mittleren Einstellung eine Dauer von über 20 Monaten an.

Am Morgen der Veranstaltung waren wir Entwickler alle sehr gespannt wie sich die Signalstärke der Beacons verhalten wird, wenn mehrere dutzend Menschen durch die Gänge strömen und mit ihrem Körper das Signal abschirmen. Deshalb muss bei der Installation von Beacons der richtige Ort gewählt werden, wo das Signal am wenigsten gestört werden kann. Unsere Beacons hingen entweder an der ca. 3,5m hohen Decke, oder wurden über den Türen der entsprechenden Räumen angebracht (ca. 3m Höhe). Dies sorgte beim Ausstrahlen des Signal für den richtigen Winkel und konnte nur schwer von Gegenständen oder Personen abgeschirmt werden.

Für mich als Entwickler war die Arbeit an der CC Day 2015 App ein rießen Spaß. Das Umfeld und die Technologie haben Eindruck hinterlassen und kamen bei den Anwendern sehr gut an. Auch wenn meiner Meinung nach, die Beacon-Technik noch in den Kinderschuhen steckt und ausgereift werden muss, bin ich sehr zuversichtlich dass wir in Zukunft öfters auf dieses Thema stoßen werden, egal ob nun in der U-Bahn, im Einkaufszentrum oder bei den nächstem CC Day 2016.

0 Kommentare

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

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