دستگاههای موجود در اکوسیستم گوگل هوم را میتوان با استفاده از Cloud-to-cloud ، Matter یا هر دو پیادهسازی کرد. برخی از انواع دستگاهها پیچیدهتر از سایرین هستند و هنگام استفاده از APIهای هوم به گونهای که امکان ارتباط روان با سایر دستگاههای موجود در اکوسیستم را فراهم کند، چالشی برای توسعه ایجاد میکنند.
One of the challenges in implementing some of these device types is that the devices can be composed of different combinations of traits. Not all combinations work as well as others. Also, the Cloud-to-cloud data model maps to the Matter data model, but not always in a clear, one-to-one fashion. See Data model on iOS , which discusses the data models and their mappings in more depth.
این صفحه حاوی اطلاعات بیشتری در مورد مدلهای داده برای دستگاههای خاص است که به یکدیگر نگاشت میشوند و راهنماییهایی در مورد اینکه از کدام ویژگیها برای پیادهسازی آن نوع دستگاهها استفاده شود، ارائه میدهد.
فر
نوع دستگاه Oven ( OvenDeviceType ) و ویژگیهای اجزای آن در مقایسه با سایر انواع دستگاهها، پیادهسازی سادهای ندارند. روشهای متعددی برای پیادهسازی یک Oven در Matter وجود دارد، اما همه رویکردها منجر به تعامل یکپارچه با سایر دستگاهها یا با اکوسیستم Google Home نمیشوند.
نقشهبرداری از ویژگیها
به جای پیادهسازی یک دستگاه Matter Oven با استفاده از خوشههای Oven Mode و On Off، توصیه میکنیم از خوشه Oven Cavity Operational State استفاده کنید. این خوشه در APIهای Home با ویژگی OvenCavityOperationalStateTrait نمایش داده میشود و به ویژگی 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 به عنوان ویژگی OvenCavityOperationalStateTrait مدلسازی شده است.
برای بهترین نتیجه، مطمئن شوید که دستگاه Cloud-to-cloud شما ویژگی RunCycle پیادهسازی کرده و با تنظیم ویژگی currentRunCycle وضعیت فعلی را منتشر میکند. این ویژگی توسط APIهای Home از طریق ویژگیهای OvenCavityOperationalStateTrait.phaseList و OvenCavityOperationalStateTrait.currentPhase قابل مشاهده است.
دستگاه Oven همچنین باید با بهروزرسانی ویژگیهای priority ، status و currentCycleRemainingTime از RunCycle ، یک اعلان دستگاه در مورد چرخه اجرا منتشر کند. مثال زیر منجر به ارسال رویداد OperationalStateTrait.OperationCompletion میشود و میتواند برای نشان دادن انتقال فر از چرخه «پیش گرمایش» به چرخه «پیش گرمایش» استفاده شود:
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
استفاده از فر در اتوماسیون
هنگام ساخت یک اتوماسیون برای یک فر که با استفاده از خوشه Oven Cavity Operational State پیادهسازی شده است، برای اطلاع از چرخهای که فر در آن قرار دارد، به ویژگی 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")
}
}
}
برای یک مثال کامل، به «اگر تلویزیون هنگام اتمام چرخه فر روشن باشد، چراغهای اتاق نشیمن چشمک بزنند و بلندگوی هوشمند «چرخه فر کامل شد» را پخش کند» مراجعه کنید.