Characteristic: यह क्या है, डेटा प्रकार और मान पढ़ना

लेखक: IT Sectr प्रकाशित: 2026-07-15 पढ़ने का समय: 7 मिनट

Characteristic Bluetooth Low Energy में डेटा की एक मूलभूत इकाई है, जिसके माध्यम से Central किसी पेरिफेरल डिवाइस पर जानकारी पढ़ता या लिखता है। प्रत्येक Characteristic एक विशिष्ट GATT सेवा से संबंधित होती है, इसमें एक अद्वितीय UUID और गुणों (read, write, notify, indicate) का एक सेट होता है जो संभावित संचालन को परिभाषित करते हैं। Bluetooth Core Specification 5.4 (2023) के अनुसार, Bluetooth SIG ने चिकित्सा, फिटनेस और औद्योगिक उपकरणों के लिए 500 से अधिक मानक विशेषताएँ निर्दिष्ट की हैं। डेवलपर्स सेंसर रीडिंग से लेकर डिवाइस नियंत्रण कमांड तक किसी भी उपयोगकर्ता डेटा को संचारित करने के लिए कस्टम विशेषताएँ बनाते हैं।

मुख्य बिंदु

  • Characteristic BLE GATT सेवा के अंदर एक डेटा बिंदु है, जिसमें UUID, गुण और एक विशिष्ट प्रकार का मान होता है।
  • गुण उपलब्ध संचालन को परिभाषित करते हैं: read (पढ़ना), write (लिखना), notify (सूचना), indicate (पुष्टि सूचना)।
  • मानक विशेषताएँ (बैटरी स्तर, हृदय गति) Bluetooth SIG रजिस्ट्री से 16-बिट UUID रखती हैं।
  • प्रत्येक Characteristic में डिस्क्रिप्टर हो सकते हैं — मेटाडेटा जो माप इकाइयों या सूचना कॉन्फ़िगरेशन का वर्णन करते हैं।
  • Characteristic के माध्यम से एकल डेटा पैकेट का अधिकतम आकार 20 बाइट्स (MTU 23) या MTU बढ़ाने पर 244 बाइट्स तक होता है।

BLE में Characteristic क्या है?

Characteristic GATT प्रोटोकॉल की एक विशेषता है जिसमें एक मान (value) और मेटाडेटा होता है। BLE आर्किटेक्चर में, डेटा सीधे उपकरणों के बीच स्थानांतरित नहीं होता, बल्कि सेवा की विशेषताओं के मानों को पढ़ने और लिखने के माध्यम से होता है। यदि सेवा एक फ़ोल्डर है, तो Characteristic उस फ़ोल्डर के अंदर एक फ़ाइल है।

प्रत्येक Characteristic तीन घटकों से बनी होती है: घोषणा (declaration), मान (value), और डिस्क्रिप्टर (descriptors)। घोषणा में विशेषता का UUID और उसके गुण होते हैं। मान Central और Peripheral के बीच स्थानांतरित वास्तविक डेटा है। डिस्क्रिप्टर अतिरिक्त कॉन्फ़िगरेशन प्रदान करते हैं।

Bluetooth Core Specification 5.4 (2023) के अनुसार, BLE में सभी डेटा आदान-प्रदान विशेषताओं पर संचालन के माध्यम से होते हैं। यहाँ तक कि मानक प्रोफ़ाइल जैसे Heart Rate Profile या Battery Service भी पूर्वनिर्धारित UUID वाली विशेषताओं के सेट पर बने हैं। यह बिना पूर्व कॉन्फ़िगरेशन के विभिन्न निर्माताओं के उपकरणों की संगतता सुनिश्चित करता है।

डेवलपर के लिए यह समझना महत्वपूर्ण है: प्रत्येक Characteristic विभिन्न गुण संयोजनों का समर्थन कर सकती है। एक विशेषता केवल पढ़ने के लिए हो सकती है, दूसरी लिखने के लिए, तीसरी सूचनाओं के लिए। गुणों का सही चयन उपयोग परिदृश्य और डिवाइस की बिजली खपत निर्धारित करता है।

