אפשר להטמיע מכשירים בסביבה העסקית של Google Home באמצעות Cloud-to-cloud, Matter או שניהם. יש סוגי מכשירים מורכבים יותר מאחרים, וקשה יותר לפתח אותם באמצעות ממשקי Home API באופן שמאפשר ממשק חלק עם מכשירים אחרים בסביבה.
אחד האתגרים בהטמעה של חלק מסוגי המכשירים האלה הוא שהמכשירים יכולים להיות מורכבים משילובים שונים של תכונות. לא כל השילובים עובדים באותה מידה. בנוסף, מודל הנתונים של Cloud-to-cloud ממפה למודל הנתונים של Matter, אבל לא תמיד בצורה ברורה של אחד לאחד. במאמר מודל נתונים ב-iOS מוסבר בהרחבה על מודלים של נתונים ועל המיפויים שלהם.
בדף הזה מוסבר איך מודלי הנתונים של מכשירים ספציפיים ממופים זה לזה, ומוצעות הנחיות לגבי התכונות שבהן צריך להשתמש כדי להטמיע את סוגי המכשירים האלה.
תנור
סוג המכשיר Oven (תנור) (OvenDeviceType) והתכונות של הרכיבים שלו לא פשוטים להטמעה בהשוואה לסוגי מכשירים אחרים. יש כמה דרכים להטמיע תנור ב-Matter, אבל לא כל הגישות מאפשרות פעולה חלקה עם מכשירים אחרים או עם הסביבה העסקית של Google Home.
מיפוי תכונות
במקום להטמיע מכשיר Matter Oven באמצעות האשכולות Oven Mode ו-On Off, מומלץ להשתמש באשכול Oven Cavity Operational State. האשכול הזה מיוצג בממשקי ה-API לבית על ידי המאפיין OvenCavityOperationalStateTrait, וממופה למאפיין Cloud-to-cloud של RunCycle. הוא מגדיר שלבים כמו "חימום מראש", "חומם מראש" ו "קירור".
| Home APIs | Cloud-to-cloud |
|---|---|
OvenCavityOperationalState
|
RunCycle
|
יש מגבלות למודל הנתונים של Cloud-to-cloud Oven. מודל הנתונים של התנור Cloud-to-cloud מאפשר רק תא אחד, עם RunCycle אחד. לעומת זאת, ב-Matter, תנור עם כמה תאים מיוצג כנקודת קצה של מכשיר עם אשכול Oven Cavity Operational State לכל תא.
בחלק מהתנורים, יכול להיות שרשימת השלבים תשתנה בזמן ההפעלה. לדוגמה, לתנורים שתומכים בחימום מראש יכולים להיות ערכים שונים ברשימת השלבים במהלך שלב החימום מראש, בהשוואה לשלבי החימום או הקירור.
הטמעה מומלצת
כמו שצוין בקטע הקודם, הטמעה של תנור Matter צריכה להטמיע את האשכול Oven Cavity Operational State, שמופיע בממשקי Home API כמאפיין OvenCavityOperationalStateTrait.
כדי לקבל את התוצאות הכי טובות, ודאו שהתכונה RunCycle מוטמעת במכשיר Cloud-to-cloud Oven, ופרסמו את המצב הנוכחי על ידי הגדרת המאפיין currentRunCycle. אפשר לראות את המאפיין הזה בממשקי Home API באמצעות המאפיינים OvenCavityOperationalStateTrait.phaseList ו-OvenCavityOperationalStateTrait.currentPhase.
מכשיר התנור צריך גם לפרסם התראה על מחזור הפעלה של המכשיר על ידי עדכון המאפיינים priority, status ו-currentCycleRemainingTime של RunCycle. בדוגמה הבאה נשלח אירוע OperationalStateTrait.OperationCompletion, ואפשר להשתמש בו כדי לציין שהתנור עבר ממצב "חימום מראש" למצב "חומם מראש":
{
"currentRunCycle": [
{
"currentCycle": "pre-heating",
"nextCycle": "pre-heated",
"lang": "en"
}
],
"currentTotalRemainingTime": 1200,
"currentCycleRemainingTime": 300
}
שימוש בתנור בפעולה אוטומטית
כשיוצרים אוטומציה לתנור שמוטמע באמצעות האשכול 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")
}
}
}
דוגמה מלאה מופיעה במאמר אם הטלוויזיה פועלת כשהתנור מסיים את הפעולה, האורות בסלון מהבהבים והרמקול החכם משמיע את ההודעה "התנור סיים את הפעולה".