Service UUID: bu nədir, formatı və harada tətbiq olunur

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

Service UUID — cihazdakı funksional xidməti unikal şəkildə müəyyən edən 16 və ya 128 bitlik Bluetooth Low Energy (BLE) identifikatorudur. Bluetooth SIG, Battery Service (0x180F), Device Information (0x180A) və Heart Rate (0x180D) kimi ümumi xidmətlər üçün standart 16 bitlik UUID-lər ayırmışdır ki, bu da platformalararası uyğunluğu asanlaşdırır. Bluetooth Core Specification 5.4 (2023) məlumatına görə, üçüncü tərəf tərtibatçılarının fərdi xidmətləri 128 bitlik UUID-lərdən istifadə etməlidir, onların formatı mərkəzi reyestr olmadan qlobal unikallığı təmin edir. Service UUID-nin düzgün elan edilməsi periferik cihazda GATT serverinin düzgün işləməsinə doğru ilk addımdır.

Əsas məqamlar

  • Service UUID — 16 bitlik (standart) və ya 128 bitlik (fərdi) ola bilən BLE xidmət identifikatoru.
  • Bluetooth SIG, Battery, Heart Rate, Device Information və digər ümumi xidmətlər üçün 60-dan çox standart UUID ayırmışdır.
  • 128 bitlik UUID-lər tərtibatçı tərəfindən yaradılır və mərkəzi orqanda qeydiyyat olmadan xidmətin qlobal unikallığını təmin edir.
  • Skan edərkən Central, Peripheral-in xidmətlərini onların Service UUID-nə görə aşkar edir ki, bu da cihazların uyğunluğunu müəyyən edir.
  • Bir GATT serveri müxtəlif UUID-lərlə bir neçə xidmət elan edə bilər — hər bir xidmət öz xüsusiyyətlərini ehtiva edir.

BLE-də Service UUID nədir?

Service UUID — digər cihazlar tərəfindən unikal tanınması üçün Bluetooth Low Energy GATT xidmətinə təyin edilən identifikatordur. BLE arxitekturasında hər bir xidmət ümumi funksiya ilə birləşdirilmiş xüsusiyyətlərin məntiqi qrupunu təşkil edir. Məsələn, Battery Service xidməti batareyanın cari doldurulma səviyyəsini ötürən Battery Level xüsusiyyətini ehtiva edir.

Bluetooth SIG (Special Interest Group) ən çox yayılmış xidmətlərə təyin edilən standart 16 bitlik UUID-lərin reyestrini idarə edir. Bu, müxtəlif istehsalçıların cihazlarına əvvəlcədən konfiqurasiya olmadan bir-birlərinin xidmətlərini tanımağa imkan verir. İstənilən brendin fitness trackeri UUID 0x180D ilə Heart Rate Service elan edə bilər və istənilən smartfon bunun ürək döyüntüsü xidməti olduğunu başa düşəcək.

Bluetooth Core Specification 5.4 (2023) məlumatına görə, 16 bitlik UUID diapazonu (0x0000–0xFFFF) iki hissəyə bölünür: 0x0001-dən 0xFFFE-dək — Bluetooth SIG standart xidmətləri, 0xFFFF isə rezerv edilmişdir. Əgər tərtibatçıya SIG reyestrində olmayan unikal xidmət lazımdırsa, o, 128 bitlik UUID-dən istifadə edir.

Standart və fərdi UUID arasındakı fərq yalnız uzunluqda deyil: 16 bitlik UUID-lər efir vaxtına qənaət edir, çünki 16 bayt əvəzinə 2 bayt kimi ötürülür. Advertising paketinin ölçüsündə ciddi məhdudiyyətləri olan cihazlar (31 bayta qədər) üçün bu kritikdir.

Standart və fərdi UUID-lər

Standart 16 bitlik UUID-lər BLE cihazlarının əsas kateqoriyalarını əhatə edir: tibbi sensorlar, fitness trekerlər, geyilən elektronika və aksesuarlar. Əgər cihaz standart funksiyanı həyata keçirirsə — maksimum uyğunluq üçün tərtibatçıya Bluetooth SIG reyestrindən müvafiq UUID-dən istifadə etmək tövsiyə olunur.

Budur bir neçə standart xidmət UUID nümunəsi:

UUID (hex)Xidmət adıTəyinatı
0x1800Generic AccessGirişin idarə edilməsi, cihaz adı, xarici görünüş
0x180ADevice Informationİstehsalçı, model, seriya nömrəsi, proqram versiyası
0x180DHeart RateNəbzin ölçülməsi, sensor yeri, batareya enerjisi
0x180FBattery ServiceBatareyanın doldurulma səviyyəsi faizlə
0x181AEnvironmental SensingTemperatur, rütubət, təzyiq, işıqlanma
0x181CUser DataYaş, çəki, boy, cins, istirahət zamanı nəbz

