Characteristic: nədir, məlumat növləri və dəyərlərin oxunması

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

Characteristic Bluetooth Low Energy-də əsas məlumat vahididir, onun vasitəsilə Central periferik cihazda məlumat alır və ya yazır. Hər bir Characteristic müəyyən GATT xidmətinə aiddir, unikal UUID və mümkün əməliyyatları müəyyən edən xüsusiyyətlər dəstinə (read, write, notify, indicate) malikdir. Bluetooth Core Specification 5.4 (2023) məlumatına görə, Bluetooth SIG tibbi, fitnes və sənaye cihazları üçün 500-dən çox standart xarakteristika spesifikasiya edib. Tərtibatçı istifadəçi məlumatlarını ötürmək üçün fərdi xarakteristikalar yaradır — sensor göstəricilərindən cihaz idarəetmə əmrlərinə qədər.

Əsas məqamlar

  • Characteristic BLE GATT xidməti daxilində UUID, xüsusiyyətlər və müəyyən tip dəyərə malik məlumat nöqtəsidir.
  • Xüsusiyyətlər mövcud əməliyyatları müəyyən edir: read (oxu), write (yazı), notify (bildiriş), indicate (təsdiqlənmiş bildiriş).
  • Standart xarakteristikalar (battery level, heart rate) Bluetooth SIG reyestrindən 16-bit UUID-yə malikdir.
  • Hər bir Characteristic deskriptorlar — ölçü vahidlərini və ya bildiriş konfiqurasiyasını təsvir edən metadatalar ehtiva edə bilər.
  • Characteristic vasitəsilə bir məlumat paketinin maksimum ölçüsü 20 bayt (MTU 23) və ya MTU artırıldıqda 244 bayta qədərdir.

BLE-də Characteristic nədir?

Characteristic dəyər (value) və metadataları ehtiva edən GATT protokolunun atributudur. BLE arxitekturasında məlumatlar cihazlar arasında birbaşa deyil, xidmət xarakteristikalarının dəyərlərini oxumaq və yazmaqla ötürülür. Xidmət qovluqdursa, Characteristic qovluqdakı fayldır.

Hər bir Characteristic üç komponentdən ibarətdir: bəyannamə (declaration), dəyər (value)deskriptorlar (descriptors). Bəyannamə xarakteristikanın UUID-sini və xüsusiyyətlərini ehtiva edir. Dəyər Central və Peripheral arasında ötürülən faktiki məlumatdır. Deskriptorlar əlavə konfiqurasiya təmin edir.

Bluetooth Core Specification 5.4 (2023) məlumatına görə, BLE-də bütün məlumat mübadiləsi xarakteristikalar üzərində əməliyyatlar vasitəsilə baş verir. Hətta Heart Rate Profile və ya Battery Service kimi standart profillər əvvəlcədən təyin edilmiş UUID-ləri olan xarakteristikalar dəsti üzərində qurulub. Bu, müxtəlif istehsalçıların cihazlarının ilkin konfiqurasiya olmadan uyğunluğunu təmin edir.

Tərtibatçı üçün vacibdir: hər bir Characteristic müxtəlif xüsusiyyət kombinasiyalarını dəstəkləyə bilər. Bir xarakteristika yalnız oxumaq üçün, digəri yazmaq üçün, üçüncüsü bildirişlər üçün ola bilər. Xüsusiyyətlərin düzgün seçimi istifadə ssenarisini və cihazın enerji sərfiyyatını müəyyən edir.

Characteristic-in xüsusiyyətləri və icazələri

Xüsusiyyətlər (properties) xarakteristika üzərində hansı əməliyyatlara icazə verildiyini müəyyən edir. Bu bayt maskasıdır, hər bit müəyyən bir əməliyyatı aktivləşdirir və ya söndürür. Aşağıda əsas xüsusiyyətlər verilmişdir.

XüsusiyyətBitTəsvirTipik tətbiq
Read0x02Central cari dəyəri oxuya bilərStatus, batareya səviyyəsi, konfiqurasiya
Write0x08Central yeni dəyər yaza bilərİdarəetmə əmrləri, parametrlər
Notify0x10Peripheral təsdiq olmadan dəyər göndərirAxın məlumatları (nəbz, temperatur)
Indicate0x20Peripheral təsdiqlə dəyər göndərirKritik məlumatlar (həyəcan siqnalları, statuslar)
Write Without Response0x04Cavab gözləmədən yazıYüksəksürətli əmr ötürülməsi

İcazələr (permissions) — GATT server səviyyəsində giriş səviyyəsidir. Xüsusiyyətlərdən fərqli olaraq, icazələr hər əməliyyat zamanı yoxlanılır. Onlar şifrələmə və autentifikasiya tələblərini ehtiva edə bilər.

Bluetooth SIG standart xarakteristikaları

