Central — mi ez, szerepe a BLE-ben és hogyan szkennel eszközöket

Szerző: IT Sectr Megjelenés: 2026-07-15 Olvasási idő: 8 perc

Central — egy eszköz a Bluetooth Low Energy architektúrában, amely elindítja a szkennelést, létrehozza a kapcsolatot és kezeli az adatcserét a perifériás eszközökkel. A mobilfejlesztés kontextusában a Central egy okostelefon vagy tablet iOS-en vagy Androidon, amely BLE-érzékelőkhöz, fitneszkövetőkhöz és okos kiegészítőkhöz csatlakozik. A Bluetooth Core Specification 5.4 (2023) szerint a Central akár 7 egyidejű kapcsolatot is támogathat különböző Peripheral-ökkel, bár a tényleges korlátozás a chip gyártójától és az OS verziójától függ. Az iOS-en a Core Bluetooth és Androidon az android.bluetooth.le teljes API-t biztosít a Central szerepének kezeléséhez.

Főbb pontok

  • Central — aktív BLE-eszköz, amely szkennel, csatlakozik és kezeli a perifériákkal való adatcserét.
  • A szkennelés reklámcsomagokon keresztül történik — a Central szűrheti az eszközöket Service UUID alapján az energiatakarékosság érdekében.
  • Egy Central akár 7 kapcsolatot is támogathat egyidejűleg különböző Peripheral-ökkel (a megvalósítástól függően).
  • A mobilfejlesztésben a Central egy okostelefon, amely a Core Bluetooth-t (iOS) vagy az android.bluetooth.le-t (Android) használja.
  • A Central szerep több energiát fogyaszt, mint a Peripheral a folyamatos szkennelés és adatfeldolgozás miatt.

Mi az a Central a BLE-ben?

Central — egy GATT-kliens a Bluetooth Low Energy architektúrában, amely az összes kommunikációt elindítja. Ellentétben a Peripheral-lel, amely passzívan várja a kapcsolatot és hirdeti szolgáltatásait, a Central aktívan szkenneli az étert, észleli a reklámcsomagokat és elindítja a kapcsolatot.

Az aszimmetrikus Central-Peripheral modell a BLE alapvető jellemzője. A Central kezeli az interakció logikáját: eldönti, melyik eszközhöz csatlakozzon, mely szolgáltatásokat vizsgálja meg, mely jellemzőket olvassa és írja. Peripheral adatszerver szerepét tölti be — tárolja a szolgáltatásokat és jellemzőket, de nem kezdeményez kapcsolatokat.

A Bluetooth Core Specification 5.4 (2023) szerint egy eszköz egyidejűleg lehet Central és Peripheral (dual role). Például egy okostelefon lehet Central egy fitnesz karkötő számára és Peripheral egy másik fájlokat átvivő okostelefon számára. Azonban a két szerepben való egyidejű működés növeli az energiafogyasztást és a kapcsolatkezelés komplexitását.

A mobilfejlesztés ökoszisztémájában a Central szerep a leggyakoribb forgatókönyv. Az okostelefonon lévő alkalmazás BLE-eszközöket (érzékelők, fejhallgatók, karkötők) keres, csatlakozik hozzájuk és adatokat fogad. A fejlesztő az operációs rendszer API-ját használja a Central-lal való munkához: CBCentralManager iOS-ben, BluetoothLeScanner és BluetoothGatt Androidban.

Az eszközök szkennelésének folyamata

Szkennelés — a Central munka első szakasza. Az eszköz hallgatja a BLE rádiócsatornákat (37, 38, 39) a Peripheral által időszakosan küldött reklámcsomagok észlelésére. Minden reklámcsomag tartalmazza az eszköz nevét, a szolgáltatások UUID-listáját és felhasználói adatokat.

A Central két szkennelési módban működhet: passive scanning (csak reklámcsomagok vétele) és active scanning (scan request küldése további adatok megszerzéséhez scan response-on keresztül). A passive scanning energiát takarít meg, de kevesebb információt nyújt. Az active scanning lehetővé teszi a reklámcsomag teljes adatainak megszerzését, beleértve az eszköz nevét és a szolgáltatások teljes listáját.

UUID alapú szűrés — fontos optimalizálás. A Central csak meghatározott Service UUID-val rendelkező eszközöket szkennelhet, figyelmen kívül hagyva a többit. Ez nemcsak energiát takarít meg, hanem egyszerűsíti az alkalmazás logikáját is: a delegate csak releváns eszközöket kap.

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

Kapcsolatok kezelése