Fərdi 128 bitlik UUID-lər cihaz unikal funksionallıq təqdim etdikdə zəruridir. Məsələn, ağıllı qıfıl istehsalçısı XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX şəklində öz Lock Control xidmətini yaradır. Belə UUID digər xidmətlərlə ziddiyyət təşkil etməyəcəyinə zəmanət verir, çünki 128 bitlik dəyərlər fəzası praktiki olaraq tükənməzdir.

128 bitlik UUID-in formatı

128 bitlik UUID standart UUID RFC 4122 formatında yazılır: səkkiz onaltılıq simvol, defis, dörd, defis, dörd, defis, dörd, defis, on iki simvol. BLE üçün Bluetooth SIG-nin əsas UUID hissəsinin sabit bitlərə malik olduğu versiya istifadə olunur.

Bluetooth SIG əsas UUID-ni müəyyən edir: 0000XXXX-0000-1000-8000-00805F9B34FB. Standart 16 bitlik xidmətlər üçün bu maskaya UUID dəyəri əvəz olunur: məsələn, 0x180F 0000180F-0000-1000-8000-00805F9B34FB-ə çevrilir. Fərdi xidmətlər tərtibatçı tərəfindən yaradılan tamamilə müstəqil UUID-dən istifadə edir.

Fərdi UUID yaradarkən istənilən UUID generatorundan (UUID v4) istifadə edə bilərsiniz. Təsadüfi UUID v4 122 bit entropiya təmin edir ki, bu da toqquşmaları praktiki olaraq qeyri-mümkün edir. Fərdi xidmətlər üçün Bluetooth SIG-nin əsas UUID-nin dəyişdirilmiş versiyasından istifadə etməyin — bu, spesifikasiyanı pozur.

Kodda UUID ilə xidməti necə elan etməli

Xidmətin elan edilməsi UUID ilə GATT serverinin yaradılması zamanı Peripheral tərəfindən həyata keçirilir. iOS-da bunun üçün Core Bluetooth, Android-də isə android.bluetooth.le istifadə olunur. Hər iki yanaşmaya baxaq.

iOS: Core Bluetooth

Swift-də xidmət UUID-nin göstərilməsi ilə CBMutableService vasitəsilə yaradılır, bundan sonra CBMutableCharacteristic vasitəsilə ona xüsusiyyətlər əlavə edilir.

swift
import CoreBluetooth

// Standart 16 bitlik UUID
let batteryServiceUUID = CBUUID("180F")

// Fərdi 128 bitlik UUID
let customServiceUUID = CBUUID("E20A39F4-73F5-4BC4-A12F-17D1AD07A961")

let service = CBMutableService(
    type: customServiceUUID,
    primary: true
)

// Xüsusiyyətlər əlavə et
service.characteristics = [characteristic]

// peripheralManager vasitəsilə xidməti dərc et
peripheralManager.add(service)

Android: Bluetooth GATT Server

Android-də xidmət BluetoothGattServer və BluetoothGattService vasitəsilə qeydiyyatdan keçirilir. UUID java.util.UUID.fromString-də sətir kimi ötürülür.

java
import android.bluetooth.*;

// Fərdi xidmət UUID-si
private static final UUID CUSTOM_SERVICE_UUID =
    UUID.fromString("E20A39F4-73F5-4BC4-A12F-17D1AD07A961");

BluetoothGattService service = new BluetoothGattService(
    CUSTOM_SERVICE_UUID,
    BluetoothGattService.SERVICE_TYPE_PRIMARY
);

// Xüsusiyyətlər əlavə et
service.addCharacteristic(characteristic);

// GATT serverində qeydiyyatdan keçir
gattServer.addService(service);

UUID-ə görə xidmətlərin skan edilməsi

Service UUID-ə görə skan etmə Central-ə bütün aşkar edilmiş Peripheral-lərə qoşulmadan lazımi xidməti təmin edən cihazları tapmağa imkan verir. BLE advertising paketi xidmət UUID-lərinin siyahısını ehtiva edə bilər ki, bu da Central-ə skan mərhələsində cihazları filtrləməyə imkan verir.

iOS-da CBCentralManager xidmət UUID-si üzrə filtr ilə cihazları skan edir. Bu, enerji istehlakını azaldır və lazımi cihazların aşkarlanmasını sürətləndirir.

swift
import CoreBluetooth

let centralManager = CBCentralManager()

func scanForHeartRateMonitor() {
    let services: [CBUUID] = [
        CBUUID("180D") // Heart Rate Service
    ]
    centralManager.scanForPeripherals(
        withServices: services,
        options: nil
    )
}

// Delegat yalnız Heart Rate Service cihazlarını qəbul edir
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    // peripheral yalnız UUID 0x180D olan cihazlara malikdir
}

Android-də UUID üzrə filtrləmə də ScanFilter.Builder vasitəsilə dəstəklənir. Bu, hər bir cihaza qoşulmadan axtarış dairəsini daraltmağın effektiv üsuludur.

java
import android.bluetooth.le.*;

ScanFilter filter = new ScanFilter.Builder()
    .setServiceUuid(
        new ParcelUuid(
            UUID.fromString("0000180D-0000-1000-8000-00805F9B34FB")
        )
    )
    .build();

