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

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

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

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

תנור

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

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

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

Home APIs Cloud-to-cloud
OvenCavityOperationalState RunCycle

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

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

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

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

מכשיר התנור צריך גם לפרסם התראה על מחזור הפעלה על ידי עדכון המאפיינים priority, status ו-currentCycleRemainingTime של RunCycle. בדוגמה הבאה, האירוע OperationalStateTrait.OperationCompletion נשלח, ואפשר להשתמש בו כדי לציין שהתנור עבר מהמחזור pre-heating (חימום מוקדם) למחזור pre-heated (חימום מוקדם הושלם):

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

שימוש ב-Oven באוטומציה

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

sequential {
  let operationalState = starter(
    oven,
    OvenDeviceType.self,
    OvenCavityOperationalStateTrait.self
  )
  operationalState
  condition {
    operationalState.phaseList[operationalState.currentPhase.toUInt()].equals("pre-heated")
  }
  for speaker in speakers {
    action(speaker, SpeakerDeviceType.self) {
      Google.AssistantBroadcastTrait.broadcast(msg: "Oven Cycle Complete")
    }
  }
}

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