Peripheral — Bluetooth Low Energy arxitekturasında xidmətlərini advertising paketləri vasitəsilə reklam edən və Central-dan əlaqə gözləyən cihazdır. IoT ekosistemində Peripheral adətən məhdud enerji sərfiyyatı olan cihazdır: temperatur sensoru, ağıllı lampa, fitnes qolbağı, beacon. Bluetooth Core Specification 5.4 (2023) reklam protokolunu müəyyən edir: Peripheral vaxtaşırı cihaz adı, xidmətlər siyahısı və istifadəçi məlumatlarını ehtiva edən advertising paketləri göndərir, Central isə bu paketləri skan edərək qoşulub-qoşulmayacağına qərar verir. Əlaqə qurulduqdan sonra Peripheral GATT-server rolunu oynayaraq oxumaq və yazmaq üçün xidmətlər və xarakteristikalar təqdim edir.
Əsas məqamlar
Peripheral — GATT-serveri tətbiq edən və imkanlarını advertising kanalları vasitəsilə reklam edən BLE cihazıdır. Cihazları aktiv şəkildə axtaran Central-dən fərqli olaraq, Peripheral passiv şəkildə qoşulmanı gözləyir. Bu, batareya ilə işləyən cihazların enerji səmərəliliyi üçün optimallaşdırılmış asimmetrik modeldir.
Peripheral bir neçə rejimdə ola bilər: advertising (reklam), connected (Central-a qoşulmuş), sleeping (reklam söndürülmüş yuxu). Advertising rejimində Peripheral vaxtaşırı qısa məlumat paketləri göndərir və minimal enerji sərf edir. Qoşulduqdan sonra Peripheral connected rejiminə keçir və razılaşdırılmış connection interval-a uyğun olaraq Central ilə məlumat mübadiləsi aparır.
Bluetooth Core Specification 5.4 (2023)-ə görə, cihaz dinamik olaraq Peripheral və Central rolları arasında keçid edə bilər, lakin hər an bir əlaqə üçün rol sabitdir. Tipik ssenari: IoT sensoru daim Peripheral rolunda işləyir, smartfon isə Central olaraq əlaqəni idarə edir.
Tərtibatçı üçün vacibdir: Peripheral hansı xidmətlərin və xarakteristikaların mövcud olduğunu müəyyən edir və onlara girişi idarə edir. Peripheral-də GATT-serverinin strukturu Central-ın hansı məlumatları oxuya biləcəyini və hansı əmrləri yaza biləcəyini müəyyən edir.
Advertising (reklam) — Peripheral-in mövcudluğu barədə məlumat verdiyi mexanizmdir. Peripheral üç ayrılmış kanalda (37, 38, 39) 20 ms-dən 10.24 saniyəyədək intervalda advertising paketləri göndərir. Hər bir reklam paketi sabit məlumatları ehtiva edir və əlavə məlumatlar daxil edə bilər.
İki növ reklam paketi var: advertising PDU (əsas paket) və scan response PDU (Central-ın sorğusuna cavab). Əsas paket məcburi sahələri ehtiva edir: paket növü, göndərənin ünvanı, məlumatlar. Central scan request göndərərsə, Peripheral əlavə məlumatlarla — məsələn, tam cihaz adı ilə cavab verir.
Advertising parametrləri aşkarlanma sürətinə və enerji sərfiyyatına təsir edir. Advertising interval — paketlərin göndərilməsi arasındakı vaxt. Interval nə qədər qısa olsa, Central cihazı bir o qədər tez aşkarlayar, lakin Peripheral bir o qədər çox enerji sərf edər. Tövsiyə olunan interval: əksər cihazlar üçün 100–1000 ms.
| Parametr | Diapazon | Təsir | Tövsiyə |
|---|---|---|---|
| Advertising Interval | 20 ms – 10.24 s | Aşkarlanma sürəti, enerji | Balans üçün 100–1000 ms |
| Advertising Channels | 37, 38, 39 | Aşkarlanma etibarlılığı | Hər 3 kanal mütləq |
| Tx Power | −20 – +10 dBm | Məsafə, müdaxilələr | 0 dBm qapalı məkan üçün, +4 dBm açıq hava üçün |
| Advertising Timeout | 0 – 180 saniyə | Reklam müddəti | Beaconlar üçün 0 (sonsuz) |
BLE reklam paketi advertising PDU üçün 31 bayt və scan response üçün daha 31 bayt məhdudiyyətinə malikdir. Paket daxilində məlumatlar AD Structure (Advertising Data Structure) formatında təşkil olunur: hər bir sahənin növü (1 bayt), uzunluğu (1 bayt) və dəyəri var.
Ən çox istifadə olunan AD Type: Flags (0x01) — qoşulma və aşkarlanma rejimləri, Local Name (0x08 və ya 0x09) — cihaz adı, Service UUID List (0x02–0x07) — xidmət UUID-lərinin siyahısı, Manufacturer Specific Data (0xFF) — istehsalçı məlumatları. 31 baytlıq paketə məlumatların düzgün yığılması quraşdırılmış cihaz tərtibatçısının vacib vəzifəsidir.
Daha çox məlumat ötürməyə ehtiyacı olan cihazlar üçün extended advertising (BLE 5.0+) mövcuddur ki, bu da reklam paketinin ölçüsünü 251 bayta qədər artırır və yeni paket növləri əlavə edir. Extended advertising həmçinin açıq ərazidə məsafəni 1 km-ə qədər artırmaq üçün kodlaşdırılmış kanalları (coded PHY) dəstəkləyir.
Reklam paketini layihələşdirərkən nəzərə alın: advertising paketində nə qədər çox məlumat varsa, digər cihazlarla toqquşma ehtimalı bir o qədər yüksəkdir. Sürətli aşkarlanma üçün advertising PDU-da yalnız kritik məlumatları (Service UUID) yerləşdirmək, əlavə məlumatları isə scan response-də vermək tövsiyə olunur.
GATT-server Peripheral-də Central-ın aşkarlaya və qarşılıqlı əlaqə qura biləcəyi bütün xidmətləri və xarakteristikaları ehtiva edir. Qoşulduqdan sonra Central xidmətləri (discover services), sonra xarakteristikaları (discover characteristics) aşkarlayır və GATT protokolu vasitəsilə onlarla qarşılıqlı əlaqə qurur.
Peripheral GATT-server olaraq Central-dan sorğuları düzgün emal etməlidir: oxuma (read request), yazma (write request), bildirişlər (notification) və təsdiqlənmiş bildirişlər (indication). Hər bir sorğu GATT cədvəlindən keçir, burada hər bir atributa (xidmət, xarakteristika, deskriptor) Handle — 16-bitlik ünvan uyğun gəlir.
Peripheral tərtibatçısı hər bir atributa giriş hüquqlarını müəyyən edir: yalnız oxuma, yalnız yazma, oxuma və yazma, şifrələmə ilə və ya olmadan. Məxfi məlumatlar (şəxsi məlumatlar, tibbi göstəricilər) üçün MITM Protection vasitəsilə şifrələmə tələbinin daxil edilməsi tövsiyə olunur.
CBPeripheralManager — iOS-da Peripheral rolunu tətbiq etmək üçün Core Bluetooth sinfi. O, GATT-serverini idarə edir, xidmətləri və xarakteristikaları dərc edir, Central-dan sorğuları emal edir. CBCentralManager-dən fərqli olaraq, CBPeripheralManager skan etmir — yalnız reklam edir və əlaqələrə xidmət göstərir.
iOS-da Peripheral tətbiqinin əsas addımları: CBPeripheralManager-in inisiallaşdırılması, add vasitəsilə xidmətlərin əlavə edilməsi, startAdvertising vasitəsilə reklamın başladılması, CBPeripheralManagerDelegate vasitəsilə Central-dan sorğuların emalı.
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 Background Modes-da bluetooth-peripheral açarı olduqda Peripheral-in fon rejimində işləməsinə imkan verir. Fonda iOS məhdud məlumat dəsti ilə reklam edə və əlaqələrə xidmət göstərə bilər. Uzun müddətli reklam üçün (180 saniyədən çox) enerjiyə qənaət etmək üçün CBAdvertisementDataWaitForResponseFromCentral seçimindən istifadə edin.
Android Peripheral rolunda işləmək üçün BluetoothLeAdvertiser təqdim edir (API 21-dən başlayaraq). API konfiqurasiya edilə bilən parametrlərlə reklamı işə salmağa imkan verir: ötürücü gücü, reklam intervalı, paket məlumatları. Android həmçinin uyğun cihazlarda extended advertising (BLE 5.0) dəstəkləyir.
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
);
}
Android-də Peripheral dəstəyi istehsalçıdan və OS versiyasından asılıdır. Bütün cihazlar BluetoothLeAdvertiser-ı dəstəkləmir — adapter.isMultipleAdvertisementSupported() vasitəsilə yoxlayın. Android 10-dan başlayaraq Peripheral rolunda işləmək üçün BLUETOOTH_ADVERTISE icazəsi, həmçinin target SDK 31+ olan tətbiqlər üçün runtime sorğusu tələb olunur.
Enerji səmərəliliyi BLE-nin əsas üstünlüyüdür və Peripheral bunda əsas rol oynayır. Cihaz CR2032 batareyasından (220 mAh) optimallaşdırılmış enerji sərfiyyatı sayəsində bir ildən çox işləyə bilər. Peripheral vaxtının çox hissəsini reklam söndürülmüş yuxu rejimində keçirir, yalnız reklam paketi göndərmək və ya Central-dan sorğunu emal etmək üçün oyanır.
Peripheral-in müxtəlif rejimlərdə enerji sərfiyyatı: yuxu rejimi (deep sleep) — 1–5 µA, timer işə salınmış idle — 10–50 µA, advertising — 5–15 mA (paketin göndərilməsi müddətində), connected — 5–10 mA (connection event müddətində). Advertising interval 1000 ms və paketin müddəti 4 ms olduqda, orta cərəyan təxminən 50–100 µA təşkil edir.
Texas Instruments Application Report (SWRA478, 2024)-ə görə, advertising interval-ın 100 ms-dən 1000 ms-ə optimallaşdırılması orta enerji sərfiyyatını 90% azaldır. Əlavə qənaətə slave latency (connection events-i buraxmaq), qısa məsafələrdə Tx Power-ı azaltmaq və qoşulduqdan sonra reklamı söndürmək (connectable advertising) ilə nail olunur.
Tez-tez verilən suallar
Bəli, bildirişlər (Notify/Indicate) mexanizmi vasitəsilə. Əlaqənin təşəbbüskarı həmişə Central olsa da, qoşulduqdan sonra Peripheral Central-dan açıq sorğu olmadan GATT bildirişləri vasitəsilə məlumat göndərə bilər. Bunun üçün Central əvvəlcədən CCCD vasitəsilə abunə olmalıdır.
Reklamın müddəti spesifikasiya ilə məhdudlaşdırılmayıb, lakin praktikada batareya enerjisi ilə məhdudlaşır. iOS-da Peripheral əlavə parametrlər olmadan fon rejimində sessiya başına 180 saniyədən çox olmayaraq reklam edə bilər. Android-də reklam limitsiz işləyə bilər, lakin avtonom iş müddətini əhəmiyyətli dərəcədə azaldır.
Advertising interval-ı artırın (tövsiyə olunan 500–1000 ms), connection events-i buraxmaq üçün slave latency-dən istifadə edin, qoşulduqdan sonra reklamı söndürün və tələb olunan məsafədə sabit rabitə üçün kifayət edən minimal Tx Power seçin.
Non-connectable advertising — Peripheral-in reklam etdiyi, lakin qoşulma sorğularını qəbul etmədiyi rejimdir. Yalnız məlumat ötürən (məsələn, mağaza identifikatoru) ikitərəfli əlaqə qurmayan beaconlar üçün istifadə olunur. Connectable advertising ilə müqayisədə enerjiyə qənaət edir.
31 bayta daxil etmək olar: bayraqlar (3 bayt), cihaz adı (qısaldılmış formada 28 bayta qədər), xidmət UUID-lərinin siyahısı (UUID üçün 2–16 bayt), istehsalçı məlumatları (26 bayta qədər). Optimal strategiya — filtrləmə üçün advertising PDU-da xidmət UUID-lərini, tam adı isə scan response-də yerləşdirməkdir.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun