BLE-də Advertising Data: strukturu və məlumat tipləri

Müəllif: IT Sectr Dərc olunub: 2026-07-15 Oxuma vaxtı: 10 dəq

Advertising Data — BLE cihazının özünü və xidmətlərini tanıtmaq üçün reklam paketlərində ötürdüyü strukturlaşdırılmış məlumatlardır. Bluetooth Core Specification 5.4 (2023) AD Structure formatını müəyyən edir: hər bir element uzunluq (1 bayt), tip (1 bayt) və dəyər (29 bayta qədər) ehtiva edir. Ümumilikdə spesifikasiya 30-dan çox AD tipini təsvir edir — Flags və Local Name-dən Service UUID və Manufacturer Specific Data-ya qədər. Advertising data-nın düzgün yığılması cihazın iOS, Android və digər platformalarla uyğunluğu üçün kritik əhəmiyyət daşıyır, həmçinin aşkarlanma sürətini və enerji səmərəliliyini müəyyən edir.

Əsas məqamlar

  • AD Structure — BLE reklam paketində məlumat formatı: uzunluq (1 bayt), tip (1 bayt), dəyər (29 bayta qədər).
  • Reklam paketi 31 bayt ilə məhdudlaşır, scan response — əlavə məlumatlar üçün daha 31 bayt.
  • Flags (0x01) — LE Limited Discoverable və BR/EDR Not Supported rejimlərini təyin edən məcburi AD tipi.
  • Service UUID qısaldılmış (2 bayt) və ya tam (16 bayt) formatda ötürülür.
  • Manufacturer Specific Data (0xFF) — istehsalçının istənilən fərdi məlumatları üçün çevik tip.

Advertising Data nədir?

Advertising Data — BLE cihazının reklam paketlərində öz imkanlarını tanıtmaq və təsvir etmək üçün ötürdüyü strukturlaşdırılmış sahələr toplusudur. Central kanalı skan edərək bu məlumatları oxuyur və qərar verir: cihaza qoşulmaq, onu görməməzlikdən gəlmək və ya Scan Response vasitəsilə əlavə məlumat tələb etmək.

Məlumatlar TLV (Type-Length-Value) prinsipi ilə təşkil olunub: hər bir AD elementi üç sahədən ibarətdir. Length (1 bayt) — Value + Type uzunluğu (yəni elementin ümumi uzunluğu minus 1 bayt Length). Type (1 bayt) — Bluetooth Assigned Numbers-dən məlumat tipinin identifikatoru. Value (N bayt) — tipdən asılı olaraq məzmun.

Standart reklam paketi 31 bayta qədər AD məlumatı ehtiva edə bilər. Bu kifayət etmirsə, Scan Response (daha 31 bayt) və ya Extended Advertising (BLE 5.0, 251 bayta qədər) istifadə olunur. Reklam paketinin ilk baytları PDU başlığı və cihaz ünvanı üçün ayrıldığından, faydalı AD yükü ofsetdən başlayır.

AD Structure formatı

Hər bir AD elementi reklam paketində Length (1 bayt) sahəsi ilə başlayır. Length dəyəri Length-dən sonra gələn baytların sayını — yəni Type + Value-nu göstərir. Məsələn, Length=3 olan element o deməkdir ki, Length-dən sonra 1 bayt Type və 2 bayt Value gəlir. Bütün elementlərin uzunluqlarının cəmi reklam məlumatlarının ölçüsünə çatdıqda paket bitir.

SahəÖlçüTəsvir
Length1 baytType + Value uzunluğu (Length daxil deyil)
Type (AD Type)1 baytBluetooth SIG-ə görə məlumat tipinin identifikatoru
Value0–29 baytMüəyyən tipin məlumatları

Central parsiri AD elementlərinin ardıcıllığını başlıqdan sonrakı ilk baytdan oxuyur. Length=0 olarsa, element nəzərə alınmır və parsir növbəti bayta keçir. Təkrarlanan AD tipləri — bir paketdə eyni Type-a malik bir neçə element — icazəlidir, lakin Central stackin tətbiqindən asılı olaraq yalnız birinci və ya sonuncunu emal edə bilər.

