นำอุปกรณ์ออก

การนำอุปกรณ์ออกเกี่ยวข้องกับการเลิกใช้งานอุปกรณ์ออกจากโครงสร้าง ผู้ใช้สามารถ ทำได้โดยใช้Google Home app (GHA) และแอปสามารถเลิกใช้งานอุปกรณ์สมาร์ทโฮมโดยทางโปรแกรมได้ อย่างไรก็ตาม มีข้อจำกัดเกี่ยวกับอุปกรณ์ที่นำออกได้ นอกจากนี้ การนำอุปกรณ์ออกยังอาจส่งผลต่อโครงสร้างและประสบการณ์ของผู้ใช้สำหรับแอปของคุณด้วย

สิ่งที่คุณนำออกได้

คุณสามารถนำอุปกรณ์ต่อไปนี้ออกโดยทางโปรแกรมผ่าน Home API ได้

  • Matter อุปกรณ์ที่แอปของคุณมีสิทธิ์
  • บริดจ์ Matter โดยแอปของคุณต้องมีสิทธิ์เข้าถึงอุปกรณ์ทั้งหมดที่เชื่อมต่อผ่านบริดจ์ การนำบริดจ์ออกจะนำอุปกรณ์ทั้งหมดที่เชื่อมต่อกับบริดจ์ออกด้วยMatter

สิ่งที่คุณนำออกไม่ได้

คุณไม่สามารถนำอุปกรณ์ต่อไปนี้ออกโดยทางโปรแกรมผ่าน Home API ได้

  • อุปกรณ์ Matter ที่แอปของคุณไม่มี สิทธิ์ของผู้ใช้
  • อุปกรณ์แต่ละเครื่องที่เชื่อมต่ออยู่เบื้องหลังบริดจ์ Matter
  • Cloud-to-cloud อุปกรณ์ที่ลิงก์
  • อุปกรณ์แบบ 2 เส้นทาง (อุปกรณ์ที่ใช้ทั้ง 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 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!")
}