© Liashko/Shutterstock.com
Entwickler Magazin
Bluetooth Low Energy in JavaScript und Node.js

Wir müssen reden

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.js-Module bleno und noble lässt sich die Kommunikation zwischen BLE-Geräten auch unter JavaScript nutzen.

Philip Ackermann


Zunächst sollen ein paar grundlegende Begriffe geklärt werden, die im Zusammenhang mit BLE verwendet werden. Nehmen wir dazu das Beispiel einer Smart­phone-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.

Abb. 1: Das Prinzip des Generic Access Profile

Wie zwei Geräte via BLE miteinander kommunizieren, wird über das so genannte Generic Attribute Pro­file (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

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 (Abb. 3). Die Bluetooth Special Interest Group (SIG) hat diesbezüglich bereits einige Profile und Services definiert, beispielsweise für Blutdruck- oder Herzfrequenzmessgeräte [1], [2]. Prinzipiell kann man Profile und Services aber auch selbst definieren und implementieren.

Servic...

Entwickler Magazin
Bluetooth Low Energy in JavaScript und Node.js

Wir müssen reden

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.js-Module bleno und noble lässt sich die Kommunikation zwischen BLE-Geräten auch unter JavaScript nutzen.

Philip Ackermann


Zunächst sollen ein paar grundlegende Begriffe geklärt werden, die im Zusammenhang mit BLE verwendet werden. Nehmen wir dazu das Beispiel einer Smart­phone-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.

Abb. 1: Das Prinzip des Generic Access Profile

Wie zwei Geräte via BLE miteinander kommunizieren, wird über das so genannte Generic Attribute Pro­file (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

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 (Abb. 3). Die Bluetooth Special Interest Group (SIG) hat diesbezüglich bereits einige Profile und Services definiert, beispielsweise für Blutdruck- oder Herzfrequenzmessgeräte [1], [2]. Prinzipiell kann man Profile und Services aber auch selbst definieren und implementieren.

Servic...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang