en
de

Das Smartphone als Allzweckwaffe im Internet of Things

11 Juli 2014
| |
Lesezeit: 5 Minutes

Bei einem Software-Dienstleister wie Zühlke wechseln die Mitarbeiter häufig das Büro wegen eines neuen Projekts. Wenn diese Büros auf ihren Türschildern immer die Namen der anwesenden Kollegen zeigen sollen, stehen wir vor einem logistischen Albtraum.

Wir haben das Zühlke Camp 2014 im Kontext des Internet of Things genutzt, um hierfür ein intelligentes Türschild als prototypische Lösung zu entwickeln.

Gewollter Nebeneffekt: Wir wollen zugleich mögliche Wege zur Integration von Geräten mit dem Internet untersuchen. Die Idee war, eine kostengünstige Lösung zu finden, die zudem batteriebetrieben und ohne dedizierten IP-Gateway auskommen sollte.

Idealerweise sollten die Türschilder unkompliziert durch die Mitarbeiter selbst und aus der Ferne aktualisierbar sein. Außerdem sollten sie zusätzlich die Möglichkeit eröffnen, Kollegen über einen zugehörigen Raumplan im Web zu orten.

Ein relativ ambitioniertes Vorhaben für einen Zeitraum von 3 Tagen für die Umsetzung – ob das klappen würde?

Smartphones als Crowdsourced Gateway – das Experiment

Im Vorfeld des Camps haben wir uns bereits Gedanken über mögliche Lösungsansätze gemacht. Unsere Überlegungen führten zu folgender Architektur:

  • Das Türschild besteht aus einem Raspberry Pi mit aufgestecktem TFT-Display. Auf diesem zeigt eine Qt-Oberfläche die Raumbelegung an.
  • Der Raspberry Pi kommuniziert über Bluetooth Low Energy mit einer Smartphone-App für Android und iOS. Im BLE-Advertising ist bereits die Identität des Türschilds enthalten, und Updates werden über einen GATT-Service übertragen.
  • Die App…
    • reagiert auf Türschilder in der Nähe,
    • sendet Positionsupdates in die Cloud,
    • überträgt bei Bedarf Updates aus der Cloud auf das Türschild und
    • bietet dem Benutzer die Option, direkt auf dem Türschild einzuchecken.
  • Die App kommuniziert über ein REST-Interface mit einem Service in der AWS-Cloud. Der Service speichert die Updates in ElasticSearch und DynamoDB.
  • Ein in AngularJS geschriebenes Visualisierungsfrontend greift auf die Daten in ElasticSearch zu, um eine Kartendarstellung zu generieren.
  • Ein Windows-Service aktualisiert die Position im Lync-Client anhand der Cloud-Daten, damit die Position von Kollegen auch über den Lync-Messenger ermittelt werden kann.
Türschild Architektur

Intelligentes Türschild: Integrationsarchitektur

Man mag sich nun fragen, warum ein Raspi mit TFT-Display eingeplant wurde, wenn die Lösung den Batteriebetrieb erlauben sollte. Nun, es sollte sich eben um ein Proof of Concept innerhalb von drei Tagen handeln.

Für eine tatsächlich batteriebetriebene Lösung wäre ein Arduino mit E-Ink-Display sicher besser geeignet gewesen. Die Erwartung war jedoch, bei der Ansteuerung des TFT-Displays und bei der Umsetzung der Bluetooth-LE-Services auf dem Raspberry Pi leichteres Spiel zu haben.

Besonders interessant an dieser Lösung war, dass die Smartphone-App in diesem Szenario die Rolle eines „Data Mule“ übernehmen würde.

Nur durch die Kommunikation zwischen Raspi und Smartphone über Bluetooth LE erhalten die Türschilder ihre Updates; ansonsten würden die Türschilder keine Schnittstellen zur Außenwelt haben.

Doch wie spielt das zusammen mit der Ortung von Smartphones im Gebäude? Die naheliegende Lösung für die Ortung wäre die Nutzung des iBeacon-Protokolls gewesen. Leider erlauben iBeacons jedoch keine Verbindungen und keine Abstandsbestimmung im Hintergrund unter iOS.

Die Lösung: Beacon-Informationen im regulären Bluetooth-LE-Advertising unterbringen! Auf diesem Wege könnten die Smartphones auch ohne Verbindung ihre Position bestimmen, und sie hätten dennoch die Möglichkeit, sich mit den Türschildern zu verbinden und Daten zu übertragen.

Diese Lösung konnte das Team schlussendlich binnen drei Tagen erfolgreich umsetzen. Alle Schnittstellen wurden im Vorfeld genau definiert; dadurch hatten die Teilteams bei der nachfolgenden Umsetzung nur noch wenig Abstimmungsbedarf. Am Ende des Camps war eine vollständige und funktionierende Lösung entstanden.

Raspi-Türschild und Android-App

Raspi-Türschild und Android-App

Das Ergebnis – Bluetooth Low Energy und REST-Services als Winning Team

