Advertising v BLE: co to je, formaty paketu a mechanismy reklamy

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

Advertising (reklama) — je mechanismus v Bluetooth Low Energy, pomoci ktereho zarizeni Peripheral informuje o sve pritomnosti odesilanim kratkych datovych paketu na trech vyhrazenych kanalech (37, 38, 39). Bluetooth Core Specification 5.4 (2023) definuje dva typy reklamy: connectable — zarizeni je pripraveno k pripojeni, a non-connectable — pouzivano majaky (Beacon), ktere pouze prenaseji data bez navazovani oboustranneho spojeni. Parametry reklamy — interval od 20 ms do 10.24 s, vykon vysilace od -20 do +10 dBm a typ paketu — primo ovlivnuji rychlost detekce zarizeni a jeho spotrebu energie, coz je kriticky dulezite pri vyvoji IoT zarizeni s bateriovym napajenim.

Hlavni body

  • Advertising — hlavni mechanismus detekce BLE zarizeni, pracujici na trech vyhrazenych kanalech 37, 38 a 39.
  • Standardni reklamni paket je omezen na 31 bajtu dat, extended advertising (BLE 5.0) zvysuje limit na 251 bajtu.
  • Connectable advertising umoznuje Centralu pripojit se k zarizeni, non-connectable — pouze jednosmerny prenos (majaky).
  • Interval reklamy ovlivnuje spotrebu energie: pri intervalu 1000 ms je prumerny proud 10krat nizsi nez pri 100 ms.
  • Scan response umoznuje prenos dalsich 31 bajtu dat jako odpoved na dotaz Centralu.

Co je Advertising v BLE?

Advertising (reklama) — je proces periodickeho odesilani kratkych datovych paketu, pomoci nehoz BLE zarizeni informuje o sve pritomnosti a dostupnosti. Na rozdil od klasickeho Bluetooth, kde vyhledavani zarizeni trva vteriny, BLE advertising umoznuje detekci zarizeni v milisekundach s minimalni spotrebou energie.

Architektura BLE rozděluje zarizeni do dvou roli: Peripheral (inzeruje) a Central (skenuje). Peripheral odesila advertising pakety a Central skenuje kanal a rozhoduje o pripojeni. Tento asymetricky model je klicovou vyhodou BLE: inzerujici zarizeni spotrebovava energii pouze pro odesilani kratkych paketu, nikoli pro neustale naslouchani kanalu.

Proces advertising se sklada ze tri fazi: advertising event (odeslani paketu na vsech trech kanalech), scan request/response (volitelna vymena s Centralem) a connection request (iniciace pripojeni Centralem). Kazdou fazi ridi Bluetooth Controller na urovni Link Layer.

Reklamni kanaly a jejich ucel

BLE pouziva 40 kanalu v pasmu 2.4 GHz, z nichz 37 (2402 MHz), 38 (2426 MHz) a 39 (2480 MHz) jsou vyhrazeny vyhradne pro advertising. Tri kanaly jsou kompromisem mezi spolehlivosti detekce a sirkou pasma: jeden kanal muze byt zaneprazdnen Wi-Fi nebo jinym rusenim, ale zarizeni bude detekovano na dvou dalsich.

Kanal 37 se nachazi vedle Wi-Fi kanalu 1, kanal 39 — vedle Wi-Fi kanalu 6, a kanal 38 se nachazi mezi nimi, v zone minimalniho ruseni. Vyber tri kanalu zarucuje, ze zarizeni bude detekovano i v podminkach huste radioveho provozu — napriklad v obchodnim centru s desitkami Wi-Fi pristupovych bodu.

Peripheral odesila advertising paket sekvencne na vsech trech kanalech — to se nazyva advertising event. Centralni zarizeni skenuje jeden kanal po druhem a prepina mezi nimi podle algoritmu implementovaneho v Bluetooth Controlleru. Pravdepodobnost detekce behem jednoho advertising event pri absenci kolizi je blizka 100%.

Typy reklamnich paketu

Bluetooth Core Specification definuje nekolik typu advertising PDU (Protocol Data Unit), kazdy se svym ucelem. Hlavni typy: ADV_IND (connectable undirected advertising) — standardni reklama s moznosti pripojeni, ADV_NONCONN_IND (non-connectable undirected advertising) — pouze reklama bez pripojeni, ADV_SCAN_IND (scannable undirected advertising) — podporuje scan request, ADV_DIRECT_IND (directed advertising) — reklama pro konkretni Central.

ADV_IND — nejrozsirenejsi typ, pouzivany u vetsiny BLE zarizeni. Po prijeti ADV_IND muze Central odeslat connection request a navazat spojeni. ADV_NONCONN_IND je pouzivan majaky (Beacon): zarizeni inzeruje, ale neprijima pozadavky na pripojeni — pouze jednosmerny prenos dat.

