वेब पर हार्डवेयर डिवाइसों को ऐक्सेस करना

अपनी पसंद के हार्डवेयर डिवाइस से कनेक्ट करने के लिए, सही एपीआई चुनें.

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

इस गाइड का मकसद, वेब पर किसी हार्डवेयर डिवाइस (जैसे कि वेबकैम, माइक्रोफ़ोन वगैरह) से कनेक्ट करने के लिए, सबसे अच्छा एपीआई चुनने में आपकी मदद करना है. "सबसे बढ़िया" से मेरा मतलब है कि इससे आपको कम से कम काम में, सभी ज़रूरी सुविधाएं मिलती हैं. दूसरे शब्दों में, आपको पता है कि इस्तेमाल के सामान्य उदाहरण को हल करना है (जैसे, वीडियो ऐक्सेस करना). हालांकि, आपको यह नहीं पता कि किस एपीआई का इस्तेमाल करना चाहिए. इसके अलावा, यह भी नहीं जानते कि इसे हासिल करने का कोई और तरीका है या नहीं.

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

🕹 इस डिवाइस से इनपुट इवेंट पाएं

कीबोर्ड और पॉइंटर इवेंट के लिए, आवाज़ सुनने की कोशिश करें. अगर यह डिवाइस कोई गेम कंट्रोलर है, तो Gamepad API का इस्तेमाल करके, यह पता लगाया जा सकता है कि कौनसे बटन दबाए जा रहे हैं और कौनसे ऐक्सिस को मूव किया जा रहा है.

अगर इनमें से कोई भी विकल्प आपके काम का नहीं है, तो लो-लेवल वाले एपीआई से समस्या को हल किया जा सकता है. यात्रा शुरू करने के लिए, अपने डिवाइस से कनेक्ट करने का तरीका जानें.

📸 इस डिवाइस पर ऑडियो और वीडियो ऐक्सेस करें

इस डिवाइस से लाइव ऑडियो और वीडियो स्ट्रीम पाने के लिए, MediaDevices.getUserMedia() का इस्तेमाल करें. साथ ही, ऑडियो और वीडियो कैप्चर करने के बारे में जानें. कैमरे को पैन, झुका, और ज़ूम भी कंट्रोल किया जा सकता है. साथ ही, कैमरे की चमक और कंट्रास्ट जैसी दूसरी सेटिंग भी कंट्रोल की जा सकती हैं. इसके अलावा, स्टिल इमेज भी ली जा सकती हैं. वेब ऑडियो का इस्तेमाल, ऑडियो में इफ़ेक्ट जोड़ने, ऑडियो विज़ुअलाइज़ेशन बनाने या स्पेशल इफ़ेक्ट (जैसे पैनिंग) लागू करने के लिए किया जा सकता है. Chrome में वेब ऑडियो ऐप्लिकेशन की परफ़ॉर्मेंस को देखने का तरीका भी देखें.

अगर इनमें से कोई भी विकल्प आपके काम का नहीं है, तो लो-लेवल वाले एपीआई से समस्या को हल किया जा सकता है. यात्रा शुरू करने के लिए, अपने डिवाइस से कनेक्ट करने का तरीका जानें.

🖨 इस डिवाइस पर प्रिंट करें

ब्राउज़र में ऐसा डायलॉग बॉक्स खोलने के लिए, window.print() इस्तेमाल करें. इससे, उपयोगकर्ता मौजूदा दस्तावेज़ को प्रिंट करने के लिए, इस डिवाइस को डेस्टिनेशन के तौर पर चुन सकेगा.

अगर इससे काम नहीं बनता, तो लो-लेवल वाले एपीआई का इस्तेमाल करें. यात्रा शुरू करने के लिए, अपने डिवाइस से कनेक्ट करने का तरीका जानें.

🔐 इस डिवाइस से पुष्टि करें

उपयोगकर्ताओं की पुष्टि करने के लिए, इस हार्डवेयर सुरक्षा डिवाइस से मज़बूत, प्रमाणित, और ऑरिजिन के स्कोप वाला सार्वजनिक पासकोड बनाने के लिए, WebAuthn का इस्तेमाल करें. इस सुविधा में ब्लूटूथ, एनएफ़सी, और यूएसबी-रोमिंग U2F या FIDO2 Authenticator के इस्तेमाल की सुविधा है. इन्हें सुरक्षा कुंजियां भी कहा जाता है. इनकी मदद से, उपयोगकर्ता अपने फ़िंगरप्रिंट या स्क्रीन लॉक के ज़रिए पहचान की पुष्टि भी कर सकते हैं. अपना पहला WebAuthn ऐप्लिकेशन बनाएं देखें.

