מודל נתונים ב-Android

ממשקי ה-API של Home ל-Android מציגים את כל המכשירים בסביבה העסקית של Google Home במודל נתונים מאוחד. מודל הנתונים הזה כולל את כל סוגי המכשירים (של Google Nest או של יצרנים אחרים), בלי קשר לטכנולוגיית הבית החכם שבה הם משתמשים (כמו Matter או Cloud-to-cloud), ומספק ממשק API משותף לפיתוח חוויות משתמש גם למפתחי smart home וגם למפתחי אפליקציות לנייד.

סוגי מכשירים

סוגי המכשירים שמוצגים בממשקי ה-API של Home הם איחוד של מודלים של נתונים של Matter ו-Cloud-to-cloud. חלקם נגזרים ישירות מ-Matter, חלקם הם הרחבה של סוגי המכשירים של Matter וחלקם נגזרים מ-Cloud-to-cloud.

סוגי המכשירים מכילים תכונות שמשמשות לשליטה במכשירים ולניהול שלהם. בדומה לסוגי המכשירים, המאפיינים נגזרים מאשכולות של Matter וממאפיינים של Cloud-to-cloud, ומוצגים בפורמט נפוץ שדומה לזה של אשכולות של Matter. ב-Home APIs, המאפיינים שנגזרים מ-Matter נקראים מאפיינים, ולא אשכולות.

לכן, סוגי המכשירים והתכונות ב-Home APIs מיועדים קודם כל ל-Matter. סוג מכשיר או מאפיין של Matter מקבלים עדיפות על פני מאפיין מקביל של Cloud-to-cloud.

במאמר סוגי מכשירים נתמכים ב-Android מופיעה רשימה של סוגי מכשירים והתכונות שלהם.

תכונות

גרסאות Kotlin של תכונות נוצרות לשימוש ב-Home APIs, והן מכילות תכונות נוספות שספציפיות ל-Home APIs (ולא נמצאות ב-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.

הרכב סוגי המכשירים

ממשקי Home API תומכים ברוב אשכולות האפליקציות של Matter כתכונות במודל הנתונים. אשכולות של הגדרות ברמה נמוכה שלא מציעים תועלת ישירה למשתמשי הקצה, כמו Binding, לא נחשפים דרך ממשקי ה-API לבית חכם.

בדרך כלל, לתכונות שנגזרות מתכונות של בית חכם ב-Cloud-to-cloud יש אותו שם ב-Cloud-to-cloud וב-Home APIs, כמו בדוגמה של OpenClose. אחרים מיוצגים כתוספים של תכונות Matter, שנוצרו באמצעות תוספים ספציפיים ליצרן של Matter. התכונות האלה מגשרות על הפער בתכונה של smart home, שבה הפונקציונליות מפוצלת בין ה-SDK של Matter לבין הסביבה העסקית של Google Home. דוגמה ספציפית לכך היא סוגי המכשירים של Google* שמגיעים מ-Cloud-to-cloud אבל עדיין אין להם מקבילים בתקן Matter.

סוגי המכשירים מורכבים ממאפיינים מאחד מהמקורות, Matter או Cloud-to-cloud, או משניהם.

לדוגמה, סוג המכשיר מאוורר מורכב משניהם וכולל שלוש תכונות:

  • התכונה 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 כדי לחשוף את סוגי המכשירים שנתמכים על ידי המכשירים החברים בו, כשמטרגטים את הקבוצה כולה.

מידע נוסף על קבוצות מכשירים זמין במאמרים ממשקי API של מבנים ושליטה בקבוצת מכשירים.