Was sind eigentlich diese Charakteristiken, Services und Deskriptoren?

Bluetooth Low Energy kann gerade für Entwickler mit einiger Erfahrung in serieller Kommunikation schwierig sein, denn die Begrifflichkeiten und Denkweisen lassen sich mit kaum einem anderen Protokoll vergleichen. Wo andere Protokolle oft von zeitlichen Abständen reden oder von Sliding Windows, findet man in Bluetooth Low Energy Begriffe wie Charakteristiken, Services, Deskriptoren und vieles mehr. In diesem Artikel wollen wir auf diese drei häufig vorkommenden Fachbegriffe eingehen und versuchen Bluetooth zu erklären.

Was sind BLE Services?

Wenn Sie serielle Protokolle gewöhnt sind, wird Ihnen Bluetooth wahrscheinlich schwerer fallen. Als wenn Sie sich stattdessen auf das Bild einlassen, dass Bluetooth Peripherie Bäume anbietet, die sich die Gegenseite, der Central, ansehen kann. Diese Bäume nennt Bluetooth Services, jeder Baum hat mehrere Blätter, die Werte enthalten und können vom Central verändert, gelesen und abonniert werden. Die Blätter nennt man Charakteristiken.

Was sind Bluetooth Charakteristiken?

Jedes Blatt besteht aus mehreren Werten:

  • Bschreibung der Charakteristik.
    Diese Beschreibung besteht aus:

    • Den Rechten, also ob gelesen, abonniert und/oder geschrieben werden darf.
    • Der Handle, der in dem darunter liegenden Protokoll ATT benutzt werden kann. (Wir gehen später noch genauer darauf ein.)
    • Die UUID, die diese Charakteristik beschreibt.
  • Den Wert der Charakteristik, der je nach Rechten gelesen und geschrieben werden darf.
  • Falls die Charakteristik Deskriptoren hat, so gibt es noch weitere Werte, die je nach Rechten geschrieben und gelesen werden können. Einer der üblichen Anwendungsfälle wäre die Möglichkeit eine Charakteristik abonnierbar zu machen. Um dies zu erreichen, muss ein Client Characteristic Configuration Descriptor eingefügt werden. Dieser kann dann von dem Central beschrieben werden, wobei eine 1 im ersten Bit Notifications aktiviert und eine 1 im zweiten Bit Indications aktiviert.

Wir werden im weiteren Verlauf des Artikels mit einem Beispiel-Service arbeiten, dieser ist wie folgt definiert:

Art UUID Rechte Wert
Service 0DA9BEAF-DEE8-4C99-AC42-DAADB7C3BCAB
Characteristic 5B3F2546-245B-40EA-98EE-E9D1773DCD1A Read [0x01,0x01,0x01,0x01]
Characteristic 8B88F5F0-DB05-459B-BDB3-881AE1EE8104 Read & Notify [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
Characteristic 2C7F11BC-576F-4EB0-B411-4A2D7E94366F Read & Write [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]

 

Während GATT mit UUID’s arbeitet, kennt ATT diese Charakteristiken nur unter den schon oben genannten Handles. Diese Handles sorgen dafür, dass ein jedes Peripheriegerät prinzipiell eine Tabelle anbietet, in der alle Charakteristiken mit ihren Deskriptoren wieder zu finden sind.

Publiziert man diesen Service mit iOS oder Android, so wird folgendes publiziert:

Handle Wert
0x0010 02:11:00:1A:CD:3D:77:D1:E9:EE:98:EA:40:5B:24:46:25:3F:5B
0x0011 01:01:01:01
0x0012 12:13:00:04:81:EE:E1:1A:88:B3:BD:9B:45:05:DB:F0:F5:88:8B
0x0013 00:00:00:00:00:00:00:00
0x0014 00:00
0x0015 0A:16:00:6F:36:94:7E:2D:4A:11:B4:B0:4E:6F:57:BC:11:7F:2C
0x0016 00:00:00:00:00:00:00:00

 

Nun stellt sich natürlich die Frage, wie man diese Daten zu deuten hat. Bei genauerer Betrachtung wird schnell klar, dass es sich bei 0x0011, 0x0013 und 0x0016 jeweils um die Werte der Charakteristiken handelt. Spannender sind allerdings die Werte der Charakteristiken 0x0010, 0x0012, 0x0015. Diese folgen alle dem folgenden Schema.

Teil des Wertes Erklärung
02 Das erste Byte stellt die Propertys dar. 0x02 steht für Read. Die komplette Liste entnehmen Sie bitte der Property Tabelle.
11:00 Beschreibt das Handle 0x0011 in umgekehrter Byte-Order. Dieses Handle enthält den Wert der Charakteristik.
1A:CD:3D:77:D1:E9:EE:98:EA:40:5B:24:46:25:3F:5B Die UUID die durch das Handle dargestellt wird, in umgekehrter Byte-Order.

 

Danach bleibt nur die Frage, was das Handle 0x0014 zu bedeuten hat. Dies ist das oben erwähnte Client Characteristic Configuration, was dafür verantwortlich ist, Nofications & Indications zu ermöglichen. Wie Sie aus der Dokumenation entnehmen können, sorgt ein 01:00 dafür, dass Notifcations aktiviert werden. Ein 10:00 hingegen wird stattdessen für Indications sorgen.

Property Tabelle

Property Wert
Broadcast 0x01
Read 0x02
WriteWithoutResponse 0x04
Write 0x08
Notify 0x10
Indicate 0x20
AuthenticatedSignedWrites 0x40
ExtendedProperties 0x80

Abschließende Worte?

Das System der Services, Charakteristiken und Deskriptoren ist ein sehr gelungenes und durchdachtes Konzept, was nach einiger Zeit deutlich einfacher zu benutzen ist, als andere vergleichbare Systeme. Dank der großen Vielfalt an verfügbaren Geräten und Chips, die Bluetooth 4.0 unterstützen und der einfachen Möglichkeiten gute Lösungen dafür zu entwickeln, wird wohl diese und die nächste Generation der IoT (Internet of Things) Hardware Bluetooth Low Energy bevorzugen.

By | 2017-07-17T15:04:57+00:00 Februar 13th, 2017|Bluetooth Low Energy|