Service UUID एक अद्वितीय 16 या 128-बिट Bluetooth Low Energy (BLE) पहचानकर्ता है जो डिवाइस पर कार्यात्मक सेवा को स्पष्ट रूप से परिभाषित करता है। Bluetooth SIG ने सामान्य सेवाओं जैसे Battery Service (0x180F), Device Information (0x180A) और Heart Rate (0x180D) के लिए मानक 16-बिट UUID आवंटित किए हैं, जो क्रॉस-प्लेटफ़ॉर्म संगतता को सरल बनाता है। Bluetooth Core Specification 5.4 (2023) के अनुसार, तृतीय-पक्ष डेवलपर्स की कस्टम सेवाओं को 128-बिट UUID का उपयोग करना अनिवार्य है, जिसका प्रारूप केंद्रीय रजिस्ट्री के बिना वैश्विक अद्वितीयता सुनिश्चित करता है। Service UUID की सही घोषणा परिधीय डिवाइस पर GATT सर्वर के सही संचालन की पहली सीढ़ी है।
मुख्य बातें
Service UUID एक पहचानकर्ता है जो Bluetooth Low Energy GATT सेवा को अन्य उपकरणों द्वारा स्पष्ट पहचान के लिए निर्दिष्ट किया जाता है। BLE आर्किटेक्चर में, प्रत्येक सेवा एक सामान्य कार्य से जुड़ी विशेषताओं का एक तार्किक समूह दर्शाती है। उदाहरण के लिए, Battery Service में Battery Level विशेषता होती है, जो वर्तमान बैटरी चार्ज संचारित करती है।
Bluetooth SIG (Special Interest Group) सबसे सामान्य सेवाओं को निर्दिष्ट मानक 16-बिट UUID के रजिस्ट्री का प्रबंधन करता है। यह विभिन्न निर्माताओं के उपकरणों को पूर्व कॉन्फ़िगरेशन के बिना एक-दूसरे की सेवाओं को पहचानने की अनुमति देता है। किसी भी ब्रांड का फ़िटनेस ट्रैकर UUID 0x180D के साथ Heart Rate Service घोषित कर सकता है, और कोई भी स्मार्टफ़ोन समझ जाएगा कि यह हृदय गति सेवा है।
Bluetooth Core Specification 5.4 (2023) के अनुसार, 16-बिट UUID रेंज (0x0000–0xFFFF) दो भागों में विभाजित है: 0x0001 से 0xFFFE तक Bluetooth SIG की मानक सेवाएँ हैं, और 0xFFFF आरक्षित है। यदि डेवलपर को SIG रजिस्ट्री में नहीं होने वाली अद्वितीय सेवा की आवश्यकता है, तो वह 128-बिट UUID का उपयोग करता है।
मानक और कस्टम UUID के बीच अंतर केवल लंबाई में नहीं है: 16-बिट UUID विज्ञापन पैकेट में एयर टाइम बचाते हैं, क्योंकि वे 16 बाइट के बजाय 2 बाइट के रूप में प्रेषित होते हैं। सख्त विज्ञापन पैकेट आकार सीमाओं (31 बाइट तक) वाले उपकरणों के लिए, यह महत्वपूर्ण है।
मानक 16-बिट UUID BLE उपकरणों की मुख्य श्रेणियों को कवर करते हैं: चिकित्सा सेंसर, फ़िटनेस ट्रैकर, पहनने योग्य इलेक्ट्रॉनिक्स और सहायक उपकरण। यदि कोई डिवाइस एक मानक कार्य लागू करता है, तो डेवलपर को अधिकतम संगतता के लिए Bluetooth SIG रजिस्ट्री से संबंधित UUID का उपयोग करने की अनुशंसा की जाती है।
यहाँ मानक सेवा UUID के कुछ उदाहरण दिए गए हैं:
| UUID (hex) | सेवा का नाम | उद्देश्य |
|---|---|---|
| 0x1800 | Generic Access | पहुँच नियंत्रण, डिवाइस का नाम, स्वरूप |
| 0x180A | Device Information | निर्माता, मॉडल, सीरियल नंबर, फ़र्मवेयर संस्करण |
| 0x180D | Heart Rate | नाड़ी माप, सेंसर स्थान, बैटरी ऊर्जा |
| 0x180F | Battery Service | प्रतिशत में बैटरी चार्ज स्तर |
| 0x181A | Environmental Sensing | तापमान, आर्द्रता, दबाव, रोशनी |
| 0x181C | User Data | आयु, वजन, ऊँचाई, लिंग, आराम की नाड़ी |
कस्टम 128-बिट UUID आवश्यक होते हैं जब डिवाइस अद्वितीय कार्यक्षमता प्रदान करता है। उदाहरण के लिए, एक स्मार्ट लॉक निर्माता XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX प्रारूप के UUID के साथ अपनी स्वयं की Lock Control सेवा बनाता है। ऐसा UUID अन्य सेवाओं के साथ टकराव नहीं करेगा, क्योंकि 128-बिट मान स्थान व्यावहारिक रूप से अटूट है।
128-बिट UUID मानक UUID RFC 4122 प्रारूप में लिखा जाता है: आठ हेक्साडेसिमल अक्षर, हाइफ़न, चार, हाइफ़न, चार, हाइफ़न, चार, हाइफ़न, बारह अक्षर। BLE के लिए, एक संस्करण का उपयोग किया जाता है जहाँ Bluetooth SIG UUID के आधार भाग में निश्चित बिट्स होते हैं।
Bluetooth SIG आधार UUID को परिभाषित करता है: 0000XXXX-0000-1000-8000-00805F9B34FB। मानक 16-बिट सेवाओं के लिए, UUID मान इस मास्क में प्रतिस्थापित किया जाता है: उदाहरण के लिए, 0x180F 0000180F-0000-1000-8000-00805F9B34FB बन जाता है। कस्टम सेवाएँ डेवलपर द्वारा उत्पन्न पूरी तरह से स्वतंत्र UUID का उपयोग करती हैं।
कस्टम UUID बनाते समय, आप किसी भी UUID जनरेटर (UUID v4) का उपयोग कर सकते हैं। एक यादृच्छिक UUID v4 122 बिट एन्ट्रॉपी प्रदान करता है, जिससे टकराव व्यावहारिक रूप से असंभव हो जाते हैं। कस्टम सेवाओं के लिए आधार Bluetooth SIG UUID के संशोधित संस्करण का उपयोग न करें — यह विनिर्देश का उल्लंघन करता है।
UUID के साथ सेवा की घोषणा GATT सर्वर बनाते समय परिधीय पक्ष पर की जाती है। iOS में, Core Bluetooth का उपयोग किया जाता है; Android में, android.bluetooth.le का। दोनों दृष्टिकोणों पर नज़र डालते हैं।
Swift में, UUID निर्दिष्ट करके CBMutableService के माध्यम से सेवा बनाई जाती है, जिसके बाद CBMutableCharacteristic के माध्यम से इसमें विशेषताएँ जोड़ी जाती हैं।
import CoreBluetooth
// Standard 16-bit UUID
let batteryServiceUUID = CBUUID("180F")
// Custom 128-bit UUID
let customServiceUUID = CBUUID("E20A39F4-73F5-4BC4-A12F-17D1AD07A961")
let service = CBMutableService(
type: customServiceUUID,
primary: true
)
// Add characteristics
service.characteristics = [characteristic]
// Publish service via peripheralManager
peripheralManager.add(service)
Android पर, सेवा BluetoothGattServer और BluetoothGattService के माध्यम से पंजीकृत की जाती है। UUID java.util.UUID.fromString के माध्यम से स्ट्रिंग के रूप में पास किया जाता है।
import android.bluetooth.*;
// Custom service UUID
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
);
// Add characteristics
service.addCharacteristic(characteristic);
// Register on GATT server
gattServer.addService(service);
Service UUID द्वारा स्कैनिंग केंद्रीय उपकरण को सभी खोजे गए परिधीय उपकरणों से कनेक्ट किए बिना आवश्यक सेवा प्रदान करने वाले उपकरणों को खोजने की अनुमति देती है। एक BLE विज्ञापन पैकेट में सेवा UUID की सूची हो सकती है, जो केंद्रीय उपकरण को स्कैनिंग चरण में उपकरणों को फ़िल्टर करने की अनुमति देती है।
iOS में, CBCentralManager सेवा UUID द्वारा फ़िल्टर के साथ उपकरणों को स्कैन करता है। यह बिजली की खपत को कम करता है और आवश्यक उपकरणों की खोज को गति देता है।
import CoreBluetooth
let centralManager = CBCentralManager()
func scanForHeartRateMonitor() {
let services: [CBUUID] = [
CBUUID("180D") // Heart Rate Service
]
centralManager.scanForPeripherals(
withServices: services,
options: nil
)
}
// Delegate receives only Heart Rate Service devices
func centralManager(
_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String: Any],
rssi RSSI: NSNumber
) {
// peripheral has only devices with UUID 0x180D
}
Android पर, UUID द्वारा फ़िल्टरिंग ScanFilter.Builder के माध्यम से भी समर्थित है। यह प्रत्येक डिवाइस से कनेक्ट किए बिना खोज को सीमित करने का एक कुशल तरीका है।
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
);
एक BLE डिवाइस एक साथ कई सेवाओं की घोषणा कर सकता है। उदाहरण के लिए, एक फ़िटनेस ब्रेसलेट में Battery Service (0x180F), Heart Rate Service (0x180D) और क्लाउड के साथ डेटा सिंक करने के लिए एक कस्टम सेवा हो सकती है। प्रत्येक सेवा का अपना UUID और अपनी स्वयं की विशेषताओं का सेट होता है।
कई सेवाओं के साथ, विज्ञापन पैकेट सीमा पर विचार करना महत्वपूर्ण है। एक BLE विज्ञापन पैकेट में 31 बाइट तक डेटा हो सकता है। यदि सेवा UUID बहुत अधिक स्थान लेते हैं, तो उनमें से कुछ विज्ञापन पैकेट में फ़िट नहीं हो सकते हैं। इस मामले में, स्कैन रिस्पॉन्स का उपयोग किया जाता है — एक दूसरा पैकेट जो केंद्रीय उपकरण के अनुरोध पर भेजा जाता है।
Bluetooth Core Specification 5.4 (2023) के अनुसार, एक GATT सर्वर पर प्राथमिक सेवाओं की अधिकतम संख्या विनिर्देश द्वारा सीमित नहीं है, लेकिन व्यवहार में यह डिवाइस मेमोरी और प्रदर्शन आवश्यकताओं द्वारा सीमित है। 256 KB फ़्लैश मेमोरी वाले एम्बेडेड उपकरणों के लिए, 5–10 से अधिक सेवाओं की अनुशंसा नहीं की जाती है।
अक्सर पूछे जाने वाले प्रश्न
16-बिट UUID Bluetooth SIG द्वारा मानक सेवाओं के लिए आरक्षित हैं और विज्ञापन पैकेट में 2 बाइट लेते हैं। 128-बिट UUID कस्टम सेवाओं के लिए उपयोग किए जाते हैं और 16 बाइट लेते हैं। चुनाव सेवा के प्रकार पर निर्भर करता है: मानक कार्यक्षमता 16-बिट UUID का उपयोग करती है, अद्वितीय कार्यक्षमता 128-बिट UUID का उपयोग करती है।
UUID v4 का उपयोग करें — एक यादृच्छिक UUID जो ऑनलाइन टूल, टर्मिनल कमांड uuidgen या आपकी प्रोग्रामिंग भाषा API द्वारा उत्पन्न होता है। उदाहरण: Java में UUID.fromString(UUID.randomUUID().toString()) या Swift में UUID()।
नहीं, पंजीकरण आवश्यक नहीं है। Bluetooth SIG केवल 16-बिट UUID पंजीकृत करता है। कस्टम 128-बिट UUID डेवलपर द्वारा स्वतंत्र रूप से उत्पन्न किए जाते हैं और विशाल पता स्थान (2^128 संयोजन) के कारण अद्वितीयता सुनिश्चित करते हैं।
हाँ, एक मानक GATT सेवा में असीमित संख्या में विशेषताएँ हो सकती हैं। उदाहरण के लिए, Battery Service में Battery Level (0x2A19) और Battery Power State (0x2A1A) हो सकते हैं। प्रत्येक विशेषता का अपना UUID और गुणों का सेट होता है।
यदि UUID मेल खाते हैं, तो केंद्रीय उपकरण अतिरिक्त जानकारी के बिना एक सेवा को दूसरी से अलग नहीं कर सकता। यादृच्छिक UUID v4 के टकराव की संभावना नगण्य है — लगभग 5.3 × 10^−37। यादृच्छिक UUID जनरेटर का उपयोग करें, उदाहरणों से UUID कॉपी न करें।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें