Google Home APIs برای Android سطح میانای برنامهسازی کاربردی یکپارچهای ارائه میدهد تا توسعهدهندگان بتوانند با وضعیت نهادها در خانه کاربر تعامل داشته باشند. این نهادها میتوانند دستگاهها و اطلاعات غیردستگاهی مرتبط با ساختار و اتاقهای کاربر را توصیف کنند.
Home API نهادهای زیر را که کاربر میتواند با آنها تعامل داشته باشد تعریف میکند:
- ساختمانها نشاندهنده خانهای است که حاوی اتاقها و دستگاهها است.
- اتاقها بخشی از سازه هستند و دستگاهها را دربرمیگیرند.
- دستگاهها ویژگیهای حاوی مشخصهها را پیادهسازی میکنند، با انواع مطابقت دارند، رویدادها را منتشر میکنند، و به فرمانها پاسخ میدهند.
- گروههای دستگاه مجموعههایی از دستگاهها هستند که کاربر در یک ساختار تعریف میکند.
- خودکارسازیها بخشی از ساختار هستند و از فرادادههای خانه و دستگاهها برای خودکارسازی کارهای خانه استفاده میکنند.
شکل ۱ این معماری را نشان میدهد:
انواع دستگاه Home API ممکن است توسط Matter، استانداردی باز برای خانه هوشمند، پشتیبانی شوند یا دستگاه Cloud-to-cloud در بومسازگان Google Home باشند. برخیاز انواع دستگاهها ممکن است عملکرد هر دو را در خود داشته باشند. برای اطلاعات بیشتر، انواع دستگاههای پشتیبانیشده در Android را ببینید.
در Matter، عملکرد دستگاه براساس خوشهها گروهبندی میشود، که در Home API بهعنوان ویژگیهای استاندارد Matter نشان داده میشوند. Home API از مجموعه استاندارد Matter خوشهها که در مشخصات فعلی Matter تعریف شده است پشتیبانی میکند.
در بومسازگان Google Home، عملکرد دستگاه براساس ویژگیهای خانه هوشمند گروهبندی میشود که در Home API بهعنوان ویژگیهای خانه هوشمند Google نشان داده میشوند. Home API از مجموعه ویژگیهای خانه هوشمند که در برنامه Cloud-to-cloud تعریف شده است پشتیبانی میکند.
ویژگیهای دیگر، مثل خوشههای مختص سازنده و ویژگیهای پلاتفرم، نیز دردسترس هستند. برای کسب اطلاعات بیشتر، مدل داده در Android را ببینید.
بومسازگان
بومسازگان Google Home پایهای ساده برای ساخت، مدیریت، ایمنسازی، و ادغام تجربههای خانه هوشمند فراهم میکند. شکل ۲ نشان میدهد که چگونه همه مؤلفهها باهم کار میکنند.
این بومسازگان شامل موتور خودکارسازی Google است که خودکارسازیها را ذخیره و اجرا میکند. این خودکارسازیها روشی برای خودکار کردن تکالیف و تنظیمات دستگاه در خانه ارائه میدهند.
Home API از OAuth 2.0 برای اعطای دسترسی به دستگاههای موجود در ساختار استفاده میکند. OAuth به کاربر اجازه میدهد بدون نیاز به افشای اعتبارنامه ورود به سیستم خود، به برنامه یا سرویس اجازه دسترسی بدهد.
از Google Home Developer Console برای مدیریت همه مراحل پروژه Home APIs استفاده میشود، از درستیسنجی نمانام گرفته تا توسعه، آزمایش، و صدور گواهینامه برای راهاندازی نهایی. این برنامه فرایند توسعه را ساده میکند و درعینحال ابزارهای قدرتمند و توزیع را ازطریق بومسازگان Google Home ارائه میدهد.
زبان
Home API برای Android به زبان Kotlin نوشته شده است و میانای اصطلاحی Kotlin را ارائه میدهد که از Flow برای مدیریت وضعیت و اشتراک استفاده میکند. این روش مزایای متعددی نسبت به API اشتراک استاندارد دارد.
توصیه میکنیم با اسناد Kotlin درباره روالهای مشترک، جریان، و Jetpack Compose آشنا شوید، اگر قبلاً آشنا نشدهاید:
- توسعه برنامههای Android با Kotlin
- یادگیری Kotlin برای Android
- روالهای مشترک Kotlin در Android. این codelabهای خاص ممکن است مفید باشند:
- جریانهای Kotlin در Android و بهطور خاص، StateFlow.
- حالت و Jetpack Compose، بهویژه تابع
collectAsStateWithLifecycle(). این تابع بهطور خودکار مدیریت میکند مشترک شدن و لغو اشتراک از جریانها براساس اینکه آیا رابط کاربری نشاندهنده آن وضعیت است درواقع در پیشزمینه است یا نه. - اگر با Automation API کار میکنید، مطالعه درباره سازندگان ایمنی تایپی Kotlin برای درک نحوه عملکرد Automation DSL مفید است.
شناسههای نهاد
هر نهاد در Home API شناسهای دارد که نشاندهنده شناسه اصلی آن است. این شناسه یک شناسه یکتا و ثابت است که در طول عمر نهاد هرگز تغییر نخواهد کرد. از این شناسه میتوان برای ذخیره کردن اشیا در حافظه نهان یا بررسی برابری استفاده کرد، زیرا فراداده نهاد میتواند تغییر کند.
برای اینکه بدانید کدام نهادها شناسه دارند،
میانای HasId را ببینید.
نگاشت اصطلاحات
نهادها در Home APIs به مفاهیم Matter و Cloud-to-cloud بهصورت زیر نگاشت میشوند:
| Home APIs | Matter | Cloud-to-cloud |
|---|---|---|
| ویژگی | خوشه | ویژگی |
| مشخصه | مشخصه | مشخصه، وضعیت |
| فرمان | فرمان | فرمان |
| رویداد | رویداد | پاسخ پیگیری، اعلان |