वेब पर ब्लूटूथ के ज़रिए सीरियल नंबर

François Beaufort
François Beaufort

Web Bluetooth API और Web Serial API वेब ऐप्लिकेशन को ब्लूटूथ कम ऊर्जा (BLE) वाले डिवाइसों और सीरियल डिवाइसों के साथ इंटरैक्ट करने की अनुमति देते हैं. हालांकि कई वेब डेवलपर पहले से ही इन एपीआई का इस्तेमाल सफलता पाने के लिए कर रहे हैं, लेकिन ब्लूटूथ क्लासिक डिवाइसों के लिए भी इसकी मांग लगातार बढ़ रही है.

Web Serial API अब, जोड़े गए ब्लूटूथ क्लासिक डिवाइसों पर RFCOMM सेवाओं के साथ संपर्क करने की सुविधा देता है. इनमें डेस्कटॉप पर Chrome 117 में मौजूद सीरियल पोर्ट प्रोफ़ाइल (SPP) भी शामिल है. इससे वेब डेवलपर और उपयोगकर्ताओं, दोनों के लिए नए अवसर पैदा होते हैं. यहां असल दुनिया के कुछ डिवाइसों के बारे में बताया गया है, जिन्हें इससे फ़ायदा हो सकता है:

  • Pixel Buds Pro और अन्य वायरलेस ईयरबड में, ऑडियो सेटिंग और फ़र्मवेयर के अपडेट मैनेज करने के लिए आरएफ़सीओएमएम का इस्तेमाल किया जाता है.
  • मोबाइल पॉइंट-ऑफ़-सेल सिस्टम, रसीद प्रिंटर से संपर्क करने के लिए ब्लूटूथ एसपीपी का इस्तेमाल करते हैं.
  • पशुधन आरएफ़आईडी टैग रीडर, जानवरों की गतिविधियों को लॉग करने के लिए ब्लूटूथ एसपीपी का इस्तेमाल करते हैं.

ब्लूटूथ RFCOMM प्रोटोकॉल

खुद को 90 के दशक के आखिरी दौर में ले जाएं. आपने अगले दिन के लिए अपने कैलेंडर को सिंक करने के लिए बस अपने पाम पायलट को उसके क्रेडल में रखा है. क्या यह अच्छा नहीं होगा कि इसके बजाय वायरलेस तरीके से ऐसा किया जा सके? इस नए "ब्लूटूथ" की मदद से तकनीक का इस्तेमाल करना चाहिए ताकि आपको उन सभी अजीब कॉर्ड से छुटकारा मिल सके. भविष्य में वायरलेस होगा! सिर्फ़ एक समस्या है. इसमें मौजूद हर चीज़ को RS-232 केबल से कनेक्ट करने के लिए डिज़ाइन किया गया है. इसलिए, ब्लूटूथ सभी मौजूदा सॉफ़्टवेयर और हार्डवेयर को वह इंटरफ़ेस देने के लिए, रेडियो फ़्रीक्वेंसी कम्यूनिकेशन (आरएफ़सीओएमएम) प्रोटोकॉल का इस्तेमाल करता है.

आज भी, RFCOMM सेवाओं का इस्तेमाल नए और मौजूदा हार्डवेयर में बड़े पैमाने पर किया जाता है. इससे इंतज़ार का समय और बैंडविथ की उन ज़रूरतों को पूरा किया जा सकता है जो ब्लूटूथ कम ऊर्जा वाली सुविधा की मदद से पूरी नहीं की जा रही हैं. इसलिए, हमने Web सीरियल डिवाइसों और ब्लूटूथ से कनेक्ट करने के लिए इस्तेमाल होने वाले एपीआई के बीच इंटिग्रेशन की प्रोसेस शुरू की है. इससे, मैन्युफ़ैक्चरर के ब्लूटूथ कम एनर्जी पर माइग्रेट होने से पहले, डेवलपर के लिए Web Bluetooth API का इस्तेमाल करने से पहले, लेगसी RFCOMM सेवाओं का ऐक्सेस मिल जाएगा.

Web Serial API में किए गए बदलाव

डेस्कटॉप पर Chrome 117 की शुरुआत से, वेब डेवलपर अब वेब सीरियल एपीआई का इस्तेमाल करके, RFCOMM सेवाओं की मदद से जोड़े गए ब्लूटूथ क्लासिक डिवाइसों के साथ भरोसेमंद तरीके से कम्यूनिकेट कर सकते हैं. Web Serial API में किए गए इन बदलावों की वजह से ऐसा हो पाया:

  • Chrome, अब ऐसे जोड़े गए ब्लूटूथ डिवाइसों की गिनती करता है जो स्टैंडर्ड ब्लूटूथ क्लासिक सीरियल पोर्ट प्रोफ़ाइल का इस्तेमाल करके, सीरियल इंटरफ़ेस दिखाते हैं.
  • Chrome अब सीरियल इंटरफ़ेस से संपर्क कर सकता है, भले ही ऑपरेटिंग सिस्टम ने खास तौर पर एम्युलेट किए गए सीरियल पोर्ट के ज़रिए डिवाइस नोड न बनाया हो.
  • Chrome अब ऐसी गैर-सीरियल पोर्ट सेवा से संपर्क कर सकता है जो RFCOMM सीरियल इंटरफ़ेस को दिखाती है (गैर-मानक सर्विस क्लास आईडी देखें).

वेब सीरियल एपीआई को इस्तेमाल करने का तरीका जानने के लिए, सीरियल पोर्ट से पढ़ना और उसमें लिखना लेख पढ़ें. यह लेख मान लेता है कि आपको ब्लूटूथ के बारे में बुनियादी जानकारी है और इसका फ़ोकस ब्लूटूथ में होने वाले बदलावों पर है.

