مدل داده در iOS

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

انواع دستگاه

انواع دستگاه‌های ارائه‌شده در APIهای Home، ادغام مدل‌های داده 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 ویژگی‌ها برای استفاده در APIهای Home تولید می‌شوند و حاوی ویژگی‌های اضافی خاص برای Home API هستند (در Matter یا Cloud-to-cloud یافت نمی‌شوند). به عنوان مثال، هر صفت دارای روش هایی برای بررسی اینکه آیا یک صفت از یک صفت یا دستور خاص پشتیبانی می کند یا خیر. این برای تعیین اینکه آیا خواندن وضعیت یا اقدامات خاصی را می توان در دستگاه کاربر انجام داد مفید است، زیرا انتظار نمی رود همه دستگاه ها در یک نوع دستگاه همه ویژگی های یکسانی داشته باشند.

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

import GoogleHomeTypes

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

import GoogleHomeTypes

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

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

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

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

ویژگی‌های مشتق‌شده از ویژگی‌های خانه هوشمند Cloud-to-cloud معمولاً بین Cloud-to-cloud و Home API یک نام دارند، مانند مثال 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 Google FanSpeedTrait را ارائه می دهد که توسط ویژگی FanControlTrait Matter پوشش داده نمی شود.

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