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 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) və 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.
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ət | Bit | Təsvir | Tipik tətbiq |
|---|---|---|---|
| Read | 0x02 | Central cari dəyəri oxuya bilər | Status, batareya səviyyəsi, konfiqurasiya |
| Write | 0x08 | Central yeni dəyər yaza bilər | İdarəetmə əmrləri, parametrlər |
| Notify | 0x10 | Peripheral təsdiq olmadan dəyər göndərir | Axın məlumatları (nəbz, temperatur) |
| Indicate | 0x20 | Peripheral təsdiqlə dəyər göndərir | Kritik məlumatlar (həyəcan siqnalları, statuslar) |
| Write Without Response | 0x04 | Cavab 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 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:
| UUID | Ad | Məlumat növü | Xidmət |
|---|---|---|---|
| 0x2A19 | Battery Level | uint8 (0–100%) | Battery Service |
| 0x2A37 | Heart Rate Measurement | uint8 + bayraqlar | Heart Rate |
| 0x2A6E | Temperature | int16 (0.01°C) | Environmental Sensing |
| 0x2A6F | Humidity | uint16 (0.01%) | Environmental Sensing |
| 0x2A00 | Device Name | UTF-8 string | Generic Access |
| 0x2A01 | Appearance | uint16 | Generic 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.
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.
Core Bluetooth UUID, xüsusiyyətlər və ilkin dəyər göstərilməklə xarakteristika yaratmaq üçün CBMutableCharacteristic sinfini təmin edir.
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-də xarakteristika UUID, xüsusiyyətlər və icazələr göstərilməklə BluetoothGattCharacteristic vasitəsilə yaradılır.
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);
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 (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.
// 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
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 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.
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.
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.
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ə
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