Vacib qayda: paketdəki bütün Length(+1) cəmi reklam məlumatlarının ölçüsünü (PDU reklamı üçün 31 bayt) aşmamalıdır. Məlumatlar sığmırsa, prioritetlər müəyyən edilməlidir — hansı AD tipləri ilkin aşkarlanma üçün kritikdir, hansıları Scan Response-ə köçürülə bilər.

Flags (0x01): məcburi AD tipi

Flags (AD Type 0x01) — hər bir BLE cihazının reklam paketində məcburi elementdir. 3 bayt tutur: Length (0x02), Type (0x01), Value (1 bayt bit bayraqları). Bayraqlar cihazın aşkarlanma rejimlərini və imkanlarını müəyyən edir. Core Specification hər reklam paketinə Flags daxil etməyi tövsiyə edir.

Əsas bayraqlar: LE Limited Discoverable Mode (bit 0) — cihaz məhdud müddət ərzində aşkarlana bilər, LE General Discoverable Mode (bit 1) — cihaz daimi aşkarlana bilər, BR/EDR Not Supported (bit 2) — cihaz yalnız LE dəstəkləyir, Simultaneous LE and BR/EDR (bit 3) — hər iki rejimin dəstəyi. Təmiz BLE cihazları üçün məcburi kombinasiya: LE General Discoverable + BR/EDR Not Supported.

Yanlış Flags dəyəri cihazın iOS və ya Android-də aşkarlanmamasının tez-tez rast gəlinən səbəblərindən biridir. Məsələn, BR/EDR Not Supported bayrağı qurulmayıbsa, iOS klassik Bluetooth vasitəsilə qoşulmağa cəhd edə bilər. Flags dəyərini yoxlayın Bluetooth analizatoru (nRF Connect, Wireshark) ilə reklam paketini debug edərkən.

Local Name: cihaz adı

Local Name (AD Type 0x08 və ya 0x09) — BLE cihazının göstərilən adı. Tip 0x08 (Shortened Local Name) — qısaldılmış ad, tam ad reklam paketinə sığmadıqda istifadə olunur. Tip 0x09 (Complete Local Name) — cihazın tam adı. Adın maksimum uzunluğu 248 baytdır, lakin standart reklam paketində 28 baytdan çox yer mövcud deyil.

Cihaz adı reklam paketindəki mövcud yeri aşırsa, tövsiyə olunur: qısaldılmış adı reklam PDU-suna (tip 0x08), tam adı isə Scan Response-ə (tip 0x09) yerləşdirmək. iOS skan zamanı reklam paketindən adı göstərir, tam ad isə qoşulma və ya Scan Response-dən sonra əlçatan olur.

Cihaz adı seçərkən nəzərə alın: çox uzun ad Service UUID və ya digər vacib məlumatlar üçün istifadə oluna biləcək yeri tutur. Tövsiyə olunan ad uzunluğu 8–16 simvoldur. Qeyri-standart simvollar və boşluqlardan çəkinin — bəzi BLE stackləri onları düzgün emal edə bilməz.

Service UUID: xidmətlərin identifikasiyası

Service UUID (AD Type 0x02–0x07) — ən vacib AD tiplərindən biri olub, Central-a cihaza qoşulmadan onun hansı xidmətləri təmin etdiyini müəyyən etməyə imkan verir. Bluetooth SIG UUID-nin ötürülməsi üçün ölçüsündən asılı olaraq bir neçə format müəyyən edir: 0x02 (Incomplete 16-bit), 0x03 (Complete 16-bit), 0x04 (Incomplete 32-bit), 0x05 (Complete 32-bit), 0x06 (Incomplete 128-bit), 0x07 (Complete 128-bit).

16-bit UUID (2 bayt) — Bluetooth SIG-in standart xidmətləri, məsələn 0x180F (Battery Service), 0x180A (Device Information). 128-bit UUID (16 bayt) — tərtibatçı tərəfindən müəyyən edilən fərdi xidmətlər. 16-bit UUID AD-də cəmi 4 bayt (Length + Type + 2 bayt UUID), 128-bit isə 18 bayt tutur. Bir paketdə bir neçə fərdi UUID ötürülməli olduqda, onlar 31 bayta sığmaya bilər.

