iOS-এ মাল্টিপার্ট ডিভাইস

কিছু Matter ডিভাইস একই ধরনের ডিভাইস দিয়ে তৈরি একাধিক এন্ডপয়েন্ট দিয়ে তৈরি হয়। অন্যান্য Matter ডিভাইস হল হায়ারার্কিক্যাল, যেখানে এন্ডপয়েন্ট অন্য এন্ডপয়েন্টের মধ্যে নেস্ট করা থাকে। Home API-তে, দু'ধরনের ডিভাইসকেই মাল্টিপার্ট ডিভাইস বলা হয়।

ফ্ল্যাট রিপ্রেজেন্টেশন

Home API-এর 1.8 রিলিজের আগে, মাল্টিপার্ট ডিভাইসকে Home API-এর মাধ্যমে আলাদা, সম্পর্কহীন ডিভাইসের সেট হিসেবে দেখানো হয়। এটি ফ্ল্যাট উপস্থাপনা হিসেবে উল্লেখ করা হয়।

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

  • একাধিক সুইচ সহ ওয়াল প্যানেলের উদাহরণ যা নেটিভ Matter
          প্রতিনিধিত্ব এবং Home API-এর ফ্ল্যাট রেন্ডারিং দেখায়

    ৪-সুইচ ওয়াল প্যানেলের ফ্ল্যাট উপস্থাপনা।

  • রেফ্রিজারেটরের উদাহরণে নেটিভ Matter উপস্থাপনা এবং
          Home API-এর ফ্ল্যাট রেন্ডারিং দেখানো হয়েছে

    ফ্রিজের ফ্ল্যাট উপস্থাপনা

ছবি ১: ফ্ল্যাট রেন্ডারিং উদাহরণ

একাধিক অংশ সহ উপস্থাপনা

Home API-এর 1.8 রিলিজ থেকে শুরু করে, একটি মাল্টিপার্ট ডিভাইসকে API-তে একটি ডিভাইস হিসেবে দেখানো যেতে পারে। এই আচরণ চালু করতে, Home ইনস্ট্যান্সে devices() মেথড কল করুন এবং enableMultipartDevices প্যারামিটারকে true হিসেবে সেট করুন:

let multipartDevices = try await self.home.devices(enableMultipartDevices: true).list()
let multipartDevice = multipartDevices.first { $0.id == powerStrip.device.id }
let outlets = try await device.types.getAll(of: OnOffPluginUnitDeviceType.self)

নিম্নলিখিত ডায়াগ্রাম থেকে বোঝা যায় যে কীভাবে enableMultipartDevices বিকল্প হোম API-তে মাল্টিপার্ট ডিভাইসের উপস্থাপনাকে প্রভাবিত করে:

  • একাধিক সুইচ সহ ওয়াল প্যানেলের উদাহরণ, যেখানে নেটিভ Matter
    প্রতিনিধিত্ব ও Home API-এর মাল্টিপার্ট রেন্ডারিং দেখানো হয়েছে

    ওয়াল প্যানেলের মাল্টিপার্ট উপস্থাপনা।

  • রেফ্রিজারেটরের উদাহরণে নেটিভ Matter উপস্থাপনা এবং Home
    API-এর মাল্টিপার্ট রেন্ডারিং দেখানো হয়েছে

    রেফ্রিজারেটরের মাল্টিপার্ট উপস্থাপনা।

ছবি ২: মাল্টিপার্ট রেন্ডারিংয়ের উদাহরণ

enableMultipartDevices প্যারামিটার বাদ দিয়ে অথবা এটিকে false হিসেবে সেট করে আপনি সবসময় ফ্ল্যাট রেপ্রেজেন্টেশন পাওয়ার বিকল্প পাবেন।

মাল্টিপার্ট ডিভাইসের মধ্যে, ডিভাইসের ধরনের প্রতিটি কম্পোনেন্ট ইনস্ট্যান্সকে পার্ট বলা হয়।

ডিভাইসের ধরন বা Matter সিম্যান্টিক ট্যাগ ব্যবহার করে, সরাসরি অভিভাবক ডিভাইস বা কোনও পার্ট হায়রার্কিক্যাল পদ্ধতিতে অ্যাক্সেস করা যেতে পারে। Home API-তে সেম্যান্টিক ট্যাগ প্রয়োগ করা হয় SemanticTag-এর মাধ্যমে।

DeviceType ক্লাস ডেভেলপারদের parts() মেথডের মাধ্যমে ডিভাইস ট্রি ট্রাভার্স করতে দেয়:

let outlet1 = await device.parts.getAll(of: OnOffPluginUnitDeviceType.self).first {
  $0.tags.contains(SemanticTag.CommonNumber.one)
}
let outlet3 = await device.parts.getAll(of: OnOffPluginUnitDeviceType.self).first {
  $0.tags.contains(SemanticTag.CommonNumber.three)
}

পরের উদাহরণে রেফ্রিজারেটর ডিভাইসের বিভিন্ন অংশ কীভাবে অ্যাক্সেস করতে হয় তা দেখানো হয়েছে:

let refrigerator: RefrigeratorDeviceType? =
   await home.devices(enableMultipartDevices: true).first { $0.id == FRIDGE_ID }
// Get different cabinets of the refrigerator
let freezer = refrigerator!.parts(type: TemperatureControlledCabinetDeviceType.self).first {
  $0.tags.contains(SemanticTag.Refrigerator.freezer)
}