قابلیت همکاری در اندروید

دستگاه‌های موجود در اکوسیستم گوگل هوم را می‌توان با استفاده از Cloud-to-cloud ، Matter یا هر دو پیاده‌سازی کرد. برخی از انواع دستگاه‌ها پیچیده‌تر از سایرین هستند و هنگام استفاده از APIهای هوم به گونه‌ای که امکان ارتباط روان با سایر دستگاه‌های موجود در اکوسیستم را فراهم کند، چالشی برای توسعه ایجاد می‌کنند.

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

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

فر

نوع دستگاه Oven ( OvenDevice ) و ویژگی‌های اجزای آن در مقایسه با سایر انواع دستگاه‌ها، پیاده‌سازی ساده‌ای ندارند. روش‌های متعددی برای پیاده‌سازی یک Oven در Matter وجود دارد، اما همه رویکردها منجر به تعامل یکپارچه با سایر دستگاه‌ها یا با اکوسیستم Google Home نمی‌شوند.

نقشه‌برداری از ویژگی‌ها

به جای پیاده‌سازی یک دستگاه Matter Oven با استفاده از خوشه‌های Oven Mode و On Off، توصیه می‌کنیم از خوشه Oven Cavity Operational State استفاده کنید. این خوشه در APIهای Home با ویژگی OvenCavityOperationalState نمایش داده می‌شود و به ویژگی Cloud-to-cloud RunCycle نگاشت می‌شود. این ویژگی مراحلی مانند "پیش گرمایش"، "پیش گرمایش" و "خنک شدن" را تعریف می‌کند.

API های خانگی Cloud-to-cloud
OvenCavityOperationalState RunCycle

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

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

همانطور که در بخش قبلی بحث شد، یک پیاده‌سازی Matter Oven باید خوشه Oven Cavity Operational State را پیاده‌سازی کند، که در APIهای Home به عنوان ویژگی OvenCavityOperationalState مدل‌سازی شده است.

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

دستگاه Oven همچنین باید با به‌روزرسانی ویژگی‌های 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
}

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