Typ PDUPopisPripojeniScan response
ADV_INDStandardni reklamaAnoAno
ADV_DIRECT_INDReklama pro konkretni CentralAnoNe
ADV_NONCONN_INDBez pripojeni (majaky)NeNe
ADV_SCAN_INDS podporou skenovaniAnoAno
ADV_EXT_INDExtended advertising (BLE 5.0)AnoAno

ADV_DIRECT_IND obsahuje adresu ciloveho Centralu, coz umoznuje rychle navazani spojeni bez cekani na skenovani. Pouziva se, kdyz se zarizeni jiz „znaji" — napriklad po opetovnem pripojeni k drive sparovanemu smartphonu. Tento typ snizuje spotrebu energie, protoze nevyzaduje reklamu na vsech kanalech.

Interval reklamy a spotreba energie

Advertising interval — je cas mezi naslednymi advertising eventy. Specifikace povoluje interval od 20 ms do 10.24 s s krokem 0.625 ms. Skutecny interval se vypocte jako soucit pevne hodnoty a nahodneho zpozdeni (0–10 ms), coz snizuje pravdepodobnost kolizi mezi nekolika inzerujicimi zarizenimi.

Vyber intervalu je rovnovaha mezi rychlosti detekce a spotrebou energie. Pri intervalu 20 ms bude zarizeni detekovano behem 20–30 ms, ale prumerny proud bude asi 1–2 mA. Pri intervalu 1000 ms — detekce bude trvat az 1 vterinu, ale prumerny proud klesne na 50–100 µA. Pro vetsinu IoT zarizeni je doporuceny interval 200–1000 ms.

Podle Texas Instruments Application Report SWRA478 (2024), zvyseni advertising intervalu ze 100 ms na 1000 ms snizuje spotrebu energie o 90%. Pokud zarizeni nevyzaduje okamzitou detekci (napriklad teplotni cidlo odesilajici data jednou za minutu), optimalni interval je 1000–2000 ms.

Dalsi parametr — advertising timeout — maximalni doba, po kterou zarizeni inzeruje. V iOS Peripheral automaticky vypina reklamu po 180 sekundach v pozadi. V Androidu takove omezeni neexistuje, ale vyrobci mohou pridat vlastni limity.

Scan Response: dalsi data

Scan Response — je dalsi datovy paket (az 31 bajtu), ktery Peripheral odesila jako odpoved na scan request od Centralu. Scan request je odeslan Centralem po prijeti advertising paketu, pokud potrebuje vice informaci pred pripojenim. Scan Response nevyzaduje dalsi reklamu — je odesilan pouze na vyzadan, setri kanal.

Typicke rozdeleni dat: v advertising PDU (31 bajtu) jsou umisteny priznaky (3 bajty), UUID sluzeb (2–16 bajtu) a data vyrobce (zbyvajici bajty). V scan response se prenasi plne jmeno zarizeni (az 28 bajtu) a dalsi UUID nebo TX Power Level. Toto rozdeleni umoznuje Centralu rychle filtrovat zarizeni podle UUID bez cteni scan response.

Pri navrhu advertising paketu zvažte: pokud je vsech 31 bajtu obsazeno v advertising PDU, Central nebude moci urcit, zda zarizeni podporuje scan response. Doporousi se nechat alespon 3–5 bajtu volnych v advertising PDU pro indikaci schopnosti scan response.

Extended Advertising v BLE 5.0

Extended Advertising (BLE 5.0) — je rozsireni mechanismu reklamy, ktere zvysuje velikost advertising paketu z 31 na 251 bajtu a pridava nove typy paketu. Extended Advertising take podporuje coded PHY pro zvyseni dosahu komunikace az na 1 km na otevrenem prostranstvi a periodickou reklamu (Periodic Advertising) pro synchronizaci nekolika Centralu.

Hlavni novinky: ADV_EXT_IND — extended advertising PDU, ktery muze prenaset az 251 bajtu dat v jednom paketu. Extended Advertising pouziva primarni kanaly (37, 38, 39) pouze k indikaci, na kterem sekundarnim kanalu (0–36) jsou prenasena plna data. To snizuje zatez reklamnich kanalu a zvysuje celkovou sirku pasma systemu.

Periodic Advertising — dalsi mechanismus, pri nemz Peripheral odesila data na sekundarnich kanalech s pevnym intervalem a Central se muze synchronizovat s touto sekvenci. Pouziva se pro sluzby vyzadujici pravidelne aktualizace dat — napriklad prenos zvuku nebo odebirani senzoru v realnem case.

ParametrBLE standardExtended BLE 5.0
Max. velikost paketu31 bajtu251 bajtu
KanályPouze 37, 38, 39+ sekundarni 0–36
DosahAz 100 mAz 1000 m (coded PHY)
Rychlost1 Mbps125 kbps – 2 Mbps
PeriodickyNeAno

Konfigurace reklamy v iOS a Android

