ওয়েবে হার্ডওয়্যার ডিভাইস অ্যাক্সেস করা

আপনার পছন্দের হার্ডওয়্যার ডিভাইসের সাথে যোগাযোগ করার জন্য উপযুক্ত API বেছে নিন।

François Beaufort
François Beaufort

এই গাইডের লক্ষ্য হল, ওয়েবে হার্ডওয়্যার ডিভাইসের (যেমন, ওয়েবক্যাম, মাইক্রোফোন ইত্যাদি) সাথে যোগাযোগ করার জন্য সেরা API বেছে নিতে আপনাকে সাহায্য করা। "সেরা" বলতে আমি বোঝাতে চাইছি যে এটি আপনাকে সবচেয়ে কম পরিশ্রমে আপনার প্রয়োজনীয় সবকিছু প্রদান করে। অন্যভাবে বলতে গেলে, আপনি জানেন যে আপনি কোন সাধারণ সমস্যার সমাধান করতে চান (যেমন, ভিডিও অ্যাক্সেস করা) কিন্তু আপনি জানেন না কোন API ব্যবহার করতে হবে বা এটি করার অন্য কোনও উপায় আছে কিনা।

আমি প্রায়ই দেখি যে ওয়েব ডেভেলপাররা হাই-লেভেল API সম্পর্কে না জেনেই লো-লেভেল API ব্যবহার করতে শুরু করে দেন। হাই-লেভেল API ব্যবহার করা অনেক সহজ এবং এটি আরও ভালো UX প্রদান করে। তাই, এই নির্দেশিকা প্রথমে উচ্চ-স্তরের API সাজেস্ট করার মাধ্যমে শুরু হয়, তবে উচ্চ-স্তরের API আপনার প্রয়োজন পূরণ করতে পারছে না বলে আপনি নির্ধারণ করলে, নিম্ন-স্তরের API-এর কথাও উল্লেখ করে।

🕹 এই ডিভাইস থেকে ইনপুট ইভেন্ট রিসিভ করা

কীবোর্ড ও পয়েন্টার ইভেন্ট শোনার চেষ্টা করুন। এই ডিভাইসটি গেম কন্ট্রোলার হলে, কোন বোতাম প্রেস করা হচ্ছে এবং কোন অক্ষ সরানো হচ্ছে তা জানতে Gamepad API ব্যবহার করুন।

এইসব বিকল্পের মধ্যে কোনওটিই আপনার জন্য কাজ না করলে, লো-লেভেল API সমাধান হতে পারে। আপনার যাত্রা শুরু করতে আপনার ডিভাইসের সাথে কীভাবে যোগাযোগ করবেন তা জানুন।

📸 এই ডিভাইস থেকে অডিও এবং ভিডিও অ্যাক্সেস করুন

এই ডিভাইস থেকে লাইভ অডিও ও ভিডিও স্ট্রিম পেতে MediaDevices.getUserMedia() ব্যবহার করুন এবং অডিও ও ভিডিও ক্যাপচার করা সম্পর্কে জানুন। এছাড়াও, আপনি ক্যামেরার প্যান, টিল্ট ও জুম এবং অন্যান্য ক্যামেরা সেটিংস যেমন উজ্জ্বলতা ও কন্ট্রাস্ট কন্ট্রোল করতে এবং এমনকি স্টিল ইমেজ তুলতে পারবেন। অডিওতে এফেক্ট যোগ করতে, অডিও ভিজ্যুয়ালাইজেশন তৈরি করতে অথবা স্পেশাল এফেক্ট (যেমন প্যানিং) প্রয়োগ করতে Web Audio ব্যবহার করা যেতে পারে। এছাড়াও, Chrome-এ ওয়েব অডিও অ্যাপের পারফর্ম্যান্সের প্রোফাইল কীভাবে তৈরি করবেন তা চেক করে দেখুন।

এইসব বিকল্পের মধ্যে কোনওটিই আপনার জন্য কাজ না করলে, লো-লেভেল API সমাধান হতে পারে। আপনার যাত্রা শুরু করতে আপনার ডিভাইসের সাথে কীভাবে যোগাযোগ করবেন তা জানুন।

🖨 এই ডিভাইসে প্রিন্ট করুন

ব্রাউজার ডায়ালগ খুলতে window.print() ব্যবহার করুন, যাতে ব্যবহারকারী বর্তমান ডকুমেন্ট প্রিন্ট করার জন্য গন্তব্য হিসেবে এই ডিভাইস বেছে নিতে পারেন।

