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 (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.
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%.
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 PDU | Popis | Pripojeni | Scan response |
|---|---|---|---|
| ADV_IND | Standardni reklama | Ano | Ano |
| ADV_DIRECT_IND | Reklama pro konkretni Central | Ano | Ne |
| ADV_NONCONN_IND | Bez pripojeni (majaky) | Ne | Ne |
| ADV_SCAN_IND | S podporou skenovani | Ano | Ano |
| ADV_EXT_IND | Extended advertising (BLE 5.0) | Ano | Ano |
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.
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 — 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 (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.
| Parametr | BLE standard | Extended BLE 5.0 |
|---|---|---|
| Max. velikost paketu | 31 bajtu | 251 bajtu |
| Kanály | Pouze 37, 38, 39 | + sekundarni 0–36 |
| Dosah | Az 100 m | Az 1000 m (coded PHY) |
| Rychlost | 1 Mbps | 125 kbps – 2 Mbps |
| Periodicky | Ne | Ano |
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.
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%.
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
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.
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.
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.
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.
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
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í.
Přečtěte si také