Characteristic: bu nima, ma'lumot turlari va qiymatlarni o'qish

Muallif: IT Sectr Nashr etilgan: 2026-07-15 O'qish vaqti: 7 daq

Characteristic Bluetooth Low Energy dagi asosiy ma'lumot birligi bo'lib, u orqali Central periferik qurilmada ma'lumot oladi yoki yozadi. Har bir Characteristic ma'lum bir GATT xizmatiga tegishli, noyob UUID va mumkin bo'lgan operatsiyalarni belgilaydigan xususiyatlar to'plamiga (read, write, notify, indicate) ega. Bluetooth Core Specification 5.4 (2023) ma'lumotlariga ko'ra, Bluetooth SIG tibbiy, fitnes va sanoat qurilmalari uchun 500 dan ortiq standart xarakteristikalarni spetsifikatsiya qilgan. Dasturchi foydalanuvchi ma'lumotlarini uzatish uchun maxsus xarakteristikalar yaratadi — sensor ko'rsatkichlaridan qurilma boshqaruv buyruqlarigacha.

Asosiy fikrlar

  • Characteristic BLE GATT xizmati ichidagi UUID, xususiyatlar va ma'lum turdagi qiymatga ega bo'lgan ma'lumot nuqtasidir.
  • Xususiyatlar mavjud operatsiyalarni belgilaydi: read (o'qish), write (yozish), notify (bildirishnoma), indicate (tasdiqlangan bildirishnoma).
  • Standart xarakteristikalar (battery level, heart rate) Bluetooth SIG reestridan 16-bitli UUID ga ega.
  • Har bir Characteristic deskriptorlarni — o'lchov birliklari yoki bildirishnoma konfiguratsiyasini tavsiflovchi metama'lumotlarni o'z ichiga olishi mumkin.
  • Characteristic orqali bitta ma'lumot paketining maksimal hajmi 20 bayt (MTU 23) yoki MTU oshirilganda 244 baytgacha.

BLE da Characteristic nima?

Characteristic qiymat (value) va metama'lumotlarni o'z ichiga olgan GATT protokoli atributidir. BLE arxitekturasida ma'lumotlar qurilmalar o'rtasida to'g'ridan-to'g'ri emas, balki xizmat xarakteristikalarining qiymatlarini o'qish va yozish orqali uzatiladi. Agar xizmat papka bo'lsa, Characteristic shu papka ichidagi fayldir.

Har bir Characteristic uch komponentdan iborat: deklaratsiya (declaration), qiymat (value) va deskriptorlar (descriptors). Deklaratsiya xarakteristikaning UUID sini va uning xususiyatlarini o'z ichiga oladi. Qiymat Central va Peripheral o'rtasida uzatiladigan asl ma'lumotdir. Deskriptorlar qo'shimcha konfiguratsiyani ta'minlaydi.

Bluetooth Core Specification 5.4 (2023) ma'lumotlariga ko'ra, BLE da barcha ma'lumot almashinuvi xarakteristikalar ustidagi operatsiyalar orqali amalga oshiriladi. Hatto Heart Rate Profile yoki Battery Service kabi standart profillar oldindan belgilangan UUID larga ega xarakteristikalar to'plami asosida qurilgan. Bu turli ishlab chiqaruvchilarning qurilmalarining oldindan konfiguratsiyasiz mosligini ta'minlaydi.

Dasturchi uchun muhim: har bir Characteristic turli xususiyatlar kombinatsiyalarini qo'llab-quvvatlashi mumkin. Bitta xarakteristika faqat o'qish uchun, boshqasi yozish uchun, uchinchisi bildirishnomalar uchun bo'lishi mumkin. Xususiyatlarni to'g'ri tanlash foydalanish stsenariysi va qurilmaning energiya sarfini belgilaydi.

Characteristic xususiyatlari va ruxsatlari

Xususiyatlar (properties) xarakteristika ustida qanday operatsiyalarga ruxsat etilganligini belgilaydi. Bu baytli niqob bo'lib, har bir bit ma'lum bir operatsiyani yoqadi yoki o'chiradi. Quyida asosiy xususiyatlar keltirilgan.

XususiyatBitTavsifOdatiy qo'llanilishi
Read0x02Central joriy qiymatni o'qiy oladiStatus, batareya darajasi, konfiguratsiya
Write0x08Central yangi qiymat yozishi mumkinBoshqaruv buyruqlari, sozlamalar
Notify0x10Peripheral tasdiqsiz qiymat yuboradiOqim ma'lumotlari (puls, harorat)
Indicate0x20Peripheral tasdiq bilan qiymat yuboradiMuhim ma'lumotlar (signallar, statuslar)
Write Without Response0x04Serverdan javob kutmasdan yozishYuqori tezlikdagi buyruq uzatish

Ruxsatlar (permissions) — GATT server darajasidagi kirish darajasi. Xususiyatlardan farqli o'laroq, ruxsatlar har bir operatsiyada tekshiriladi. Ular shifrlash va autentifikatsiya talablarini o'z ichiga olishi mumkin.

Bluetooth SIG standart xarakteristikalari

Bluetooth SIG BLE dan foydalanishning keng tarqalgan stsenariylarini qamrab oluvchi 500 dan ortiq standart xarakteristikalarni spetsifikatsiya qilgan. Standart UUID lardan foydalanish har qanday qabul qiluvchi qurilma ma'lumotlarni oldindan konfiguratsiyasiz to'g'ri talqin qilishini kafolatlaydi.

Eng ko'p ishlatiladigan standart xarakteristikalar:

UUIDNomMa'lumot turiXizmat
0x2A19Battery Leveluint8 (0–100%)Battery Service
0x2A37Heart Rate Measurementuint8 + bayroqlarHeart Rate
0x2A6ETemperatureint16 (0.01°C)Environmental Sensing
0x2A6FHumidityuint16 (0.01%)Environmental Sensing
0x2A00Device NameUTF-8 stringGeneric Access
0x2A01Appearanceuint16Generic Access

Agar mavjud standart xarakteristika vazifangizni qamrab olsa — undan foydalaning. Bu Bluetooth sertifikatsiyasini soddalashtiradi va ekotizim bilan moslikni oshiradi. Maxsus xarakteristikalarni faqat SIG reestrida mavjud bo'lmagan noyob ma'lumotlar uchun yarating.

iOS va Android da Characteristic yaratish

Xarakteristika yaratish Peripheral — ma'lumotlarni taqdim etuvchi qurilma tomonida amalga oshiriladi. Keling, iOS (Swift) va Android (Java) da amalga oshirishni ko'rib chiqaylik.

iOS: CBMutableCharacteristic

Core Bluetooth UUID, xususiyatlar va boshlang'ich qiymatni ko'rsatgan holda xarakteristika yaratish uchun CBMutableCharacteristic klassini taqdim etadi.

swift
import CoreBluetooth

let characteristicUUID = CBUUID("2A19") // Batareya darajasi xarakteristikasi

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

// O'zgartirishda qiymatni yangilang
let batteryData = Data([batteryLevel]) // uint8
peripheralManager.updateValue(
    batteryData,
    for: characteristic,
    onSubscribedCentrals: nil
)

Android: BluetoothGattCharacteristic

Android da xarakteristika UUID, xususiyatlar va ruxsatlarni ko'rsatgan holda BluetoothGattCharacteristic orqali yaratiladi.

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
    );

