Central Bluetooth Low Energy आर्किटेक्चर में एक उपकरण है जो स्कैनिंग शुरू करता है, कनेक्शन स्थापित करता है और परिधीय उपकरणों के साथ डेटा आदान-प्रदान का प्रबंधन करता है। मोबाइल डेवलपमेंट के संदर्भ में, Central एक स्मार्टफोन या टैबलेट है जो iOS या Android पर चलता है और BLE सेंसर, फिटनेस ट्रैकर्स और स्मार्ट एक्सेसरीज से जुड़ता है। Bluetooth Core Specification 5.4 (2023) के अनुसार, Central एक साथ 7 अलग-अलग Peripheral उपकरणों तक कनेक्शन का समर्थन कर सकता है, हालाँकि वास्तविक सीमा चिप निर्माता और OS संस्करण पर निर्भर करती है। iOS पर Core Bluetooth और Android पर android.bluetooth.le Central भूमिका के प्रबंधन के लिए पूर्ण API प्रदान करते हैं।
मुख्य बातें
Central Bluetooth Low Energy आर्किटेक्चर में एक GATT क्लाइंट है जो सभी संचार शुरू करता है। Peripheral के विपरीत, जो निष्क्रिय रूप से कनेक्शन की प्रतीक्षा करता है और अपनी सेवाओं का विज्ञापन करता है, Central सक्रिय रूप से ईथर को स्कैन करता है, विज्ञापन पैकेट खोजता है और कनेक्शन शुरू करता है।
असममित Central-Peripheral मॉडल BLE की एक मौलिक विशेषता है। Central इंटरैक्शन तर्क का प्रबंधन करता है: यह तय करता है कि किस उपकरण से जुड़ना है, किन सेवाओं का अन्वेषण करना है, और किन विशेषताओं को पढ़ना और लिखना है। Peripheral डेटा सर्वर के रूप में कार्य करता है — यह सेवाओं और विशेषताओं को संग्रहीत करता है लेकिन कनेक्शन शुरू नहीं करता है।
Bluetooth Core Specification 5.4 (2023) के अनुसार, एक उपकरण एक साथ Central और Peripheral (दोहरी भूमिका) हो सकता है। उदाहरण के लिए, एक स्मार्टफोन फिटनेस बैंड के लिए Central और फ़ाइलें स्थानांतरित करने वाले दूसरे स्मार्टफोन के लिए Peripheral हो सकता है। हालाँकि, दोनों भूमिकाओं में एक साथ संचालन से ऊर्जा खपत और कनेक्शन प्रबंधन जटिलता बढ़ जाती है।
मोबाइल डेवलपमेंट इकोसिस्टम में, Central भूमिका सबसे सामान्य परिदृश्य है। स्मार्टफोन पर एक ऐप BLE उपकरणों (सेंसर, हेडफ़ोन, बैंड) की खोज करता है, उनसे जुड़ता है और डेटा प्राप्त करता है। डेवलपर Central के साथ काम करने के लिए ऑपरेटिंग सिस्टम API का उपयोग करता है: iOS पर CBCentralManager, Android पर BluetoothLeScanner और BluetoothGatt।
स्कैनिंग Central के संचालन का पहला चरण है। उपकरण BLE रेडियो चैनलों (37, 38, 39) पर सुनता है ताकि विज्ञापन पैकेट का पता लगा सके जो Peripheral समय-समय पर भेजते हैं। प्रत्येक विज्ञापन पैकेट में उपकरण का नाम, Service UUID की सूची और कस्टम डेटा होता है।
Central दो स्कैनिंग मोड में काम कर सकता है: निष्क्रिय स्कैनिंग (केवल विज्ञापन पैकेट प्राप्त करना) और सक्रिय स्कैनिंग (स्कैन प्रतिक्रिया के माध्यम से अतिरिक्त डेटा प्राप्त करने के लिए स्कैन अनुरोध भेजना)। निष्क्रिय स्कैनिंग ऊर्जा बचाती है लेकिन कम जानकारी देती है। सक्रिय स्कैनिंग उपकरण नाम और पूर्ण सेवा सूची सहित विज्ञापन पैकेट का पूरा डेटा प्राप्त करने की अनुमति देती है।
UUID द्वारा फ़िल्टरिंग एक महत्वपूर्ण अनुकूलन है। Central केवल एक विशिष्ट Service UUID वाले उपकरणों को स्कैन कर सकता है, बाकी को अनदेखा कर सकता है। यह न केवल ऊर्जा बचाता है बल्कि एप्लिकेशन तर्क को भी सरल बनाता है: डेलीगेट केवल प्रासंगिक उपकरण प्राप्त करता है।
import CoreBluetooth
class BLECentralManager: NSObject, CBCentralManagerDelegate {
private var centralManager: CBCentralManager!
override init() {
super.init()
centralManager = CBCentralManager(
delegate: self,
queue: nil
)
}
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if central.state == .poweredOn {
central.scanForPeripherals(
withServices: nil,
options: [
CBCentralManagerScanOptionAllowDuplicatesKey: false
]
)
}
}
}
कनेक्शन प्रबंधन Central की मुख्य जिम्मेदारी है। एक उपयुक्त Peripheral खोजने के बाद, Central कनेक्शन शुरू करता है। BLE कनेक्शन कनेक्शन स्थापना प्रक्रिया के माध्यम से स्थापित होता है जिसमें पैरामीटर आदान-प्रदान शामिल होता है: कनेक्शन अंतराल, दास विलंबता और पर्यवेक्षण टाइमआउट।
कनेक्शन अंतराल यह निर्धारित करता है कि कनेक्शन के बाद Central और Peripheral कितनी बार डेटा का आदान-प्रदान करते हैं। अंतराल 7.5 ms से 4 सेकंड तक हो सकता है। अंतराल जितना छोटा होगा, थ्रूपुट उतना ही अधिक होगा, लेकिन ऊर्जा खपत भी उतनी ही अधिक होगी। दास विलंबता Peripheral को ऊर्जा बचाने के लिए कई कनेक्शन इवेंट को छोड़ने की अनुमति देती है। पर्यवेक्षण टाइमआउट बिना प्रतिक्रिया के अधिकतम समय है, जिसके बाद कनेक्शन खोया हुआ माना जाता है।
Central डेटा आदान-प्रदान पूरा होने के बाद कनेक्शन समाप्त करने के लिए जिम्मेदार है। BLE उपकरण आमतौर पर स्थायी रूप से कनेक्शन नहीं रखते हैं — Central कनेक्ट होता है, डेटा प्राप्त करता है और डिस्कनेक्ट हो जाता है। यह IoT सेंसर के लिए एक मानक पैटर्न है: Central स्कैन करता है, तापमान सेंसर ढूँढता है, कनेक्ट होता है, मान पढ़ता है और डिस्कनेक्ट हो जाता है।
| पैरामीटर | सीमा | उद्देश्य | अनुशंसा |
|---|---|---|---|
| कनेक्शन अंतराल | 7.5 ms – 4 s | डेटा आदान-प्रदान आवृत्ति | स्ट्रीमिंग के लिए 30–50 ms, दुर्लभ डेटा के लिए 1–4 s |
| दास विलंबता | 0–499 इवेंट | Peripheral इवेंट छोड़ना | सेंसर ऊर्जा बचत के लिए 4–10 |
| पर्यवेक्षण टाइमआउट | 100 ms – 32 s | कनेक्शन हानि टाइमआउट | अधिकांश परिदृश्यों के लिए 6–10 सेकंड |
| MTU | 23–517 बाइट्स | ATT पैकेट आकार | कनेक्शन पर अधिकतम का अनुरोध करें |
Core Bluetooth iOS और macOS पर BLE के साथ काम करने के लिए Apple का फ्रेमवर्क है। CBCentralManager क्लास Central भूमिका को लागू करने के लिए पूर्ण API प्रदान करता है: स्कैनिंग, कनेक्शन, कनेक्शन प्रबंधन। iOS पर Central के साथ काम डेलिगेट मॉडल पर आधारित है: CBCentralManagerDelegate स्थिति परिवर्तन, उपकरण खोज और कनेक्शन परिणामों की घटनाएँ प्राप्त करता है।
iOS पर Central के मुख्य चरण: CBCentralManager को आरंभ करना, Bluetooth स्थिति की जाँच करना, स्कैनिंग शुरू करना, डेलिगेट के माध्यम से खोजे गए उपकरणों को संभालना, चयनित Peripheral से कनेक्ट करना, सेवाओं और विशेषताओं की खोज करना, डेटा का आदान-प्रदान करना।
// खोजे गए Peripheral से कनेक्ट करें
func centralManager(
_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String: Any],
rssi RSSI: NSNumber
) {
// Peripheral का संदर्भ रखें और कनेक्ट करें
discoveredPeripheral = peripheral
central.connect(peripheral, options: nil)
}
// सफल कनेक्शन
func centralManager(
_ central: CBCentralManager,
didConnect peripheral: CBPeripheral
) {
peripheral.delegate = self
peripheral.discoverServices(nil)
}
iOS बैकग्राउंड BLE कार्य को सीमित करता है: बैकग्राउंड में, एक ऐप केवल Info.plist में विशिष्ट कुंजियों के साथ स्कैन कर सकता है, और कनेक्टेड उपकरण Central को डेटा परिवर्तनों के बारे में सूचित कर सकते हैं। महत्वपूर्ण अनुप्रयोगों (चिकित्सा उपकरणों) के लिए, bluetooth-central कुंजी के साथ बैकग्राउंड मोड का उपयोग करें।
Android BLE उपकरणों को स्कैन करने के लिए BluetoothLeScanner API और कनेक्शन प्रबंधन के लिए BluetoothGatt प्रदान करता है। Android 5.0 (API 21) से शुरू करके, BluetoothLeScanner ने पुराने startLeScan को बदल दिया। API के लिए BLUETOOTH, BLUETOOTH_ADMIN और ACCESS_FINE_LOCATION अनुमतियाँ (या Android 10+ के लिए ACCESS_BACKGROUND_LOCATION) आवश्यक हैं।
import android.bluetooth.le.*;
import android.bluetooth.*;
private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;
// स्कैनिंग कॉन्फ़िगर करें
ScanSettings settings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build();
// स्कैनिंग शुरू करें
scanner.startScan(null, settings, new ScanCallback() {
@Override
public void onScanResult(
int callbackType,
ScanResult result
) {
BluetoothDevice device = result.getDevice();
// डिवाइस से कनेक्ट करें
bluetoothGatt = device.connectGatt(
context, false, gattCallback
);
}
});
Android पर, स्कैनिंग सीमाओं पर विचार करना महत्वपूर्ण है: Android 7 (API 24) से शुरू करके, स्थान का उपयोग न करने वाले ऐप्स में स्कैनिंग 30 सेकंड में 5 बार से अधिक शुरू नहीं की जा सकती। Android 12+ के लिए BLUETOOTH_SCAN, BLUETOOTH_CONNECT और ADVERTISE अनुमतियों के साथ-साथ इन अनुमतियों के रनटाइम अनुरोध की आवश्यकता है।
Central की ऊर्जा खपत Peripheral की तुलना में अधिक है क्योंकि इसे रेडियो चैनलों को लगातार स्कैन करने की आवश्यकता होती है। Central BLE पैकेट प्राप्त करता है, उन्हें संसाधित करता है, कनेक्शन का प्रबंधन करता है और अक्सर एप्लिकेशन प्रोसेसर पर गणना करता है। Bluetooth SIG के अनुसार, स्कैनिंग मोड के आधार पर 30 mA से 100 mA तक की खपत करती है।
Central के लिए ऊर्जा बचत की कई रणनीतियाँ हैं। अंतराल स्कैनिंग सबसे प्रभावी तरीका है: Central लंबे ठहराव (स्कैन अंतराल) के साथ छोटी विंडो (स्कैन विंडो) में स्कैन करता है। उदाहरण के लिए, 30 ms की स्कैन विंडो और 1000 ms के स्कैन अंतराल के साथ, निरंतर स्कैनिंग की तुलना में ऊर्जा खपत 97% कम हो जाती है।
एक अतिरिक्त अनुकूलन UUID फ़िल्टरिंग है। Central केवल प्रासंगिक विज्ञापन पैकेट को तेज़ी से संसाधित करता है, बाकी को अनदेखा करता है। इससे CPU लोड कम होता है और उपकरण की बैटरी लाइफ बढ़ती है। वांछित उपकरण मिलने के तुरंत बाद स्कैनिंग बंद करने और आवश्यकता से अधिक समय तक कनेक्शन न रखने की भी सिफारिश की जाती है।
अक्सर पूछे जाने वाले प्रश्न
हाँ, BLE दोहरी भूमिका का समर्थन करता है: एक उपकरण एक साथ कुछ उपकरणों के लिए Central और दूसरों के लिए Peripheral हो सकता है। उदाहरण के लिए, स्मार्टफोन सेंसर से डेटा पढ़ता है (Central के रूप में) और साथ ही किसी अन्य उपकरण को डेटा संचारित करने के लिए अपनी सेवा का विज्ञापन करता है (Peripheral के रूप में)।
BLE विनिर्देश एक Central के लिए 7 कनेक्शनों की सीमा निर्धारित करता है। व्यवहार में, सीमा चिप निर्माता पर निर्भर करती है: Nordic nRF52840 चिप्स 20 कनेक्शन तक का समर्थन करते हैं, जबकि कुछ सस्ते Bluetooth एडेप्टर 3–4 से अधिक का समर्थन नहीं करते हैं।
कारण अलग-अलग हो सकते हैं: सेंसर विज्ञापन नहीं कर रहा है (विज्ञापन मोड में नहीं है), UUID फ़िल्टर बहुत सख्त है, स्मार्टफोन पर Bluetooth बंद है, आवश्यक अनुमतियाँ गायब हैं (Android पर स्थान), या सेंसर सीमा से बाहर है (घर के अंदर 10 मीटर तक अनुशंसित)।
ज़रूरी नहीं। कई परिदृश्यों के लिए, कनेक्ट-और-पढ़ें पैटर्न का उपयोग किया जाता है: Central स्कैन करता है, कनेक्ट होता है, आवश्यक डेटा पढ़ता है और डिस्कनेक्ट हो जाता है। निरंतर कनेक्शन केवल स्ट्रीमिंग डेटा (पल्स, ECG) या रीयल-टाइम डिवाइस नियंत्रण के लिए आवश्यक है।
30–50 ms की स्कैन विंडो और 500–1000 ms के स्कैन अंतराल के साथ अंतराल स्कैनिंग का उपयोग करें। केवल प्रासंगिक विज्ञापन पैकेट को संसाधित करने के लिए UUID द्वारा उपकरणों को फ़िल्टर करें। वांछित Peripheral मिलने के तुरंत बाद स्कैनिंग बंद कर दें।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें