یک دستگاه را بردارید

حذف یک دستگاه شامل خارج کردن آن از ساختار است. یک کاربر می‌تواند این کار را با استفاده از 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 ، decommissionDevice() را روی آن فراخوانی کنید:

val decommissionedDeviceIds = device.decommissionDevice()

اگر تماس خطایی ایجاد نکرد، موفق شد.

می‌توانید بررسی کنید که آیا شناسه دستگاه جزو شناسه‌هایی است که توسط decommissionDevice() بازگردانده شده است:

if (decommissionedDeviceIds.contains(deviceId)) {
  println("Decommission successful!")
} else {
  println("Decommission failed!")
}

دستگاه های بی ماده

دستگاه های بی Matter را نمی توان به صورت برنامه ریزی شده حذف کرد. برای حذف یک دستگاه غیر Matter ، می‌توانید یک درخواست همگام‌سازی صادر کنید (به درخواست همگام‌سازی مراجعه کنید)، یا ادغام Cloud-to-cloud را حذف کنید ( به حذف یکپارچه‌سازی 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 دریافت خواهید کرد که نشان می دهد چون دستگاه چند منبعی است، نمی توان آن را از کار انداخت.

برای حذف یک دستگاه چند منبع، از روش زیر استفاده کنید:

  1. ارتباط Cloud-to-cloud را همانطور که در دستگاه های غیر ماده توضیح داده شده است حذف کنید.
  2. دستگاه Matter را همانطور که در Matter devices توضیح داده شده است از کار خارج کنید.

ترتیب این مراحل مهم است. اگر قبل از حذف ارتباط Cloud-to-cloud سعی کنید دستگاه Matter را از کار بیندازید، یک HomeException پرتاب می شود.