Central ist ein Gerät in der Bluetooth Low Energy-Architektur, das das Scannen initiiert, eine Verbindung herstellt und den Datenaustausch mit peripheren Geräten verwaltet. Im Kontext der mobilen Entwicklung ist Central ein Smartphone oder Tablet mit iOS oder Android, das sich mit BLE-Sensoren, Fitness-Trackern und intelligenten Accessoires verbindet. Laut Bluetooth Core Specification 5.4 (2023) kann Central gleichzeitig bis zu 7 Verbindungen zu verschiedenen Peripherals unterstützen, wobei die tatsächliche Begrenzung vom Chip-Hersteller und der OS-Version abhängt. Core Bluetooth auf iOS und android.bluetooth.le auf Android bieten eine vollständige API zur Verwaltung der Central-Rolle.
Wichtige Punkte
Central ist ein GATT-Client in der Bluetooth Low Energy-Architektur, der die gesamte Kommunikation initiiert. Im Gegensatz zu Peripheral, das passiv auf Verbindungen wartet und seine Dienste bewirbt, scannt Central aktiv die Umgebung, entdeckt Advertising-Pakete und initiiert Verbindungen.
Das asymmetrische Central-Peripheral-Modell ist ein grundlegendes Merkmal von BLE. Central verwaltet die Interaktionslogik: Es entscheidet, mit welchem Gerät eine Verbindung hergestellt wird, welche Dienste erkundet und welche Merkmale gelesen und geschrieben werden sollen. Peripheral fungiert als Datenserver — es speichert Dienste und Merkmale, initiiert aber keine Verbindungen.
Laut Bluetooth Core Specification 5.4 (2023) kann ein Gerät gleichzeitig Central und Peripheral sein (Dual-Rolle). Beispielsweise kann ein Smartphone als Central für ein Fitnessband und als Peripheral für ein anderes Smartphone, das Dateien überträgt, fungieren. Der gleichzeitige Betrieb in beiden Rollen erhöht jedoch den Stromverbrauch und die Komplexität der Verbindungsverwaltung.
Im Ökosystem der mobilen Entwicklung ist die Central-Rolle das häufigste Szenario. Eine App auf einem Smartphone sucht nach BLE-Geräten (Sensoren, Kopfhörer, Bänder), verbindet sich mit ihnen und empfängt Daten. Der Entwickler verwendet die Betriebssystem-API für die Arbeit mit Central: CBCentralManager auf iOS, BluetoothLeScanner und BluetoothGatt auf Android.
Scannen ist die erste Stufe des Central-Betriebs. Das Gerät hört auf den BLE-Funkkanälen (37, 38, 39), um Advertising-Pakete zu erkennen, die Peripherals regelmäßig senden. Jedes Advertising-Paket enthält den Gerätenamen, eine Liste von Service-UUIDs und benutzerdefinierte Daten.
Central kann in zwei Scan-Modi arbeiten: passives Scannen (nur Empfang von Advertising-Paketen) und aktives Scannen (Senden einer Scan-Anfrage, um zusätzliche Daten über eine Scan-Antwort zu erhalten). Passives Scannen spart Energie, liefert aber weniger Informationen. Aktives Scannen ermöglicht den Erhalt vollständiger Advertising-Paketdaten, einschließlich des Gerätenamens und der vollständigen Dienstliste.
Die UUID-Filterung ist eine wichtige Optimierung. Central kann nur nach Geräten mit einer bestimmten Service-UUID scannen und den Rest ignorieren. Dies spart nicht nur Energie, sondern vereinfacht auch die Anwendungslogik: Der Delegierte erhält nur relevante Geräte.
import CoreBluetooth
class BLECentralManager: NSObject, CBCentralManagerDelegate {
private var centralManager: CBCentralManager!
override init() {
super.init()
centralManager = CBCentralManager(
delegate: self,
queue: nil
)
}
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if central.state == .poweredOn {
central.scanForPeripherals(
withServices: nil,
options: [
CBCentralManagerScanOptionAllowDuplicatesKey: false
]
)
}
}
}
Verbindungsverwaltung ist die Hauptaufgabe von Central. Nach dem Entdecken eines geeigneten Peripherals initiiert Central eine Verbindung. Eine BLE-Verbindung wird durch einen Verbindungsaufbauprozess hergestellt, der den Austausch von Parametern umfasst: Verbindungsintervall, Slave-Latenz und Supervision-Timeout.
Das Verbindungsintervall bestimmt, wie oft Central und Peripheral nach der Verbindung Daten austauschen. Das Intervall kann von 7,5 ms bis 4 Sekunden reichen. Je kürzer das Intervall, desto höher der Durchsatz, aber auch desto höher der Stromverbrauch. Slave-Latenz ermöglicht es Peripheral, mehrere Verbindungsereignisse zu überspringen, um Energie zu sparen. Das Supervision-Timeout ist die maximale Zeit ohne Antwort, nach der die Verbindung als verloren gilt.
Central ist für das Beenden der Verbindung nach Abschluss des Datenaustauschs verantwortlich. BLE-Geräte halten normalerweise keine dauerhafte Verbindung aufrecht — Central verbindet sich, holt Daten und trennt die Verbindung. Dies ist ein Standardmuster für IoT-Sensoren: Central scannt, findet einen Temperatursensor, verbindet sich, liest den Wert und trennt die Verbindung.
| Parameter | Bereich | Zweck | Empfehlung |
|---|---|---|---|
| Verbindungsintervall | 7,5 ms – 4 s | Datenaustauschfrequenz | 30–50 ms für Streaming, 1–4 s für seltene Daten |
| Slave-Latenz | 0–499 Ereignisse | Überspringen von Peripheral-Ereignissen | 4–10 zum Energiesparen des Sensors |
| Supervision-Timeout | 100 ms – 32 s | Timeout bei Verbindungsverlust | 6–10 Sekunden für die meisten Szenarien |
| MTU | 23–517 Bytes | ATT-Paketgröße | Bei Verbindung das Maximum anfordern |
Core Bluetooth ist Apples Framework für die Arbeit mit BLE auf iOS und macOS. Die Klasse CBCentralManager bietet die vollständige API zur Implementierung der Central-Rolle: Scannen, Verbinden, Verbindungsverwaltung. Die Arbeit mit Central auf iOS basiert auf einem Delegiertenmodell: CBCentralManagerDelegate empfängt Ereignisse zu Zustandsänderungen, Geräteerkennung und Verbindungsergebnissen.
Die wichtigsten Schritte für Central auf iOS: Initialisieren von CBCentralManager, Überprüfen des Bluetooth-Status, Starten des Scannens, Verarbeiten entdeckter Geräte über den Delegierten, Verbinden mit dem ausgewählten Peripheral, Entdecken von Diensten und Merkmalen, Austauschen von Daten.
// Mit entdecktem Peripheral verbinden
func centralManager(
_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String: Any],
rssi RSSI: NSNumber
) {
// Referenz auf Peripheral halten und verbinden
discoveredPeripheral = peripheral
central.connect(peripheral, options: nil)
}
// Verbindung erfolgreich
func centralManager(
_ central: CBCentralManager,
didConnect peripheral: CBPeripheral
) {
peripheral.delegate = self
peripheral.discoverServices(nil)
}
iOS schränkt die BLE-Hintergrundarbeit ein: Im Hintergrund kann eine App nur mit bestimmten Schlüsseln in Info.plist scannen, und verbundene Geräte können Central über Datenänderungen benachrichtigen. Für kritische Anwendungen (medizinische Geräte) verwenden Sie Hintergrundmodi mit dem Schlüssel bluetooth-central.
Android bietet die BluetoothLeScanner-API zum Scannen von BLE-Geräten und BluetoothGatt zur Verbindungsverwaltung. Ab Android 5.0 (API 21) ersetzte BluetoothLeScanner das veraltete startLeScan. Die API erfordert die Berechtigungen BLUETOOTH, BLUETOOTH_ADMIN und ACCESS_FINE_LOCATION (oder ACCESS_BACKGROUND_LOCATION für Android 10+).
import android.bluetooth.le.*;
import android.bluetooth.*;
private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;
// Scannen konfigurieren
ScanSettings settings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build();
// Scannen starten
scanner.startScan(null, settings, new ScanCallback() {
@Override
public void onScanResult(
int callbackType,
ScanResult result
) {
BluetoothDevice device = result.getDevice();
// Mit Gerät verbinden
bluetoothGatt = device.connectGatt(
context, false, gattCallback
);
}
});
Unter Android sind die Scan-Beschränkungen zu beachten: Ab Android 7 (API 24) kann das Scannen in Apps, die keine Standortdienste verwenden, nicht häufiger als 5 Mal in 30 Sekunden gestartet werden. Android 12+ erfordert die Berechtigungen BLUETOOTH_SCAN, BLUETOOTH_CONNECT und ADVERTISE sowie Laufzeitanforderungen für diese Berechtigungen.
Der Stromverbrauch von Central ist höher als der von Peripheral, da die Funkkanäle ständig gescannt werden müssen. Central empfängt BLE-Pakete, verarbeitet sie, verwaltet Verbindungen und führt oft Berechnungen auf dem Anwendungsprozessor durch. Laut Bluetooth SIG verbraucht das Scannen je nach Modus zwischen 30 mA und 100 mA.
Es gibt mehrere Energiesparstrategien für Central. Intervall-Scannen ist die effektivste Methode: Central scannt in kurzen Fenstern (Scan-Fenster) mit langen Pausen (Scan-Intervall). Beispielsweise wird bei einem Scan-Fenster von 30 ms und einem Scan-Intervall von 1000 ms der Stromverbrauch im Vergleich zum kontinuierlichen Scannen um 97% reduziert.
Eine zusätzliche Optimierung ist die UUID-Filterung. Central verarbeitet nur relevante Advertising-Pakete schneller und ignoriert den Rest. Dies reduziert die CPU-Last und verlängert die Akkulaufzeit des Geräts. Es wird auch empfohlen, das Scannen sofort nach dem Finden des gewünschten Geräts zu beenden und die Verbindung nicht länger als nötig aufrechtzuerhalten.
Häufig gestellte Fragen
Ja, BLE unterstützt Dual-Rolle: Ein Gerät kann gleichzeitig für einige Geräte Central und für andere Peripheral sein. Beispielsweise liest ein Smartphone Daten von einem Sensor (als Central) und bewirbt gleichzeitig seinen eigenen Dienst (als Peripheral), um Daten an ein anderes Gerät zu übertragen.
Die BLE-Spezifikation definiert ein Limit von 7 Verbindungen für einen einzelnen Central. In der Praxis hängt die Begrenzung vom Chip-Hersteller ab: Nordic nRF52840-Chips unterstützen bis zu 20 Verbindungen, während einige günstige Bluetooth-Adapter nicht mehr als 3–4 unterstützen.
Die Gründe können unterschiedlich sein: Der Sensor bewirbt sich nicht (nicht im Advertising-Modus), der UUID-Filter ist zu streng, Bluetooth ist auf dem Smartphone ausgeschaltet, erforderliche Berechtigungen fehlen (Standort auf Android) oder der Sensor ist außer Reichweite (empfohlen bis zu 10 Metern in Innenräumen).
Nicht unbedingt. Für viele Szenarien wird das Verbinden-und-Lesen-Muster verwendet: Central scannt, verbindet sich, liest die erforderlichen Daten und trennt die Verbindung. Eine ständige Verbindung ist nur für Streaming-Daten (Puls, EKG) oder Echtzeit-Gerätesteuerung erforderlich.
Verwenden Sie Intervall-Scannen mit einem Scan-Fenster von 30–50 ms und einem Scan-Intervall von 500–1000 ms. Filtern Sie Geräte nach UUID, um nur relevante Advertising-Pakete zu verarbeiten. Stoppen Sie das Scannen sofort nach dem Finden des gewünschten Peripherals.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch