Peripheral — mi ez, szerepe a BLE-ben és hogyan reklámoz szolgáltatásokat

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

Peripheral — egy eszköz a Bluetooth Low Energy architektúrában, amely reklámozza szolgáltatásait advertising-csomagokon keresztül, és várja a kapcsolódást a Central-tól. Az IoT ökoszisztémában a Peripheral általában korlátozott energiafogyasztású eszköz: hőmérséklet-érzékelő, okos lámpa, fitnesz karkötő, beacon. A Bluetooth Core Specification 5.4 (2023) meghatározza a reklámprotokollt: a Peripheral időszakosan advertising-csomagokat küld, amelyek tartalmazzák az eszköz nevét, a szolgáltatások listáját és a felhasználói adatokat, a Central pedig beolvassa ezeket a csomagokat és eldönti, hogy csatlakozik-e. A kapcsolat létrejötte után a Peripheral GATT-szerverként működik, szolgáltatásokat és jellemzőket biztosítva olvasáshoz és íráshoz.

Főbb pontok

  • Peripheral — egy passzív BLE-eszköz, amely reklámozza szolgáltatásait és várja a kapcsolódást a Central-tól.
  • A reklámcsomagok (advertising) tartalmazzák az eszköz nevét, a szolgáltatások UUID-it, a gyártó adatait és az RSSI-t a távolság becsléséhez.
  • A Peripheral GATT-szerverként működik, amely szolgáltatásokat és jellemzőket tárol a Central hozzáféréséhez.
  • A Peripheral energiafogyasztása 5 µA-tól (alvó módban) 15 mA-ig terjedhet aktív adatátvitelkor.
  • Csatlakozás után a Peripheral kikapcsolhatja a reklámot az energiatakarékosság érdekében, és szükség esetén újra bekapcsolhatja.

Mi az a Peripheral a BLE-ben?

Peripheral — egy BLE-eszköz, amely GATT-szervert implementál és reklámozza képességeit advertising-csatornákon keresztül. Ellentétben a Central-lal, amely aktívan keres eszközöket, a Peripheral passzívan várja a kapcsolódást. Ez egy aszimmetrikus modell, amely az akkumulátoros eszközök energiahatékonyságára optimalizált.

A Peripheral több módban lehet: advertising (reklám), connected (csatlakozva a Central-hoz), sleeping (alvás kikapcsolt reklámmal). Advertising módban a Peripheral időszakosan rövid adatcsomagokat küld, minimális energiát fogyasztva. Csatlakozás után a Peripheral connected módba lép, ahol a megállapodott connection interval szerint adatokat cserél a Central-lal.

A Bluetooth Core Specification 5.4 (2023) szerint egy eszköz dinamikusan válthat a Peripheral és Central szerepek között, de minden pillanatban egy kapcsolathoz a szerep rögzített. Tipikus forgatókönyv: az IoT-érzékelő folyamatosan Peripheral szerepben dolgozik, az okostelefon pedig Central-ként kezeli a kapcsolatot.

A fejlesztő számára fontos megérteni: a Peripheral határozza meg, hogy mely szolgáltatások és jellemzők érhetők el, és kezeli a hozzáférést. A Peripheral GATT-szerverének szerkezete határozza meg, hogy a Central milyen adatokat olvashat és milyen parancsokat írhat.

A reklám folyamata (Advertising)

Advertising (reklám) — az a mechanizmus, amellyel a Peripheral bejelenti jelenlétét. A Peripheral advertising-csomagokat küld három dedikált csatornán (37, 38, 39) 20 ms és 10.24 másodperc közötti időközönként. Minden reklámcsomag rögzített információkat tartalmaz, és opcionális adatokat is tartalmazhat.

Kétféle reklámcsomag létezik: advertising PDU (fő csomag) és scan response PDU (válasz a Central kérésére). A fő csomag kötelező mezőket tartalmaz: csomagtípus, feladó címe, adatok. Ha a Central scan request-et küld, a Peripheral egy további csomaggal válaszol, amely teljesebb információkat tartalmaz — például a teljes eszköznevet.