Characteristic के गुण और अनुमतियाँ

किसी विशेषता के गुण (properties) यह परिभाषित करते हैं कि उस पर कौन से संचालन अनुमत हैं। यह एक बाइट मास्क है जहाँ प्रत्येक बिट एक विशिष्ट संचालन को सक्षम या अक्षम करता है। नीचे मुख्य गुण सूचीबद्ध हैं।

गुणबिटविवरणसामान्य उपयोग
Read0x02Central वर्तमान मान पढ़ सकता हैस्थिति, बैटरी स्तर, कॉन्फ़िगरेशन
Write0x08Central नया मान लिख सकता हैनियंत्रण आदेश, सेटिंग्स
Notify0x10Peripheral बिना पुष्टि के मान भेजता हैस्ट्रीमिंग डेटा (नाड़ी, तापमान)
Indicate0x20Peripheral पुष्टि के साथ मान भेजता हैमहत्वपूर्ण डेटा (अलर्ट, स्थितियाँ)
Write Without Response0x04सर्वर से पुष्टि की प्रतीक्षा किए बिना लिखनाउच्च गति आदेश संचरण

अनुमतियाँ (permissions) GATT सर्वर स्तर पर पहुँच स्तर हैं। गुणों के विपरीत, जो विशेषता की घोषणा में घोषित किए जाते हैं, अनुमतियाँ प्रत्येक संचालन पर जाँची जाती हैं। इनमें एन्क्रिप्शन और प्रमाणीकरण आवश्यकताएँ शामिल हो सकती हैं।

Bluetooth SIG की मानक विशेषताएँ

Bluetooth SIG ने 500 से अधिक मानक विशेषताएँ निर्दिष्ट की हैं जो अधिकांश सामान्य BLE उपयोग मामलों को कवर करती हैं। मानक UUID का उपयोग सुनिश्चित करता है कि कोई भी प्राप्त करने वाला उपकरण बिना पूर्व कॉन्फ़िगरेशन के डेटा की सही व्याख्या करे।

ये सबसे अधिक उपयोग की जाने वाली मानक विशेषताएँ हैं:

UUIDनामडेटा प्रकारसेवा
0x2A19Battery Leveluint8 (0–100%)Battery Service
0x2A37Heart Rate Measurementuint8 + फ़्लैगHeart Rate
0x2A6ETemperatureint16 (0.01°C)Environmental Sensing
0x2A6FHumidityuint16 (0.01%)Environmental Sensing
0x2A00Device NameUTF-8 स्ट्रिंगGeneric Access
0x2A01Appearanceuint16Generic Access

यदि कोई मौजूदा मानक विशेषता आपके कार्य को कवर करती है, तो उसका उपयोग करें। यह Bluetooth प्रमाणन को सरल बनाता है और पारिस्थितिकी तंत्र संगतता में सुधार करता है। केवल अद्वितीय डेटा के लिए कस्टम विशेषताएँ बनाएँ जो SIG रजिस्ट्री में न हों।

iOS और Android में Characteristic कैसे बनाएँ

विशेषता बनाना Peripheral पक्ष पर किया जाता है — वह उपकरण जो डेटा प्रदान करता है। आइए iOS (Swift) और Android (Java) पर कार्यान्वयन देखें।

iOS: CBMutableCharacteristic

Core Bluetooth UUID, गुण और प्रारंभिक मान के साथ विशेषता बनाने के लिए CBMutableCharacteristic वर्ग प्रदान करता है।

swift
import CoreBluetooth

let characteristicUUID = CBUUID("2A19") // बैटरी स्तर विशेषता

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

// बदलाव पर मान अपडेट करें
let batteryData = Data([batteryLevel]) // uint8
peripheralManager.updateValue(
    batteryData,
    for: characteristic,
    onSubscribedCentrals: nil
)

Android: BluetoothGattCharacteristic

Android पर, विशेषता UUID, गुण और अनुमतियों के साथ BluetoothGattCharacteristic का उपयोग करके बनाई जाती है।

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