iOS (Core Bluetooth) poskytuje CBPeripheralManager pro spravu reklamy. Parametry advertising se nastavuji pomoci slovniku advertisementData s klici CBAdvertisementDataLocalNameKey (nazev zarizeni), CBAdvertisementDataServiceUUIDsKey (UUID sluzeb), CBAdvertisementDataTxPowerLevelKey (vykon). iOS automaticky spravuje advertising interval a neumoznuje rucni nastaveni.

swift
import CoreBluetooth

class AdvertiserManager: NSObject, CBPeripheralManagerDelegate {

    private var peripheralManager: CBPeripheralManager!

    func startBLEAdvertising() {
        let data: [String: Any] = [
            CBAdvertisementDataLocalNameKey: "BLE Beacon",
            CBAdvertisementDataServiceUUIDsKey: [
                CBUUID("180F")
            ],
            CBAdvertisementDataIsConnectable: true
        ]
        peripheralManager.startAdvertising(data)
    }
}

Android (BluetoothLeAdvertiser) poskytuje detailnejsi kontrolu. Dostupne: AdvertiseSettings — nastaveni rezimu (LOW_POWER, BALANCED, LOW_LATENCY), vykonu vysilace a intervalu; AdvertiseData — data paketu. Android podporuje extended advertising (BLE 5.0) na kompatibilnich zarizenich, ale podil techto zarizeni na trhu je asi 30–40%.

java
BluetoothLeAdvertiser advertiser =
    BluetoothAdapter.getDefaultAdapter()
    .getBluetoothLeAdvertiser();

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

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

advertiser.startAdvertising(
    settings, data, advertiseCallback
);

Pri vyvoji multiplatformni BLE aplikace zohlednete rozdily: iOS neumoznuje primou kontrolu advertising intervalu, ale zarucuje stabilni provoz na vsech zarizenich; Android poskytuje plnou kontrolu, ale fragmentace verzi a vyrobcu muze vest k nekompatibilite. Doporucuje se testovani advertising na skutecnych zarizenich obou platform.

Casto kladene dotazy

Jaký je rozdil mezi connectable a non-connectable advertising?

Connectable advertising (ADV_IND) umoznuje Centralu navazat oboustranné spojeni se zarizenim. Non-connectable (ADV_NONCONN_IND) — pouze jednosmerny prenos dat, pouzivany majaky (Beacon) pro vysilani identifikatoru bez moznosti pripojeni.

Kolik bajtu lze prenest v reklamnim paketu?

Standardni advertising paket — 31 bajtu, scan response — dalsich 31 bajtu. Extended Advertising (BLE 5.0+) zvysuje limit na 251 bajtu diky vyuziti sekundarnich kanalu pro prenos dat.

Jaký advertising interval zvolit pro IoT zarizeni?

Pro vetsinu IoT zarizeni se doporucuje 500–1000 ms. Pokud je vyzadovana rychla detekce (napr. pro pripojeni sluchatek) — 20–50 ms. Pro cidla s ridkym odesilanim dat — 1000–2000 ms pro usporu energie.

Proc BLE pouziva tri reklamni kanaly?

Tri kanaly (37, 38, 39) jsou kompromisem mezi spolehlivosti detekce a sirkou pasma. Jeden kanal muze byt zaneprazdnen Wi-Fi, ale zarizeni bude detekovano na dvou dalsich. Kanal 38 se nachazi v zone minimalniho ruseni mezi Wi-Fi kanaly.

Jak advertising ovlivnuje vydrz baterie?

Advertising je hlavni spotrebic energie v BLE. Pri intervalu 1000 ms je prumerny proud 50–100 µA, coz umoznuje zarizeni pracovat rok na baterii CR2032. Pri intervalu 20 ms proud stoupa na 1–2 mA, coz snizuje dobu provozu na nekolik tydnu.

Shrnuti

  • Advertising — mechanismus detekce BLE zarizeni, pracujici na trech kanalech (37, 38, 39) s velikosti paketu az 31 bajtu.
  • Existuje pet typu advertising PDU: ADV_IND, ADV_DIRECT_IND, ADV_NONCONN_IND, ADV_SCAN_IND a ADV_EXT_IND pro BLE 5.0.
  • Interval reklamy se pohybuje od 20 ms do 10.24 s a primo ovlivnuje rychlost detekce a spotrebu energie zarizeni.
  • Scan Response poskytuje dalsich 31 bajtu dat na vyzadani Centralu bez zvyseni spotreby energie Peripheral.
  • Extended Advertising (BLE 5.0) zvysuje paket na 251 bajtu a podporuje dosah az 1 km pres coded PHY.
  • V iOS je advertising spravovan pres CBPeripheralManager, v Androidu — pres BluetoothLeAdvertiser s detailnimi nastavenimi.
  • Spravna volba advertising intervalu a typu paketu urcuje energetickou efektivitu a vydrz baterie BLE zarizeni.

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é