مدل داده در iOS

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

انواع دستگاه

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

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

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

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

ویژگی‌ها

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

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

import GoogleHomeTypes

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

import GoogleHomeTypes

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

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

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

Home API از اکثر خوشه‌های برنامه Matter به‌عنوان ویژگی در مدل داده پشتیبانی می‌کند. خوشه‌های پیکربندی سطح پایین که ابزار سودمند مستقیم برای کاربران نهایی ارائه نمی‌دهند، مثل Binding، مستقیماً ازطریق Home API نمایش داده نمی‌شوند. برای کسب اطلاعات بیشتر درباره «گروه‌های دستگاه»، به Structure API مراجعه کنید.

ویژگی‌های مشتق‌شده از ویژگی‌های خانه هوشمند 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 FanSpeedTrait Google را که تحت پوشش ویژگی FanControlTrait Matter نیست ارائه می‌دهد.

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

گروه‌های دستگاه

گروه دستگاه نشان‌دهنده مجموعه‌ای از دستگاه‌ها است که کاربر در یک ساختار واحد تعریف کرده است. عضویت گروه در سرویس‌های Google حفظ می‌شود و برای دیگر اعضای ساختار و دیگر برنامه‌هایی که به ساختار دسترسی دارند قابل‌مشاهده است.

گروه‌های دستگاه با موجودیت DeviceGroup نمایش داده می‌شوند که با HomeDevice متفاوت است. هر HomeDevice گروه‌هایی را که ازطریق GroupMembershipTrait به آن‌ها تعلق دارد فهرست می‌کند، بنابراین برنامه‌تان می‌تواند عضویت‌های گروه را بررسی کند و مستقیماً روی دستگاه‌های عضو گروه تکرار کند. علاوه‌براین، DeviceGroup با پروتکل HasParts مطابقت دارد تا انواع دستگاه‌های پشتیبانی‌شده توسط دستگاه‌های عضو خود را هنگام هدف قرار دادن گروه به‌عنوان یک کل، نمایش دهد.

برای اطلاعات بیشتر درباره گروه‌های دستگاه، به میاناهای برنامه‌سازی کاربردی ساختار و کنترل گروه دستگاه مراجعه کنید.