// मान सेट करें
characteristic.setValue(batteryLevel, BluetoothGattCharacteristic.FORMAT_UINT8, 0);
gattServer.notifyCharacteristicChanged(device, characteristic, false);

पढ़ना, लिखना और सूचनाएँ

Characteristic पर संचालन तीन प्रकारों में विभाजित होते हैं: read (पढ़ना), write (लिखना), और notify/indicate (सूचनाएँ)। चुनाव परिदृश्य पर निर्भर करता है: माँग पर डेटा पढ़ा जाता है, आदेश लिखे जाते हैं, स्ट्रीमिंग डेटा सूचनाओं की सदस्यता लेता है।

Read: Central विशेषता मान पढ़ने का अनुरोध भेजता है। Peripheral वर्तमान मान के साथ उत्तर देता है। संचालन तुल्यकालिक है और प्रत्येक पक्ष से स्पष्ट अनुरोध की आवश्यकता होती है। उस डेटा के लिए उपयोग किया जाता है जो शायद ही कभी बदलता है: फ़र्मवेयर संस्करण, सीरियल नंबर, सेटिंग्स।

Write: Central Peripheral को डेटा भेजता है। दो मोड हैं: Write with Response (Peripheral से पुष्टि) और Write Without Response (बिना पुष्टि)। Write with Response वितरण की गारंटी देता है — Peripheral लिखने के बाद पुष्टि भेजता है। Write Without Response तेज़ है लेकिन वितरण की गारंटी नहीं देता।

Notify और Indicate: Peripheral Central को डेटा संचरण शुरू करता है। Notify में, डेटा बिना पुष्टि के भेजा जाता है — यदि Central पैकेट प्राप्त करने में विफल रहता है, तो वह खो जाता है। Indicate में, Central पुष्टि (PDU स्तर) भेजता है, जिससे वितरण सुनिश्चित होता है। Indicate धीमा है लेकिन अधिक विश्वसनीय है। सूचनाओं की सदस्यता लेने के लिए, Central CCCD (Client Characteristic Configuration Descriptor) में मान 0x0001 लिखता है।

MTU और स्थानांतरित डेटा का आकार

MTU (Maximum Transmission Unit) एकल BLE डेटा पैकेट के अधिकतम आकार को परिभाषित करता है। डिफ़ॉल्ट रूप से, MTU 23 बाइट्स है, जिसमें से 3 बाइट्स हेडर हैं — पेलोड (ATT payload) 20 बाइट्स के बराबर है। यह अधिकांश सेंसर डेटा के लिए पर्याप्त है लेकिन फ़ाइल स्थानांतरण या बड़े कॉन्फ़िगरेशन के लिए पर्याप्त नहीं है।

Bluetooth Core Specification 5.4 MTU नेगोशिएशन का समर्थन करती है — Central और Peripheral 517 बाइट्स तक के बड़े पैकेट आकार पर सहमत हो सकते हैं। प्रक्रिया इस प्रकार काम करती है: Central अपने प्रस्तावित MTU के साथ MTU Exchange अनुरोध भेजता है; Peripheral अपने MTU के साथ उत्तर देता है; दोनों में से छोटे मान का उपयोग किया जाता है।

swift
// iOS कनेक्ट होने पर MTU अनुरोध करता है
// iOS में अधिकतम MTU 185 बाइट्स है
func peripheral(
    _ peripheral: CBPeripheral,
    didDiscoverServices error: Error?
) {
    // विशिष्ट पेरिफेरल के लिए MTU अनुरोध
    peripheral.maximumWriteValueLength(for: .withResponse)
}

Bluetooth SIG (2023) के अनुसार, MTU को 23 से 185 बाइट्स तक बढ़ाने से कम पैकेटों के कारण डेटा संचरण ओवरहेड 80% तक कम हो जाता है। उच्च-आवृत्ति रीडिंग (जैसे, ECG या एक्सेलेरोमीटर) संचारित करने वाले अनुप्रयोगों के लिए, स्ट्रीम स्थिरता के लिए MTU वृद्धि महत्वपूर्ण है।

