Xoá thiết bị

Việc xoá một thiết bị có nghĩa là bạn sẽ ngừng sử dụng thiết bị đó trong cấu trúc. Người dùng có thể thực hiện việc này bằng Google Home app (GHA) và ứng dụng có thể ngừng hoạt động thiết bị nhà thông minh theo phương thức lập trình. Có một số hạn chế về những thiết bị có thể bị xoá. Ngoài ra, việc xoá một thiết bị có thể ảnh hưởng đến cấu trúc và trải nghiệm người dùng của ứng dụng.

Nội dung bạn có thể xoá

Bạn có thể xoá các thiết bị sau theo phương thức lập trình thông qua Home API:

  • Matter thiết bị mà ứng dụng của bạn có quyền truy cập.
  • Matter, miễn là ứng dụng của bạn có quyền truy cập vào tất cả các thiết bị được kết nối thông qua cầu nối. Khi bạn xoá cầu nối, mọi thiết bị Matter được kết nối với cầu nối đó cũng sẽ bị xoá.

Những nội dung bạn không thể xoá

Bạn không thể xoá các thiết bị sau đây theo phương thức lập trình thông qua Home API:

  • Matter thiết bị mà ứng dụng của bạn thiếu quyền của người dùng.
  • Các thiết bị riêng lẻ được kết nối thông qua một cầu Matter.
  • Cloud-to-cloud thiết bị được liên kết.
  • Thiết bị có hai đường dẫn (thiết bị triển khai cả MatterCloud-to-cloud).

Những điều quan trọng cần cân nhắc trước khi xoá thiết bị

Khi ứng dụng của bạn xoá một thiết bị, thiết bị đó sẽ bị xoá khỏi toàn bộ cấu trúc, ảnh hưởng đến tất cả người dùng và tất cả ứng dụng, kể cả GHA. Tuỳ thuộc vào loại thiết bị, việc ngừng hoạt động một thiết bị có thể gây ra các tác dụng phụ khác:

  • Thiết bị triển khai nhiều loại thiết bị: Nếu một thiết bị có nhiều chức năng (ví dụ: đèn thông minh cũng hoạt động như một trung tâm), thì việc xoá thiết bị đó cũng sẽ xoá tất cả các thiết bị được liên kết. Ứng dụng phải thông báo cho người dùng nếu nhiều chức năng của thiết bị sẽ bị ảnh hưởng.
  • Nhật ký thiết bị: Việc xoá một thiết bị có thể dẫn đến việc xoá nhật ký của thiết bị đó.
  • Nơi làm việc chung: Hãy thận trọng khi xoá thiết bị trên nơi làm việc chung vì thao tác này có thể gây ra hậu quả không mong muốn cho người khác.
  • Xác thực: Bạn chỉ nên xoá thiết bị trên các nền tảng đã xác thực, chẳng hạn như điện thoại di động, chứ không phải trên các thiết bị chưa xác thực như TV. Việc này vi phạm Chính sách dành cho nhà phát triển Google Home.

Xoá thiết bị

Việc kiểm tra xem một thiết bị có đủ điều kiện để bị xoá hay không rất tốn kém và chỉ nên thực hiện khi cần thiết. Để kiểm tra xem một thiết bị có đủ điều kiện để xoá hay không, hãy dùng lệnh sau:

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.")
}

Thiết bị theo chuẩn Matter

Bạn có thể xoá thiết bị Matter theo cách lập trình nếu thiết bị đó không nằm sau cầu nối Matter.

Để xoá một thiết bị Matter, hãy gọi decommissionDevice() trên thiết bị đó:

val decommissionedDeviceIds = device.decommissionDevice()

Nếu lệnh gọi không báo lỗi, tức là lệnh gọi đã thành công.

Bạn có thể kiểm tra để xem mã nhận dạng của thiết bị có nằm trong số những mã nhận dạng do decommissionDevice() trả về hay không:

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

Thiết bị không theo chuẩn Matter

Bạn không thể xoá các thiết bị không phải Matter theo phương thức lập trình. Để xoá một thiết bị không phải Matter, bạn có thể đưa ra yêu cầu Đồng bộ hoá (xem phần Yêu cầu Đồng bộ hoá) hoặc xoá chế độ tích hợp Cloud-to-cloud (xem phần Xoá chế độ tích hợp từ đám mây sang đám mây đã ra mắt).

Nếu bạn gọi decommissionDevice() trên một thiết bị không phải là Matter, thì HomeException sẽ được gửi đi.

Sau khi bạn xoá một thiết bị không phải Matter, hãy kiểm tra xem thiết bị đó có còn hay không để xác minh rằng bạn đã xoá thành công:

var removedDevice: HomeDevice? = null
runBlockingCustom {
  try {
    removedDevice = homeManager.devices().get(deviceId)
  } catch (exception: Exception) {
    println("removal successful!")
  }
}
if (removedDevice != null) {
  println("removal failed!")
}

Thiết bị có nhiều nguồn

Thiết bị có nhiều nguồn là những thiết bị sử dụng cả API Cloud-to-cloudMatter. Nếu kiểm tra điều kiện ngừng hoạt động của một thiết bị như vậy, bạn sẽ nhận được DecommissionIneligibleReason.multiSourceDevice, cho biết rằng vì thiết bị này có nhiều nguồn nên không thể ngừng hoạt động.

Để xoá một thiết bị có nhiều nguồn, hãy làm theo quy trình sau:

  1. Xoá mối liên kết Cloud-to-cloud như mô tả trong phần Thiết bị không phải Matter.
  2. Ngừng hoạt động thiết bị Matter như mô tả trong phần Thiết bị Matter.

Thứ tự của các bước này là rất quan trọng. Nếu bạn cố gắng ngừng hoạt động thiết bị Matter trước khi xoá mối liên kết Cloud-to-cloud, thì HomeException sẽ được gửi.