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

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

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

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

فرن

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

تحديد السمات

بدلاً من تنفيذ جهاز فرن Matter باستخدام مجموعات "وضع الفرن" و"التشغيل أو الإيقاف"، ننصح باستخدام مجموعة "الحالة التشغيلية لتجويف الفرن". يتم تمثيل هذه المجموعة في Home APIs من خلال السمة OvenCavityOperationalState، ويتم ربطها بسمة Cloud-to-cloud RunCycle. وتحدّد هذه السمة مراحل مثل "التدفئة المسبقة" و"التدفئة المسبقة" و "التبريد".

Home APIs Cloud-to-cloud
OvenCavityOperationalState RunCycle

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

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

كما هو موضّح في القسم السابق، يجب أن يتضمّن تنفيذ 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
}

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

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

للاطّلاع على مثال كامل، يُرجى مراجعة وميض الأضواء والإعلان عندما يصل الفرن إلى درجة الحرارة المحدّدة.