هم‌کنش‌پذیری در Android

دستگاه‌های موجود در بوم‌سازگان Google Home را می‌توان بااستفاده از Cloud-to-cloud، Matter، یا هر دو پیاده‌سازی کرد. برخی‌از انواع دستگاه پیچیده‌تر از بقیه هستند و هنگام استفاده از «میاناهای برنامه‌سازی کاربردی خانه» به روشی که امکان تعامل روان با سایر دستگاه‌ها در بوم‌سازگان را فراهم کند، توسعه آن‌ها چالش‌برانگیز است.

یکی از چالش‌های پیاده‌سازی برخی‌از این انواع دستگاه این است که دستگاه‌ها می‌توانند از ترکیب‌های مختلفی از ویژگی‌ها تشکیل شده باشند. همه ترکیب‌ها به خوبی بقیه کار نمی‌کنند. همچنین، مدل داده Cloud-to-cloud به مدل داده Matter نگاشت می‌شود، اما نه همیشه به روشی واضح و یک‌به‌یک. مدل داده در Android را ببینید که در آن مدل‌های داده و نگاشت‌های آن‌ها با جزئیات بیشتری مورد بحث قرار گرفته است.

این صفحه حاوی اطلاعات بیشتری درباره مدل‌های داده برای دستگاه‌های خاص است که به یکدیگر نگاشت می‌شوند و راهنمایی‌هایی درباره اینکه از کدام مشخصه‌ها برای پیاده‌سازی آن انواع دستگاه استفاده کنید ارائه می‌دهد.

فر آشپزی

نوع دستگاه «فر» (OvenDevice) و مشخصه‌های مؤلفه آن در مقایسه با سایر انواع دستگاه‌ها پیاده‌سازی ساده‌ای ندارد. چندین روش برای پیاده‌سازی «فر» در Matter وجود دارد، اما همه رویکردها منجر به عملکرد یکپارچه با سایر دستگاه‌ها یا با بوم‌سازگان Google Home نمی‌شوند.

نگاشت ویژگی

به‌جای پیاده‌سازی دستگاه Matter «فر» بااستفاده از خوشه‌های «حالت فر» و «روشن/خاموش»، توصیه می‌کنیم از خوشه «وضعیت عملیاتی محفظه فر» استفاده کنید. این خوشه در «میاناهای برنامه‌سازی کاربردی خانه» با OvenCavityOperationalState ویژگی نشان داده می‌شود و به ویژگی Cloud-to-cloud RunCycle نگاشت می‌شود. این ویژگی مراحل مختلفی مثل «پیش‌گرمایش»، «پیش‌گرم‌شده»، و «سرمایش» را تعریف می‌کند.

Home APIs Cloud-to-cloud
OvenCavityOperationalState RunCycle

محدودیت‌هایی برای مدل داده Cloud-to-cloud «فر» وجود دارد. مدل داده «فر» Cloud-to-cloud فقط از یک محفظه با یک RunCycle پشتیبانی می‌کند. درمقابل، Matter «فر چندمحفظه‌ای» را به‌عنوان نقطه پایانی دستگاه با خوشه «وضعیت عملیاتی محفظه فر» برای هر محفظه مدل‌سازی می‌کند.

برای برخی‌از دستگاه‌های «فر»، ممکن است مناسب باشد که فهرست فاز در زمان اجرا تغییر کند. برای مثال، «فر»هایی که از پیش‌گرم کردن پشتیبانی می‌کنند ممکن است درطول مرحله پیش‌گرم کردن نسبت‌به مراحل گرم کردن یا خنک کردن ورودی‌های متفاوتی در فهرست مرحله داشته باشند.

همان‌طور که در بخش قبلی بحث شد، پیاده‌سازی Matter فر باید خوشه «وضعیت عملیاتی حفره فر» را پیاده‌سازی کند که در «میاناهای برنامه‌سازی کاربردی خانه» به‌عنوان OvenCavityOperationalState ویژگی مدل‌سازی شده است.

برای بهترین نتیجه، مطمئن شوید که دستگاه Cloud-to-cloud «فر» شما ویژگی RunCycle را پیاده‌سازی کند و با تنظیم ویژگی currentRunCycle وضعیت کنونی را منتشر کند. این مشخصه ازطریق OvenCavityOperationalState.phaseList و OvenCavityOperationalState.currentPhase مشخصه‌ها توسط «میاناهای برنامه‌سازی کاربردی Home» قابل‌مشاهده است.

دستگاه «فر» باید با به‌روزرسانی مشخصه‌های 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
}

برای دیدن نمونه کامل، به وقتی فر به دمای انتخابی رسید چراغ‌ها چشمک بزنند و اعلام شود مراجعه کنید.