Kapcsolatok kezelése — a Central fő felelőssége. A megfelelő Peripheral észlelése után a Central elindítja a kapcsolatot. A BLE-kapcsolat a kapcsolatfelvételi eljáráson keresztül jön létre, amely paramétercserét foglal magában: connection interval, slave latency és supervision timeout.

A connection interval határozza meg, hogy a Central és a Peripheral milyen gyakran cserél adatokat a kapcsolódás után. Az intervallum 7.5 ms-tól 4 másodpercig terjedhet. Minél rövidebb az intervallum, annál nagyobb a sávszélesség, de annál nagyobb az energiafogyasztás. Slave latency lehetővé teszi a Peripheral számára, hogy több kapcsolati eseményt kihagyjon az energiatakarékosság érdekében. Supervision timeout — a maximális idő válasz nélkül, amely után a kapcsolat elveszettnek tekintendő.

A Central felelős a kapcsolat bontásáért az adatcsere befejezése után. A BLE-eszközök általában nem tartják fenn a kapcsolatot állandóan — a Central csatlakozik, adatokat fogad és bontja a kapcsolatot. Ez egy standard minta az IoT-érzékelőknél: a Central szkennel, talál egy hőmérséklet-érzékelőt, csatlakozik, leolvassa az értéket és bontja a kapcsolatot.

ParaméterTartományCélAjánlás
Connection Interval7.5 ms – 4 sAdatcsere gyakorisága30–50 ms adatfolyamokhoz, 1–4 s ritka adatokhoz
Slave Latency0–499 eseményEsemények kihagyása Peripheral által4–10 az érzékelő energia megtakarításához
Supervision Timeout100 ms – 32 sKapcsolat megszakadásának időtúllépése6–10 másodperc a legtöbb forgatókönyvhöz
MTU23–517 bájtATT-csomag méreteKérje a maximumot csatlakozáskor

Central iOS-ben: Core Bluetooth

Core Bluetooth — az Apple keretrendszere a BLE-vel való munkához iOS-en és macOS-en. A CBCentralManager osztály teljes API-t biztosít a Central szerepének megvalósításához: szkennelés, csatlakozás, kapcsolatok kezelése. A Central-lal való munka iOS-ben a delegate modellen alapul: a CBCentralManagerDelegate eseményeket kap az állapotváltozásokról, eszközészlelésekről és kapcsolódási eredményekről.

A Central iOS-ben végzett munkájának fő lépései: a CBCentralManager inicializálása, a Bluetooth állapotának ellenőrzése, a szkennelés elindítása, az észlelt eszközök feldolgozása delegate-en keresztül, csatlakozás a kiválasztott Peripheral-hez, szolgáltatások és jellemzők észlelése, adatcsere.

swift
// Csatlakozás az észlelt Peripheral-hez
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    // Peripheral referencia megtartása és csatlakozás
    discoveredPeripheral = peripheral
    central.connect(peripheral, options: nil)
}

// Sikeres csatlakozás
func centralManager(
    _ central: CBCentralManager,
    didConnect peripheral: CBPeripheral
) {
    peripheral.delegate = self
    peripheral.discoverServices(nil)
}

Az iOS korlátozza a BLE háttérben végzett munkáját: háttérmódban az alkalmazás csak meghatározott kulcsokkal szkennelhet az Info.plist-ben, és a csatlakoztatott eszközök értesíthetik a Central-t az adatváltozásokról. Kritikus alkalmazásokhoz (orvosi eszközök) használja a Background Modes-t a bluetooth-central kulccsal.

Central Androidban: BluetoothLeScanner

Android a BluetoothLeScanner API-t biztosítja a BLE-eszközök szkenneléséhez és a BluetoothGatt-ot a kapcsolatok kezeléséhez. Az Android 5.0-tól (API 21) kezdve a BluetoothLeScanner felváltotta az elavult startLeScan-t. Az API BLUETOOTH, BLUETOOTH_ADMIN és ACCESS_FINE_LOCATION (vagy Android 10+ esetén ACCESS_BACKGROUND_LOCATION) engedélyeket igényel.

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

private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;

// Szkennelés konfigurálása
ScanSettings settings = new ScanSettings.Builder()
    .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
    .build();

// Szkennelés indítása
scanner.startScan(null, settings, new ScanCallback() {
    @Override
    public void onScanResult(
            int callbackType,
            ScanResult result
    ) {
        BluetoothDevice device = result.getDevice();
        // Csatlakozás az eszközhöz
        bluetoothGatt = device.connectGatt(
            context, false, gattCallback
        );
    }
});

