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

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

ফ্রাঁসোয়া বিউফোর্ট
François Beaufort

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

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

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

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

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

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

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

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

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

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

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

🔐 এই ডিভাইস দিয়ে প্রমাণীকরণ করুন

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

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

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

ব্যবহারকারীর ডিভাইসে ফাইল এবং ফোল্ডারে সরাসরি পরিবর্তনগুলি পড়তে এবং সংরক্ষণ করতে ফাইল সিস্টেম অ্যাক্সেস API ব্যবহার করুন৷ যদি উপলব্ধ না হয়, একটি ব্রাউজার ডায়ালগ থেকে স্থানীয় ফাইল নির্বাচন করতে ব্যবহারকারীকে জিজ্ঞাসা করতে ফাইল API ব্যবহার করুন এবং তারপর সেই ফাইলগুলির বিষয়বস্তু পড়ুন।

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

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

মোশন সেন্সর (যেমন অ্যাক্সিলোমিটার বা জাইরোস্কোপ) এবং পরিবেশগত সেন্সর (যেমন পরিবেষ্টিত আলো, ম্যাগনেটোমিটার) থেকে কাঁচা সেন্সর মানগুলি পড়তে জেনেরিক সেন্সর API ব্যবহার করুন। উপলব্ধ না হলে, মোবাইল ডিভাইসে অন্তর্নির্মিত অ্যাক্সিলোমিটার, জাইরোস্কোপ এবং কম্পাসে অ্যাক্সেস পেতে ডিভাইসমোশন এবং ডিভাইস অরিয়েন্টেশন ইভেন্টগুলি ব্যবহার করুন।

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

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

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

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

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

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

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

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

স্থানীয় নেটওয়ার্কে, দূরবর্তী প্লেব্যাক ডিভাইসে অডিও এবং/অথবা ভিডিও সম্প্রচার করতে রিমোট প্লেব্যাক API ব্যবহার করুন (যেমন একটি স্মার্ট টিভি বা একটি ওয়্যারলেস স্পিকার) অথবা একটি দ্বিতীয় স্ক্রিনে একটি ওয়েব পৃষ্ঠা রেন্ডার করতে উপস্থাপনা API ব্যবহার করুন (যেমন একটি মাধ্যমিক একটি HDMI তারের সাথে সংযুক্ত ডিসপ্লে বা বেতারভাবে সংযুক্ত একটি স্মার্ট টিভি)।

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

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

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

  • ওয়েব NFC এর সাথে, এই ডিভাইসটি পড়ুন এবং লিখুন যখন এটি ব্যবহারকারীর ডিভাইসের কাছাকাছি থাকে (সাধারণত 5-10 সেমি, 2-4 ইঞ্চি)। NXP দ্বারা NFC TagInfo- এর মতো টুলগুলি আপনাকে রিভার্স-ইঞ্জিনিয়ারিং উদ্দেশ্যে এই ডিভাইসের বিষয়বস্তু ব্রাউজ করার অনুমতি দেয়।

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

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

তারযুক্ত হলে, এই নির্দিষ্ট ক্রমে এই APIগুলি দেখুন:

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

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

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

স্বীকৃতি

এই নিবন্ধটি পর্যালোচনা করার জন্য রিলি গ্রান্ট , থমাস স্টেইনার এবং কায়স বাস্ককে ধন্যবাদ।

আনস্প্ল্যাশে ডরিয়া ট্রিফানাভা ছবি তুলেছেন।