এটি আপনার ক্ষেত্রে কাজ না করলে, লো-লেভেল API ব্যবহার করে সমস্যার সমাধান করা যেতে পারে। আপনার যাত্রা শুরু করতে আপনার ডিভাইসের সাথে কীভাবে যোগাযোগ করবেন তা জানুন।

🔐 এই ডিভাইসের মাধ্যমে যাচাই করুন

ব্যবহারকারীদের যাচাই করতে এই হার্ডওয়্যার নিরাপত্তা ডিভাইসের সাথে একটি শক্তিশালী, অ্যাটেস্ট করা এবং অরিজিন-স্কোপড সর্বজনীন-কী ক্রেডেনশিয়াল তৈরি করতে WebAuthn ব্যবহার করুন। এটি ব্লুটুথ, NFC এবং USB-রোমিং U2F বা FIDO2 যাচাইকারী —নিরাপত্তা কী হিসেবেও পরিচিত— এবং প্ল্যাটফর্ম যাচাইকারী ব্যবহার করতে দেয়, যার মাধ্যমে ব্যবহারকারীরা তাদের ফিঙ্গারপ্রিন্ট বা স্ক্রিন লক ব্যবহার করে যাচাই করতে পারেন। আপনার প্রথম WebAuthn অ্যাপ তৈরি করুন লিঙ্কটি চেক করে দেখুন।

এই ডিভাইসটি অন্য ধরনের হার্ডওয়্যার নিরাপত্তা ডিভাইস (যেমন, ক্রিপ্টোকারেন্সি ওয়ালেট) হলে, লো-লেভেল API সমাধান হতে পারে। আপনার যাত্রা শুরু করতে আপনার ডিভাইসের সাথে কীভাবে যোগাযোগ করবেন তা জানুন দেখুন।

🗄 এই ডিভাইসে ফাইল অ্যাক্সেস করুন

ব্যবহারকারীর ডিভাইসে থাকা ফাইল ও ফোল্ডার থেকে সরাসরি পড়তে ও পরিবর্তন সেভ করতে ফাইল সিস্টেম অ্যাক্সেস API ব্যবহার করুন। উপলভ্য না থাকলে, ব্রাউজার ডায়ালগ থেকে স্থানীয় ফাইল বেছে নিতে ব্যবহারকারীকে জিজ্ঞাসা করতে File API ব্যবহার করুন এবং তারপর সেইসব ফাইলের কন্টেন্ট পড়ুন।

এইসব বিকল্পের মধ্যে কোনওটিই আপনার জন্য কাজ না করলে, লো-লেভেল API সমাধান হতে পারে। আপনার যাত্রা শুরু করতে আপনার ডিভাইসের সাথে কীভাবে যোগাযোগ করবেন তা জানুন।

🧲 এই ডিভাইসে সেন্সর অ্যাক্সেস করুন

মোশন সেন্সর (যেমন, অ্যাক্সিলারোমিটার বা জাইরোস্কোপ) এবং এনভায়রনমেন্টাল সেন্সর (যেমন, অ্যাম্বিয়েন্ট লাইট, ম্যাগনেটোমিটার) থেকে র' সেন্সর ভ্যালু পড়তে জেনেরিক সেন্সর API ব্যবহার করুন। উপলভ্য না থাকলে, মোবাইল ডিভাইসে বিল্ট-ইন অ্যাকসিলরোমিটার, জাইরোস্কোপ ও কম্পাস অ্যাক্সেস করতে DeviceMotion ও DeviceOrientation ইভেন্ট ব্যবহার করুন।

এটি আপনার জন্য কাজ না করলে, লো-লেভেল API সমাধান হতে পারে। আপনার যাত্রা শুরু করতে আপনার ডিভাইসের সাথে কীভাবে যোগাযোগ করবেন তা জানুন।

🛰 এই ডিভাইসে জিপিএস স্থানাঙ্ক অ্যাক্সেস করুন

এই ডিভাইসে ব্যবহারকারীর বর্তমান অবস্থানের অক্ষাংশ এবং দ্রাঘিমাংশ পেতে Geolocation API ব্যবহার করুন।

এটি আপনার জন্য কাজ না করলে, লো-লেভেল API সমাধান হতে পারে। আপনার যাত্রা শুরু করতে আপনার ডিভাইসের সাথে কীভাবে যোগাযোগ করবেন তা জানুন।

