إمكانية التشغيل التفاعلي

يمكن تنفيذ الأجهزة في منظومة Google Home المتكاملة باستخدام Cloud-to-cloud أو Matter أو كليهما. تكون بعض أنواع الأجهزة أكثر تعقيدًا من غيرها، وتشكّل تحديًا في عملية التطوير عند استخدام واجهات برمجة تطبيقات Home API بطريقة تسمح بالتفاعل السلس مع الأجهزة الأخرى في المنظومة المتكاملة.

من بين التحديات التي تواجهنا في تنفيذ بعض أنواع الأجهزة هذه هو أنّه يمكن أن تتكون الأجهزة من مجموعات مختلفة من السمات. لا تعمل بعض المجموعات بفعالية المجموعات الأخرى. بالإضافة إلى ذلك، يتم ربط Cloud-to-cloud نموذج البيانات بنموذج بيانات Matter، ولكن ليس دائمًا بطريقة واضحة وواحدة لواحد. اطّلِع على نموذج البيانات الذي يناقش نماذج البيانات وعمليات الربط بها بشكل مفصّل.

تحتوي هذه الصفحة على مزيد من المعلومات حول نماذج البيانات التي ترتبط ببعضها لأجهزة معيّنة، وتقدّم بعض الإرشادات حول السمات التي يجب استخدامها لتنفيذ أنواع الأجهزة هذه.

فرن

إنّ نوع جهاز "الفرن" (OvenDevice) وسمات مكوّناته ليست سهلة التنفيذ مقارنةً بأنواع الأجهزة الأخرى. هناك طرق متعدّدة لتنفيذ "الفرن" في Matter، ولكن لا تؤدي جميع الطرق إلى تكاملٍ سلس مع الأجهزة الأخرى أو مع منظومة Google Home المتكاملة.

ربط السمات

بدلاً من تنفيذ جهاز Matter Oven باستخدام مجموعات Oven Mode وOn Off، ننصحك باستخدام مجموعة State Operational Oven Cavity. يتم تمثيل هذه المجموعة في واجهات برمجة التطبيقات Home APIs بالسمة OvenCavityOperationalState ، وتتطابق مع السمة Cloud-to-cloud RunCycle. ويحدِّد هذه المراحل، مثل "التسخين المُسبَق" و"مُسخَّن مُسبَقًا" و "التبريد".

Home APIs Cloud-to-cloud
OvenCavityOperationalState RunCycle

هناك قيود على نموذج بيانات Cloud-to-cloud Oven. لا يسمح Cloud-to-cloud نموذج بيانات "الفرن" إلا بغرفة واحدة، مع RunCycle واحد. في المقابل، يُنشئ Matter نموذجًا لجهاز فرن متعدد الغرف على أنّه نقطة نهاية جهاز تتضمّن مجموعات لحالة تشغيل تجويف الفرن لكل غرفة.

بالنسبة إلى بعض أجهزة "الموقد"، قد يكون من المناسب تغيير قائمة المراحل أثناء وقت التشغيل. على سبيل المثال، قد تحتوي الأفران التي تتيح التحضير المُسبَق على إدخالات مختلفة في قائمة المراحل أثناء مرحلة التحضير المُسبَق مقارنةً بمراحل التسخين أو التبريد.

كما ناقشنا في القسم السابق، يجب أن ينفِّذ تطبيق Matter للفرن مجموعة "حالة تشغيل تجويف الفرن" التي تم وضع نموذج لها في واجهات برمجة تطبيقات Home على أنّها سمة OvenCavityOperationalState.

للحصول على أفضل النتائج، تأكَّد من أنّ جهاز Cloud-to-cloud Oven ينفِّذ سمة RunCycle وينشر الحالة الحالية من خلال ضبط السمة currentRunCycle. يمكن لواجهات برمجة تطبيقات Home رصد هذه السمة من خلال السمتَين OvenCavityOperationalState.phaseList و OvenCavityOperationalState.currentPhase.

يجب أن ينشر جهاز "الفرن" أيضًا إشعارًا بالجهاز بشأن بدء دورة من خلال تعديل سمات priority وstatus وcurrentCycleRemainingTime لسمة RunCycle. يؤدي المثال التالي إلى إرسال حدث OperationalState.OperationCompletion، ويمكن استخدامه للإشارة إلى أنّ الفرن قد انتقل من دورة "التسخين المُسبَق" إلى دورة "التسخين المُسبَق":

{
  "currentRunCycle": [
    {
      "currentCycle": "pre-heating",
      "nextCycle": "pre-heated",
      "lang": "en"
    }
  ],
  "currentTotalRemainingTime": 1200,
  "currentCycleRemainingTime": 300
}

استخدام فرن في عملية التشغيل الآلي

عند إنشاء عملية تشغيل آلي للفرن تم تنفيذها باستخدام عناقيد حالة التشغيل في تجويف الفرن، يمكنك الرجوع إلى السمة 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
}

للاطّلاع على مثال كامل، راجِع مقالة وميض المصابيح والإعلان عندما يصل الفرن إلى درجة الحرارة المحدّدة.