دستگاه‌های چندبخشی در iOS

برخی‌از دستگاه‌های Matter از چندین نقطه پایانی با نوع دستگاه یکسان تشکیل شده‌اند. سایر دستگاه‌های Matter سلسله‌مراتبی هستند و نقاط پایانی در نقاط پایانی دیگر تودرتو هستند. در «میاناهای برنامه‌سازی کاربردی Home»، به هر دو نوع دستگاه دستگاه‌های چندبخشی گفته می‌شود.

نمایش تخت

قبل‌از انتشار نسخه ۱.۸ «میاناهای برنامه کاربردی خانه»، دستگاه‌های چندبخشی توسط «میاناهای برنامه کاربردی خانه» به‌عنوان مجموعه‌ای از دستگاه‌های جداگانه و غیرمرتبط نشان داده می‌شوند. این به نمایش مسطح اشاره دارد.

برای مثال، دستگاه پانل دیواری تکی با چهار کلید در Home APIs به‌عنوان چهار دستگاه متمایز و غیرمرتبط ظاهر می‌شود. و دستگاه سلسله‌مراتبی Matter مانند یخچال ممکن است در «میاناهای برنامه‌سازی کاربردی خانه» به‌صورت مجموعه‌ای از دستگاه‌ها نشان داده شود که هریک با یکی از نقاط پایانی مطابقت دارد.

  • نمونه پانل دیواری با چند کلید که نمایش بومی Matter
          و پردازش تخت «میانای برنامه‌سازی کاربردی خانه» را نشان می‌دهد

    نمایش تخت از پانل دیواری ۴ کلیدی.

  • نمونه یخچال که نمایش بومی Matter و
          پردازش تخت Home API را نشان می‌دهد

    نمایش دوبعدی یخچال

شکل ۱: نمونه‌های پردازش تخت

نمایش چندبخشی

از نسخه ۱.۸ «میاناهای برنامه‌سازی کاربردی Home» به بعد، دستگاه چندبخشی می‌تواند در API به‌عنوان یک دستگاه واحد نشان داده شود. برای فعال کردن این رفتار، متد devices() را در نمونه Home فراخوانی کنید و پارامتر 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 چگونه بر نمایش دستگاه چندبخشی در «میاناهای برنامه کاربردی خانه» تأثیر می‌گذارد:

  • نمونه پانل دیواری با چند کلید که نمایش بومی Matter
    و پردازش چندبخشی «میانای برنامه‌سازی کاربردی خانه» را نشان می‌دهد

    نمایش چندبخشی از پانل دیوار.

  • نمونه یخچال که نمایش بومی Matter و
    پردازش چندبخشی «میانای برنامه‌سازی کاربردی خانه» را نشان می‌دهد

    نمایش چندبخشی یخچال.

شکل ۲: نمونه‌های پرداز چندبخشی

همیشه این گزینه را دارید که با حذف پارامتر enableMultipartDevices یا تنظیم آن روی false، نمایش تخت را دریافت کنید.

در دستگاه چندبخشی، هر نمونه مؤلفه از نوع دستگاه بخش نامیده می‌شود.

می‌توان مستقیماً در دستگاه مادر یا به‌صورت سلسله‌مراتبی بااستفاده از انواع دستگاه یا برچسب‌های معنایی Matter به قطعات دسترسی داشت. برچسب‌های معنایی در Home APIs با 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)
}