יכולת פעולה הדדית ב-Android

אפשר להטמיע מכשירים במערכת האקולוגית של Google Home באמצעות Cloud-to-cloud,‏ Matter או שניהם. יש סוגים של מכשירים שהם מורכבים יותר מאחרים, וקשה לפתח אותם כשמשתמשים בממשקי ה-API של Home באופן שמאפשר אינטראקציה חלקה עם מכשירים אחרים בסביבה העסקית.

אחד האתגרים בהטמעה של חלק מסוגי המכשירים האלה הוא שהמכשירים יכולים להיות מורכבים משילובים שונים של מאפיינים. לא כל השילובים פועלים באותה מידה. בנוסף, מודל הנתונים Cloud-to-cloud ממופה למודל הנתונים Matter, אבל לא תמיד בצורה ברורה של מיפוי אחד לאחד. במאמר מודל נתונים ב-Android מפורטות ההתאמות בין מודלי הנתונים.

בדף הזה מופיע מידע נוסף על מיפוי מודלים של נתונים למכשירים ספציפיים, והנחיות לגבי המאפיינים שבהם כדאי להשתמש כדי להטמיע את סוגי המכשירים האלה.

תנור

סוג המכשיר Oven (תנור) (OvenDevice) והמאפיינים של הרכיבים שלו לא פשוטים להטמעה כמו סוגי מכשירים אחרים. יש כמה דרכים להטמיע תנור ב-Matter, אבל לא כל הגישות מאפשרות פעולה חלקה עם מכשירים אחרים או עם המערכת האקולוגית של Google Home.

מיפוי מאפיינים

במקום להטמיע מכשיר Matter Oven באמצעות האשכולות Oven Mode ו-On Off, מומלץ להשתמש באשכול Oven Cavity Operational State. האוסף הזה מיוצג בממשקי ה-API של Home באמצעות מאפיין OvenCavityOperationalState, ומופה למאפיין Cloud-to-cloud RunCycle. הוא מגדיר שלבים כמו pre-heating (חימום מראש), pre-heated (מחומם מראש) ו-cooling down (התקררות).

Home APIs Cloud-to-cloud
OvenCavityOperationalState RunCycle

יש מגבלות במודל הנתונים של Cloud-to-cloud Oven. מודל הנתונים של תנור Cloud-to-cloud מאפשר רק תא אחד, עם RunCycle אחד. לעומת זאת, Matter מתאר תנור עם כמה תאים כנקודת קצה של מכשיר עם אשכול Oven Cavity Operational State לכל תא.

יכול להיות שבמכשירים מסוימים מסוג Oven, רשימת השלבים תשתנה בזמן הריצה. לדוגמה, לתנורים שתומכים בחימום מראש יכולים להיות ערכים שונים ברשימת השלבים במהלך שלב החימום מראש מאשר במהלך שלבי החימום או הקירור.

כפי שצוין בקטע הקודם, הטמעה של Matter Oven צריכה להטמיע את אשכול Oven Cavity Operational State, שממומש בממשקי Home API כמאפיין OvenCavityOperationalState.

כדי לקבל את התוצאות הטובות ביותר, חשוב לוודא שמכשיר Cloud-to-cloud התנור מטמיע את מאפיין RunCycle ולפרסם את המצב הנוכחי על ידי הגדרת מאפיין currentRunCycle. אפשר לראות את המאפיין הזה באמצעות ממשקי ה-API של Home דרך המאפיינים OvenCavityOperationalState.phaseList ו-OvenCavityOperationalState.currentPhase.

מכשיר התנור צריך גם לפרסם התראה על מחזור הפעלה על ידי עדכון המאפיינים priority, status ו-currentCycleRemainingTime של RunCycle. בדוגמה הבאה, אירוע OperationalState.OperationCompletion נשלח, ואפשר להשתמש בו כדי לציין שהתנור עבר מהמחזור 'חימום מראש' למחזור 'התחמם מראש':

{
  "currentRunCycle": [
    {
      "currentCycle": "pre-heating",
      "nextCycle": "pre-heated",
      "lang": "en"
    }
  ],
  "currentTotalRemainingTime": 1200,
  "currentCycleRemainingTime": 300
}

שימוש בתנור באוטומציה

כשיוצרים אוטומציה לתנור שהוטמעה באמצעות אשכול Oven Cavity Operational State, צריך להפנות למאפיין currentPhase כדי לדעת באיזה מחזור התנור נמצא:

   sequential {
    val starterNode =
      starter<_>(oven, OvenDevice, OvenCavityOperationalState /* Or OperationalState */)
    condition {
      expression = starterNode.phaseList[operationalState.currentPhase.toUInt()] equals "pre-heated"
    }
    action(speaker, SpeakerDevice) {
    command(AssistantBroadcast.broadcast("Oven Cycle Complete"))
  }
  // Additional actions here as needed
}

דוגמה מלאה אפשר לראות במאמר הבהוב האורות והודעה כשהתנור מגיע לטמפרטורה שנבחרה.