برخیاز دستگاههای Matter از چندین نقطه پایانی با نوع دستگاه یکسان تشکیل شدهاند. سایر دستگاههای Matter سلسلهمراتبی هستند و نقاط پایانی در نقاط پایانی دیگر تودرتو هستند. در «میاناهای برنامهسازی کاربردی Home»، به هر دو نوع دستگاه دستگاههای چندبخشی گفته میشود.
نمایش تخت
قبلاز انتشار نسخه ۱.۸ «میاناهای برنامه کاربردی خانه»، دستگاههای چندبخشی توسط «میاناهای برنامه کاربردی خانه» بهعنوان مجموعهای از دستگاههای جداگانه و غیرمرتبط نشان داده میشوند. این به نمایش مسطح اشاره دارد.
برای مثال، دستگاه پانل دیواری تکی با چهار کلید در Home APIs بهعنوان چهار دستگاه متمایز و غیرمرتبط ظاهر میشود. و دستگاه سلسلهمراتبی Matter مانند یخچال ممکن است در «میاناهای برنامهسازی کاربردی خانه» بهصورت مجموعهای از دستگاهها نشان داده شود که هریک با یکی از نقاط پایانی مطابقت دارد.
نمایش تخت از پانل دیواری ۴ کلیدی.
نمایش دوبعدی یخچال
نمایش چندبخشی
از نسخه ۱.۸ «میاناهای برنامهسازی کاربردی 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 چگونه بر نمایش دستگاه چندبخشی در «میاناهای برنامه کاربردی خانه» تأثیر میگذارد:
نمایش چندبخشی از پانل دیوار.
نمایش چندبخشی یخچال.
همیشه این گزینه را دارید که با حذف پارامتر 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) }