기기 삭제

기기를 삭제하려면 구조에서 기기를 폐기해야 합니다. 사용자는 Google Home app (GHA)를 사용하여 이를 실행할 수 있고 앱은 프로그래매틱 방식으로 스마트 홈 기기를 폐기할 수 있습니다. 삭제할 수 있는 기기에는 제한이 있습니다. 또한 기기를 삭제하면 앱의 구조와 사용자 환경에 영향을 줄 수 있습니다.

삭제할 수 있는 항목

Home API를 통해 프로그래매틱 방식으로 다음 기기를 삭제할 수 있습니다.

  • 앱에 권한이 있는 Matter 기기
  • Matter 브리지(앱이 브리지를 통해 연결된 모든 기기에 액세스할 수 있는 경우) 브리지를 삭제하면 브리지에 연결된 모든 Matter 기기가 삭제됩니다.

삭제할 수 없는 항목

다음 기기는 Home API를 통해 프로그래매틱 방식으로 삭제할 수 없습니다.

  • 앱에 사용자 권한이 없는 기기 Matter
  • Matter 브리지 뒤에 연결된 개별 기기
  • 연결된 기기 Cloud-to-cloud
  • 이중 경로 기기 (MatterCloud-to-cloud을 모두 구현하는 기기)

기기를 삭제하기 전 고려사항

앱이 기기를 삭제하면 전체 구조에서 삭제되어 GHA를 비롯한 모든 사용자 및 모든 앱에 영향을 미칩니다. 기기 유형에 따라 기기 폐기에 따른 추가 부작용이 있을 수 있습니다.

  • 여러 기기 유형을 구현하는 기기: 기기에 여러 기능이 있는 경우(예: 허브 역할도 하는 스마트 조명) 기기를 삭제하면 연결된 모든 기기도 삭제됩니다. 여러 기기 기능이 영향을 받는 경우 앱은 사용자에게 알려야 합니다.
  • 기기 기록: 기기를 삭제하면 기기의 기록이 삭제될 수 있습니다.
  • 공유 영역: 공유 영역에서 기기를 삭제할 때는 주의해야 합니다. 다른 사용자에게 의도하지 않은 결과가 발생할 수 있기 때문입니다.
  • 인증: 기기 삭제는 TV와 같은 인증되지 않은 기기가 아닌 휴대 전화와 같은 인증된 표면에서만 실행해야 합니다. 이러한 행위는 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()

호출에서 오류가 발생하지 않으면 성공한 것입니다.

기기의 ID가 decommissionDevice()에서 반환된 ID에 포함되어 있는지 확인할 수 있습니다.

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

Matter가 아닌 기기

Matter이 아닌 기기는 프로그래매틱 방식으로 삭제할 수 없습니다. Matter가 아닌 기기를 삭제하려면 동기화 요청을 실행하거나 (동기화 요청 참고) Cloud-to-cloud 통합을 삭제하면 됩니다 (실행된 클라우드 간 통합 삭제 참고).

Matter이 아닌 기기에서 decommissionDevice()를 호출하면 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!")
}

멀티 소스 기기

다중 소스 기기는 Cloud-to-cloudMatter API를 모두 사용하는 기기입니다. 이러한 기기의 폐기 가능 여부를 확인하면 기기가 다중 소스이므로 폐기할 수 없음을 나타내는 DecommissionIneligibleReason.multiSourceDevice이 표시됩니다.

다중 소스 기기를 삭제하려면 다음 절차를 따르세요.

  1. Matter가 아닌 기기에 설명된 대로 Cloud-to-cloud 연결을 삭제합니다.
  2. Matter 기기에 설명된 대로 Matter 기기를 서비스 해제합니다.

이 단계의 순서는 중요합니다. Cloud-to-cloud 연결을 삭제하기 전에 Matter 기기를 폐기하려고 하면 HomeException이 발생합니다.