Matter-এ থাকা ডিভাইসের একটি সুনির্দিষ্ট ডেটা মডেল (DM) আছে, যা ডিভাইসের ফিচারের একটি হায়ারের্কিক্যাল মডেলিং। এই হায়ারার্কির সবচেয়ে উপরের লেভেলে ডিভাইস থাকে।
ডিভাইস ও এন্ডপয়েন্ট
স্মার্টফোন ও হোম অ্যাসিস্ট্যান্ট সহ সব ডিভাইস নোড১ দিয়ে তৈরি। Node হল নেটওয়ার্কে অনন্যভাবে শনাক্তযোগ্য ও অ্যাড্রেস করা যায় এমন রিসোর্স যা ব্যবহারকারী ফাংশনালি সম্পূর্ণ হিসেবে বুঝতে পারেন। Matter-এ নেটওয়ার্ক কমিউনিকেশন একটি নোড থেকে শুরু এবং শেষ হয়।
নোড হল এন্ডপয়েন্ট-এর একটি সংগ্রহ। প্রতিটি এন্ডপয়েন্ট একটি ফিচার সেটকে এনক্লোজ করে। যেমন, একটি এন্ডপয়েন্ট আলো জ্বালানো সংক্রান্ত ফাংশনের সাথে সম্পর্কিত হতে পারে, অন্যটি মোশন ডিটেকশন এবং আরেকটি ডিভাইস OTA-এর মতো ইউটিলিটি সংক্রান্ত হতে পারে।
Node-এর ভূমিকা
Node-এর ভূমিকা হল সম্পর্কিত আচরণের একটি সেট। প্রতিটি নোডের এক বা একাধিক ভূমিকা থাকতে পারে। নোড রোলের মধ্যে এগুলি অন্তর্ভুক্ত:
- কমিশনার: এমন একটি Node যা কমিশনিং করে।
- কন্ট্রোলার: একটি Node যা এক বা একাধিক Node নিয়ন্ত্রণ করতে পারে। উদাহরণ হিসেবে Google Home app (GHA), Google Assistant ও Google Nest Hub (2nd gen)-এর কথা বলা যেতে পারে। কিছু ডিভাইসের ধরন, যেমন লাইট অন/অফ করার সুইচ, কন্ট্রোলারের ভূমিকা পালন করে।
- কন্ট্রোলি: এক বা একাধিক নোড দ্বারা নিয়ন্ত্রিত হতে পারে এমন নোড। বেশিরভাগ ডিভাইসের ধরন কন্ট্রোলের ভূমিকা পালন করতে পারে, তবে কিছু ডিভাইসের ধরন কন্ট্রোলারের ভূমিকা পালন করে, যেমন লাইট চালু/বন্ধ করার সুইচ। লাইট চালু/বন্ধ করার সুইচ শুধুমাত্র কন্ট্রোলার হতে পারে। এটি কন্ট্রোলি হতে পারবে না।
- OTA প্রোভাইডার: এমন একটি নোড যা OTA সফ্টওয়্যার আপডেট প্রদান করতে পারে।
- OTA অনুরোধকারী: এমন একটি নোড যা OTA সফ্টওয়্যার আপডেটের জন্য অনুরোধ করতে পারে।
ক্লাস্টার
এন্ডপয়েন্ট-এর মধ্যে একটি নোডে এক বা একাধিক ক্লাস্টার থাকে। এগুলি ডিভাইস হায়ারার্কির আরেকটি ধাপ, কারণ এগুলি নির্দিষ্ট কার্যকারিতাকে গ্রুপ করে, যেমন স্মার্ট প্লাগে চালু/বন্ধ ক্লাস্টার বা ডিম করা যায় এমন লাইট এন্ডপয়েন্টে লেভেল কন্ট্রোল ক্লাস্টার।
একটি নোডে একাধিক এন্ডপয়েন্টও থাকতে পারে, যার প্রতিটি একই কার্যকারিতার একটি ইনস্ট্যান্স তৈরি করে। যেমন, একটি লাইট ফিক্সচার আলাদা আলাদা লাইটের স্বতন্ত্র কন্ট্রোল দেখাতে পারে অথবা একটি পাওয়ার স্ট্রিপ আলাদা আলাদা সকেটের কন্ট্রোল দেখাতে পারে।
অ্যাট্রিবিউট
শেষ লেভেলে আমরা অ্যাট্রিবিউট খুঁজে পাব, যা নোডের মাধ্যমে হোল্ড করা স্টেট, যেমন লেভেল কন্ট্রোল ক্লাস্টারের বর্তমান লেভেল অ্যাট্রিবিউট। অ্যাট্রিবিউট uint8, স্ট্রিং বা অ্যারের মতো বিভিন্ন ডেটার ধরন হিসেবে সংজ্ঞায়িত করা হতে পারে।
কমান্ড
অ্যাট্রিবিউট ছাড়াও, ক্লাস্টারে কমান্ড থাকে, যা হল অ্যাকশন যা সম্পূর্ণ করা যেতে পারে। এগুলি Matter-এর DM-এ রিমোট প্রসিডিওর কলের সমতুল্য। কমান্ডগুলি ক্রিয়া-এর মতো, যেমন ডোর লক ক্লাস্টারে দরজা লক করুন। কমান্ডের মাধ্যমে উত্তর ও ফলাফল জেনারেট করা হতে পারে; Matter-এ, এই ধরনের উত্তরকেও কমান্ড হিসেবে সংজ্ঞায়িত করা হয়, যা বিপরীত দিকে যায়।
ইভেন্ট
সবশেষে, ক্লাস্টারে ইভেন্টও থাকতে পারে, যা অতীতের স্টেট ট্রানজিশনের রেকর্ড হিসেবে ভাবা যেতে পারে। অ্যাট্রিবিউট বর্তমান অবস্থা দেখায়, ইভেন্ট হল অতীতের জার্নাল এবং এতে একঘেয়েভাবে বাড়তে থাকা কাউন্টার, টাইমস্ট্যাম্প ও অগ্রাধিকার অন্তর্ভুক্ত থাকে। এগুলি স্টেট ট্রানজিশন ক্যাপচার করার পাশাপাশি ডেটা মডেলিং করতে সাহায্য করে যা অ্যাট্রিবিউটের মাধ্যমে সহজে করা যায় না।
Endpoint 0 ইউটিলিটি ক্লাস্টার-এর জন্য রিজার্ভ করা আছে। ইউটিলিটি ক্লাস্টার হল নির্দিষ্ট ক্লাস্টার যা এন্ডপয়েন্টে সার্ভিসিং কার্যকারিতা এনক্লোজ করে, যেমন ডিসকভারি, অ্যাড্রেসিং, ডায়াগনস্টিক ও সফ্টওয়্যার আপডেট। অন্যদিকে, অ্যাপ্লিকেশন ক্লাস্টার চালু/বন্ধ করা বা তাপমাত্রা পরিমাপ করার মতো প্রাথমিক অ্যাকশনে সহায়তা করে।
ডিভাইসের ধরন
ডিভাইস প্রস্তুতকারক নতুন ডিভাইস তৈরি করার সময়, কোন ক্লাস্টার কম্বিনেশন ডিভাইস হিসেবে অন্তর্ভুক্ত করা উচিত?
Matter স্পেসিফিকেশনের জন্য ডিভাইসটিকে এক বা একাধিক ডিভাইসের ধরন বাস্তবায়ন বা প্রসারিত করতে হবে। ডিভাইসের ধরন হল বাধ্যতামূলক ও ঐচ্ছিক ক্লাস্টারের সংগ্রহ যা কোনও ফিজিক্যাল ডিভাইসের টপ-লেভেল অ্যাট্রিবিউটকে সংজ্ঞায়িত করে, যেমন ডিম করা যায় এমন আলো, ডোর লক অথবা ভিডিও প্লেয়ার।
ডিভাইসের ধরন Matter স্পেসিফিকেশন মূল ডকুমেন্টে উল্লেখ করা নেই, তবে একটি সহগামী ডকুমেন্টে উল্লেখ করা আছে: ডিভাইস লাইব্রেরি। একইভাবে, সব অ্যাপ্লিকেশন ক্লাস্টার অ্যাপ্লিকেশন ক্লাস্টার লাইব্রেরিতে সংজ্ঞায়িত করা হয়। এই তিনটি ডকুমেন্ট Connectivity Standards Alliance (Alliance) মেম্বারদের ওয়েবসাইটে পাওয়া যাবে।
ডিভাইসের ধরন প্রয়োগকারী প্রতিটি এন্ডপয়েন্টকে অবশ্যই সেই ডিভাইসের ধরনকে সংজ্ঞায়িত করে এমন বাধ্যতামূলক ক্লাস্টার প্রয়োগ করতে হবে। বাধ্যতামূলক ক্লাস্টার ছাড়াও, Endpoint অতিরিক্ত ক্লাস্টার প্রয়োগ করতে পারে, যার মধ্যে এক বা একাধিক ডিভাইসের ঐচ্ছিক ক্লাস্টার বা এমনকি ক্লাস্টার যা ডিভাইসের প্রকারের অংশ নয়।
ক্লায়েন্ট ও সার্ভার
ক্লাস্টার ক্লায়েন্ট ক্লাস্টার অথবা সার্ভার ক্লাস্টার হতে পারে। সার্ভার স্টেটফুল এবং অ্যাট্রিবিউট, ইভেন্ট ও কমান্ড হোল্ড করে, ক্লায়েন্ট হল স্টেটলেস এবং এর দায়িত্ব হল রিমোট সার্ভার ক্লাস্টারের সাথে ইন্টার্যাকশন শুরু করা, যার ফলে এগুলি পারফর্ম করা হয়:
- এর রিমোট অ্যাট্রিবিউট পড়ে এবং লেখে।
- এর রিমোট ইভেন্টের রিড।
- রিমোট কমান্ডের ইনভোকেশন।
DM একটি Node-এর মধ্যে হায়ারার্কিক্যাল হলেও, Node-এর মধ্যে সম্পর্ক হায়ারার্কিক্যাল নয়। Matter-এর নোডে কোনও উল্লম্ব কন্ট্রোলার/পেরিফেরাল বা লিডার/ফলোয়ার সম্পর্ক নেই। অন্যদিকে, সম্পর্কটি অনুভূমিক: যেকোনও ক্লাস্টার সার্ভার বা ক্লায়েন্ট হতে পারে। তাই, বিভিন্ন ক্লাস্টার ও কার্যকারিতার ক্ষেত্রে একটি নোড সার্ভার এবং ক্লায়েন্ট, দুটিই হতে পারে।
যেমন, আমাদের কাছে দুটি টেবিল ল্যাম্প থাকতে পারে: Node A এবং Node B। দুটি নোডই লাইট চালু/বন্ধ করা ডিভাইসের ধরন প্রয়োগ করে। এই ডিভাইসের ধরনের মধ্যে একটি চালু/বন্ধ সার্ভার ক্লাস্টার অন্তর্ভুক্ত থাকে যা তাদের সংশ্লিষ্ট ফিজিক্যাল লাইট আউটপুট নিয়ন্ত্রণ করে।
তবে, সাধারণ টেবিল ল্যাম্পের মতো, আমাদের ফিজিক্যাল ডিভাইসেও স্থানীয় চালু/বন্ধ করার সুইচের জন্য লাইট চালু/বন্ধ করার সুইচ ডিভাইসের ধরন অন্তর্ভুক্ত থাকবে। এই ডিভাইসের ধরনে অবশ্যই একটি চালু/বন্ধ ক্লায়েন্ট ক্লাস্টার প্রয়োগ করতে হবে যাতে এটি সার্ভার ক্লাস্টার নিয়ন্ত্রণ করতে পারে।
এই স্যাম্পেলে, Node A-তে চালু/বন্ধ ক্লায়েন্ট ক্লাস্টার Node A ও Node B-তে চালু/বন্ধ সার্ভার ক্লাস্টারের অ্যাট্রিবিউট পরিবর্তন করছে, যেখানে Node B-এর ক্লায়েন্ট ক্লাস্টার শুধুমাত্র Node B-তে সার্ভার ক্লাস্টার পরিবর্তন করছে।
পরবর্তী বিভাগে আমরা ক্লায়েন্ট এবং সার্ভার ক্লাস্টার কীভাবে ইন্টার্যাক্ট করে তার বিস্তারিত বিবরণ দেব: ইন্টার্যাকশন মডেল।
ডেসক্রিপটর ক্লাস্টার
নাম থেকে বোঝা যায়, ডেসক্রিপ্টর ক্লাস্টার সার্ভার ইন্ট্রোস্পেকশন তথ্য প্রদান করে। এটি এন্ডপয়েন্ট বর্ণনা করে এবং এগুলি গণনা করে:
- সার্ভার ক্লাস্টার।
- ক্লায়েন্ট ক্লাস্টার।
- ডিভাইসের ধরন।
- অতিরিক্ত এন্ডপয়েন্ট, যা পার্টস নামে পরিচিত।
প্রতিটি ডিভাইসের ধরনের জন্য ডেসক্রিপ্টর ক্লাস্টার প্রয়োগ করা প্রয়োজন। রুট ডিভাইসের ধরন এন্ডপয়েন্ট ০-তে উল্লেখ করা আছে। এটির Descriptor Cluster পড়লে, ক্লায়েন্ট উপলভ্য এন্ডপয়েন্টের সম্পূর্ণ ট্রি দেখতে পাবেন এবং প্রযোজ্য অপারেশন করতে পারবেন।
কমিশনার বা কন্ট্রোলিং ডিভাইস যেমন ফোন বা হাব, ডিভাইসের মডেল (লাইট, সুইচ, পাম্প, থার্মোস্ট্যাট) এবং ডিভাইসের নির্দিষ্ট ইনস্ট্যান্সের মাধ্যমে প্রয়োগ করা নির্দিষ্ট ফিচারগুলি তৈরি করতে ডিসক্রিপ্টর ক্লাস্টারে পাওয়া তথ্য ব্যবহার করতে পারে, যা ব্যবহারকারীকে সঠিক UI দেখায়।
সার্ভার ক্লাস্টার
ServerList অ্যাট্রিবিউট এন্ডপয়েন্টে ক্লাস্টার সার্ভারের তালিকা দেখায়।
ক্লায়েন্ট ক্লাস্টার
ClientList অ্যাট্রিবিউট এন্ডপয়েন্টে ক্লাস্টার ক্লায়েন্টদের তালিকাভুক্ত করে।
ডিভাইসের ধরনের তালিকা
DeviceTypeList অ্যাট্রিবিউট হল এন্ডপয়েন্ট দ্বারা সমর্থিত ডিভাইস প্রকারের একটি তালিকা, সাথে এর সংশ্লিষ্ট রিভিশন। এতে অন্তত একটি
ডিভাইসের ধরন থাকতে হবে।
পার্টসের তালিকা
PartsList-এ এই ডিভাইসের ধরন প্রয়োগ করার জন্য ব্যবহৃত এন্ডপয়েন্টের তালিকা থাকে।
এন্ডপয়েন্ট ০ (রুট নোড)-এর PartsList-এ এন্ডপয়েন্ট ০ (রুট নোড) ছাড়া ডিভাইসের সব এন্ডপয়েন্ট থাকে।
অন্যান্য এন্ডপয়েন্টের PartsList সাধারণত খালি থাকবে। যেমন, একটি
তাপমাত্রা সেন্সর একটি তাপমাত্রা পরিমাপ সার্ভার ক্লাস্টারকে বাধ্যতামূলক করে এবং অন্য কিছু
নয়।
অন্যান্য ডিভাইসের ধরন একাধিক DeviceType ইনস্ট্যান্সের ট্রি স্ট্রাকচারে কম্পোজ করা হতে পারে। যেমন, ভিডিও প্লেয়ার ডিভাইসের ধরন টিভি, ভিডিও প্লেয়ার, স্পিকার এবং বিভিন্ন কন্টেন্ট অ্যাপ ডিভাইসের ধরন নিয়ে গঠিত হতে পারে, যার প্রতিটি আলাদা এন্ডপয়েন্টে থাকে।
-
Matter স্পেসিফিকেশন অনুযায়ী, একটি ডিভাইসে একাধিক নোড থাকতে পারে। যেমন, স্মার্টফোনে একাধিক অ্যাপ থাকতে পারে, প্রতিটি অ্যাপ একটি করে আলাদা নোড। এই প্রাইমারের উদ্দেশ্যে, সব ডিভাইসে একটি করে নোড থাকবে। আশা করা হচ্ছে যে বেশিরভাগ ফিজিক্যাল ডিভাইস এই প্যাটার্ন অনুসরণ করবে। ↩