अगर यह डिवाइस किसी दूसरे तरह का हार्डवेयर सुरक्षा डिवाइस (जैसे कि क्रिप्टो करंसी वॉलेट) है, तो एक लो-लेवल एपीआई इस समस्या को हल करने का तरीका हो सकता है. यात्रा शुरू करने के लिए, अपने डिवाइस से कनेक्ट करने का तरीका जानें.

🗄 इस डिवाइस पर फ़ाइलें ऐक्सेस करें

उपयोगकर्ता के डिवाइस पर मौजूद फ़ाइलों और फ़ोल्डर में किए गए बदलावों को सीधे पढ़ने और उनमें सेव करने के लिए, File System Access API का इस्तेमाल करें. अगर यह सुविधा उपलब्ध नहीं है, तो उपयोगकर्ता से ब्राउज़र के डायलॉग बॉक्स से लोकल फ़ाइलें चुनने और उन फ़ाइलों का कॉन्टेंट पढ़ने के लिए कहने के लिए, फ़ाइल एपीआई का इस्तेमाल करें.

अगर इनमें से कोई भी विकल्प आपके काम का नहीं है, तो लो-लेवल वाले एपीआई से समस्या को हल किया जा सकता है. यात्रा शुरू करने के लिए, अपने डिवाइस से कनेक्ट करने का तरीका जानें.

🧲 इस डिवाइस पर सेंसर ऐक्सेस करें

मोशन सेंसर (जैसे, एक्सलरोमीटर या जाइरोस्कोप) और आस-पास की रोशनी या आस-पास की रोशनी या मैग्नेटोमीटर जैसे सेंसर की वैल्यू पढ़ने के लिए, जेनेरिक सेंसर एपीआई का इस्तेमाल करें. अगर यह सुविधा उपलब्ध नहीं है, तो मोबाइल डिवाइसों में पहले से मौजूद एक्सलरोमीटर, जाइरोस्कोप, और कंपास को ऐक्सेस करने के लिए, DeviceMotion और DeviceOrientation इवेंट का इस्तेमाल करें.

अगर यह आपके लिए काम नहीं करता है, तो एक लो-लेवल एपीआई इसका इस्तेमाल किया जा सकता है. यात्रा शुरू करने के लिए, अपने डिवाइस से कनेक्ट करने का तरीका जानें.

🛰 इस डिवाइस पर जीपीएस निर्देशांक ऐक्सेस करें

इस डिवाइस पर उपयोगकर्ता की मौजूदा जगह के अक्षांश और देशांतर पाने के लिए, Geolocation API का इस्तेमाल करें.

अगर यह आपके लिए काम नहीं करता है, तो एक लो-लेवल एपीआई इसका इस्तेमाल किया जा सकता है. यात्रा शुरू करने के लिए, अपने डिवाइस से कनेक्ट करने का तरीका जानें.

🔋 इस डिवाइस की बैटरी देखें

बैटरी के चार्ज होने के लेवल के बारे में होस्ट की जानकारी पाने के लिए, बैटरी एपीआई का इस्तेमाल करें. साथ ही, बैटरी लेवल या चार्जिंग की स्थिति में बदलाव होने पर सूचना पाएं.

अगर यह आपके लिए काम नहीं करता है, तो एक लो-लेवल एपीआई इसका इस्तेमाल किया जा सकता है. यात्रा शुरू करने के लिए, अपने डिवाइस से कनेक्ट करने का तरीका जानें.

📢 इस डिवाइस से नेटवर्क पर कम्यूनिकेट करें

लोकल नेटवर्क में, किसी रिमोट प्लेबैक डिवाइस (जैसे कि स्मार्ट टीवी या वायरलेस स्पीकर) पर ऑडियो और/या वीडियो ब्रॉडकास्ट करने के लिए, रिमोट प्लेबैक एपीआई का इस्तेमाल करें. इसके अलावा, दूसरी स्क्रीन पर वेब पेज को रेंडर करने के लिए, प्रज़ेंटेशन एपीआई का इस्तेमाल किया जा सकता है. जैसे, एचडीएमआई केबल से कनेक्ट किया गया सेकंडरी डिसप्ले या वायरलेस तरीके से कनेक्ट किया गया स्मार्ट टीवी.

