يمكن تنفيذ الأجهزة في منظومة 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 APIs باستخدام السمتَين 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
}
للاطّلاع على مثال كامل، راجِع وميض الأضواء والإعلان عند وصول الفرن إلى درجة الحرارة المحدّدة.