تعرض واجهات برمجة التطبيقات لمنزل Google على Android جميع الأجهزة في منظومة Google Home المتكاملة في نموذج بيانات موحّد. يشمل نموذج البيانات هذا جميع أنواع الأجهزة (من Google Nest أو الشركات المصنّعة التابعة لجهات خارجية)، بغض النظر عن تكنولوجيا المنزل المزوّد بأجهزة ذكية الأساسية (مثل Matter أو Cloud-to-cloud)، ويوفر مساحة مشتركة لواجهة برمجة التطبيقات تتيح للمطوّرين إنشاء تجارب مستخدمين لكل من smart home ومطوّري تطبيقات الأجهزة الجوّالة.
أنواع الأجهزة
أنواع الأجهزة المعروضة في واجهات برمجة التطبيقات لمنزل Google هي توحيد لنماذج البيانات Matter وCloud-to-cloud. بعضها مشتق مباشرةً من Matter، وبعضها عبارة عن امتداد لأنواع أجهزة Matter، وبعضها مشتق من Cloud-to-cloud.
تحتوي أنواع الأجهزة على سمات تُستخدَم للتحكّم في الأجهزة وإدارتها. مثل أنواع الأجهزة، يتم استخلاص السمات من مجموعات Matter وسمات Cloud-to-cloud، ويتم عرضها بتنسيق مشترك يشبه تنسيق مجموعات Matter. في Home APIs، تُسمّى السمات المستندة إلى Matter سمات، وليس مجموعات.
وبالتالي، تم تصميم أنواع الأجهزة وسماتها في واجهات برمجة التطبيقات لمنزل Google لتكون Matter. يكون لنوع الجهاز أو السمة Matter الأولوية على النوع أو السمة المشابهة Cloud-to-cloud.
اطّلِع على أنواع الأجهزة المتوافقة على Android للحصول على قائمة بأنواع الأجهزة وسماتها.
السمات
يتم إنشاء إصدارات Kotlin من السمات لاستخدامها في واجهات برمجة التطبيقات الخاصة بمنصة Home، وهي تتضمّن ميزات إضافية خاصة بواجهات برمجة التطبيقات هذه (لا تتوفّر في Matter أو Cloud-to-cloud). على سبيل المثال، تحتوي كل سمة على طرق للتحقّق مما إذا كانت السمة تتوافق مع سمة أو أمر معيّن. ويكون ذلك مفيدًا عند تحديد ما إذا كان يمكن تنفيذ إجراءات معيّنة أو قراءة الحالة على جهاز المستخدم، لأنّه ليس من المتوقّع أن تتوفّر الميزات نفسها على جميع الأجهزة من النوع نفسه.
يتم تضمين كل سمة في مساحة الاسم الخاصة بها ويجب استيرادها بشكل فردي لاستخدامها.
على سبيل المثال، لاستخدام السمة Matter On/Off ونوع الجهاز On/Off Plug-in Unit، استورِد الحِزم التالية إلى تطبيقك:
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.
تركيبة نوع الجهاز
تتوافق واجهات برمجة التطبيقات لمنزل Google مع معظم مجموعات التطبيقات Matter كسمات في نموذج البيانات. لا يتم عرض مجموعات الإعدادات المنخفضة المستوى التي لا توفّر فائدة مباشرة للمستخدمين النهائيين، مثل Binding، من خلال واجهات برمجة التطبيقات الخاصة بمنصة Home.
عادةً ما تحمل السمات المستمدة من سمات Cloud-to-cloud المنزل الذكي الاسم نفسه بين Cloud-to-cloud وواجهات برمجة التطبيقات Home، كما هو الحال في مثال OpenClose. ويتم تمثيل البعض الآخر كإضافات لسمات Matter، ويتم إنشاؤها باستخدام إضافات خاصة بالشركة المصنّعة Matter. تساعد هذه السمات في سدّ الفجوة بين سمة smart home التي يتم فيها تقسيم الوظائف بين حزمة تطوير البرامج (SDK) الخاصة بـ Matter ومنظومة Google Home المتكاملة. ومن الأمثلة المحدّدة على ذلك أنواع أجهزة Google* التي تأتي من Cloud-to-cloud ولكن ليس لها نظائر في Matter حتى الآن.
تتكوّن أنواع الأجهزة من سمات من أحد المصدرَين أو كليهما، Matter أو Cloud-to-cloud.
على سبيل المثال، يتألف نوع جهاز المشجّع من كليهما ويتضمّن ثلاث سمات:
- توفّر السمة
IdentifyMatter جميع الوظائف من MatterIdentify. - توفّر السمة
FanControlMatter جميع الوظائف من السمة MatterFanControl - توفّر سمة
ExtendedFanControlGoogle جميع الوظائف من سمة smart homeFanSpeedGoogle غير المشمولة بسمةFanControlMatter.
يوفر هذا النوع من تركيبة السمات نموذجًا مرنًا لوظائف نوع الجهاز الكاملة، مع تجريد نماذج بيانات smart home الأساسية.
مجموعات الأجهزة
تمثّل مجموعة الأجهزة مجموعة من الأجهزة يحدّدها المستخدم ضمن بنية واحدة. يتم تمثيل مجموعات الأجهزة من خلال العنصر DeviceGroup، وهو يختلف عن HomeDevice.
لمزيد من المعلومات حول "مجموعات الأجهزة"، يمكنك الاطّلاع على واجهات برمجة التطبيقات الخاصة بالبنية.