🔋 এই ডিভাইসের ব্যাটারি চেক করুন

ব্যাটারির চার্জ লেভেল সম্পর্কে হোস্টের তথ্য পেতে Battery API ব্যবহার করুন এবং ব্যাটারির লেভেল বা চার্জিং স্ট্যাটাস পরিবর্তন হলে বিজ্ঞপ্তি পান।

এটি আপনার জন্য কাজ না করলে, লো-লেভেল API সমাধান হতে পারে। আপনার যাত্রা শুরু করতে আপনার ডিভাইসের সাথে কীভাবে যোগাযোগ করবেন তা জানুন।

📞 নেটওয়ার্কের মাধ্যমে এই ডিভাইসের সাথে যোগাযোগ করুন

লোকাল নেটওয়ার্কে, রিমোট প্লেব্যাক ডিভাইসে (যেমন, স্মার্ট টিভি বা ওয়্যারলেস স্পিকার) অডিও এবং/অথবা ভিডিও ব্রডকাস্ট করতে Remote Playback API ব্যবহার করুন অথবা দ্বিতীয় স্ক্রিনে (যেমন, HDMI কেবলের মাধ্যমে কানেক্ট করা সেকেন্ডারি ডিসপ্লে বা ওয়্যারলেস কানেকশন থাকা স্মার্ট টিভি) ওয়েব পেজ রেন্ডার করতে Presentation API ব্যবহার করুন।

এই ডিভাইস কোনও ওয়েব সার্ভার এক্সপোজ করলে, উপযুক্ত এন্ডপয়েন্ট হিট করে এই ডিভাইস থেকে কিছু ডেটা ফেচ করতে Fetch API এবং/অথবা WebSockets ব্যবহার করুন। ওয়েবে TCP ও UDP সকেট উপলভ্য না থাকলেও, ইন্টার‍্যাক্টিভ, দ্বিমুখী ও মাল্টিপ্লেক্সড নেটওয়ার্ক কানেকশন ম্যানেজ করতে WebTransport চেক করে দেখুন। মনে রাখবেন যে WebRTC-এর মাধ্যমে পিয়ার-টু-পিয়ার প্রোটোকল ব্যবহার করে অন্যান্য ব্রাউজারের সাথে রিয়েল-টাইমে ডেটা কমিউনিকেট করা যায়।

🧱 আপনার ডিভাইসের সাথে কীভাবে যোগাযোগ করবেন তা জানুন

ডিভাইসের সাথে আপনার ফিজিক্যাল কানেকশনের প্রকৃতির উপর নির্ভর করে কোন লো-লেভেল API ব্যবহার করবেন সেই সিদ্ধান্ত নেওয়া হয়। এটি ওয়্যারলেস হলে, খুব কম রেঞ্জের ওয়্যারলেস কানেকশনের জন্য Web NFC এবং আশেপাশের ওয়্যারলেস ডিভাইসের জন্য Web Bluetooth বা Web Serial চেক করুন।

  • Web NFC-এর মাধ্যমে, এই ডিভাইসে রিড ও রাইট করুন যখন এটি ব্যবহারকারীর ডিভাইসের খুব কাছাকাছি (সাধারণত ৫–১০ সেমি, ২–৪ ইঞ্চি) থাকে। NXP-এর NFC TagInfo-এর মতো টুল আপনাকে রিভার্স-ইঞ্জিনিয়ারিংয়ের উদ্দেশ্যে এই ডিভাইসের কন্টেন্ট ব্রাউজ করার অনুমতি দেয়।

  • ওয়েব ব্লুটুথ-এর সাহায্যে, ব্লুটুথ লো এনার্জি কানেকশনের মাধ্যমে এই ডিভাইসে কানেক্ট করুন। স্ট্যান্ডার্ডাইজড ব্লুটুথ GATT পরিষেবা (যেমন ব্যাটারি পরিষেবা) ব্যবহার করলে, এটির সাথে যোগাযোগ করা খুব সহজ হবে, কারণ এর ব্যবহার ভালভাবে ডকুমেন্ট করা আছে। যদি না হয়, তাহলে এই মুহূর্তে, আপনাকে এই ডিভাইসের জন্য কিছু হার্ডওয়্যার ডকুমেন্টেশন খুঁজতে হবে অথবা এটি রিভার্স-ইঞ্জিনিয়ার করতে হবে। আপনি nRF Connect for Mobile-এর মতো এক্সটার্নাল টুল এবং বিল্ট-ইন ব্রাউজার টুল ব্যবহার করতে পারেন, যেমন Chromium-ভিত্তিক ব্রাউজারে ইন্টার্নাল পৃষ্ঠা about://bluetooth-internals। Uri Shaked-এর ব্লুটুথ লাইটবাল্বের রিভার্স-ইঞ্জিনিয়ারিং দেখুন। মনে রাখবেন, ব্লুটুথ ডিভাইস HID বা সিরিয়াল প্রোটোকলও ব্যবহার করতে পারে।

  • ব্লুটুথের মাধ্যমে সিরিয়াল-এর সাহায্যে, স্ট্যান্ডার্ডাইজড সিরিয়াল পোর্ট প্রোফাইল (SPP)-এর মতো পেয়ার করা ব্লুটুথ ক্লাসিক ডিভাইসে RFCOMM পরিষেবার সাথে যোগাযোগ করুন। তবে, কাস্টম RFCOMM-ভিত্তিক পরিষেবার জন্য, requestPort()-এ পাস করার জন্য পরিষেবার UUID-এর জন্য আপনাকে ডিভাইসের ভেন্ডর ডকুমেন্টেশন দেখতে হবে।