अगर यह डिवाइस किसी वेब सर्वर को दिखाता है, तो इस डिवाइस से कुछ डेटा फ़ेच करने के लिए, फ़ेच एपीआई और/या WebSockets का इस्तेमाल करें. इसके लिए, सही एंडपॉइंट पर जाएं. हालांकि, वेब पर टीसीपी और यूडीपी सॉकेट उपलब्ध नहीं हैं, लेकिन इंटरैक्टिव, दो-तरफ़ा, और मल्टीप्लेक्स कनेक्शन मैनेज करने के लिए, WebTransport का इस्तेमाल करें. ध्यान दें कि WebRTC का इस्तेमाल पीयर-टू-पीयर प्रोटोकॉल का इस्तेमाल करके, अन्य ब्राउज़र से रीयल-टाइम में डेटा शेयर करने के लिए भी किया जा सकता है.

🧱 अपने डिवाइस से बातचीत करने का तरीका जानें

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

  • वेब एनएफ़सी की मदद से, जब डिवाइस उपयोगकर्ता के डिवाइस के करीब हो (आम तौर पर 5 से 10 सें॰मी॰ या 2–4 इंच) तब इस पर पढ़ें और लिखें. NXP की तरफ़ से एनएफ़सी TagInfo की मदद से, रिवर्स इंजीनियरिंग के लिए इस डिवाइस का कॉन्टेंट ब्राउज़ किया जा सकता है.

  • वेब ब्लूटूथ के ज़रिए, इस डिवाइस को ब्लूटूथ कम ऊर्जा कनेक्शन के ज़रिए कनेक्ट करें. स्टैंडर्ड ब्लूटूथ GATT सेवाओं (जैसे, बैटरी सेवा) का इस्तेमाल करने पर, इस बारे में बातचीत करना बहुत आसान होना चाहिए, क्योंकि इनके काम करने के तरीके के बारे में पूरी जानकारी मौजूद है. अगर नहीं, तो फिर आपको इस डिवाइस के लिए कुछ हार्डवेयर दस्तावेज़ ढूंढने होंगे या इसे रिवर्स इंजीनियरिंग करना होगा. इसके लिए, Chromium पर आधारित ब्राउज़र में nRF Connect for Mobile जैसे बाहरी टूल और पहले से मौजूद ब्राउज़र टूल, जैसे कि इंटरनल पेज about://bluetooth-internals का इस्तेमाल किया जा सकता है. उरी शेक का रिवर्स-इंजीनियरिंग एक ब्लूटूथ लाइट बल्ब देखें. ध्यान दें कि ब्लूटूथ डिवाइस, एचआईडी या सीरियल प्रोटोकॉल भी बोल सकते हैं.

अगर तार वाला नेटवर्क हो, तो इन एपीआई को इसी क्रम में देखें:

  1. WebHID के साथ, कलेक्शन के ज़रिए एचआईडी रिपोर्ट और रिपोर्ट डिस्क्रिप्टर को समझना, इस डिवाइस के बारे में समझने के लिए ज़रूरी है. वेंडर के दस्तावेज़ के बिना, इस डिवाइस पर यह काम करना मुश्किल हो सकता है. Wireshark जैसे टूल से आपको रिवर्स इंजीनियरिंग करने में मदद मिल सकती है. HID एक्सप्लोरर वेब ऐप्लिकेशन का इस्तेमाल करके भी, एचआईडी डिवाइसों की जानकारी को ऐसे फ़ॉर्मैट में डाला जा सकता है जिसे कोई भी व्यक्ति आसानी से पढ़ सके.

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

  3. WebUSB की मदद से, इस डिवाइस के लिए सही दस्तावेज़ और इस डिवाइस पर काम करने वाले यूएसबी कमांड के बिना, यह करना काफ़ी मुश्किल होता है. सुज़ हिंटन की वेबसाइट पर WebUSB और इसकी शानदार क्षमता के बारे में जानकारी वाले वीडियो देखें. रॉ यूएसबी ट्रैफ़िक को कैप्चर करके और यूएसबी डिस्क्रिप्टर की जांच करके, इस डिवाइस की रिवर्स इंजीनियरिंग भी की जा सकती है. इसके लिए, Wireshark जैसे बाहरी टूल और पहले से मौजूद ब्राउज़र टूल जैसे कि Chromium पर काम करने वाले ब्राउज़र में पहले से मौजूद पेज about://usb-internals का इस्तेमाल करें.

स्वीकार हैं

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

Unsplash पर दारिया ट्रिफ़ानावा ने फ़ोटो ली है.