مدل داده در iOS

رابط‌های برنامه‌نویسی کاربردی (API) هوم برای iOS، تمام دستگاه‌های موجود در اکوسیستم گوگل هوم را در یک مدل داده یکپارچه ارائه می‌دهند. این مدل داده، انواع دستگاه‌ها (از گوگل نست یا تولیدکنندگان شخص ثالث) را صرف نظر از فناوری خانه هوشمند زیربنایی (مانند Matter یا Cloud-to-cloud ) پوشش می‌دهد و یک سطح API مشترک برای ایجاد تجربیات کاربری هم برای توسعه‌دهندگان smart home و هم برای توسعه‌دهندگان برنامه‌های تلفن همراه فراهم می‌کند.

انواع دستگاه

انواع دستگاه‌های ارائه شده در رابط‌های برنامه‌نویسی کاربردی خانگی (Home APIs)، ترکیبی از مدل‌های داده Matter و Cloud-to-cloud هستند. برخی مستقیماً از Matter مشتق شده‌اند، برخی بسطی از انواع دستگاه‌های Matter هستند و برخی دیگر از Cloud-to-cloud مشتق شده‌اند.

انواع دستگاه‌ها شامل ویژگی‌هایی هستند که برای کنترل و مدیریت دستگاه‌ها استفاده می‌شوند. مانند انواع دستگاه‌ها، ویژگی‌ها از خوشه‌های Matter و ویژگی‌های Cloud-to-cloud مشتق شده‌اند و در قالبی مشترک ارائه می‌شوند که مشابه خوشه‌های Matter است. در APIهای Home، ویژگی‌های مشتق‌شده از Matter ، ویژگی نامیده می‌شوند، نه خوشه .

به همین ترتیب، انواع و ویژگی‌های دستگاه‌ها در APIهای Home به گونه‌ای در نظر گرفته شده‌اند که اولویت با Matter باشد. نوع یا ویژگی دستگاه Matter بر آنالوگ Cloud-to-cloud اولویت دارد.

برای مشاهده‌ی فهرستی از انواع دستگاه‌ها و ویژگی‌های آن‌ها، به بخش انواع دستگاه‌های پشتیبانی‌شده در iOS مراجعه کنید.

صفات

نسخه‌های Swift از traitها برای استفاده در Home APIها تولید می‌شوند و شامل ویژگی‌های اضافی مختص به Home APIها هستند (که در Matter یا Cloud-to-cloud یافت نمی‌شوند). به عنوان مثال، هر trait دارای متدهایی برای بررسی این است که آیا یک trait از یک ویژگی یا دستور خاص پشتیبانی می‌کند یا خیر. این امر هنگام تعیین اینکه آیا خواندن وضعیت یا اقدامات خاص می‌تواند روی دستگاه کاربر انجام شود یا خیر، مفید است، زیرا انتظار نمی‌رود همه دستگاه‌های یک نوع دستگاه، ویژگی‌های یکسانی داشته باشند.

برای وارد کردن ویژگی‌ها و انواع دستگاه‌ها، ماژول GoogleHomeTypes را به برنامه خود وارد کنید:

import GoogleHomeTypes

همچنین، می‌توانید از typealias برای نام‌های ویژگی و نوع دستگاه استفاده کنید تا کد را کوتاه کنید و از تکرار فضای نام جلوگیری کنید:

import GoogleHomeTypes

typealias OpenCloseTrait = Google.OpenCloseTrait
typealias OnOffTrait = Matter.OnOffTrait
typealias FanDevice = Matter.FanDeviceType

بیشتر ویژگی‌ها برای استفاده با Automationها پشتیبانی می‌شوند و برخی ویژگی‌ها فقط برای Automationها در دسترس هستند. برای جزئیات بیشتر، به پشتیبانی از ویژگی API Automation در اندروید مراجعه کنید.

ترکیب نوع دستگاه

رابط‌های برنامه‌نویسی کاربردی خانگی (Home APIs) از اکثر خوشه‌های برنامه‌های کاربردی Matter به عنوان ویژگی‌هایی (traits) در مدل داده پشتیبانی می‌کنند. ویژگی‌هایی که با کنترل دستگاه یا وضعیت‌ها مطابقت ندارند و هیچ کاربردی برای کاربران نهایی ارائه نمی‌دهند، مانند اتصال (Binding) و گروه‌ها (Groups)، از طریق رابط‌های برنامه‌نویسی کاربردی خانگی (Home APIs) در معرض نمایش قرار نمی‌گیرند.

ویژگی‌های مشتق‌شده از ویژگی‌های خانه هوشمند Cloud-to-cloud معمولاً نام یکسانی بین APIهای Cloud-to-cloud و Home دارند، مانند مثال OpenCloseTrait . برخی دیگر به عنوان افزونه‌هایی از ویژگی‌های Matter نمایش داده می‌شوند که با استفاده از افزونه‌های خاص سازنده Matter ایجاد شده‌اند. این ویژگی‌ها شکاف یک ویژگی smart home را پر می‌کنند که در آن عملکرد بین Matter SDK و اکوسیستم Google Home تقسیم می‌شود. یک مثال خاص از این، انواع دستگاه‌های Google* هستند که از Cloud-to-cloud می‌آیند اما هنوز معادل Matter ندارند.

انواع دستگاه‌ها از ویژگی‌های یک یا هر دو منبع، Matter یا Cloud-to-cloud تشکیل شده‌اند.

برای مثال، FanDeviceType از هر دو تشکیل شده و دارای سه ویژگی است:

  • ویژگی IdentifyTrait Matter تمام عملکردهای Matter IdentifyTrait را ارائه می‌دهد.
  • ویژگی FanControlTrait Matter تمام عملکردهای Matter FanControlTrait را ارائه می‌دهد.
  • قابلیت ExtendedFanControlTrait Google تمام قابلیت‌هایی را از قابلیت smart home گوگل FanSpeedTrait که توسط قابلیت FanControlTrait Matter پشتیبانی نمی‌شوند، ارائه می‌دهد.

این نوع ترکیب ویژگی‌ها، یک مدل انعطاف‌پذیر برای عملکرد کامل انواع دستگاه‌ها فراهم می‌کند و مدل‌های داده smart home زیربنایی را خلاصه می‌کند.