Bluetooth SIG BLE istifadəsinin əksər yayılmış ssenarilərini əhatə edən 500-dən çox standart xarakteristika spesifikasiya edib. Standart UUID-lərin istifadəsi hər hansı qəbuledici cihazın ilkin konfiqurasiya olmadan məlumatları düzgün şərh edəcəyinə zəmanət verir.

Ən çox istifadə olunan standart xarakteristikalar bunlardır:

UUIDAdMəlumat növüXidmət
0x2A19Battery Leveluint8 (0–100%)Battery Service
0x2A37Heart Rate Measurementuint8 + bayraqlarHeart Rate
0x2A6ETemperatureint16 (0.01°C)Environmental Sensing
0x2A6FHumidityuint16 (0.01%)Environmental Sensing
0x2A00Device NameUTF-8 stringGeneric Access
0x2A01Appearanceuint16Generic Access

Mövcud standart xarakteristika vəzifənizi əhatə edirsə — ondan istifadə edin. Bu, Bluetooth sertifikatlaşdırmanı sadələşdirir və ekosistemlə uyğunluğu artırır. Fərdi xarakteristikaları yalnız SIG reyestrində olmayan unikal məlumatlar üçün yaradın.

iOS və Android-də Characteristic necə yaradılır

Xarakteristikanın yaradılması məlumat təmin edən cihaz olan Peripheral tərəfində həyata keçirilir. iOS (Swift) və Android (Java) tətbiqinə baxaq.

iOS: CBMutableCharacteristic

Core Bluetooth UUID, xüsusiyyətlər və ilkin dəyər göstərilməklə xarakteristika yaratmaq üçün CBMutableCharacteristic sinfini təmin edir.

swift
import CoreBluetooth

let characteristicUUID = CBUUID("2A19") // Batareya səviyyəsi xarakteristikası

let characteristic = CBMutableCharacteristic(
    type: characteristicUUID,
    properties: [.read, .notify],
    value: nil,
    permissions: [.readable]
)

// Dəyişiklik zamanı dəyəri yenilə
let batteryData = Data([batteryLevel]) // uint8
peripheralManager.updateValue(
    batteryData,
    for: characteristic,
    onSubscribedCentrals: nil
)

Android: BluetoothGattCharacteristic

Android-də xarakteristika UUID, xüsusiyyətlər və icazələr göstərilməklə BluetoothGattCharacteristic vasitəsilə yaradılır.

java
import android.bluetooth.*;

UUID charUuid = UUID.fromString("00002A19-0000-1000-8000-00805F9B34FB");

BluetoothGattCharacteristic characteristic =
    new BluetoothGattCharacteristic(
        charUuid,
        BluetoothGattCharacteristic.PROPERTY_READ
            | BluetoothGattCharacteristic.PROPERTY_NOTIFY,
        BluetoothGattCharacteristic.PERMISSION_READ
    );

// Dəyəri təyin et
characteristic.setValue(batteryLevel, BluetoothGattCharacteristic.FORMAT_UINT8, 0);
gattServer.notifyCharacteristicChanged(device, characteristic, false);

Oxu, yazı və bildirişlər

Characteristic üzərində əməliyyatlar üç növə bölünür: oxu (read), yazı (write) və bildirişlər (notify/indicate). Əməliyyat seçimi ssenaridən asılıdır: sorğu üzrə məlumatlar oxunur, əmrlər yazılır, axın məlumatları bildirişlərə abunə olunur.

Read — Central xarakteristikanın dəyərini oxumaq üçün sorğu göndərir. Peripheral cari dəyərlə cavab verir. Əməliyyat sinxrondur və hər tərəfdən açıq sorğu tələb edir. Nadir dəyişən məlumatlar üçün istifadə olunur: proqram təminatı versiyası, seriya nömrəsi, parametrlər.

Write — Central Peripheral-ə məlumat göndərir. İki rejim var: Write with Response (Peripheral-dən təsdiq) və Write Without Response (təsdiqsiz). Write with Response çatdırılmaya zəmanət verir — Peripheral yazıdan sonra təsdiq göndərir. Write Without Response daha sürətli, lakin çatdırılmaya zəmanət vermir.

Notify və Indicate — Peripheral Central-ə məlumat göndərilməsini başladır. Notify-də məlumat təsdiq olmadan göndərilir — Central paketi qəbul etməyə vaxt tapmasa, itirilir. Indicate-də Central təsdiq göndərir (PDU səviyyəsində), bu çatdırılmaya zəmanət verir. Indicate daha yavaş, lakin daha etibarlıdır. Bildirişlərə abunə olmaq üçün Central CCCD (Client Characteristic Configuration Descriptor) ünvanına 0x0001 dəyərini yazır.

MTU və ötürülən məlumatların ölçüsü