कोई फ़िल्टर तय किए बिना, navigator.serial.requestPort() को कॉल करने से उपयोगकर्ता, बिना ब्लूटूथ वाले सीरियल पोर्ट, पहले से मैप किए जा चुके ब्लूटूथ सीरियल पोर्ट, और स्टैंडर्ड ब्लूटूथ क्लासिक सीरियल पोर्ट प्रोफ़ाइल से मिलने वाले ऐसे सीरियल पोर्ट चुन सकते हैं जिन्हें मैप नहीं किया गया है.

// Prompt user to select any serial port.
const port = await navigator.serial.requestPort();

हालांकि, ज़्यादातर डिवाइस स्टैंडर्ड ब्लूटूथ क्लासिक सीरियल पोर्ट प्रोफ़ाइल की मदद से, एसपीपी पर आधारित कम्यूनिकेशन की सुविधा देते हैं. कुछ डिवाइस, आरएफ़सीओएमएम पर आधारित कस्टम सेवाओं का इस्तेमाल करते हैं. इन डिवाइसों में सर्विस क्लास आईडी है, जो स्टैंडर्ड ब्लूटूथ यूयूआईडी रेंज में नहीं है.

नीचे दिए गए उदाहरण में बताए गए कस्टम RFCOMM-आधारित सेवाओं को ऐक्सेस करने के लिए, आपको allowedBluetoothServiceClassIds सूची को navigator.serial.requestPort() को पास करना होगा.

const myBluetoothServiceUuid = "01234567-89ab-cdef-0123-456789abcdef";

// Prompt user to select any serial port.
// Access to the custom Bluetooth RFCOMM service above will be allowed.
const port = await navigator.serial.requestPort({
  allowedBluetoothServiceClassIds: [myBluetoothServiceUuid],
});

ध्यान दें कि ब्लूटूथ एसआईजी बेस यूयूआईडी (यानी, "-0000-1000-8000-00805f9b34fb") से खत्म होने वाले सभी सेवा क्लास आईडी को ब्लॉक कर दिया जाता है. हालांकि, सीरियल पोर्ट प्रोफ़ाइल आईडी के लिए Chrome, ऑडियो और वीडियो जैसी ब्लूटूथ क्लासिक सेवाओं के साथ काम नहीं करता.

उपयोगकर्ता को सर्विस क्लास आईडी से पहचाने गए फ़िल्टर किए गए ब्लूटूथ सीरियल पोर्ट की सूची बताने के लिए, navigator.serial.requestPort()को कॉल करते समय भी bluetoothServiceClassIdफ़िल्टर कुंजी का इस्तेमाल किया जा सकता है. यह उदाहरण देखें.

const myBluetoothServiceUuid = "01234567-89ab-cdef-0123-456789abcdef";

// Prompt the user to select Bluetooth serial ports with
// the custom Bluetooth RFCOMM service above.
const port = await navigator.serial.requestPort({
  allowedBluetoothServiceClassIds: [myBluetoothServiceUuid],
  filters: [{ bluetoothServiceClassId: myBluetoothServiceUuid }],
});

अगर सीरियल पोर्ट किसी ब्लूटूथ डिवाइस का हिस्सा है, तो पोर्ट को कनेक्ट किए गए RFCOMM चैनल से जुड़ी सर्विस क्लास आईडी वाली नई bluetoothServiceClassId कुंजी, सीरियल पोर्ट की जानकारी में उपलब्ध होती है. जानकारी देखने के लिए port.getInfo() पर कॉल करें. अगर सीरियल पोर्ट को मैप किया गया है, तो यह "00001101-0000-1000-8000-00805f9b34fb" दिखाता है या 0x1101 फ़ॉर्मैट में हों.

const { bluetoothServiceClassId } = port.getInfo();

इस्तेमाल का उदाहरण: Pixel Buds Pro को कंट्रोल करना

Pixel Buds Pro का वेब कंपैनियन ऐप्लिकेशन, एक नया वेब ऐप्लिकेशन है. इसकी मदद से, उपयोगकर्ता अपने Pixel Buds Pro को वेब ब्राउज़र वाले किसी भी डिवाइस से कंट्रोल कर सकते हैं. इसे तुरंत लोड होने की सुविधा के लिए प्रोग्रेसिव वेब ऐप्लिकेशन टेक्नोलॉजी का इस्तेमाल करके बनाया गया है. इसे दूसरे ऑपरेटिंग सिस्टम ऐप्लिकेशन के साथ इंस्टॉल भी किया जा सकता है.

Pixel Buds Pro से कनेक्ट करने के लिए यह ऐप्लिकेशन, Web Serial API का इस्तेमाल करता है. इससे उपयोगकर्ता अपने Pixel Buds Pro की अलग-अलग सेटिंग को कंट्रोल कर सकते हैं. जैसे, ऐक्टिव शोर को कंट्रोल करने की सुविधा, आवाज़ बराबर करने की सुविधा, कान में लगे होने की पहचान, और फ़र्मवेयर के अपडेट.

Pixel Buds Pro Web Companion ऐप्लिकेशन का इस्तेमाल करने के लिए, किसी ChromeOS डिवाइस पर mypixelbuds.google.com पर जाएं. यह सुविधा जल्द ही दूसरे प्लैटफ़ॉर्म पर भी उपलब्ध होगी.

Pixel Buds Pro Web Companion ऐप्लिकेशन का स्क्रीनशॉट.
Pixel Buds Pro Web Companion ऐप्लिकेशन.

संसाधन

लोगों का आभार

समीक्षा के लिए, रेली ग्रांट, थॉमस स्टाइनर, बेन मॉर्स, और विंसेंट शीब का धन्यवाद. Unस्प्लैश पर मीका बॉमिस्टर की हीरो इमेज.