Central — co to je, role v BLE a jak skenuje zařízení

Autor: IT Sectr Publikováno: 2026-07-15 Doba čtení: 8 min

Central — je zařízení v architektuře Bluetooth Low Energy, které inicializuje skenování, navazuje spojení a spravuje výměnu dat s periferními zařízeními. V kontextu mobilního vývoje je Central smartphone nebo tablet na iOS nebo Android, který se připojuje k BLE senzorům, fitness trackerům a chytrým příslušenstvím. Podle Bluetooth Core Specification 5.4 (2023) může Central současně podporovat až 7 připojení k různým Peripheral, ačkoli skutečné omezení závisí na výrobci čipu a verzi OS. Core Bluetooth na iOS a android.bluetooth.le na Android poskytují plné API pro správu role Central.

Hlavní body

  • Central — aktivní BLE zařízení, které skenuje, připojuje se a spravuje výměnu s periferiemi.
  • Skenování probíhá prostřednictvím reklamních paketů — Central může filtrovat zařízení podle Service UUID pro úsporu energie.
  • Jeden Central může současně podporovat až 7 připojení k různým Peripheral (závisí na implementaci).
  • V mobilním vývoji je Central smartphone používající Core Bluetooth (iOS) nebo android.bluetooth.le (Android).
  • Role Central spotřebovává více energie než Peripheral kvůli neustálému skenování a zpracování dat.

Co je Central v BLE?

Central — je GATT klient v architektuře Bluetooth Low Energy, který inicializuje veškerou komunikaci. Na rozdíl od Peripheral, které pasivně čeká na připojení a inzeruje své služby, Central aktivně skenuje éter, detekuje reklamní pakety a inicializuje připojení.

Asymetrický model Central-Peripheral je základní charakteristikou BLE. Central řídí logiku interakce: rozhoduje, ke kterému zařízení se připojit, které služby prozkoumat, které charakteristiky číst a zapisovat. Peripheral plní roli datového serveru — ukládá služby a charakteristiky, ale neinicializuje připojení.

Podle Bluetooth Core Specification 5.4 (2023) může být zařízení současně Central i Peripheral (dual role). Například smartphone může být Central pro fitness náramek a Peripheral pro jiný smartphone přenášející soubory. Současná práce v obou rolích však zvyšuje spotřebu energie a složitost správy připojení.

V ekosystému mobilního vývoje je role Central nejčastějším scénářem. Aplikace na smartphonu hledá BLE zařízení (senzory, sluchátka, náramky), připojuje se k nim a přijímá data. Vývojář používá API operačního systému pro práci s Central: CBCentralManager v iOS, BluetoothLeScanner a BluetoothGatt v Android.

Proces skenování zařízení

Skenování — je první fáze práce Central. Zařízení naslouchá BLE rádiovým kanálům (37, 38, 39) pro detekci reklamních paketů, které periodicky vysílá Peripheral. Každý reklamní paket obsahuje název zařízení, seznam UUID služeb a uživatelská data.

Central může pracovat ve dvou režimech skenování: passive scanning (pouze příjem reklamních paketů) a active scanning (odeslání žádosti o skenování pro získání dalších dat prostřednictvím scan response). Passive scanning šetří energii, ale poskytuje méně informací. Active scanning umožňuje získat kompletní data reklamního paketu včetně názvu zařízení a úplného seznamu služeb.

Filtrování podle UUID — důležitá optimalizace. Central může skenovat pouze zařízení s konkrétním Service UUID a ignorovat ostatní. To nejen šetří energii, ale také zjednodušuje logiku aplikace: delegate přijímá pouze relevantní zařízení.

swift
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
                ]
            )
        }
    }
}

Správa připojení

Správa připojení — hlavní odpovědnost Central. Po detekci vhodného Peripheral Central inicializuje připojení. BLE připojení se navazuje prostřednictvím procedury navázání spojení, která zahrnuje výměnu parametrů: connection interval, slave latency a supervision timeout.

Connection interval určuje, jak často si Central a Peripheral po připojení vyměňují data. Interval může být od 7.5 ms do 4 sekund. Čím kratší interval, tím vyšší propustnost, ale také vyšší spotřeba energie. Slave latency umožňuje Peripheral přeskočit několik událostí připojení pro úsporu energie. Supervision timeout — maximální doba bez odpovědi, po které je připojení považováno za ztracené.

Central je zodpovědný za ukončení připojení po dokončení výměny dat. BLE zařízení obvykle neudržují připojení trvale — Central se připojí, přijme data a odpojí se. Toto je standardní vzor pro IoT senzory: Central skenuje, najde teplotní senzor, připojí se, přečte hodnotu a odpojí se.

ParametrRozsahÚčelDoporučení
Connection Interval7.5 ms – 4 sFrekvence výměny dat30–50 ms pro streamy, 1–4 s pro řídká data
Slave Latency0–499 událostíPřeskakování událostí Peripheral4–10 pro úsporu energie senzoru
Supervision Timeout100 ms – 32 sČasový limit ztráty spojení6–10 sekund pro většinu scénářů
MTU23–517 bajtůVelikost ATT paketuPožádat o maximum při připojení

Central v iOS: Core Bluetooth

Core Bluetooth — framework Apple pro práci s BLE na iOS a macOS. Třída CBCentralManager poskytuje plné API pro implementaci role Central: skenování, připojování, správa připojení. Práce s Central v iOS je založena na modelu delegate: CBCentralManagerDelegate přijímá události změny stavu, detekce zařízení a výsledků připojení.

Hlavní kroky práce Central v iOS: inicializace CBCentralManager, kontrola stavu Bluetooth, spuštění skenování, zpracování detekovaných zařízení přes delegate, připojení k vybranému Peripheral, detekce služeb a charakteristik, výměna dat.

