يمكن تنفيذ نوع جهاز Chime الأساسي باستخدام إما
Matter.ChimeTrait
المستند إلى معيار Matter
أو إصدار Google المخصّص من السمة
Google.ChimeTrait،
الذي يتيح استخدام أجراس خارجية بالإضافة إلى الإمكانات المحدّدة في معيار Matter.
قد يتيح جهاز الجرس أيضًا
Matter.IdentifyTrait،
الذي يوفّر وسيلة للتعرّف على جهاز الجرس من خلال الرؤية أو الصوت.
يجب دائمًا التحقّق من توفّر السمات والأوامر لجهاز معيّن قبل استخدام أي ميزات أو محاولة تعديل السمات. لمزيد من المعلومات، يمكنك الاطّلاع على التحكّم في الأجهزة على iOS.
| نوع الجهاز في Home APIs | السمات | تطبيق Swift النموذجي | حالة الاستخدام |
|---|---|---|---|
|
رنين
جهاز يمكنه تشغيل مجموعة من الأصوات المثبّتة مسبقًا ويُستخدم عادةً مع جرس الباب أو جرس الباب الصوتي أو جرس الباب المزود بكاميرا فيديو |
السمات المطلوبة matter ChimeTrait |
جرس الباب |
الحصول على معلومات أساسية عن جهاز
تم التنفيذ في التطبيق النموذجي لنظام التشغيل iOS
يتضمّن النوع BasicInformation معلومات، مثل اسم المورّد ومعرّف المورّد ومعرّف المنتج واسم المنتج (يتضمّن معلومات الطراز) وإصدار البرنامج للجهاز:
let vendorName = basicInfoTrait.attributes.vendorName! let vendorID = basicInfoTrait.attributes.vendorID! let productID = basicInfoTrait.attributes.productID! let productName = basicInfoTrait.attributes.productName! let softwareVersion = basicInfoTrait.attributes.softwareVersion!
التوافق مع الملفات المتعددة الأجزاء
قد يتألف الرنين من أنواع متعددة من الأجهزة، بما في ذلك جهاز Chime ومكبّر صوت اختياري. بالإضافة إلى ذلك، تتضمّن بعض الأجراس Thread Border Router (TBR). لضمان توفير أكبر قدر من التوافق، يجب تصميم تطبيقات واجهات برمجة التطبيقات الخاصة بمنصة Home التي تتحكّم في الأجراس لتتوافق مع أجهزة الأجراس المتعددة الأجزاء. لمزيد من المعلومات، يمكنك الاطّلاع على الأجهزة المتعددة الأجزاء.
يجب أن يتم تمثيل كل جهاز جرس متعدد الأجزاء في التطبيق بمربّع واحد. يجب أن يكون جهاز Chime هو الجهاز الأساسي، وأن يكون مكبّر صوت الطفل جزءًا من جهاز Chime.
يجب أن يظهر مستوى صوت مكبّر الصوت كإعداد أساسي لجهاز Chime.
OnOff mapping
بالنسبة إلى جرس الباب الذي يتضمّن نوعَي الجهازين "جرس الباب" و"مكبّر الصوت"، يجب ربط زر OnOff في تطبيق التحكّم بالسمة Enabled الخاصة بجرس الباب.
وفقًا لمواصفات "مكتبة أجهزة" Matter، قد يؤدي ضبط السمة Enabled الخاصة بميزة "الرنين" على القيمة False إلى إيقاف الرنين، كما قد يعمل كزر كتم صوت شامل يكتم جميع المؤشرات المسموعة والمرئية.
دعم التشغيل الآلي
كما ذكرنا سابقًا، بما أنّ ChimeDeviceType قد يتضمّن أجزاء متعددة، ننصح المطوّرين بالتعامل مع جميع الأجراس على أنّها أجهزة متعددة الأجزاء، ويبقى هذا صحيحًا في حالة عمليات التشغيل الآلي التي تستخدم الأجراس.
يمكن استخدام الرنين في إجراءات التفعيل التلقائي.
يجب الإشارة إلى أي جهاز مكوِّن فرعي ضمن جهاز Chime الرئيسي يتم استخدامه في عملية التشغيل الآلي باستخدام AutomationPartPath.
يوضّح عملية التشغيل الآلي التالية كيفية إنشاء عملية تشغيل آلي باستخدام رنين متعدد الأجزاء ينفّذ سمة Chime بالإضافة إلى سمة Speaker. يتم تشغيل عملية التشغيل الآلي عندما يتم فتح الباب الأمامي:
import GoogleHomeSDK import GoogleHomeTypes typealias ChimeTrait = Matter.ChimeTrait typealias OpenCloseTrait = Google.OpenCloseTrait // Fetch devices using the multipart device model. let multipartDevices = try await home.devices(enableMultipartDevices: true).list() guard let chimeParentDevice = multipartDevices.first(where: { $0.types.contains(ChimeDeviceType.self) }) else { return } guard let doorDevice = multipartDevices.first(where: { $0.types.contains(GoogleDoorDeviceType.self) }) else { return } // Extract the AutomationPartPath for the specific Chime part guard let chimeType = await chimeParentDevice.types.get(ChimeDeviceType.self), let chimePartPath = chimeParentDevice.automationPart(chimeType) else { return } let starterNode = starter(doorDevice, GoogleDoorDeviceType.self, OpenCloseTrait.self) let doorOpenClose = stateReader(doorDevice, GoogleDoorDeviceType.self, OpenCloseTrait.self) // Build the automation let chimeAutomation = automation( name: "Multipart Chime Demo", description: "Activate the chime when the door is opened" ) { starterNode condition { starterNode.openPercent.unwrapOptional().greaterThan(0) } // Action: Play a chime sound action(chimePartPath) { ChimeTrait.playChimeSound() } }
لمزيد من المعلومات حول عمليات التشغيل الآلي التي تستخدم أجهزة متعددة الأجزاء، يمكنك الاطّلاع على عمليات التشغيل الآلي للأجهزة المتعددة الأجزاء.
التحقّق من إمكانية اتصال جهاز
يتم في الواقع التحقّق من إمكانية الاتصال بجهاز على مستوى نوع الجهاز، لأنّ بعض الأجهزة تتوافق مع أنواع متعددة من الأجهزة. الحالة التي يتم عرضها هي مزيج من حالات الاتصال لجميع السمات على هذا الجهاز.
let lightConnectivity = dimmableLightDeviceType.metadata.sourceConnectivity .connectivityState
قد يتم رصد حالة partiallyOnline في حال استخدام أنواع أجهزة مختلطة
عندما لا يتوفّر اتصال بالإنترنت. قد تظل سمات Matter Standard
متوفرة على الإنترنت بسبب التوجيه المحلي، ولكن ستكون السمات المستندة إلى السحابة الإلكترونية غير متوفرة.
الحصول على عنوان IP للجهاز
للعثور على عنوان IP الخاص بالجهاز، استخدِم السمة networkInterfaces الخاصة بالعنصر GeneralDiagnosticsTrait.
يتم عرض العناوين كعناصر Data، ويمكنك تنسيقها كسلاسل IPv4 أو IPv6 عادية باستخدام إطار عمل Network:
func getIpAddresses(trait: Matter.GeneralDiagnosticsTrait) -> [String] {
let interfaces = trait.attributes.networkInterfaces ?? []
var ipAddresses: [String] = []
for interface in interfaces {
for data in interface.iPv4Addresses {
if let ipv4 = IPv4Address(data) {
ipAddresses.append(String(describing: ipv4))
}
}
for data in interface.iPv6Addresses {
if let ipv6 = IPv6Address(data) {
ipAddresses.append(String(describing: ipv6))
}
}
}
return ipAddresses
}