הסרת מכשיר

הסרת מכשיר כוללת את הוצאתו משימוש במבנה. משתמש יכול לעשות את זה באמצעות 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, שמציינת שלא ניתן להוציא את המכשיר משירות כי הוא מגיע מכמה מקורות.

כדי להסיר מכשיר עם כמה מקורות, פועלים לפי השלבים הבאים:

  1. מסירים את השיוך של Cloud-to-cloud כמו שמתואר במאמר בנושא מכשירים שלא תומכים ב-Matter.
  2. מוציאים את מכשיר Matter משימוש כמו שמתואר במאמר בנושא מכשירי Matter.

חשוב לבצע את השלבים האלה לפי הסדר. אם תנסו להוציא את מכשיר Matter משירות לפני שתסירו את השיוך של Cloud-to-cloud, תופיע שגיאה HomeError.