יכולת פעולה הדדית

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

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

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

תנור

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

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

במקום להטמיע מכשיר Matter Oven באמצעות האשכולות Oven Mode ו-On Off, מומלץ להשתמש באשכולות Oven Cavity Operational State. האשכולות האלה מיוצגים בממשקי ה-API של Home באמצעות המאפיין OvenCavityOperationalState, וממופים למאפיין Cloud-to-cloud RunCycle. הוא מגדיר שלבים כמו 'חימום מראש', 'מחומם מראש' ו'התקררות'.

ממשקי API לבית Cloud-to-cloud
OvenCavityOperationalState RunCycle

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

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

כפי שצוין בקטע הקודם, הטמעה של Matter Oven צריכה ליישם את האשכולות של Oven Cavity Operational State, שמתוארים בממשקי ה-API של Home בתור המאפיין 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
}

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

כשאתם יוצרים תהליך אוטומציה לאובן שמוטמע באמצעות האשכולות של מצב התפעול של תא האפייה, תוכלו להיעזר במאפיין 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
}

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