نموذج البيانات على نظام التشغيل iOS

تعرض واجهات برمجة التطبيقات لمنزل Google لنظام التشغيل iOS جميع الأجهزة في منظومة 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.

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

السمات

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

لاستيراد السمات وأنواع الأجهزة، استورِد وحدة GoogleHomeTypes إلى تطبيقك:

import GoogleHomeTypes

يمكنك أيضًا استخدام typealias لأسماء السمات وأنواع الأجهزة لاختصار الرمز وتجنُّب تكرار مساحة الاسم:

import GoogleHomeTypes

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

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

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

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

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

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

على سبيل المثال، يتكوّن FanDeviceType من كليهما ويضمّ ثلاث سمات:

  • توفّر سمة IdentifyTrait Matter جميع الوظائف من Matter IdentifyTrait.
  • توفّر سمة FanControlTrait Matter جميع الوظائف من Matter FanControlTrait.
  • توفّر سمة Google في ExtendedFanControlTrait جميع الوظائف من smart home FanSpeedTrait في Google والتي لا تغطيها سمة FanControlTrait في Matter.

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

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

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

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

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