Philip Ackermann Fraunhofer Institut für angewandte Informationstechnik

Raspberry Pis eignen sich besonders für den Einsatz dieser Module, weil zum einen Node.js problemlos installiert werden kann und zum anderen BLE seit Version 3 mit an Bord ist.

Bluetooth Low Energy wird im Bereich des Internet of Things immer interessanter. Sei es, um vom Smartphone den Fitness-Tracker auszulesen oder um von einem Raspberry Pi auf die Messwerte von verschiedenen Sensoren zuzugreifen. Über die Node.j-Module bleno und noble lässt sich die Kommunikation zwischen BLE-Geräten auch unter JavaScript nutzen.

Zunächst sollen ein paar grundlegende Begriffe geklärt werden, die im Zusammenhang mit BLE verwendet werden. Nehmen wir dazu das Beispiel einer Smartphone-App, die sich mit verschiedenen E-Health-Geräten, wie Blutdruckmessgeräten oder Pulsmessgeräten verbinden kann. Diese E-Health-Geräte werden im Zusammenhang mit BLE als Peripheral-Devices bezeichnet (kurz: Peripherals), die Smartphone-App dagegen als Central-Device (kurz: Central). Beide Rollen sind im so genannten GAP-Protokoll (Generic Access Profile) festgelegt, über das entschieden wird, ob zwei BLE-Geräte miteinander kommunizieren dürfen oder nicht.

Um auf sich aufmerksam zu machen, senden Peripherals kontinuierlich oder in einer bestimmten Frequenz per Broadcast ein so genanntes Advertising-Signal (Abb. 1). Die Informationen, die dabei mitgesendet werden, enthalten in der Regel den Namen des Peripherals, eine ID und einige weitere Eigenschaften. Anhand dieser Informationen kann ein Central dann entscheiden, ob es sich mit dem Peripheral verbinden möchte. Dabei kann ein Central durchaus zu mehreren Peripherals eine Verbindung herstellen. Ein Smartphone kann sich also mit mehreren E-Health-Geräten verbinden. Ein Peripheral dagegen kann immer nur mit einem einzigen Central verbunden sein, ein E-Health-Gerät beispielsweise also nicht gleichzeitig mit mehreren Smartphones. Das ist übrigens auch einer der Gründe, warum Sie mit Ihrer Bluetoothtastatur nicht gleichzeitig zwei Rechner steuern können.

ackermann_ble_1

Abb. 1: Das Prinzip des Generic Access Profile

Wie zwei Geräte via BLE miteinander kommunizieren, wird über das so genannte Generic Attribute Profile (GATT) definiert (Abb. 2). Auf den Peripherals läuft dazu jeweils ein GATT-Server, auf dem Central ein entsprechender GATT-Client. Sprich: Wenn sich ein Smartphone mit mehreren E-Health-Geräten verbindet, läuft auf jedem dieser Peripherals ein GATT-Server, auf dem Smartphone dagegen jeweils ein GATT-Client.

Abb. 2: Das Prinzip des Generic Attribute Profile

Abb. 2: Das Prinzip des Generic Attribute Profile

Welche Daten von einem GATT-Server bereitgestellt werden, wird über so genannte Profile definiert. Dabei handelt es sich um eine Zusammenstellung verschiedener Services, die von dem jeweiligen Peripheral zur Verfügung gestellt werden. Die Bluetooth Special Interest Group (SIG) hat diesbezüglich bereits einige Profile und Services definiert, beispielsweise für Blutdruck- oder Herzfrequenzmessgeräte. Prinzipiell kann man Profile und Services aber auch selbst definieren und implementieren.

Services wiederum enthalten eine oder mehrere Characteristics, auf die lesend und/oder schreibend zugegriffen werden kann, beispielsweise um Messwerte auszulesen oder das Peripheral in einen bestimmten Zustand zu versetzen. Auch hierfür gibt es bereits einige vordefinierte Characteristics. Aber auch hier kann man als Entwickler wieder seinen Fantasien quasi freien Lauf lassen. Jede Characteristic wiederum enthält einen Wert sowie optional einen oder mehrere so genannter Descriptors, sprich textuelle Beschreibungen der Characteristic. Darüber hinaus besteht die Möglichkeit, ähnlich dem Observer- oder Publish-/Subscribe-Entwurfsmuster, vom Central über Änderungen einer Characteristic auf einem Peripheral benachrichtigt zu werden.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Entwickler Magazin Spezial Vol. 11: Trends - "Trends"

Alle Infos zum Heft
579786187Bluetooth Low Energy revolutioniert das IoT
X
- Gib Deinen Standort ein -
- or -