swift
// Připojit k detekovanému Peripheral
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    // Uchovat referenci na peripheral a připojit
    discoveredPeripheral = peripheral
    central.connect(peripheral, options: nil)
}

// Úspěšné připojení
func centralManager(
    _ central: CBCentralManager,
    didConnect peripheral: CBPeripheral
) {
    peripheral.delegate = self
    peripheral.discoverServices(nil)
}

iOS omezuje práci BLE na pozadí: v režimu na pozadí může aplikace skenovat pouze s určitými klíči v Info.plist a připojená zařízení mohou upozorňovat Central na změny dat. Pro kritické aplikace (zdravotnická zařízení) použijte Background Modes s klíčem bluetooth-central.

Central v Android: BluetoothLeScanner

Android poskytuje API BluetoothLeScanner pro skenování BLE zařízení a BluetoothGatt pro správu připojení. Od Android 5.0 (API 21) nahradil BluetoothLeScanner zastaralý startLeScan. API vyžaduje oprávnění BLUETOOTH, BLUETOOTH_ADMIN a ACCESS_FINE_LOCATION (nebo ACCESS_BACKGROUND_LOCATION pro Android 10+).

java
import android.bluetooth.le.*;
import android.bluetooth.*;

private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;

// Nakonfigurovat skenování
ScanSettings settings = new ScanSettings.Builder()
    .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
    .build();

// Spustit skenování
scanner.startScan(null, settings, new ScanCallback() {
    @Override
    public void onScanResult(
            int callbackType,
            ScanResult result
    ) {
        BluetoothDevice device = result.getDevice();
        // Připojit k zařízení
        bluetoothGatt = device.connectGatt(
            context, false, gattCallback
        );
    }
});

V Android je důležité zohlednit omezení skenování: od Android 7 (API 24) nelze skenování spustit častěji než 5krát za 30 sekund v aplikacích, které nepoužívají Location. Android 12+ vyžaduje oprávnění BLUETOOTH_SCAN, BLUETOOTH_CONNECT a ADVERTISE, stejně jako runtime žádost o tato oprávnění.

Spotřeba energie Central

Spotřeba energie Central je vyšší než u Peripheral kvůli nutnosti neustále skenovat rádiové kanály. Central přijímá data prostřednictvím BLE paketů, zpracovává je, spravuje připojení a často provádí výpočty na procesoru aplikace. Podle Bluetooth SIG spotřebovává skenování od 30 mA do 100 mA v závislosti na režimu.

Existuje několik strategií úspory energie pro Central. Intervalové skenování — nejúčinnější metoda: Central skenuje v krátkých oknech (scan window) s dlouhými pauzami (scan interval). Například při scan window 30 ms a scan interval 1000 ms se spotřeba energie sníží o 97% ve srovnání s nepřetržitým skenováním.

Další optimalizace — filtrování podle UUID. Central rychleji zpracovává pouze relevantní reklamní pakety a ignoruje ostatní. To snižuje zatížení procesoru a prodlužuje výdrž baterie zařízení. Doporučuje se také vypnout skenování ihned po detekci požadovaného zařízení a neudržovat připojení déle, než je nutné.

Často kladené otázky

Může být smartphone současně Central i Peripheral?

Ano, BLE podporuje dual role: zařízení může být současně Central pro některá zařízení a Peripheral pro jiná. Například smartphone čte data ze senzoru (jako Central) a současně inzeruje svou vlastní službu (jako Peripheral) pro přenos dat do jiného zařízení.

Kolik zařízení může Central současně obsluhovat?

Specifikace BLE definuje limit 7 připojení pro jeden Central. V praxi omezení závisí na výrobci čipu: čipy Nordic nRF52840 podporují až 20 připojení, zatímco některé levné Bluetooth adaptéry — ne více než 3–4.

Proč Central nedetekuje můj BLE senzor?

Důvody mohou být různé: senzor neinzeruje (není v režimu advertising), filtr UUID je příliš přísný, Bluetooth na smartphonu je vypnutý, chybí potřebná oprávnění (Location na Android) nebo je senzor mimo dosah (doporučuje se do 10 metrů v místnosti).

Je nutné udržovat připojení k BLE zařízení trvale?

Ne nutně. Pro mnoho scénářů se používá vzor connect-and-read: Central skenuje, připojí se, přečte potřebná data a ukončí připojení. Trvalé připojení je potřeba pouze pro streamovaná data (puls, EKG) nebo ovládání zařízení v reálném čase.

Jak snížit spotřebu energie Central při skenování?

Použijte intervalové skenování s poměrem scan window 30–50 ms a scan interval 500–1000 ms. Filtrujte zařízení podle UUID, abyste zpracovávali pouze relevantní reklamní pakety. Vypněte skenování ihned po detekci požadovaného Peripheral.

Shrnutí

  • Central — aktivní účastník BLE připojení, který inicializuje skenování, připojení a správu výměny dat.
  • Proces skenování zahrnuje příjem reklamních paketů na kanálech 37, 38, 39 s možností filtrování podle Service UUID.
  • Po detekci Peripheral Central naváže připojení s konfigurovatelnými parametry — connection interval, slave latency, supervision timeout.
  • V mobilním vývoji je Central implementován prostřednictvím CBCentralManager (iOS) nebo BluetoothLeScanner + BluetoothGatt (Android).
  • Jeden Central může současně spravovat až 7 připojení ve standardní konfiguraci Bluetooth.
  • Spotřebu energie Central lze optimalizovat intervalovým skenováním a filtrováním UUID pro prodloužení výdrže baterie.
  • Správná správa životního cyklu připojení — od detekce po ukončení — určuje efektivitu BLE aplikace.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také