ওয়্যার্ড হলে, এই নির্দিষ্ট ক্রমে API চেক করুন:

  1. WebHID-এর মাধ্যমে, কালেকশন থেকে HID রিপোর্ট ও রিপোর্ট ডেসক্রিপ্টর বোঝা এই ডিভাইস সম্পর্কে আপনার ধারণার মূল চাবিকাঠি। এই ডিভাইসের জন্য ভেন্ডর ডকুমেন্টেশন ছাড়া এটি করা চ্যালেঞ্জিং হতে পারে। Wireshark-এর মতো টুল আপনাকে এটি রিভার্স-ইঞ্জিনিয়ার করতে সাহায্য করতে পারে। এছাড়াও, আপনি HID Explorer ওয়েব অ্যাপ ব্যবহার করে HID ডিভাইসের তথ্য মানুষের-পঠনযোগ্য ফর্ম্যাটে ডাম্প করতে পারেন।

  2. Web Serial-এর মাধ্যমে, এই ডিভাইসের জন্য বিক্রেতার ডকুমেন্টেশন এবং এই ডিভাইসটি কোন কমান্ডগুলি সমর্থন করে তা ছাড়া, এটি কঠিন কিন্তু এখনও ভাগ্যবান অনুমানের সাথে সম্ভব। Wireshark-এর মতো টুল ব্যবহার করে র USB ট্রাফিক ক্যাপচার করার মাধ্যমে এই ডিভাইসের রিভার্স-ইঞ্জিনিয়ারিং করা যেতে পারে। এছাড়াও, আপনি Serial Terminal ওয়েব অ্যাপ ব্যবহার করে এই ডিভাইসের সাথে এক্সপেরিমেন্ট করতে পারেন, যদি এটি মানুষের-পঠনযোগ্য প্রোটোকল ব্যবহার করে।

  3. WebUSB-এর ক্ষেত্রে, এই ডিভাইসের জন্য স্পষ্ট ডকুমেন্টেশন এবং এই ডিভাইসটি কোন USB কমান্ড সমর্থন করে তা না থাকলে, এটি কঠিন কিন্তু এখনও ভাগ্যবান অনুমানের মাধ্যমে সম্ভব। Suz Hinton-এর WebUSB এবং এর অসাধারণ সম্ভাবনা এক্সপ্লোর করা দেখুন। এছাড়াও, আপনি র-USB ট্রাফিক ক্যাপচার করে এবং Wireshark-এর মতো এক্সটার্নাল টুল এবং Chromium-ভিত্তিক ব্রাউজারে ইন্টার্নাল পৃষ্ঠা about://usb-internals-এর মতো বিল্ট-ইন ব্রাউজার টুলের সাহায্যে USB ডেসক্রিপ্টর পরীক্ষা করে এই ডিভাইসটি রিভার্স-ইঞ্জিনিয়ার করতে পারেন।

স্বীকৃতি

এই নিবন্ধটি পর্যালোচনা করার জন্য Reilly Grant, Thomas Steiner এবং Kayce Basques-কে ধন্যবাদ।