Peripheral — co to je, role v BLE a jak inzeruje služby

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

Peripheral — je zařízení v architektuře Bluetooth Low Energy, které inzeruje své služby prostřednictvím advertising paketů a očekává připojení od Central. V ekosystému IoT je Peripheral obvykle zařízení s omezenou spotřebou energie: teplotní čidlo, chytrá lampa, fitness náramek, beacon. Bluetooth Core Specification 5.4 (2023) definuje reklamní protokol: Peripheral periodicky vysílá advertising pakety obsahující název zařízení, seznam služeb a uživatelská data, zatímco Central tyto pakety skenuje a rozhoduje, zda se připojit. Po navázání spojení funguje Peripheral jako GATT server, poskytující služby a charakteristiky pro čtení a zápis.

Hlavní body

  • Peripheral — pasivní BLE zařízení, které inzeruje služby a čeká na připojení od Central.
  • Reklamní pakety (advertising) obsahují název zařízení, UUID služeb, data výrobce a RSSI pro odhad vzdálenosti.
  • Peripheral funguje jako GATT server, který ukládá služby a charakteristiky pro přístup Central.
  • Spotřeba energie Peripheral může být od 5 µA v režimu spánku až 15 mA při aktivním přenosu dat.
  • Po připojení může Peripheral vypnout reklamu pro úsporu energie a v případě potřeby ji znovu zapnout.

Co je Peripheral v BLE?

Peripheral — je BLE zařízení, které implementuje GATT server a inzeruje své schopnosti prostřednictvím advertising kanálů. Na rozdíl od Central, které aktivně vyhledává zařízení, Peripheral pasivně čeká na připojení. Jedná se o asymetrický model optimalizovaný pro energetickou účinnost zařízení napájených bateriemi.

Peripheral může být v několika režimech: advertising (reklama), connected (připojeno k Central), sleeping (spánek s vypnutou reklamou). V režimu advertising Peripheral periodicky vysílá krátké datové pakety s minimální spotřebou energie. Po připojení přejde Peripheral do režimu connected, kde si vyměňuje data s Central podle dohodnutého connection intervalu.

Podle Bluetooth Core Specification 5.4 (2023) může zařízení dynamicky přepínat mezi rolemi Peripheral a Central, ale v každém okamžiku je pro jedno připojení role pevná. Typický scénář: IoT senzor neustále pracuje v roli Peripheral a smartphone spravuje připojení jako Central.

Pro vývojáře je důležité pochopit: Peripheral určuje, které služby a charakteristiky jsou dostupné, a spravuje k nim přístup. Struktura GATT serveru na Peripheral určuje, jaká data může Central číst a jaké příkazy může zapisovat.

Proces reklamy (Advertising)

Advertising (reklama) — je mechanismus, kterým Peripheral oznamuje svou přítomnost. Peripheral vysílá advertising pakety na třech vyhrazených kanálech (37, 38, 39) v intervalu od 20 ms do 10.24 sekund. Každý reklamní paket obsahuje pevné informace a může zahrnovat volitelná data.

Existují dva typy reklamních paketů: advertising PDU (hlavní paket) a scan response PDU (odpověď na dotaz Central). Hlavní paket obsahuje povinná pole: typ paketu, adresu odesílatele, data. Pokud Central odešle scan request, Peripheral odpoví dalším paketem s úplnějšími informacemi — například s plným názvem zařízení.

Parametry advertising ovlivňují rychlost detekce a spotřebu energie. Advertising interval — čas mezi odesíláním paketů. Čím kratší interval, tím rychleji Central detekuje zařízení, ale tím více energie Peripheral spotřebovává. Doporučený interval: 100–1000 ms pro většinu zařízení.

ParametrRozsahVlivDoporučení
Advertising Interval20 ms – 10.24 sRychlost detekce, energie100–1000 ms pro rovnováhu
Advertising Channels37, 38, 39Spolehlivost detekceVšechny 3 kanály povinně
Tx Power−20 – +10 dBmDosah, rušení0 dBm pro interiér, +4 dBm pro exteriér
Advertising Timeout0 – 180 sekundDélka reklamy0 (nekonečno) pro beacon

