يمكن تنفيذ الأجهزة في نظام Google Home المتكامل باستخدام Cloud-to-cloud أو Matter أو كليهما. بعض أنواع الأجهزة أكثر تعقيدًا من غيرها، ما يجعل تطويرها أمرًا صعبًا عند استخدام واجهات برمجة التطبيقات Home بطريقة تتيح التفاعل السلس مع الأجهزة الأخرى في المنظومة المتكاملة.
أحد التحديات التي تواجه تنفيذ بعض أنواع الأجهزة هذه هو أنّ الأجهزة يمكن أن تتكوّن من مجموعات مختلفة من السمات. ولا تحقّق بعض المجموعات الأداء نفسه الذي تحقّقه المجموعات الأخرى. بالإضافة إلى ذلك، يرتبط نموذج بيانات Cloud-to-cloud بنموذج بيانات Matter، ولكن ليس دائمًا بطريقة واضحة ومباشرة. يمكنك الاطّلاع على نموذج البيانات على Android الذي يتناول نماذج البيانات وعمليات الربط بينها بمزيد من التفصيل.
تحتوي هذه الصفحة على مزيد من المعلومات حول كيفية ربط نماذج البيانات الخاصة بأجهزة معيّنة ببعضها البعض، وتقدّم بعض الإرشادات حول السمات التي يجب استخدامها لتنفيذ أنواع الأجهزة هذه.
فرن
إنّ نوع الجهاز Oven
(OvenDevice
) وسمات مكوناته ليسا سهلين التنفيذ
مقارنةً بأنواع الأجهزة الأخرى. هناك طرق متعددة لتنفيذ Oven في
Matter، ولكن لا تؤدي جميع الطرق إلى تشغيل سلس
مع الأجهزة الأخرى أو مع منظومة Google Home المتكاملة.
ربط السمات
بدلاً من تنفيذ Matter جهاز فرن باستخدام مجموعتَي Oven Mode وOn Off، ننصح باستخدام مجموعة Oven Cavity Operational State. يتم تمثيل هذه المجموعة في واجهات برمجة التطبيقات الخاصة بالمنزل من خلال السمة
OvenCavityOperationalState
، ويتم ربطها بالسمة 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 على أنّها
OvenCavityOperationalState
سمة.
للحصول على أفضل النتائج، تأكَّد من أنّ Cloud-to-cloud جهاز الفرن
ينفّذ السمة RunCycle
وينشر
الحالة الحالية من خلال ضبط السمة currentRunCycle
. يمكن رصد هذه السمة من خلال واجهات برمجة التطبيقات الخاصة بمنصة Home باستخدام السمتَين OvenCavityOperationalState.phaseList
وOvenCavityOperationalState.currentPhase
.
يجب أن ينشر جهاز Oven أيضًا إشعارًا بالجهاز بشأن دورة التشغيل من خلال تعديل سمات priority
وstatus
وcurrentCycleRemainingTime
الخاصة بـ RunCycle
. يؤدي المثال التالي إلى إرسال حدث
OperationalState.OperationCompletion
، ويمكن استخدامه للإشارة إلى أنّ الفرن انتقل من دورة "التسخين المسبق" إلى دورة "التسخين المسبق":
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
استخدام فرن في عملية تشغيل آلي
عند إنشاء عملية تشغيل آلي لفرن تم تنفيذه باستخدام مجموعة Oven Cavity Operational State، يمكنك الرجوع إلى السمة currentPhase
لمعرفة الدورة التي يعمل بها الفرن:
sequential {
val starterNode =
starter<_>(oven, OvenDevice, OvenCavityOperationalState /* Or OperationalState */)
condition {
expression = starterNode.phaseList[operationalState.currentPhase.toUInt()] equals "pre-heated"
}
action(speaker, SpeakerDevice) {
command(AssistantBroadcast.broadcast("Oven Cycle Complete"))
}
// Additional actions here as needed
}
للاطّلاع على مثال كامل، راجِع وميض الأضواء والإعلان عند وصول الفرن إلى درجة الحرارة المحدّدة.