MTU (Maximum Transmission Unit) bir BLE məlumat paketinin maksimum ölçüsünü müəyyən edir. Defolt olaraq MTU 23 baytdır, bunun 3 baytı başlıqdır — faydalı yük (ATT payload) 20 baytdır. Bu əksər sensor məlumatları üçün kifayətdir, lakin faylların və ya böyük konfiqurasiyaların ötürülməsi üçün kifayət deyil.

Bluetooth Core Specification 5.4 MTU razılaşdırılmasını (MTU negotiation) dəstəkləyir — Central və Peripheral 517 bayta qədər daha böyük paket ölçüsü barədə razılığa gələ bilər. Proses belədir: Central öz MTU təklifi ilə MTU Exchange sorğusu göndərir; Peripheral öz MTU-su ilə cavab verir; iki dəyərdən kiçik olanı istifadə olunur.

swift
// iOS qoşulduqda MTU tələb edir
// iOS-da maksimum MTU 185 baytdır
func peripheral(
    _ peripheral: CBPeripheral,
    didDiscoverServices error: Error?
) {
    // Xüsusi periferik cihaz üçün MTU tələb et
    peripheral.maximumWriteValueLength(for: .withResponse)
}

Bluetooth SIG (2023) məlumatına görə, MTU-nun 23-dən 185 bayta qədər artırılması paketlərin sayını azaltmaqla məlumat ötürmə xərclərini 80%-ə qədər azaldır. Yüksək tezliklə göstəricilər ötürən tətbiqlər üçün (məsələn, EKQ və ya akselerometr) MTU-nun artırılması axının sabitliyi üçün vacibdir.

Tez-tez verilən suallar

Bir xidmət neçə xarakteristika ehtiva edə bilər?

BLE spesifikasiyası xidmətdə xarakteristikaların sayını məhdudlaşdırmır. Praktikada məhdudiyyət GATT serverinin mövcud yaddaşı və performans tələbləri ilə müəyyən edilir. Quraşdırılmış cihazlar üçün hər xidmətdə 10–15-dən çox olmayan xarakteristika tövsiyə olunur.

Notify və Indicate arasında fərq nədir?

Notify məlumatı təsdiq olmadan göndərir — paket göndərənə məlumat verilmədən itirilə bilər. Indicate protokol səviyyəsində təsdiq (ACK) tələb edir, bu çatdırılmaya zəmanət verir. Indicate daha yavaş, lakin daha etibarlıdır. Kritik məlumatlar (həyəcan siqnalları, əmrlər) üçün Indicate istifadə edin.

Xarakteristika eyni anda Read və Write-ə malik ola bilərmi?

Bəli, xarakteristika xüsusiyyətlər kombinasiyasına malik ola bilər. Məsələn, parametr xarakteristikası Read (cari dəyərin oxunması) və Write (parametrin dəyişdirilməsi) dəstəkləyə bilər. Xüsusiyyətləri istifadə ssenarinizə uyğun birləşdirin.

BLE vasitəsilə 20 baytdan böyük məlumatları necə ötürmək olar?

Paket ölçüsünü 185–517 bayta qədər artırmaq üçün MTU razılaşdırılmasından istifadə edin. Məlumatlar hələ də böyükdürsə — tətbiq səviyyəsində fraqmentasiyanı tətbiq edin: məlumatları bütövlük nəzarəti ilə bir neçə ardıcıl sorğuya bölün.

Xarakteristikaların standart UUID-lərindən istifadə etmək lazımdırmı?

Vəzifəniz standart xarakteristika ilə əhatə olunursa — Bluetooth SIG reyestrindən UUID istifadə edin. Bu sertifikatlaşdırmanı sadələşdirir və ekosistemlə uyğunluğu təmin edir. Fərdi UUID-ləri yalnız üçüncü tərəf istehsalçılarının unikal məlumatları üçün yaradın.

Nəticə

  • Characteristic BLE-də UUID, xüsusiyyətlər və deskriptorlarla dəyəri təmsil edən əsas məlumat ötürmə mexanizmidir.
  • Xüsusiyyətlər (Read, Write, Notify, Indicate) xarakteristika üzərində hansı əməliyyatların mövcud olduğunu müəyyən edir.
  • Bluetooth SIG 500-dən çox standart xarakteristika spesifikasiya edib — cihaz uyğunluğu üçün onlardan istifadə edin.
  • Xarakteristikanın yaradılması Peripheral tərəfində Core Bluetooth (iOS) və ya BluetoothGattCharacteristic (Android) vasitəsilə həyata keçirilir.
  • Bildirişlər (Notify/Indicate) axın məlumatları üçün müntəzəm sorğudan daha səmərəlidir — Central-dən daimi sorğu tələb etmir.
  • Bir paketin ölçüsü MTU (defolt 20 bayt) ilə məhdudlaşır, lakin MTU Exchange vasitəsilə 517 bayta qədər artırıla bilər.
  • Xüsusiyyətlərin və UUID-nin düzgün seçimi BLE bağlantısının enerji sərfiyyatını, etibarlılığını və performansını müəyyən 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