يمكن تنفيذ الأجهزة في نظام Google Home المتكامل باستخدام Cloud-to-cloud أو Matter أو كليهما. بعض أنواع الأجهزة أكثر تعقيدًا من غيرها، ما يجعل تطويرها أمرًا صعبًا عند استخدام واجهات برمجة التطبيقات Home بطريقة تتيح التفاعل السلس مع الأجهزة الأخرى في المنظومة المتكاملة.
أحد التحديات التي تواجه تنفيذ بعض أنواع الأجهزة هذه هو أنّ الأجهزة يمكن أن تتكوّن من مجموعات مختلفة من السمات. ولا تحقّق بعض المجموعات الأداء نفسه الذي تحقّقه المجموعات الأخرى. بالإضافة إلى ذلك، يرتبط نموذج بيانات Cloud-to-cloud بنموذج بيانات Matter، ولكن ليس دائمًا بطريقة واضحة ومباشرة. يمكنك الاطّلاع على نموذج البيانات على أجهزة iOS الذي يتناول نماذج البيانات وعمليات الربط بينها بتفصيل أكبر.
تحتوي هذه الصفحة على مزيد من المعلومات حول كيفية ربط نماذج البيانات الخاصة بأجهزة معيّنة ببعضها البعض، وتقدّم بعض الإرشادات حول السمات التي يجب استخدامها لتنفيذ أنواع الأجهزة هذه.
فرن
إنّ نوع الجهاز Oven
(OvenDeviceType
) وسمات مكوناته ليسا سهلين التنفيذ
مقارنةً بأنواع الأجهزة الأخرى. هناك طرق متعددة لتنفيذ Oven في
Matter، ولكن لا تؤدي جميع الطرق إلى تشغيل سلس
مع الأجهزة الأخرى أو مع منظومة Google Home المتكاملة.
ربط السمات
بدلاً من تنفيذ Matter جهاز فرن باستخدام مجموعتَي Oven Mode وOn Off، ننصح باستخدام مجموعة Oven Cavity Operational State. يتم تمثيل هذه المجموعة في واجهات برمجة التطبيقات الخاصة بالمنزل من خلال السمة
OvenCavityOperationalStateTrait
، ويتم ربطها بالسمة Cloud-to-cloud
RunCycle
. ويحدّد هذا الإعداد مراحل، مثل "التسخين المسبق" و"تم التسخين المسبق" و "التبريد".
Home APIs | Cloud-to-cloud |
---|---|
OvenCavityOperationalState
|
RunCycle
|
هناك قيود على نموذج بيانات Cloud-to-cloud Oven. لا يسمح نموذج بيانات الفرن
Cloud-to-cloud إلا بحجرة واحدة،
مع RunCycle
واحد. في المقابل، يمثّل Matter فرنًا متعدد الحجرات كنقطة نهاية لجهاز مع مجموعة Oven Cavity Operational State لكل حجرة.
بالنسبة إلى بعض أجهزة Oven، قد يكون من المناسب تغيير قائمة المراحل في وقت التشغيل. على سبيل المثال، قد تحتوي الأفران التي تتيح التسخين المُسبَق على إدخالات مختلفة في قائمة المراحل خلال مرحلة التسخين المُسبَق مقارنةً بمرحلتَي التسخين أو التبريد.
عملية التنفيذ المقترَحة
كما هو موضّح في القسم السابق، يجب أن يتضمّن تنفيذ Matter الفرن
مجموعة Oven Cavity Operational State، والتي تم تصميمها في Home APIs على أنّها
OvenCavityOperationalStateTrait
سمة.
للحصول على أفضل النتائج، تأكَّد من أنّ Cloud-to-cloud جهاز الفرن
ينفّذ السمة RunCycle
وينشر
الحالة الحالية من خلال ضبط السمة currentRunCycle
. يمكن رصد هذه السمة من خلال واجهات برمجة التطبيقات الخاصة بمنصة Home باستخدام السمتَين OvenCavityOperationalStateTrait.phaseList
وOvenCavityOperationalStateTrait.currentPhase
.
يجب أن ينشر جهاز Oven أيضًا إشعارًا بالجهاز بشأن دورة التشغيل من خلال تعديل سمات priority
وstatus
وcurrentCycleRemainingTime
الخاصة بـ RunCycle
. يؤدي المثال التالي إلى إرسال حدث
OperationalStateTrait.OperationCompletion
، ويمكن استخدامه للإشارة إلى أنّ الفرن انتقل
من دورة "التسخين المُسبَق" إلى دورة "التسخين المُسبَق":
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
استخدام فرن في عملية تشغيل آلي
عند إنشاء عملية تشغيل آلي لفرن تم تنفيذه باستخدام مجموعة Oven Cavity Operational State، يمكنك الرجوع إلى السمة currentPhase
لمعرفة الدورة التي يعمل بها الفرن:
sequential {
let operationalState = starter(
oven,
OvenDeviceType.self,
OvenCavityOperationalStateTrait.self
)
operationalState
condition {
operationalState.phaseList[operationalState.currentPhase.toUInt()].equals("pre-heated")
}
for speaker in speakers {
action(speaker, SpeakerDeviceType.self) {
Google.AssistantBroadcastTrait.broadcast(msg: "Oven Cycle Complete")
}
}
}
للاطّلاع على مثال كامل، راجِع إذا كان التلفزيون قيد التشغيل عند اكتمال دورة الفرن، ستومض أضواء غرفة المعيشة وسيُذيع مكبّر الصوت الذكي الرسالة "اكتملت دورة الفرن".