अक्सर पूछे जाने वाले प्रश्न

एक सेवा में कितनी विशेषताएँ हो सकती हैं?

BLE विनिर्देश एक सेवा में विशेषताओं की संख्या को सीमित नहीं करता। व्यवहार में, सीमा GATT सर्वर की उपलब्ध मेमोरी और प्रदर्शन आवश्यकताओं द्वारा निर्धारित होती है। एम्बेडेड उपकरणों के लिए, प्रति सेवा 10–15 से अधिक विशेषताओं की अनुशंसा नहीं की जाती।

Notify और Indicate में क्या अंतर है?

Notify बिना पुष्टि के डेटा भेजता है — पैकेट प्रेषक को सूचित किए बिना खो सकता है। Indicate को प्रोटोकॉल स्तर पर पुष्टि (ACK) की आवश्यकता होती है, जो वितरण की गारंटी देती है। Indicate धीमा है लेकिन अधिक विश्वसनीय है। महत्वपूर्ण डेटा (अलर्ट, आदेश) के लिए Indicate का उपयोग करें।

क्या कोई विशेषता एक साथ Read और Write हो सकती है?

हाँ, एक विशेषता में गुणों का संयोजन हो सकता है। उदाहरण के लिए, एक सेटिंग्स विशेषता Read (वर्तमान मान पढ़ना) और Write (सेटिंग बदलना) का समर्थन कर सकती है। अपने उपयोग परिदृश्य के अनुसार गुणों को संयोजित करें।

BLE के माध्यम से 20 बाइट्स से बड़ा डेटा कैसे स्थानांतरित करें?

पैकेट आकार को 185–517 बाइट्स तक बढ़ाने के लिए MTU नेगोशिएशन का उपयोग करें। यदि डेटा अभी भी बड़ा है, तो एप्लिकेशन स्तर पर विखंडन लागू करें: अखंडता नियंत्रण के साथ डेटा को कई अनुक्रमिक अनुरोधों में विभाजित करें।

क्या मुझे मानक विशेषता UUID का उपयोग करना चाहिए?

यदि आपका कार्य एक मानक विशेषता द्वारा कवर किया जाता है, तो Bluetooth SIG रजिस्ट्री से UUID का उपयोग करें। यह प्रमाणन को सरल बनाता है और पारिस्थितिकी तंत्र संगतता सुनिश्चित करता है। केवल अद्वितीय तृतीय-पक्ष डेटा के लिए कस्टम UUID बनाएँ।

सारांश

  • Characteristic BLE में डेटा स्थानांतरण का प्राथमिक तंत्र है, जो UUID, गुणों और डिस्क्रिप्टर के साथ एक मान का प्रतिनिधित्व करता है।
  • गुण (Read, Write, Notify, Indicate) परिभाषित करते हैं कि विशेषता पर कौन से संचालन उपलब्ध हैं।
  • Bluetooth SIG ने 500 से अधिक मानक विशेषताएँ निर्दिष्ट की हैं — उपकरण संगतता के लिए उनका उपयोग करें।
  • विशेषता निर्माण Peripheral पक्ष पर Core Bluetooth (iOS) या BluetoothGattCharacteristic (Android) के माध्यम से किया जाता है।
  • सूचनाएँ (Notify/Indicate) स्ट्रीमिंग डेटा के लिए नियमित पोलिंग की तुलना में अधिक कुशल हैं — उन्हें Central से निरंतर अनुरोधों की आवश्यकता नहीं होती।
  • एकल पैकेट का आकार MTU (डिफ़ॉल्ट रूप से 20 बाइट्स) द्वारा सीमित है लेकिन MTU Exchange के माध्यम से 517 बाइट्स तक बढ़ाया जा सकता है।
  • गुणों और UUID का सही चयन BLE कनेक्शन के बिजली खपत, विश्वसनीयता और प्रदर्शन को निर्धारित करता है।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें