기기 삭제

기기를 삭제하려면 구조에서 기기를 폐기해야 합니다. 사용자는 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이 발생합니다.