Cihazın bütün UUID-ləri deyil, yalnız filtrləmə üçün ən vacib olanlar ötürülərsə, Incomplete (0x02/0x04/0x06) tipindən istifadə etmək tövsiyə olunur. UUID-lərin tam siyahısı Scan Response və ya qoşulmadan sonra GATT Discovery vasitəsilə ötürülür. Bu, reklam paketində digər AD tipləri üçün yer qənaət edir.

Manufacturer Specific Data

Manufacturer Specific Data (AD Type 0xFF) — istehsalçının fərdi məlumatlarını ötürmək üçün nəzərdə tutulmuş ən çevik AD tipidir. Value-nun ilk 2 baytı Bluetooth SIG tərəfindən təyin edilmiş Company Identifier Code-dur (məsələn, Apple üçün 0x004C, Samsung üçün 0x0075). Qalan baytlar istehsalçı tərəfindən müəyyən edilmiş formatda ixtiyari məlumatlardır.

Apple Manufacturer Data-nı iBeacon üçün istifadə edir: Company ID (0x004C), Beacon tipi (0x0215), UUID (16 bayt), Major (2 bayt), Minor (2 bayt), TX Power (1 bayt). Google Eddystone üçün analoji formatdan istifadə edir. IoT cihaz istehsalçıları tez-tez Manufacturer Data-ya sensor göstəricilərini və ya cihaz vəziyyətini yerləşdirirlər.

js
// Central-da Manufacturer Specific Data-nı pars et
function parseManufacturerData(data) {
    const view = new DataView(data.buffer);

    // Şirkət identifikator kodu (ilk 2 bayt)
    const companyId = view.getUint16(0, true);

    // Apple iBeacon-u yoxla
    if (companyId === 0x004C) {
        return parseIBeacon(view);
    }

    return null;
}

Manufacturer Data istifadə edərkən ölçü məhdudiyyətinə riayət etmək vacibdir: bütün reklam paketi üçün 31 bayt minus məcburi AD tipləri. Apple iBeacon üçün bütün paket 30 bayt tutur, yalnız Flags (3 bayt) üçün yer qalır. Eddystone üçün — 31 bayta qədər. Yığcam fərdi formatlar 4–8 baytda temperatur, rütubət və ya təzyiqi əhatə edə bilər.

Məlumat yığma strategiyası

Advertising data-nın düzgün yığılması — məhdud 31 baytlıq məkanda maksimum faydalı məlumatın yerləşdirilməsi sənətidir. Strategiya cihazın təyinatından asılıdır: mayak identifikatora, IoT sensoru göstəricilərə, fitnes trekeri ada və xidmət UUID-lərinə ehtiyac duyur. Ümumi prinsip: Central nə qədər tez qərar verməlidirsə, PDU reklamında bir o qədər kritik məlumatlar olmalıdır.

Tövsiyə olunan strategiya: PDU reklamı (ilk 31 bayt) — Flags (3 bayt) + bir 16-bit Service UUID (4 bayt) + qısaldılmış ad (12 simvola qədər = 14 bayt) + Manufacturer Data (10 bayta qədər). Scan Response (ikinci 31 bayt) — tam ad (qalanı) + əlavə Service UUID + TX Power Level (3 bayt). Bu bölgü Central-a UUID üzrə cihazları tez filtrləməyə imkan verir.

PrioritetAD tipiÖlçüYerləşdir
1 (məcburi)Flags (0x01)3 baytPDU reklamı
2 (filtrləmə)Service UUID (0x02–0x03)4+ baytPDU reklamı
3 (identifikasiya)Local Name (0x08–0x09)2+ baytPDU reklamı (qısaldılmış)
4 (əlavə)TX Power Level (0x0A)3 baytScan Response
5 (fərdi)Manufacturer Data (0xFF)4+ baytPDU reklamı / Scan Response
6 (tam məlumatlar)Qalan UUID-lərÖlçüyə görəScan Response

