دستگاههای موجود در بومسازگان Google Home را میتوان بااستفاده از Cloud-to-cloud، Matter، یا هر دو پیادهسازی کرد. برخیاز انواع دستگاهها پیچیدهتر از بقیه هستند و هنگام استفاده از Home API بهگونهای که امکان تعامل روان با سایر دستگاهها در بومسازگان را فراهم کند، چالشی برای توسعه ایجاد میکنند.
یکی از چالشهای پیادهسازی برخیاز این انواع دستگاه این است که دستگاهها میتوانند از ترکیبهای مختلفی از ویژگیها تشکیل شده باشند. همه ترکیبها به خوبی ترکیبهای دیگر کار نمیکنند. همچنین، مدل داده Cloud-to-cloud به مدل داده Matter نگاشت میشود، اما نه همیشه بهصورت واضح و یکبهیک. به مدل داده در iOS مراجعه کنید که مدلهای داده و نگاشتهای آنها را با جزئیات بیشتری بررسی میکند.
این صفحه حاوی اطلاعات بیشتری درباره مدلهای داده برای دستگاههای خاص است که به یکدیگر نگاشت میشوند و راهنماییهایی درباره اینکه از کدام ویژگیها برای پیادهسازی آن نوع دستگاهها استفاده کنید ارائه میدهد.
فر آشپزی
پیادهسازی نوع دستگاه «فر» (OvenDeviceType) و مشخصههای مؤلفه آن درمقایسه با انواع دیگر دستگاهها چندان ساده نیست. روشهای متعددی برای پیادهسازی «فر» در
Matter وجود دارد، اما همه رویکردها منجر به تعامل یکپارچه
با دستگاههای دیگر یا با بومسازگان Google Home نمیشود.
نگاشت ویژگی
بهجای پیادهسازی دستگاه Matter Oven بااستفاده از
خوشههای Oven Mode و On Off، توصیه میکنیم از خوشه Oven Cavity Operational
State استفاده کنید. این خوشه در Home API با ویژگی
OvenCavityOperationalStateTrait
نشان داده میشود و به ویژگی Cloud-to-cloud
RunCycle نگاشت میشود. این ویژگی فازهایی مثل «پیشگرمایش»، «پیشگرمشده»، و «خنک شدن» را تعریف میکند.
| Home APIs | Cloud-to-cloud |
|---|---|
OvenCavityOperationalState
|
RunCycle
|
محدودیتهایی برای مدل داده Cloud-to-cloud Oven وجود دارد. مدل داده
Cloud-to-cloud Oven فقط یک محفظه را با یک RunCycle مجاز میکند. درمقابل، Matter یک «فر» چندمحفظهای را بهعنوان نقطه پایانی دستگاه با یک خوشه «وضعیت عملیاتی محفظه فر» برای هر محفظه مدلسازی میکند.
برای برخیاز دستگاههای «فر»، ممکن است مناسب باشد که فهرست فاز در زمان اجرا تغییر کند. برای مثال، فرهایی که از پیشگرم کردن پشتیبانی میکنند میتوانند درطول فاز پیشگرم کردن، ورودیهای متفاوتی در فهرست فاز نسبتبه فازهای گرم کردن یا سرد کردن داشته باشند.
پیادهسازی توصیهشده
همانطور که در بخش قبلی بحث شد، پیادهسازی Matter Oven باید خوشه Oven Cavity Operational State را پیادهسازی کند که در Home API بهعنوان مشخصه OvenCavityOperationalStateTrait مدلسازی شده است.
برای بهترین نتیجه، مطمئن شوید که دستگاه Cloud-to-cloud Oven شما
مشخصه RunCycle را پیادهسازی میکند و
وضعیت فعلی را با تنظیم کردن مشخصه currentRunCycle منتشر کنید. این مشخصه ازطریق مشخصههای
OvenCavityOperationalStateTrait.phaseList
و
OvenCavityOperationalStateTrait.currentPhase
برای Home API قابلمشاهده است.
دستگاه «فر» باید با بهروزرسانی مشخصههای 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")
}
}
}
برای مشاهده نمونه کامل، اگر وقتی چرخه فر تکمیل میشود تلویزیون روشن باشد، چراغهای اتاق نشیمن چشمک میزنند و بلندگوی هوشمند «چرخه فر تکمیل شد» را همهفرستی میکند را ببینید.