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

फ्रांकोइस ब्यूफ़ोर्ट
फ्रांकोइस ब्यूफ़ोर्ट

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

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

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

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

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

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

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

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

नीचे दिए गए उदाहरण के मुताबिक, 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();

इस्तेमाल के उदाहरण: Control Pixel Buds Pro

Pixel Buds Pro Web Companion ऐप्लिकेशन एक नया वेब ऐप्लिकेशन है. इससे, उपयोगकर्ता किसी भी डिवाइस पर वेब ब्राउज़र से अपने 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 वेब साथी ऐप्लिकेशन.

संसाधन

लोगों का आभार

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