// Qiymatni o'rnating
characteristic.setValue(batteryLevel, BluetoothGattCharacteristic.FORMAT_UINT8, 0);
gattServer.notifyCharacteristicChanged(device, characteristic, false);

O'qish, yozish va bildirishnomalar

Characteristic ustidagi operatsiyalar uch turga bo'linadi: o'qish (read), yozish (write) va bildirishnomalar (notify/indicate). Operatsiyani tanlash stsenariyga bog'liq: so'rov bo'yicha ma'lumotlar o'qiladi, buyruqlar yoziladi, oqim ma'lumotlari bildirishnomalarga obuna bo'ladi.

Read — Central xarakteristika qiymatini o'qish so'rovini yuboradi. Peripheral joriy qiymat bilan javob beradi. Operatsiya sinxron va har tomondan aniq so'rovni talab qiladi. Kam o'zgaradigan ma'lumotlar uchun ishlatiladi: proshivka versiyasi, seriya raqami, sozlamalar.

Write — Central Peripheral ga ma'lumot yuboradi. Ikki rejim mavjud: Write with Response (Peripheraldan tasdiq) va Write Without Response (tasdiqsiz). Write with Response yetkazib berishni kafolatlaydi — Peripheral yozishdan keyin tasdiq yuboradi. Write Without Response tezroq, lekin yetkazib berishni kafolatlamaydi.

Notify va Indicate — Peripheral Central ga ma'lumot yuborishni boshlaydi. Notify da ma'lumotlar tasdiqsiz yuboriladi — agar Central paketni qabul qilishga ulgurmasa, u yo'qoladi. Indicate da Central tasdiq yuboradi (PDU darajasida), bu yetkazib berishni kafolatlaydi. Indicate sekinroq, ammo ishonchliroq. Bildirishnomalarga obuna bo'lish uchun Central CCCD (Client Characteristic Configuration Descriptor) ga 0x0001 qiymatini yozadi.

MTU va uzatiladigan ma'lumotlar hajmi

MTU (Maximum Transmission Unit) bitta BLE ma'lumot paketining maksimal hajmini belgilaydi. Odatiy bo'lib, MTU 23 baytni tashkil qiladi, shundan 3 bayt sarlavha — foydali yuk (ATT payload) 20 bayt. Bu aksariyat sensor ma'lumotlari uchun yetarli, ammo fayllar yoki katta konfiguratsiyalarni uzatish uchun yetarli emas.

