הסרת מכשיר כוללת את הוצאתו משימוש במבנה. משתמש יכול לעשות את זה באמצעות Google Home app (GHA), ואפליקציה יכולה להוציא משימוש מכשיר לבית חכם באופן פרוגרמטי. יש מגבלות לגבי המכשירים שאפשר להסיר. בנוסף, הסרת מכשיר עלולה להשפיע על המבנה ועל חוויית המשתמש באפליקציה.
מה אפשר להסיר
אפשר להסיר את המכשירים הבאים באופן אוטומטי באמצעות ממשקי ה-API של Home:
- Matter מכשירים שלגביהם לאפליקציה שלכם יש הרשאות.
- Matter, בתנאי שלאפליקציה שלכם יש גישה לכל המכשירים שמחוברים דרך הגשר. הסרת הגשר מסירה את כל המכשירים של Matter שמחוברים אליו.
מה אי אפשר להסיר
אי אפשר להסיר את המכשירים הבאים באופן פרוגרמטי באמצעות ממשקי ה-API של Home:
- Matter מכשירים שבהם לאפליקציה שלך חסרות הרשאות משתמש.
- מכשירים פרטניים שמחוברים מאחורי גשר Matter.
- Cloud-to-cloud מכשירים מקושרים.
- מכשירים עם נתיב כפול (מכשירים שמטמיעים גם Matter וגם Cloud-to-cloud).
שיקולים חשובים לפני הסרת מכשיר
כשמסירים מכשיר מהאפליקציה, הוא מוסר מכל המבנה, וזה משפיע על כל המשתמשים וכל האפליקציות, כולל GHA. בהתאם לסוג המכשיר, יכול להיות שיהיו השפעות נוספות להוצאה משימוש של מכשיר:
- מכשירים שמטמיעים כמה סוגי מכשירים: אם למכשיר יש כמה פונקציות – לדוגמה, נורת תאורה חכמה שמשמשת גם כרכזת – הסרת המכשיר תגרום גם להסרת כל המכשירים המשויכים. האפליקציה צריכה להודיע למשתמש אם יושפעו כמה פונקציות במכשיר.
- היסטוריית המכשיר: מחיקת מכשיר עלולה לגרום להסרת ההיסטוריה של המכשיר.
- אזורי עבודה משותפים: חשוב להיזהר כשמוחקים מכשירים באזורי עבודה משותפים, כי לפעולה כזו יכולות להיות השלכות לא רצויות על משתמשים אחרים.
- אימות: צריך להסיר מכשירים רק בממשקים מאומתים, כמו טלפון נייד, ולא במכשירים לא מאומתים כמו טלוויזיות. פעולה כזו מהווה הפרה של המדיניות למפתחים של Google Home.
הסרת מכשיר
בדיקת הזכאות של מכשיר להסרה היא יקרה, ולכן צריך לבצע אותה רק כשנדרש. כדי לבדוק אם מכשיר עומד בדרישות להסרה, משתמשים בפקודה הבאה:
val eligibility = device.checkDecommissionEligibility() if (eligibility is DecommissionEligibility.Ineligible) { println("The device cannot be decommissioned.") } else if (eligibility is DecommissionEligibility.EligibleWithSideEffects) { println("The device can be decommissioned but there will be side effects on other devices.") } else if (eligibility is DecommissionEligibility.Eligible) { println("The device can be decommissioned.") }
מכשירים בתקן Matter
אפשר להסיר מכשיר Matter באופן אוטומטי אם המכשיר לא נמצא מאחורי גשר Matter.
כדי להסיר מכשיר Matter, מתקשרים אליו:
decommissionDevice()
val decommissionedDeviceIds = device.decommissionDevice()
אם לא מוחזרת שגיאה מהשיחה, היא הצליחה.
אפשר לבדוק אם מזהה המכשיר מופיע בין המזהים שמוחזרים על ידי הפקודה
decommissionDevice()
:
if (decommissionedDeviceIds.contains(deviceId)) { println("Decommission successful!") } else { println("Decommission failed!") }
מכשירים שלא תומכים בתקן Matter
אי אפשר להסיר מכשירים שאינם Matter באופן אוטומטי. כדי להסיר מכשיר שאינו Matter, אפשר לשלוח בקשת סנכרון (ראו בקשת סנכרון) או למחוק את השילוב של Cloud-to-cloud (ראו מחיקת שילוב שהופעל בין ענן לענן).
אם מתקשרים אל decommissionDevice()
במכשיר שהוא לא Matter, מתקבלת שגיאה HomeException
.
אחרי שמסירים מכשיר שאינו Matter, בודקים אם המכשיר מופיע כדי לוודא שהוא הוסר בהצלחה:
var removedDevice: HomeDevice? = null runBlockingCustom { try { removedDevice = homeManager.devices().get(deviceId) } catch (exception: Exception) { println("removal successful!") } } if (removedDevice != null) { println("removal failed!") }
מכשירים עם כמה מקורות
מכשירים ממקורות מרובים הם מכשירים שמשתמשים בממשקי API של Cloud-to-cloud וגם של Matter. אם תבדקו את הזכאות להוצאה משירות של מכשיר כזה, תקבלו את ההודעה DecommissionIneligibleReason.multiSourceDevice
, שמציינת שלא ניתן להוציא את המכשיר משירות כי הוא מגיע מכמה מקורות.
כדי להסיר מכשיר עם כמה מקורות, פועלים לפי השלבים הבאים:
- מסירים את השיוך של Cloud-to-cloud כמו שמתואר במאמר בנושא מכשירים שאינם תומכים ב-Matter.
- מוציאים את מכשיר Matter משימוש כמו שמתואר במאמר בנושא מכשירי Matter.
חשוב לבצע את השלבים האלה לפי הסדר. אם תנסו להוציא את מכשיר Matter משירות לפני שתסירו את השיוך של Cloud-to-cloud, תופיע שגיאה HomeException
.