Az advertising paraméterei befolyásolják a felderítési sebességet és az energiafogyasztást. Advertising interval — a csomagok küldése közötti idő. Minél rövidebb az intervallum, annál gyorsabban érzékeli a Central az eszközt, de annál több energiát fogyaszt a Peripheral. Ajánlott intervallum: 100–1000 ms a legtöbb eszközhöz.

ParaméterTartományHatásAjánlás
Advertising Interval20 ms – 10.24 sFelderítési sebesség, energia100–1000 ms az egyensúlyhoz
Advertising Channels37, 38, 39Felderítés megbízhatóságaMind a 3 csatorna kötelező
Tx Power−20 – +10 dBmTávolság, interferencia0 dBm beltérre, +4 dBm kültérre
Advertising Timeout0 – 180 másodpercReklám időtartama0 (végtelen) beacon-ökhöz

A reklámcsomag szerkezete

A BLE reklámcsomag korlátozása 31 bájt az advertising PDU számára és további 31 bájt a scan response számára. A csomagon belül az adatok AD Structure (Advertising Data Structure) formátumban vannak szervezve: minden mezőhöz tartozik egy típus (1 bájt), hossz (1 bájt) és érték.

A leggyakrabban használt AD Type: Flags (0x01) — kapcsolódási és felderítési módok, Local Name (0x08 vagy 0x09) — eszköznév, Service UUID List (0x02–0x07) — szolgáltatás UUID-k listája, Manufacturer Specific Data (0xFF) — gyártói adatok. Az adatok helyes becsomagolása egy 31 bájtos csomagba fontos feladat a beágyazott eszközök fejlesztője számára.

A több adatot küldeni kívánó eszközök számára létezik extended advertising (BLE 5.0+), amely 251 bájtra növeli a reklámcsomag méretét és új csomagtípusokat ad hozzá. Az extended advertising támogatja a kódolt csatornákat (coded PHY) is a hatótáv 1 km-re növeléséhez nyílt területen.

A reklámcsomag tervezésekor vegye figyelembe: minél több adat van az advertising csomagban, annál nagyobb az ütközés valószínűsége más eszközökkel. A gyors felderítés érdekében ajánlott csak a kritikus adatokat (Service UUID) az advertising PDU-ba helyezni, a kiegészítő adatokat pedig a scan response-ba.

Peripheral mint GATT-szerver

A GATT-szerver a Peripheral-en tartalmazza az összes szolgáltatást és jellemzőt, amelyeket a Central felfedezhet és amelyekkel interakcióba léphet. Csatlakozás után a Central felfedezi a szolgáltatásokat (discover services), majd a jellemzőket (discover characteristics), és a GATT protokollon keresztül lép velük kapcsolatba.

A Peripheral mint GATT-szerver helyesen kell feldolgozza a Central kéréseit: olvasás (read request), írás (write request), értesítések (notification) és megerősített értesítések (indication). Minden kérés áthalad a GATT táblán, ahol minden attribútumhoz (szolgáltatás, jellemző, leíró) egy Handle — 16 bites cím — tartozik.

A Peripheral fejlesztője határozza meg az egyes attribútumok hozzáférési jogait: csak olvasás, csak írás, olvasás és írás, titkosítással vagy anélkül. Bizalmas adatok (személyes információk, orvosi paraméterek) esetén ajánlott a titkosítás megkövetelése MITM Protection segítségével.

Peripheral iOS-ben: CBPeripheralManager

CBPeripheralManager — a Core Bluetooth osztály a Peripheral szerep implementálásához iOS-ben. Kezeli a GATT-szervert, közzéteszi a szolgáltatásokat és jellemzőket, feldolgozza a Central kéréseit. Ellentétben a CBCentralManager-rel, a CBPeripheralManager nem szkennel — csak reklámoz és kiszolgálja a kapcsolatokat.