BluetoothLeScanner scanner = bluetoothAdapter.getBluetoothLeScanner();
scanner.startScan(
    Collections.singletonList(filter),
    scanSettings,
    scanCallback
);

Bir cihazda bir neçə xidmət

Bir BLE cihazı eyni anda bir neçə xidmət elan edə bilər. Məsələn, fitness bilərziyi Battery Service (0x180F), Heart Rate Service (0x180D) və buludla məlumat sinxronizasiyası üçün fərdi xidmət ehtiva edə bilər. Hər bir xidmətin öz UUID-si və öz xüsusiyyətlər dəsti var.

Çoxsaylı xidmətlər olduqda reklam paketinin məhdudiyyətini nəzərə almaq vacibdir. BLE advertising paketi 31 bayta qədər məlumat ehtiva edə bilər. Əgər xidmət UUID-ləri çox yer tutursa, bəziləri reklam paketinə sığmaya bilər. Bu halda scan response istifadə olunur — Central-in sorğusu ilə göndərilən ikinci paket.

Bluetooth Core Specification 5.4 (2023) məlumatına görə, bir GATT serverində ilkin xidmətlərin maksimum sayı spesifikasiya ilə məhdudlaşdırılmayıb, lakin praktikada cihazın yaddaşı və performans tələbləri ilə məhdudlaşır. 256 KB fləş yaddaşı olan quraşdırılmış cihazlar üçün 5–10-dan çox olmayan xidmət tövsiyə olunur.

Tez-tez verilən suallar

16 bitlik UUID 128 bitlikdən nə ilə fərqlənir?

16 bitlik UUID-lər Bluetooth SIG tərəfindən standart xidmətlər üçün ayrılıb və reklam paketində 2 bayt yer tutur. 128 bitlik UUID-lər fərdi xidmətlər üçün istifadə olunur və 16 bayt yer tutur. Seçim xidmətin növündən asılıdır: standart funksionallıq 16 bitlik UUID, unikal isə 128 bitlik UUID istifadə edir.

BLE xidməti üçün fərdi 128 bitlik UUID-ni necə yaratmaq olar?

UUID v4 istifadə edin — onlayn alətlər, uuidgen terminal əmri və ya proqramlaşdırma dilinizin API-i tərəfindən yaradılan təsadüfi UUID. Nümunə: Java-da UUID.fromString(UUID.randomUUID().toString()) və ya Swift-də UUID().

Fərdi UUID-ni Bluetooth SIG-də qeydiyyatdan keçirtmək lazımdırmı?

Xeyr, qeydiyyat tələb olunmur. Bluetooth SIG yalnız 16 bitlik UUID-ləri qeydiyyata alır. Fərdi 128 bitlik UUID-lər tərtibatçı tərəfindən müstəqil şəkildə yaradılır və nəhəng ünvan fəzası (2^128 kombinasiya) sayəsində unikallığı təmin edir.

Bir xidmət bir neçə xüsusiyyət ehtiva edə bilərmi?

Bəli, standart GATT xidməti məhdudiyyətsiz sayda xüsusiyyət ehtiva edə bilər. Məsələn, Battery Service Battery Level (0x2A19) və Battery Power State (0x2A1A) ehtiva edə bilər. Hər bir xüsusiyyətin öz UUID-si və xassələr dəsti var.

İki cihaz eyni fərdi UUID-dən istifadə edərsə nə baş verir?

UUID üst-üstə düşərsə, Central əlavə məlumat olmadan bir xidməti digərindən ayıra bilməyəcək. Təsadüfi UUID v4 toqquşma ehtimalı cüzi dərəcədə kiçikdir — təxminən 5,3 × 10^−37. Nümunələrdən UUID kopyalamaq əvəzinə təsadüfi UUID generatorundan istifadə edin.

Nəticə

  • Service UUID — 16 bitlik (standart) və ya 128 bitlik (fərdi) ola bilən BLE xidmətinin qlobal identifikatoru.
  • Bluetooth SIG 60-dan çox standart UUID ayırmışdır — digər istehsalçıların cihazları ilə uyğunluq üçün onlardan istifadə edin.
  • 128 bitlik UUID-lər UUID v4 vasitəsilə tərtibatçı tərəfindən yaradılır və mərkəzi reyestr olmadan unikallığı təmin edir.
  • Skan edərkən Central Service UUID-yə görə cihazları filtrləyir ki, bu da enerji istehlakını azaldır və axtarışı sürətləndirir.
  • Bir cihaz müxtəlif UUID-lərlə bir neçə xidmət elan edə bilər — sayı yaddaş və reklam paketi ilə məhdudlaşır.
  • iOS və Android-də xidmətlər müvafiq olaraq CBMutableService və BluetoothGattService vasitəsilə UUID göstərilməklə elan edilir.
  • UUID-nin düzgün seçimi uyğunluğa, reklam paketinin ölçüsünə və GATT profilinin düzgün işləməsinə təsir edir.

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