مدل داده در Android

Home APIs برای Android همه دستگاه‌های موجود در بوم‌سازگان 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 اولویت دارد.

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

ویژگی‌ها

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

هر ویژگی در فضای نام خودش قرار دارد و باید به‌طور جداگانه برای استفاده وارد شود.

برای مثال، برای استفاده از ویژگی Matter روشن/خاموش و نوع دستگاه واحد دوشاخه روشن/خاموش، بسته‌های زیر را به برنامه‌تان وارد کنید:

import com.google.home.matter.standard.OnOff
import com.google.home.matter.standard.OnOffPluginUnitDevice

برای نوع دستگاه پارکینگ (از خانه هوشمند Google)، ترکیبی از ویژگی‌های Matter و Google را اضافه کنید:

import com.google.home.google.LockUnlock
import com.google.home.matter.standard.DoorLock
import com.google.home.matter.standard.GoogleGarageDevice

Android Studio عملکرد تکمیل خودکار دارد و اغلب هنگام افزودن خطوط import به فایل‌های منبع در پروژه‌تان، نام‌های کامل بسته را برای شما مدیریت می‌کند. بااین‌حال، نام بسته‌ها در همه انواع دستگاه‌ها و ویژگی‌ها یکسان نیست. برای درستی‌سنجی نام بسته صحیح برای هرکدام، به مرجع مراجعه کنید DeviceType یا Trait.

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

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

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

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

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

برای مثال، نوع دستگاه Fan از هر دو تشکیل شده است و سه مشخصه دارد:

  • مشخصه Identify Matter همه عملکردهای Matter Identify را ارائه می‌دهد.
  • مشخصه FanControl Matter همه عملکردهای مشخصه Matter FanControl را ارائه می‌دهد
  • ویژگی ExtendedFanControl Google همه عملکردهای ویژگی smart home FanSpeed Google را که تحت پوشش ویژگی FanControl Matter نیست ارائه می‌دهد

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

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

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

گروه‌های دستگاه با موجودیت DeviceGroup نشان داده می‌شوند که با HomeDevice متفاوت است. هر HomeDevice گروه‌هایی را که به آن‌ها تعلق دارد ازطریق ویژگی GroupMembership خود فهرست می‌کند (که به‌طور واکنشی با group.devices() حل می‌شود)، بنابراین برنامه‌تان می‌تواند عضویت‌های گروه را بررسی کند و مستقیماً روی دستگاه‌های عضو گروه تکرار کند. علاوه‌براین، DeviceGroup میانای PartsProvider را پیاده‌سازی می‌کند تا انواع دستگاه‌های پشتیبانی‌شده توسط دستگاه‌های عضو خود را هنگام هدف‌یابی گروه به‌عنوان یک کل نشان دهد.

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