הסרת מכשיר כוללת את הוצאתו משימוש במבנה. משתמש יכול לעשות את זה באמצעות Google Home app (GHA), ואפליקציה יכולה להוציא משימוש מכשיר לבית חכם באופן פרוגרמטי. יש מגבלות על המכשירים שאפשר להסיר. בנוסף, הסרת מכשיר יכולה להשפיע על המבנה ועל חוויית המשתמש באפליקציה.
מה אפשר להסיר
אפשר להסיר את המכשירים הבאים באופן אוטומטי באמצעות ממשקי ה-API של Home:
- Matter מכשירים שלגביהם לאפליקציה שלכם יש הרשאות.
- Matter, בתנאי שלאפליקציה יש גישה לכל המכשירים שמחוברים דרך הגשר. הסרת הגשר מסירה את כל המכשירים של Matter שמחוברים אליו.
מה אי אפשר להסיר
אי אפשר להסיר את המכשירים הבאים באופן פרוגרמטי באמצעות ממשקי ה-API של Home:
- Matter מכשירים שחסרות לאפליקציה הרשאות משתמש לגביהם.
- מכשירים פרטניים שמחוברים מאחורי גשר Matter.
- Cloud-to-cloud מכשירים מקושרים.
- מכשירים עם נתיב כפול (מכשירים שמטמיעים גם את Matter וגם את Cloud-to-cloud).
נקודות חשובות שכדאי לשים לב אליהן לפני שמסירים מכשיר
כשמסירים מכשיר מהאפליקציה, הוא מוסר מכל המבנה, וזה משפיע על כל המשתמשים וכל האפליקציות, כולל GHA. בהתאם לסוג המכשיר, יכול להיות שיהיו השפעות נוספות להוצאה משימוש של מכשיר:
- מכשירים שמיישמים כמה סוגי מכשירים: אם למכשיר יש כמה פונקציות – לדוגמה, נורת תאורה חכמה שמשמשת גם כרכזת, הסרתה תגרום גם להסרת כל המכשירים המשויכים. האפליקציה צריכה להודיע למשתמש אם יושפעו כמה פונקציות במכשיר.
- היסטוריית המכשיר: מחיקת מכשיר עלולה לגרום להסרת ההיסטוריה של המכשיר.
- אזורי עבודה משותפים: חשוב להיזהר כשמוחקים מכשירים באזורי עבודה משותפים, כי לפעולה כזו יכולות להיות השלכות לא רצויות על משתמשים אחרים.
- אימות: הסרת מכשיר צריכה להתבצע רק בממשקים מאומתים, כמו טלפון נייד, ולא במכשירים לא מאומתים כמו טלוויזיות. פעולה כזו מהווה הפרה של המדיניות למפתחים של Google Home.
הסרת מכשיר
בדיקת הזכאות של מכשיר להסרה היא יקרה, ולכן צריך לבצע אותה רק כשנדרש. כדי לבדוק אם מכשיר עומד בדרישות להסרה, משתמשים בפקודה הבאה:
swift
let eligibility = try await device.decommissionEligibility
מכשירים בתקן Matter
אפשר להסיר מכשיר Matter באופן פרוגרמטי אם המכשיר לא נמצא מאחורי גשר Matter.
כדי להסיר מכשיר Matter, מתקשרים אליו:
decommission()
swift
let decommissionedDeviceIDs = try await device.decommission()
אם לא מוצגת שגיאה במהלך השיחה, היא הצליחה.
אפשר לבדוק אם מזהה המכשיר מופיע בין המזהים שמוחזרים על ידי הפקודה decommission():
swift
do {
let decommissionedDeviceIDs = try await device.decommission()
print("The following devices were decommissioned: \(decommissionedDeviceIDs)")
} catch {
print("An error occurred: \(error)")
}
מכשירים שלא תומכים בתקן Matter
אי אפשר להסיר מכשירים שאינם Matter באופן אוטומטי. כדי להסיר מכשיר שאינו Matter, אפשר לשלוח בקשת סנכרון (ראו שליחת בקשת סנכרון) או למחוק את השילוב של Cloud-to-cloud (ראו מחיקת שילוב שהופעל בין ענן לענן).
אם מתקשרים אל decommission() במכשיר שהוא לא Matter, מתקבלת שגיאה HomeError.
אחרי שמסירים מכשיר שאינו Matter, בודקים אם המכשיר מופיע כדי לוודא שהוא הוסר בהצלחה:
swift
guard try await !self.context.devices().list().contains(where: { $0.id == deviceID })
else {
// The device still exists in Home APIs
}
מכשירים עם כמה מקורות
מכשירים ממקורות מרובים הם מכשירים שמשתמשים בממשקי API של Cloud-to-cloud ושל Matter. אם תבדקו את הזכאות להוצאה משימוש של מכשיר כזה, תקבלו את ההודעה DecommissionIneligibleReason.multiSourceDevice, שמציינת שלא ניתן להוציא את המכשיר משימוש כי הוא מגיע מכמה מקורות.
כדי להסיר מכשיר עם כמה מקורות, פועלים לפי השלבים הבאים:
- מסירים את השיוך של Cloud-to-cloud כמו שמתואר במאמר בנושא מכשירים שאינם Matter.
- מוציאים את מכשיר Matter משימוש כמו שמתואר במאמר בנושא מכשירי Matter.
חשוב לבצע את השלבים האלה לפי הסדר. אם תנסו להוציא את מכשיר Matter משימוש לפני שתסירו את השיוך של Cloud-to-cloud, תוצג שגיאה HomeError.