A Peripheral iOS-ben történő implementálásának fő lépései: a CBPeripheralManager inicializálása, szolgáltatások hozzáadása add-on keresztül, reklám indítása startAdvertising-en keresztül, a Central kéréseinek feldolgozása a CBPeripheralManagerDelegate delegált segítségével.

swift
import CoreBluetooth

class BLEPeripheralManager: NSObject, CBPeripheralManagerDelegate {

    private var peripheralManager: CBPeripheralManager!

    func startAdvertising() {
        let advertisementData: [String: Any] = [
            CBAdvertisementDataLocalNameKey: "BLE Sensor",
            CBAdvertisementDataServiceUUIDsKey: [
                CBUUID("180F")
            ]
        ]
        peripheralManager.startAdvertising(advertisementData)
    }

    func peripheralManagerDidUpdateState(
        _ peripheral: CBPeripheralManager
    ) {
        if peripheral.state == .poweredOn {
            startAdvertising()
        }
    }
}

Az iOS lehetővé teszi a Peripheral számára, hogy háttérmódban működjön, ha a bluetooth-peripheral kulcs jelen van a Background Modes-ban. Háttérben az iOS korlátozott adatkészlettel reklámozhat és kiszolgálhat kapcsolatokat. Hosszú távú reklámhoz (több mint 180 másodperc) használja a CBAdvertisementDataWaitForResponseFromCentral opciót az energiatakarékosság érdekében.

Peripheral Android-ben: BluetoothLeAdvertiser

Android BluetoothLeAdvertiser-t biztosít a Peripheral szerepben való munkához (API 21-től). Az API lehetővé teszi a reklám indítását konfigurálható paraméterekkel: adó teljesítménye, reklám intervalluma, csomag adatai. Az Android támogatja az extended advertising-et (BLE 5.0) is kompatibilis eszközökön.

java
import android.bluetooth.le.*;

private BluetoothLeAdvertiser advertiser;

public void startPeripheral() {
    BluetoothAdapter adapter =
        BluetoothAdapter.getDefaultAdapter();
    advertiser = adapter.getBluetoothLeAdvertiser();

    AdvertiseData data = new AdvertiseData.Builder()
        .setIncludeDeviceName(true)
        .addServiceUuid(
            new ParcelUuid(
                UUID.fromString("0000180F-0000-1000-8000-00805F9B34FB")
            )
        )
        .build();

    AdvertiseSettings settings = new AdvertiseSettings.Builder()
        .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER)
        .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
        .build();

    advertiser.startAdvertising(
        settings, data, advertiseCallback
    );
}

Androidon a Peripheral támogatása a gyártótól és az operációs rendszer verziójától függ. Nem minden eszköz támogatja a BluetoothLeAdvertiser-t — ellenőrizze az adapter.isMultipleAdvertisementSupported() segítségével. Android 10-től kezdve a Peripheral szerepben való munkához BLUETOOTH_ADVERTISE engedély szükséges, valamint futásidejű kérelem a target SDK 31+ alkalmazásokhoz.

A Peripheral energiahatékonysága

Energiahatékonyság — a BLE kulcsfontosságú előnye, és a Peripheral ebben főszerepet játszik. Az eszköz több mint egy évig működhet egy CR2032-es elemről (220 mAh) az optimalizált energiafogyasztásnak köszönhetően. A Peripheral ideje nagy részét alvó módban tölti kikapcsolt reklámmal, csak reklámcsomag küldéséhez vagy a Central kérésének feldolgozásához ébred fel.

A Peripheral energiafogyasztása különböző módokban: alvó mód (deep sleep) — 1–5 µA, idle bekapcsolt időzítővel — 10–50 µA, advertising — 5–15 mA (a csomag küldésének idejére), connected — 5–10 mA (a connection event idejére). 1000 ms advertising interval és 4 ms csomagidőtartam mellett az átlagos áram körülbelül 50–100 µA.

