デバイスを削除する

デバイスを削除するには、ストラクチャからデバイスの運用を停止します。ユーザーは Google Home app (GHA) を使用してこれを行うことができ、アプリはプログラムでスマートホーム デバイスのサービスを終了できます。削除できるデバイスには制限があります。また、デバイスを削除すると、アプリの構造とユーザー エクスペリエンスに影響する可能性があります。

削除できるもの

Home API を使用して、次のデバイスをプログラムで削除できます。

  • Matterアプリが権限を持つデバイス。
  • Matter ブリッジ。ただし、アプリがブリッジ経由で接続されたすべてのデバイスにアクセスできることが条件です。ブリッジを削除すると、それに接続されているすべての Matter デバイスが削除されます。

削除できないもの

次のデバイスは、Home API を通じてプログラムで削除することはできません。

  • Matterアプリにユーザー権限がないデバイス。
  • Matter ブリッジの背後に接続された個々のデバイス。
  • Cloud-to-cloud 台のリンク済みデバイス。
  • デュアルパス デバイス(MatterCloud-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()

呼び出しでエラーがスローされなければ、成功です。

デバイスの 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-cloud API と Matter API の両方を使用するデバイスです。このようなデバイスの廃止の適格性を確認すると、デバイスがマルチソースであるため廃止できないことを示す DecommissionIneligibleReason.multiSourceDevice が表示されます。

マルチソース デバイスを削除するには、次の手順を行います。

  1. Matter 以外のデバイスの説明に沿って、Cloud-to-cloud の関連付けを削除します。
  2. Matter デバイスの説明に従って、Matter デバイスを廃止します。

これらの手順の順序は重要です。廃止しようとする場合Matterデバイスを取り外す前にCloud-to-cloud協会、HomeExceptionが投げられます。