การนำอุปกรณ์ออกเกี่ยวข้องกับการเลิกใช้งานอุปกรณ์ออกจากโครงสร้าง ผู้ใช้สามารถ ทำได้โดยใช้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!") }