برداشتن دستگاه

برداشتن دستگاه شامل ازکار انداختن آن از ساختار می‌شود. کاربر می‌تواند این کار را بااستفاده از Google Home app (GHA) انجام دهد و برنامه می‌تواند دستگاه خانه هوشمند را به‌صورت برنامه‌ریزی‌شده از رده خارج کند. محدودیت‌هایی در مورد اینکه کدام دستگاه‌ها می‌توانند برداشته شوند وجود دارد. همچنین، برداشتن دستگاه می‌تواند بر ساختار و تجربه کاربری برنامه شما تأثیر بگذارد.

آنچه می‌توانید بردارید

می‌توانید دستگاه‌های زیر را ازطریق «میاناهای برنامه‌سازی کاربردی Home» به‌صورت برنامه‌ریزی‌شده بردارید:

  • ‫Matter دستگاه که برنامه شما برای آن‌ها اجازه دارد.
  • ‫Matter پل، به‌شرطی که برنامه‌تان به همه دستگاه‌های متصل ازطریق پل دسترسی داشته باشد. با برداشتن پل، همه دستگاه‌های Matter متصل به آن برداشته می‌شود.
  • دستگاه‌های دوربین و زنگ در پشتیبانی‌شده، ازجمله دوربین‌ها و زنگ‌های در Google Nest سازگار با Matter و همچنین دوربین‌های شریک سازگار. برای جزئیات مربوط به مدل‌های پشتیبانی‌شده و پشتیبانی‌نشده، به دوربین‌ها و زنگ‌های در مراجعه کنید.

آنچه نمی‌توانید بردارید

دستگاه‌های زیر را نمی‌توان ازطریق «میاناهای برنامه‌سازی کاربردی Home» به‌صورت برنامه‌ریزی‌شده برداشت:

  • ‫Matter دستگاه که برنامه شما اجازه‌های کاربر را برای آن‌ها ندارد.
  • دستگاه‌های منفرد متصل‌شده پشت پل Matter.
  • ‫Cloud-to-cloud دستگاه پیوندشده.
  • دستگاه‌های دو مسیره غیردوربینی (دستگاه‌هایی که هم Matter و هم Cloud-to-cloud را پیاده‌سازی می‌کنند، به‌غیراز دوربین‌ها و زنگ‌های در پشتیبانی‌شده).
  • دستگاه‌های دوربین و زنگ در پشتیبانی‌نشده، ازجمله نمایشگرهای هوشمند با دوربین‌های داخلی و دوربین‌های قدیمی که از Matter پشتیبانی نمی‌کنند (به دوربین‌ها و زنگ‌های در مراجعه کنید).

ملاحظات مهم قبل‌از برداشتن دستگاه

وقتی برنامه‌تان دستگاهی را برمی‌دارد، آن دستگاه از کل ساختار برداشته می‌شود و بر همه کاربران و همه برنامه‌ها، ازجمله GHA، تأثیر می‌گذارد. بسته به نوع دستگاه، ممکن است آثار جانبی دیگری برای برچیدن دستگاه وجود داشته باشد:

  • اگر دستگاهی چندین عملکرد داشته باشد، مثلاً چراغ هوشمندی که به‌عنوان هاب نیز عمل می‌کند، برداشتن آن باعث برداشته شدن همه دستگاه‌های منسوب نیز می‌شود. اگر چندین عملکرد دستگاه تحت‌تأثیر قرار می‌گیرد، برنامه باید به کاربر اطلاع دهد.
  • درصورت برداشتن دوربین یا زنگ در، همه سابقه ویدیویی شبانه‌روزی، سابقه ویدیویی رویداد، کلیپ‌های ضبط‌شده، و داده‌های کتابخانه چهره آشنا مربوط به آن دوربین در کل ساختار خانه برای همیشه حذف می‌شود.
  • ازکار انداختن دوربین باعث لغو اشتراک‌های فعال، مانند Google Home Premium یا سرویس‌های پایش شریک نمی‌شود. اشتراک‌ها تا زمانی که توسط کاربر لغو نشوند ادامه می‌یابند.
  • وقتی دوربین یا زنگ در از رده خارج می‌شود، پلاتفرم Home APIs صفحه تأیید مدیریت‌شده توسط Google را به کاربر نشان می‌دهد و توضیح می‌دهد که سابقه ویدیویی برای همیشه پاک خواهد شد. کاربر باید این پیام‌واره را تأیید کند تا دستگاه برداشته شود.
  • هنگام حذف دستگاه‌ها در سطوح مشترک احتیاط کنید، زیرا این کار می‌تواند پیامدهای ناخواسته برای دیگران داشته باشد.
  • برداشتن دستگاه باید فقط در سطوح اصالت‌سنجی‌شده، مثل تلفن همراه، انجام شود نه در دستگاه‌های اصالت‌سنجی‌نشده مثل تلویزیون. انجام این کار خط‌مشی‌های توسعه‌دهندگان 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!")
}

دوربین‌ها و زنگ‌های در

می‌توانید دوربین‌ها و زنگ‌های در پشتیبانی‌شده را به‌صورت برنامه‌ریزی‌شده بااستفاده از decommissionDevice() بردارید.

مدل‌های پشتیبانی‌شده شامل این موارد است:

  • Google Nest Cam (indoor, wired)
  • Google Nest Cam (outdoor or indoor, battery)
  • Google Nest Cam with floodlight
  • Google Nest Doorbell (battery)
  • Google Nest Doorbell (wired)
  • دوربین‌ها و زنگ‌های در شریک سازگار (مثل Walmart onn.)

دستگاه‌های دوربین و زنگ در زیر را نمی‌توان به‌صورت برنامه‌ریزی‌شده ازکار انداخت:

  • نمایشگرهای هوشمند با دوربین داخلی، مثل Google Nest Hub Max.
  • دوربین‌ها و زنگ‌های درب Nest قدیمی که از Matter پشتیبانی نمی‌کنند و فقط ازطریق سرویس‌های ابری متصل می‌شوند، مثل Nest Cam ویژه فضای بسته (نسل اول)، Nest Cam ویژه فضای باز (نسل اول)، Nest Cam IQ، و Nest Doorbell (سیمی، نسل اول).
  • دوربین‌ها و زنگ‌های در Cloud-to-cloud طرف سوم پیوندشده.

وقتی برنامه شما فرایند برچیدن دوربین یا زنگ در را آغاز می‌کند، پلاتفرم صفحه تأیید مدیریت‌شده توسط Google را به کاربر نمایش می‌دهد. این صفحه به کاربر اطلاع می‌دهد که برداشتن دوربین باعث حذف دائمی همه سابقه ویدیویی بی‌وقفه ضبط‌شده، سابقه رویداد، کلیپ‌ها، و داده‌های کتابخانه چهره آشنا مرتبط با دستگاه در کل ساختار می‌شود.

اگر کاربر صفحه تأیید را رد کند یا لغو کند، decommissionDevice() HomeException را پرتاب می‌کند.

ازکار انداختن دوربین باعث لغو اشتراک‌های فعال دوربین (مثل Google Home Premium) نمی‌شود. کاربران باید اشتراک‌ها را به‌طور جداگانه ازطریق ارائه‌دهنده اشتراک لغو کنند.

kotlin try { val decommissionedDeviceIds = device.decommissionDevice() if (decommissionedDeviceIds.contains(device.id)) { // Camera was successfully decommissioned } } catch (e: HomeException) { // Handle cancellation or decommission error }

دستگاه‌های غیر 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!")
}