Androidon fontos figyelembe venni a szkennelési korlátozásokat: az Android 7-től (API 24) kezdve a szkennelés nem indítható 30 másodpercenként 5-nél többször olyan alkalmazásokban, amelyek nem használják a Location-t. Az Android 12+ BLUETOOTH_SCAN, BLUETOOTH_CONNECT és ADVERTISE engedélyeket, valamint ezen engedélyek runtime kérését igényli.

A Central energiafogyasztása

A Central energiafogyasztása magasabb, mint a Peripheral-é, a rádiócsatornák folyamatos szkennelésének szükségessége miatt. A Central BLE-csomagokon keresztül fogad adatokat, feldolgozza azokat, kezeli a kapcsolatokat és gyakran számításokat végez az alkalmazás processzorán. A Bluetooth SIG szerint a szkennelés 30 mA-tól 100 mA-ig fogyaszt, a módtól függően.

Több energiatakarékossági stratégia létezik a Central számára. Intervallum szkennelés — a leghatékonyabb módszer: a Central rövid ablakokban (scan window) szkennel hosszú szünetekkel (scan interval). Például 30 ms scan window és 1000 ms scan interval esetén az energiafogyasztás 97%-kal csökken a folyamatos szkenneléshez képest.

További optimalizálás — UUID alapú szűrés. A Central gyorsabban feldolgozza csak a releváns reklámcsomagokat, figyelmen kívül hagyva a többit. Ez csökkenti a processzor terhelését és növeli az eszköz akkumulátorának élettartamát. Szintén ajánlott a szkennelés azonnali leállítása a kívánt eszköz észlelése után, és a kapcsolat fenntartása csak a szükséges ideig.

Gyakran ismételt kérdések

Lehet egy okostelefon egyszerre Central és Peripheral?

Igen, a BLE támogatja a dual role-t: egy eszköz egyszerre lehet Central egyes eszközök számára és Peripheral mások számára. Például egy okostelefon adatokat olvas egy érzékelőről (Central-ként) és egyidejűleg hirdeti saját szolgáltatását (Peripheral-ként) adatok másik eszköznek történő továbbításához.

Hány eszközt szolgálhat ki egyszerre egy Central?

A BLE specifikáció 7 kapcsolat korlátot határoz meg egy Central számára. A gyakorlatban a korlátozás a chip gyártójától függ: a Nordic nRF52840 chipek akár 20 kapcsolatot is támogatnak, míg néhány olcsó Bluetooth-adapter legfeljebb 3–4 kapcsolatot.

Miért nem érzékeli a Central az én BLE-érzékelőmet?

Az okok különbözőek lehetnek: az érzékelő nem hirdet (nincs advertising módban), a UUID-szűrő túl szigorú, a Bluetooth ki van kapcsolva az okostelefonon, hiányoznak a szükséges engedélyek (Location Androidon), vagy az érzékelő hatótávolságon kívül van (beltérben 10 méterig ajánlott).

Folyamatosan fenn kell tartani a kapcsolatot a BLE-eszközzel?

Nem feltétlenül. Sok forgatókönyvhöz a connect-and-read mintát használják: a Central szkennel, csatlakozik, beolvassa a szükséges adatokat és bontja a kapcsolatot. Folyamatos kapcsolat csak adatfolyamokhoz (pulzus, EKG) vagy valós idejű eszközvezérléshez szükséges.

Hogyan csökkenthető a Central energiafogyasztása szkennelés közben?

Használjon intervallum szkennelést scan window 30–50 ms és scan interval 500–1000 ms aránnyal. Szűrje az eszközöket UUID alapján, hogy csak a releváns reklámcsomagokat dolgozza fel. Állítsa le a szkennelést azonnal a kívánt Peripheral észlelése után.

Összefoglalás

  • Central — a BLE-kapcsolat aktív résztvevője, amely elindítja a szkennelést, csatlakozást és az adatcsere kezelését.
  • A szkennelési folyamat magában foglalja a reklámcsomagok vételét a 37, 38, 39 csatornákon, Service UUID szerinti szűrési lehetőséggel.
  • A Peripheral észlelése után a Central konfigurálható paraméterekkel létesít kapcsolatot — connection interval, slave latency, supervision timeout.
  • A mobilfejlesztésben a Central CBCentralManager (iOS) vagy BluetoothLeScanner + BluetoothGatt (Android) segítségével valósul meg.
  • Egy Central egyszerre akár 7 kapcsolatot is kezelhet a standard Bluetooth konfigurációban.
  • A Central energiafogyasztása optimalizálható intervallum szkenneléssel és UUID szűréssel az akkumulátor élettartamának növelése érdekében.
  • A kapcsolat életciklusának megfelelő kezelése — az észleléstől a bontásig — meghatározza a BLE-alkalmazás hatékonyságát.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is