Advertising data-nın debug edilməsi BLE cihazının işlənməsinin məcburi mərhələsidir. Paketin xam məlumatlarına baxmaq üçün nRF Connect (Nordic Semiconductor) və ya Bluetooth analizatoru ilə Wireshark istifadə edin. Bütün AD tiplərinin düzgün Length-ə malik olduğunu, uzunluqların cəminin 31 baytı aşmadığını və Flags-ın istifadə ssenariniz üçün düzgün qurulduğunu yoxlayın.

Tez-tez verilən suallar

AD elementlərinin cəmi 31 baytdan çox olarsa nə olar?

Bluetooth Controller stacki limiti aşan məlumatları rədd edəcək və ya paketi göndərməyəcək. Reklam paketini yığarkən AD elementlərinin ümumi uzunluğunu yoxlayın. Məlumatlar sığmırsa — bir hissəsini Scan Response-ə köçürün və ya 251 bayt limiti olan Extended Advertising (BLE 5.0) istifadə edin.

Sensor göstəricilərini reklam paketində ötürmək olarmı?

Bəli, Manufacturer Specific Data (0xFF) vasitəsilə. Göstəriciləri 4–8 bayta yığın: məsələn, temperatur (2 bayt fixed-point formatında), rütubət (2 bayt), batareya gərginliyi (2 bayt). Bu yanaşma Central-a qoşulmadan məlumatları oxumağa imkan verir, enerjiyə qənaət edir.

Fərdi xidmətlər üçün hansı AD tipindən istifadə edilməlidir?

Fərdi xidmətlər üçün 128-bit UUID (AD Type 0x06–0x07) istifadə edin. UUID reklam PDU-suna sığmırsa (bir UUID üçün 16 bayt), onu Scan Response-ə köçürün və ya yalnız ilk bir-iki UUID-ni göstərmək üçün qısaldılmış Incomplete (0x06) formatından istifadə edin.

Complete və Incomplete Service UUID tipləri nə ilə fərqlənir?

Complete — paketdə cihazın bütün xidmət UUID-ləri sadalanır. Incomplete — UUID-lərin yalnız bir hissəsi (adətən ən vacibləri). Central Incomplete-ə tam siyahı kimi etibar edə bilməz, lakin onu sürətli filtrləmə üçün istifadə edir. Tam siyahı GATT Discovery-dən sonra əlçatan olur.

Niyə iOS mənim BLE cihazımı görmür?

Tez-tez rast gəlinən səbəb yanlış Flags (0x01)-dir. BR/EDR Not Supported bitinin qurulduğuna əmin olun. İkinci səbəb — reklam paketində Service UUID-nin olmaması (iOS UUID üzrə filtrləyir). Üçüncü səbəb — cihazın çox nadir reklam göndərməsidir (iOS 1000 ms-dən çox olmayan interval gözləyir).

Xülasə

  • Advertising Data — BLE reklam paketlərində ötürülən AD Structure (Length-Type-Value) formatında strukturlaşdırılmış məlumatlar.
  • Standart reklam paketi 31 bayta qədər məlumat yerləşdirir, Scan Response — əlavə məlumat üçün daha 31 bayt.
  • Flags (0x01) — aşkarlanma rejimlərini təyin edən məcburi AD tipi. BLE cihazları üçün BR/EDR Not Supported məcburidir.
  • Service UUID 16-bit (2 bayt) və ya 128-bit (16 bayt) formatda, Complete və ya Incomplete — mövcud yerdən asılı olaraq ötürülür.
  • Manufacturer Specific Data (0xFF) — iBeacon, Eddystone mayaklarında və IoT cihazlarında istifadə olunan fərdi məlumatlar üçün çevik tip.
  • Yığma strategiyası: məcburi AD tipləri (Flags, Service UUID, qısaldılmış ad) — PDU reklamında, əlavələr — Scan Response-də.
  • Advertising data-nın nRF Connect və ya Wireshark vasitəsilə debug edilməsi AD strukturunun düzgünlüyünü yoxlamaq üçün məcburi inkişaf mərhələsidir.

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.

Layihəni müzakirə et

Həm də oxuyun