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

François Beaufort
François Beaufort

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

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

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

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

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

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

Web Serial API में हुए बदलाव

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

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

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

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

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

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

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],
});

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

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 }],
});

अगर सीरियल पोर्ट किसी ब्लूटूथ डिवाइस का हिस्सा है, तो port.getInfo() को कॉल करके मिली सीरियल पोर्ट की जानकारी में एक नई bluetoothServiceClassId कुंजी उपलब्ध होती है. इसमें, उस RFCOMM चैनल से जुड़ा सेवा क्लास आईडी होता है जिससे पोर्ट कनेक्ट होता है. अगर सीरियल पोर्ट को मैप किया गया है, तो यह "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 के वेब कंपैनियन ऐप्लिकेशन को आज़माने के लिए, ChromeOS डिवाइस पर mypixelbuds.google.com पर जाएं. यह ऐप्लिकेशन जल्द ही अन्य प्लैटफ़ॉर्म पर भी उपलब्ध होगा.

Pixel Buds Pro के वेब के साथी ऐप्लिकेशन का स्क्रीनशॉट.
Pixel Buds Pro का वेब कंपैनियन ऐप्लिकेशन.

संसाधन

लोगों का आभार

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