Aus der Umsetzung des Intelligenten Türschilds konnten wir zahlreiche Erkenntnisse gewinnen.

Das Muster, eine Smartphone-App als „Crowdsourced Gateway“ und gleichzeitig für Indoor-Location-Dienste zu nutzen, hat sich als durchaus gangbare Lösung herausgestellt.

Die Smartphones konnten die Updates für die Türschilder aus der Cloud laden und bereithalten. Dadurch ging die Übertragung auf die Türschilder schnell vonstatten. Auch die Erkennung des nächstgelegenen Türschilds anhand der Bluetooth-RSSI funktionierte zuverlässig. Voraussetzung hierfür war natürlich, dass alle Verbindungen zur Übertragung von Updates stets möglichst schnell wieder beendet wurden. Andernfalls hätte das Türschild nämlich keine Advertising-Pakete senden können.

Bei der Umsetzung der Datenübertragung zwischen App und Türschild hat sich einmal mehr gezeigt, dass Bluetooth Low Energy ein ausgereifter und einfach zu nutzender Standard ist.

Mit unserer bestehenden Erfahrung in diesem Gebiet konnte sehr schnell ein Service definiert und implementiert werden, der alle Kommunikationsanforderungen in unserem Szenario erfüllte.

Auch die REST-Schnittstelle zwischen App und Cloud war schnell definiert und umgesetzt. Für die Schnittstellen-Definition war apiary.io nützlich. Mit dessen Hilfe konnten außerdem direkt Mock-Implementierungen erstellt werden – sehr praktisch für die Integration. Die Anbindung der Android-App mit AsyncHttp und der iOS-App mit AFNetworking ging schnell und unkompliziert vonstatten.

Das Visualisierungsfrontend konnten wir dank eines im Vorfeld entwickelten Anwendungsrahmens auf der Basis von AngularJS schnell und ohne größere Schwierigkeiten erstellen. Der Anwendungsrahmen beinhaltete bereits eine Integration mit ElasticSearch und das zugehörige Datenmodell.

Zühlke Camp 2014 Türschild-TeamNatürlich mussten wir auch hier und da Hürden überwinden. So stellte sich beispielsweise bei der Umsetzung der BLE-Kommunikation unter Android heraus, dass die API Probleme macht, sobald in einer Characteristic mehr als 20 Bytes übertragen werden sollen.

Um dieses Problem zu lösen wird ein Chunking der Daten nötig, das auch vom GATT-Server unterstützt werden muss.

Hier rächt sich offenbar, dass Google den BLE-Support in Android so lange hat schleifen lassen: Erst seit Android 4.3 können die Gerätehersteller eine öffentliche BLE-API auf ihren Geräten anbinden.

Diese Probleme traten nämlich nur auf vereinzelten älteren Android-Geräten auf, die sich in älteren Android-Versionen noch proprietärer APIs bedienten (in unserem Fall z.B. das Samsung Galaxy S3). Unter iOS hingegen ist Bluetooth LE schon seit Jahren lückenlos unterstützt und problemlos nutzbar.

Auch auf dem Raspberry Pi stellte sich die Nutzung von Bluetooth LE als nicht ganz so trivial heraus, wie wir erwartet hatten. Der in Raspian enthaltene BLE-Stack war veraltet und für unsere Zwecke nicht zu gebrauchen.

Erst mit dem auf Raspian kompilierten BlueZ-Stack ließ sich der spezifizierte Bluetooth-LE-Service implementieren.

Für die Umsetzung des BLE-Services nutzten wir Node.js mit dem bleno-Modul.

Interessanterweise stellte sich später bei einem Gegenexperiment heraus, dass die Umsetzung der Bluetooth-Schnittstelle auf entsprechender Embedded-Hardware sehr viel einfacher gewesen wäre. In erster Linie lag dies an der Dokumentation, die dort deutlich besser war.

Schlussendlich war es schlicht schön mitzuerleben, was ein Team von engagierten Software-Ingenieuren in nur drei Tagen erreichen kann.

Trotz aller Widrigkeiten stand am Ende eine durchgängig integrierte Lösung. Selbst falls diese nicht im Büro-Alltag benutzt werden wird, so hat sie doch zahlreiche Erfahrungen geliefert. Diese werden in zukünftigen Projekten im Bereich „Internet of Things“ – und darüber hinaus – nützlich sein.

 

Kommentare (1)

[…] Team “Hier ist Dein Schild” hat den Prototypen eines intelligenten Türschildes entwickelt, bestehend aus einem […]

×

Updates

Schreiben Sie sich jetzt ein für unsere zwei-wöchentlichen Updates per E-Mail.

This field is required
This field is required
This field is required

Mich interessiert

Select at least one category
You were signed up successfully.

Erhalten Sie regelmäßige Updates zu neuen Blogartikeln

Jetzt anmelden

Oder möchten Sie eine Projektanfrage mit uns besprechen? Kontakt aufnehmen »