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