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