يمكن تنفيذ الأجهزة في منظومة Google Home المتكاملة باستخدام Cloud-to-cloud أو Matter أو كليهما. بعض أنواع الأجهزة أكثر تعقيدًا من غيرها، ويصعب تطويرها عند استخدام Home APIs بطريقة تسمح بالتفاعل السلس مع الأجهزة الأخرى في المنظومة المتكاملة.
أحد التحديات التي تواجه تنفيذ بعض أنواع الأجهزة هذه هو أنّ الأجهزة يمكن أن تتألف من مجموعات مختلفة من السمات. لا تعمل بعض المجموعات بشكل جيد مثل غيرها. بالإضافة إلى ذلك، يتم ربط نموذج بيانات Cloud-to-cloud بـ Matter، ولكن ليس دائمًا بطريقة واضحة ومباشرة. راجِع نموذج البيانات على Android الذي يناقش نماذج البيانات وعمليات الربط الخاصة بها بمزيد من التفصيل.
تحتوي هذه الصفحة على مزيد من المعلومات حول نماذج البيانات التي يتم ربطها ببعضها البعض لأجهزة معيّنة، وتقدّم بعض الإرشادات حول السمات التي يجب استخدامها لتنفيذ أنواع الأجهزة هذه.
فرن
لا يكون تنفيذ نوع الجهاز "فرن"
(OvenDevice)
وسماته المكوّنة له بسيطًا مثل أنواع الأجهزة الأخرى. هناك طرق متعددة لتنفيذ فرن في
Matter، ولكن لا تؤدي كل الطرق إلى التشغيل التفاعلي السلس
مع الأجهزة الأخرى أو مع منظومة Google Home المتكاملة.
ربط السمات
بدلاً من تنفيذ جهاز Matter Oven باستخدام مجموعتَي
Oven Mode وOn Off، ننصحك باستخدام مجموعة Oven Cavity Operational
State. يتم تمثيل هذه المجموعة في Home APIs من خلال السمة
OvenCavityOperationalState
، ويتم ربطها بالسمة Cloud-to-cloud
RunCycle. تحدّد هذه السمة مراحل مثل "التدفئة المسبقة" و"تم التسخين المسبق" و"التبريد".
| Home APIs | Cloud-to-cloud |
|---|---|
OvenCavityOperationalState
|
RunCycle
|
هناك قيود على نموذج بيانات Cloud-to-cloud للفرن. لا يسمح نموذج بيانات
Cloud-to-cloud للفرن إلا بحجرة واحدة،
مع RunCycle واحدة. في المقابل، يمثّل Matter فرنًا متعدد الحجرات كنقطة نهاية للجهاز مع مجموعة Oven Cavity Operational State cluster لكل حجرة.
بالنسبة إلى بعض أجهزة الفرن، قد يكون من المناسب تغيير قائمة المراحل في وقت التشغيل. على سبيل المثال، يمكن أن تحتوي الأفران التي تتيح التسخين المسبق على إدخالات مختلفة في قائمة المراحل أثناء مرحلة التسخين المسبق مقارنةً بمرحلتَي التسخين أو التبريد.
عملية التنفيذ المقترَحة
كما هو موضّح في القسم السابق، يجب أن تنفّذ عملية تنفيذ فرن Matter Oven
مجموعة Oven Cavity Operational State، التي
يتم تمثيلها في Home APIs على أنّها
OvenCavityOperationalState
السمة.
للحصول على أفضل النتائج، تأكَّد من أنّ جهاز فرن Cloud-to-cloud ينفّذ السمة RunCycle وينشر الحالة الحالية من خلال ضبط السمة currentRunCycle. يمكن أن تلاحظ Home APIs هذه السمة من خلال السمتَين
OvenCavityOperationalState.phaseList
و
OvenCavityOperationalState.currentPhase.
يجب أن ينشر جهاز الفرن أيضًا إشعارًا بالجهاز حول دورة التشغيل من خلال تعديل السمات 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
}
للاطّلاع على مثال كامل، راجِع وميض الأضواء والإعلان عندما يصل الفرن إلى درجة الحرارة المطلوبة.