A Texas Instruments Application Report (SWRA478, 2024) szerint az advertising interval optimalizálása 100 ms-ról 1000 ms-ra 90%-kal csökkenti az átlagos energiafogyasztást. További megtakarítás érhető el a slave latency használatával (connection események kihagyása), a Tx Power csökkentésével rövid távolságokon és a reklám kikapcsolásával csatlakozás után (connectable advertising).

Gyakran Ismételt Kérdések

Kezdeményezheti-e a Peripheral az adatküldést?

Igen, az értesítések (Notify/Indicate) mechanizmusán keresztül. Bár a kapcsolat kezdeményezője mindig a Central, csatlakozás után a Peripheral küldhet adatokat GATT-értesítéseken keresztül a Central explicit kérése nélkül. Ehhez a Central-nak előzetesen fel kell iratkoznia a CCCD-n keresztül.

Mennyi ideig reklámozhat a Peripheral?

A reklám időtartama nincs korlátozva a specifikáció által, de a gyakorlatban az elem energiája korlátozza. iOS-ben a Peripheral legfeljebb 180 másodpercig reklámozhat a háttérben munkamenetenként további beállítások nélkül. Androidon a reklám korlátlanul működhet, de jelentősen csökkenti az akkumulátor élettartamát.

Hogyan csökkenthető a Peripheral energiafogyasztása a funkcionalitás elvesztése nélkül?

Növelje az advertising interval-t (ajánlott 500–1000 ms), használjon slave latency-t a connection események kihagyásához, kapcsolja ki a reklámot csatlakozás után, és válassza a minimális Tx Power-t, amely elegendő a stabil kommunikációhoz a kívánt távolságon.

Mi az a non-connectable advertising és mire használják?

Non-connectable advertising — olyan mód, amikor a Peripheral reklámoz, de nem fogad el kapcsolódási kérelmeket. Olyan beacon-ökhöz használják, amelyek csak adatokat küldenek (például üzletazonosítót) kétirányú kapcsolat létrehozása nélkül. Energiát takarít meg a connectable advertising-hez képest.

Milyen adatok küldhetők a reklámcsomagban (31 bájt)?

31 bájtba belefér: jelzőzászlók (3 bájt), eszköznév (legfeljebb 28 bájt rövidített formában), szolgáltatás UUID-k listája (UUID-nként 2–16 bájt), gyártói adatok (legfeljebb 26 bájt). Optimális stratégia — a szolgáltatás UUID-k elhelyezése az advertising PDU-ban a szűréshez, a teljes név pedig a scan response-ban.

Összefoglalás

  • Peripheral — BLE GATT-szerver, amely reklámozza szolgáltatásait és várja a Central kapcsolódását az adatcseréhez.
  • A reklámcsomagok a 37, 38, 39 csatornákon kerülnek elküldésre 20 ms és 10.24 s közötti időközzel, és 31 bájt adatra korlátozódnak.
  • A Peripheral szolgáltatásokat és jellemzőket tárol a GATT táblában, lehetővé téve a Central számára az adatok elérését olvasáson, íráson és értesítéseken keresztül.
  • iOS-ben a Peripheral a CBPeripheralManager segítségével, Android-ben a BluetoothLeAdvertiser-rel GATT-szerverrel implementálható.
  • A Peripheral energiafogyasztása alvó módban 1–5 µA, ami lehetővé teszi akár egy évig tartó működést egy CR2032-es elemről.
  • Az advertising interval és slave latency optimalizálása akár 90%-kal is csökkentheti az energiafogyasztást a funkcionalitás elvesztése nélkül.
  • A reklámcsomag és a GATT-szerver helyes szerkezete határozza meg a BLE-eszköz kompatibilitását, felderítési sebességét é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