Struktura reklamního paketu

Reklamní paket BLE má omezení 31 bajtů pro advertising PDU a dalších 31 bajtů pro scan response. Uvnitř paketu jsou data organizována ve formátu AD Structure (Advertising Data Structure): každé pole má typ (1 bajt), délku (1 bajt) a hodnotu.

Nejčastěji používané AD Type: Flags (0x01) — režimy připojení a detekce, Local Name (0x08 nebo 0x09) — název zařízení, Service UUID List (0x02–0x07) — seznam UUID služeb, Manufacturer Specific Data (0xFF) — data výrobce. Správné zabalení dat do 31bajtového paketu je důležitým úkolem pro vývojáře vestavěných zařízení.

Pro zařízení, která potřebují přenést více dat, existuje extended advertising (BLE 5.0+), které zvyšuje velikost reklamního paketu na 251 bajtů a přidává nové typy paketů. Extended advertising také podporuje kódované kanály (coded PHY) pro zvýšení dosahu až na 1 km na otevřeném prostranství.

Při návrhu reklamního paketu zvažte: čím více dat v advertising paketu, tím vyšší je pravděpodobnost kolize s jinými zařízeními. Pro rychlou detekci se doporučuje umístit do advertising PDU pouze kritická data (Service UUID) a doplňková data do scan response.

Peripheral jako GATT server

GATT server na Peripheral obsahuje všechny služby a charakteristiky, které Central může objevit a se kterými může interagovat. Po připojení Central objeví služby (discover services), poté charakteristiky (discover characteristics) a interaguje s nimi prostřednictvím GATT protokolu.

Peripheral jako GATT server musí správně zpracovávat požadavky od Central: čtení (read request), zápis (write request), oznámení (notification) a potvrzená oznámení (indication). Každý požadavek prochází GATT tabulkou, kde každému atributu (služba, charakteristika, deskriptor) odpovídá Handle — 16bitová adresa.

Vývojář Peripheral určuje přístupová práva pro každý atribut: pouze čtení, pouze zápis, čtení i zápis, s šifrováním nebo bez. Pro důvěrná data (osobní informace, lékařské parametry) se doporučuje vyžadovat šifrování prostřednictvím MITM Protection.

Peripheral v iOS: CBPeripheralManager

CBPeripheralManager — třída Core Bluetooth pro implementaci role Peripheral v iOS. Spravuje GATT server, publikuje služby a charakteristiky, zpracovává požadavky od Central. Na rozdíl od CBCentralManager, CBPeripheralManager neskenuje — pouze inzeruje a obsluhuje připojení.

Hlavní kroky implementace Peripheral v iOS: inicializace CBPeripheralManager, přidání služeb pomocí add, spuštění reklamy pomocí startAdvertising, zpracování požadavků od Central prostřednictvím delegáta CBPeripheralManagerDelegate.

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

iOS umožňuje Peripheral pracovat v režimu na pozadí, pokud je v Background Modes přítomen klíč bluetooth-peripheral. Na pozadí může iOS inzerovat s omezenou sadou dat a obsluhovat připojení. Pro dlouhodobou reklamu (více než 180 sekund) použijte volbu CBAdvertisementDataWaitForResponseFromCentral pro úsporu energie.

Peripheral v Android: BluetoothLeAdvertiser

Android poskytuje BluetoothLeAdvertiser pro práci v roli Peripheral (od API 21). API umožňuje spustit reklamu s konfigurovatelnými parametry: výkon vysílače, interval reklamy, data paketu. Android také podporuje extended advertising (BLE 5.0) na kompatibilních zařízeních.

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

V Androidu závisí podpora Peripheral na výrobci a verzi OS. Ne všechna zařízení podporují BluetoothLeAdvertiser — ověřte pomocí adapter.isMultipleAdvertisementSupported(). Od Androidu 10 je pro práci v roli Peripheral vyžadováno oprávnění BLUETOOTH_ADVERTISE, stejně jako runtime požadavek pro aplikace s target SDK 31+.