Bluetooth Core Specification 5.4 MTU kelishuvini (MTU negotiation) qo'llab-quvvatlaydi — Central va Peripheral 517 baytgacha kattaroq paket hajmi haqida kelishib olishlari mumkin. Jarayon quyidagicha: Central o'z MTU taklifi bilan MTU Exchange so'rovini yuboradi; Peripheral o'z MTU si bilan javob beradi; ikkala qiymatdan kichigi ishlatiladi.

swift
// iOS ulanishda MTU so'raydi
// iOS da maksimal MTU 185 bayt
func peripheral(
    _ peripheral: CBPeripheral,
    didDiscoverServices error: Error?
) {
    // Muayyan periferik qurilma uchun MTU so'rang
    peripheral.maximumWriteValueLength(for: .withResponse)
}

Bluetooth SIG (2023) ma'lumotlariga ko'ra, MTU ni 23 dan 185 baytga oshirish paketlar sonini kamaytirish hisobiga ma'lumot uzatish xarajatlarini 80% gacha kamaytiradi. Yuqori chastotali ko'rsatkichlarni uzatuvchi ilovalar uchun (masalan, EKG yoki akselerometr) MTU ni oshirish oqim barqarorligi uchun juda muhimdir.

Tez-tez beriladigan savollar

Bitta xizmat nechta xarakteristikani o'z ichiga olishi mumkin?

BLE spetsifikatsiyasi xizmatdagi xarakteristikalar sonini cheklamaydi. Amalda, cheklov GATT serverining mavjud xotirasi va ishlash talablari bilan belgilanadi. O'rnatilgan qurilmalar uchun har bir xizmatda 10–15 dan ko'p bo'lmagan xarakteristika tavsiya etiladi.

Notify va Indicate o'rtasidagi farq nima?

Notify ma'lumotlarni tasdiqsiz yuboradi — paket jo'natuvchiga xabar bermasdan yo'qolishi mumkin. Indicate protokol darajasida tasdiqni (ACK) talab qiladi, bu yetkazib berishni kafolatlaydi. Indicate sekinroq, ammo ishonchliroq. Muhim ma'lumotlar (signallar, buyruqlar) uchun Indicate dan foydalaning.

Xarakteristika bir vaqtning o'zida Read va Write ga ega bo'lishi mumkinmi?

Ha, xarakteristika xususiyatlar kombinatsiyasiga ega bo'lishi mumkin. Masalan, sozlamalar xarakteristikasi Read (joriy qiymatni o'qish) va Write (sozlamani o'zgartirish) ni qo'llab-quvvatlashi mumkin. Xususiyatlarni foydalanish stsenariyingizga mos ravishda birlashtiring.

BLE orqali 20 baytdan katta ma'lumotlarni qanday uzatish mumkin?

Paket hajmini 185–517 baytgacha oshirish uchun MTU kelishuvidan foydalaning. Agar ma'lumotlar hali ham katta bo'lsa — ilova darajasida fragmentatsiyani amalga oshiring: ma'lumotlarni yaxlitlik nazorati bilan bir necha ketma-ket so'rovlarga bo'ling.

Xarakteristikalarning standart UUID laridan foydalanish kerakmi?

Agar vazifangiz standart xarakteristika bilan qamrab olinsa — Bluetooth SIG reestridan UUID dan foydalaning. Bu sertifikatsiyani soddalashtiradi va ekotizim bilan moslikni ta'minlaydi. Maxsus UUID larni faqat uchinchi tomon ishlab chiqaruvchilarning noyob ma'lumotlari uchun yarating.

Xulosa

  • Characteristic BLE da UUID, xususiyatlar va deskriptorlar bilan qiymatni ifodalovchi asosiy ma'lumot uzatish mexanizmidir.
  • Xususiyatlar (Read, Write, Notify, Indicate) xarakteristika ustida qanday operatsiyalar mavjudligini belgilaydi.
  • Bluetooth SIG 500 dan ortiq standart xarakteristika spetsifikatsiya qilgan — qurilmalar mosligi uchun ulardan foydalaning.
  • Xarakteristika yaratish Peripheral tomonida Core Bluetooth (iOS) yoki BluetoothGattCharacteristic (Android) orqali amalga oshiriladi.
  • Bildirishnomalar (Notify/Indicate) oqim ma'lumotlari uchun muntazam so'roqqa qaraganda samaraliroq — ular Central dan doimiy so'rovlarni talab qilmaydi.
  • Bitta paket hajmi MTU (odatiy 20 bayt) bilan cheklangan, ammo MTU Exchange orqali 517 baytgacha oshirilishi mumkin.
  • Xususiyatlar va UUID ni to'g'ri tanlash BLE ulanishining energiya sarfini, ishonchliligi va samaradorligini belgilaydi.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing