نموذج البيانات على Android

توفّر واجهات برمجة التطبيقات لمنزل Google على Android جميع الأجهزة في منظومة Google Home المتكاملة في نموذج بيانات موحّد. يغطي نموذج البيانات هذا جميع أنواع الأجهزة (من Google Nest أو الشركات المصنّعة التابعة لجهات خارجية)، بغض النظر عن تكنولوجيا المنزل المزوّد بأجهزة ذكية الأساسية (مثل Matter أو Cloud-to-cloud)، ويوفّر واجهة برمجة تطبيقات مشتركة لإنشاء تجارب للمستخدمين لكل من smart home ومطوّري التطبيقات المتوافقة مع الأجهزة الجوّالة.

أنواع الأجهزة

إنّ أنواع الأجهزة المعروضة في Home APIs هي توحيد لنماذج بيانات Matter وCloud-to-cloud. بعضها مشتق مباشرةً من Matter، وبعضها امتداد لأنواع أجهزة Matter، وبعضها مشتق من Cloud-to-cloud.

تحتوي أنواع الأجهزة على سمات تُستخدَم للتحكّم في الأجهزة وإدارتها. Like device types, traits are derived from Matter clusters and Cloud-to-cloud traits and presented in a common format that is similar to that of Matter clusters. في واجهات برمجة تطبيقات Home، تُسمّى السمات المشتقة من Matter باسم سمات، وليس مجموعات.

بالتالي، تم تصميم أنواع الأجهزة وسماتها في Home APIs لتكون متوافقة مع معيار Matter أولاً. ويكون لنوع الجهاز أو السمة Matter الأولوية على نظيرهما Cloud-to-cloud.

يمكنك الاطّلاع على أنواع الأجهزة المتوافقة على Android للحصول على قائمة بأنواع الأجهزة وسماتها.

السمات

يتم إنشاء إصدارات Kotlin من السمات لاستخدامها في Home APIs، وهي تحتوي على ميزات إضافية خاصة بـ Home APIs (غير متوفّرة في 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.

يمكن استخدام معظم السمات مع ميزة "التشغيل الآلي"، وبعض السمات متاحة فقط لميزة "التشغيل الآلي". لمزيد من التفاصيل، يُرجى الاطّلاع على سمات واجهة برمجة التطبيقات الخاصة بالتشغيل الآلي المتوافقة مع أجهزة Android.

توزيع أنواع الأجهزة

تتوافق واجهات برمجة التطبيقات لمنزل Google مع معظم مجموعات تطبيقات Matter كسمات في نموذج البيانات. لا تتيح واجهات Home API الوصول إلى مجموعات الإعدادات المنخفضة المستوى التي لا توفّر فائدة مباشرة للمستخدمين النهائيين، مثل Binding.

السمات المستمَدة من سمات المنزل المزوّد بأجهزة ذكية في Cloud-to-cloud عادةً ما تحمل الاسم نفسه في Cloud-to-cloud وواجهات برمجة التطبيقات Home API، كما هو الحال في مثال OpenClose. ويتم تمثيل البعض الآخر كإضافات لسمات Matter، ويتم إنشاؤها باستخدام إضافات Matter الخاصة بالشركة المصنّعة. تعمل هذه السمات على سد الفجوة في سمة smart home حيث يتم تقسيم الوظائف بين حزمة تطوير البرامج (SDK) لـ Matter ومنظومة Google Home المتكاملة. ومن الأمثلة المحدّدة على ذلك أنواع الأجهزة المتوافقة مع Google* التي تأتي من Cloud-to-cloud ولكن ليس لديها أجهزة مماثلة متوافقة مع Matter بعد.

تتكوّن أنواع الأجهزة من سمات من أحد المصدرَين أو كليهما، Matter أو Cloud-to-cloud.

على سبيل المثال، يتكوّن نوع جهاز المروحة من كليهما ويضمّ ثلاث سمات:

  • توفّر سمة Identify Matter جميع الوظائف من Matter Identify.
  • توفّر سمة Matter FanControl جميع الوظائف من سمة Matter FanControl
  • توفّر سمة ExtendedFanControl من Google جميع الوظائف من سمة smart home FanSpeed من Google غير المشمولة في سمة FanControl Matter

يوفّر هذا النوع من تركيب السمات نموذجًا مرنًا لوظائف نوع الجهاز الكاملة، مع تجريد نماذج بيانات smart home الأساسية.

مجموعات الأجهزة

تمثّل مجموعة الأجهزة مجموعة من الأجهزة يحدّدها المستخدم ضمن بنية واحدة. يتم الاحتفاظ بعضوية المجموعة في خدمات Google وتكون مرئية للأعضاء الآخرين في البنية والتطبيقات الأخرى التي يمكنها الوصول إلى البنية.

يتم تمثيل مجموعات الأجهزة من خلال الكيان DeviceGroup، وهو يختلف عن HomeDevice. يسرد كل HomeDevice المجموعات التي ينتمي إليها من خلال سمة GroupMembership (يتم حلّها بشكل تفاعلي باستخدام group.devices())، حتى يتمكّن تطبيقك من فحص عضويات المجموعة والتكرار على الأجهزة الأعضاء في المجموعة مباشرةً. بالإضافة إلى ذلك، تنفّذ السمة DeviceGroup واجهة PartsProvider لعرض أنواع الأجهزة المتوافقة مع الأجهزة الأعضاء عند استهداف المجموعة ككل.

لمزيد من المعلومات حول مجموعات الأجهزة، يمكنك الاطّلاع على واجهات برمجة التطبيقات الخاصة بالبنية والتحكّم في مجموعة أجهزة.