إمكانية التشغيل التفاعلي على أجهزة iOS

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

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

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

فرن

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

تحديد السمات

بدلاً من تنفيذ جهاز فرن Matter باستخدام مجموعات "وضع الفرن" و"التشغيل أو الإيقاف"، ننصح باستخدام مجموعة "الحالة التشغيلية لتجويف الفرن". يتم تمثيل هذه المجموعة في Home APIs من خلال السمة OvenCavityOperationalStateTrait، ويتم ربطها بسمة 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 على أنّها السمة OvenCavityOperationalStateTrait.

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

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

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

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

عند إنشاء عملية تشغيل آلي لفرن تم تنفيذه باستخدام مجموعة "الحالة التشغيلية لتجويف الفرن"، يمكنك الرجوع إلى السمة currentPhase لمعرفة الدورة التي يعمل بها الفرن:

sequential {
  let operationalState = starter(
    oven,
    OvenDeviceType.self,
    OvenCavityOperationalStateTrait.self
  )
  operationalState
  condition {
    operationalState.phaseList[operationalState.currentPhase.toUInt()].equals("pre-heated")
  }
  for speaker in speakers {
    action(speaker, SpeakerDeviceType.self) {
      Google.AssistantBroadcastTrait.broadcast(msg: "Oven Cycle Complete")
    }
  }
}

للاطّلاع على مثال كامل، يُرجى مراجعة إذا كان التلفزيون قيد التشغيل عند اكتمال دورة الفرن، تومض أضواء الشاشات الكبيرة ويبث مكبّر الصوت الذكي عبارة "اكتملت دورة الفرن".