Energetická účinnost Peripheral

Energetická účinnost — klíčová výhoda BLE a Peripheral v tom hraje hlavní roli. Zařízení může pracovat na baterii CR2032 (220 mAh) déle než rok díky optimalizované spotřebě energie. Peripheral tráví většinu času v režimu spánku s vypnutou reklamou a probouzí se pouze pro odeslání reklamního paketu nebo zpracování požadavku od Central.

Spotřeba energie Peripheral v různých režimech: režim spánku (deep sleep) — 1–5 µA, idle se zapnutým časovačem — 10–50 µA, advertising — 5–15 mA (po dobu odesílání paketu), connected — 5–10 mA (po dobu connection event). Při advertising intervalu 1000 ms a délce paketu 4 ms je průměrný proud přibližně 50–100 µA.

Podle Texas Instruments Application Report (SWRA478, 2024) snižuje optimalizace advertising intervalu ze 100 ms na 1000 ms průměrnou spotřebu energie o 90%. Další úspory je dosaženo použitím slave latency (přeskakování connection events), snížením Tx Power na krátké vzdálenosti a vypnutím reklamy po připojení (connectable advertising).

Často kladené otázky

Může Peripheral iniciovat odesílání dat?

Ano, prostřednictvím mechanismu oznámení (Notify/Indicate). Přestože je iniciátorem spojení vždy Central, po připojení může Peripheral odesílat data prostřednictvím GATT oznámení bez explicitního požadavku od Central. K tomu se musí Central předem přihlásit prostřednictvím CCCD.

Jak dlouho může Peripheral inzerovat?

Délka reklamy není specifikací omezena, ale v praxi je omezena energií baterie. V iOS může Peripheral inzerovat na pozadí nejvýše 180 sekund na relaci bez dalších nastavení. V Androidu může reklama fungovat neomezeně, ale výrazně zkracuje dobu provozu na baterii.

Jak snížit spotřebu energie Peripheral bez ztráty funkčnosti?

Zvyšte advertising interval (doporučeno 500–1000 ms), používejte slave latency pro přeskakování connection events, vypněte reklamu po připojení a zvolte minimální Tx Power dostačující pro stabilní komunikaci na požadovanou vzdálenost.

Co je non-connectable advertising a k čemu se používá?

Non-connectable advertising — režim, ve kterém Peripheral inzeruje, ale nepřijímá požadavky na připojení. Používá se pro beacon, které pouze vysílají data (například identifikátor obchodu) bez vytvoření obousměrného spojení. Šetří energii ve srovnání s connectable advertising.

Jaká data lze přenášet v reklamním paketu (31 bajtů)?

Do 31 bajtů lze zahrnout: příznaky (3 bajty), název zařízení (až 28 bajtů ve zkrácené podobě), seznam UUID služeb (2–16 bajtů na UUID), data výrobce (až 26 bajtů). Optimální strategie — umístit UUID služeb do advertising PDU pro filtrování a plný název do scan response.

Shrnutí

  • Peripheral — BLE GATT server, který inzeruje své služby a čeká na připojení od Central pro výměnu dat.
  • Reklamní pakety jsou vysílány na kanálech 37, 38, 39 s intervalem od 20 ms do 10.24 s a jsou omezeny na 31 bajtů dat.
  • Peripheral ukládá služby a charakteristiky v GATT tabulce a poskytuje Central přístup k datům prostřednictvím čtení, zápisu a oznámení.
  • V iOS je Peripheral implementován prostřednictvím CBPeripheralManager, v Androidu — prostřednictvím BluetoothLeAdvertiser s GATT serverem.
  • Spotřeba energie Peripheral v režimu spánku je 1–5 µA, což umožňuje provoz až jeden rok na baterii CR2032.
  • Optimalizace advertising intervalu a slave latency může snížit spotřebu energie až o 90% bez ztráty funkčnosti.
  • Správná struktura reklamního paketu a GATT serveru určuje kompatibilitu, rychlost detekce a účinnost BLE zařízení.

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é