デバイスを削除するには、ストラクチャからデバイスの運用を停止します。ユーザーは Google Home app (GHA) を使用してこれを行うことができます。アプリはプログラムでスマートホーム デバイスのサービスを終了できます。削除できるデバイスには制限があります。また、デバイスを削除すると、アプリの構造とユーザー エクスペリエンスに影響する可能性があります。
削除できるもの
Home API を使用して、次のデバイスをプログラムで削除できます。
- アプリに権限が付与されている Matter 台のデバイス。
- Matter ブリッジ。ただし、アプリがブリッジ経由で接続されているすべてのデバイスにアクセスできることが条件です。ブリッジを削除すると、ブリッジに接続されているすべての Matter デバイスが削除されます。
- サポートされているカメラとドアホン デバイス(Matter 対応の Google Nest カメラとドアホン、互換性のあるパートナー カメラなど)。サポートされているモデルとサポートされていないモデルについて詳しくは、カメラとドアホンをご覧ください。
削除できないもの
次のデバイスは、Home API を介してプログラムで削除できません。
- アプリにユーザー権限がない Matter 台のデバイス。
- Matter ブリッジの背後に接続された個々のデバイス。
- Cloud-to-cloud 台のリンク済みデバイス。
- カメラ以外のデュアルパス デバイス(サポートされているカメラとドアホン以外の、Matter と Cloud-to-cloud の両方を実装するデバイス)。
- サポートされていないカメラとドアホン(カメラ内蔵のスマート ディスプレイや Matter をサポートしていない以前のカメラなど)(カメラとドアホンを参照)。
デバイスを削除する際の重要な考慮事項
アプリがデバイスを削除すると、構造全体から削除され、GHA を含むすべてのユーザーとすべてのアプリに影響します。デバイスの種類によっては、デバイスの廃止に伴う追加の副作用が生じる可能性があります。
- デバイスが複数の機能(ハブとしても機能するスマートライトなど)を提供している場合、そのデバイスを削除すると、関連付けられているすべてのデバイスも削除されます。複数のデバイス機能が影響を受ける場合は、アプリからユーザーに通知する必要があります。
- カメラやドアホンを削除すると、そのカメラに関連付けられている連続動画履歴、アクティビティの動画履歴、録画されたクリップ、認識済みの人物ライブラリのデータが、家のストラクチャ全体で完全に削除されます。
- カメラを廃止しても、Google Home Premium やパートナーのモニタリング サービスなどの有効なサブスクリプションはキャンセルされません。定期購入は、ユーザーが解約するまで継続されます。
- カメラまたはドアホンを廃止する場合、Home APIs プラットフォームは、動画履歴が完全に消去されることを説明する Google 管理の確認画面をユーザーに表示します。デバイスを削除する前に、ユーザーはこのプロンプトを確認する必要があります。
- 共有サーフェスでデバイスを削除すると、他のユーザーに予期しない影響が生じる可能性があるため、注意してください。
- デバイスの削除は、テレビなどの認証されていないデバイスではなく、携帯電話などの認証されたサーフェスでのみ実行する必要があります。そのような行為は、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!") }
カメラとドアホン
decommissionDevice() を使用して、サポートされているカメラとドアホンをプログラムで削除できます。
サポートされているモデルは次のとおりです。
- Google Nest Cam (indoor, wired)
- Google Nest Cam (outdoor or indoor, battery)
- Google Nest Cam with floodlight
- Google Nest Doorbell (battery)
- Google Nest Doorbell (wired)
- 対応するパートナーのカメラとドアホン(Walmart onn など)。
次のカメラとドアホンのデバイスは、プログラムで廃止できません。
- Google Nest Hub Max などのカメラ内蔵スマートディスプレイ。
- Matter をサポートしておらず、クラウド サービス経由でのみ接続する以前の Google Nest のカメラとドアホン(Google Nest Cam Indoor(第 1 世代)、Google Nest Cam Outdoor(第 1 世代)、Google Nest Cam IQ、Google Nest Doorbell(電源直結型 / 第 1 世代)など)。
- サードパーティ製の Cloud-to-cloud リンク済みカメラとドアホン。
アプリがカメラまたはドアホンの廃止を開始すると、プラットフォームは Google が管理する確認画面をユーザーに表示します。この画面では、カメラを削除すると、デバイスに関連付けられている連続録画の履歴、アクティビティの履歴、クリップ、認識済みの人物ライブラリのデータが構造全体で完全に削除されることが通知されます。
ユーザーが確認画面を閉じるかキャンセルすると、decommissionDevice() は HomeException をスローします。カメラを廃止しても、有効なカメラの定期購入(Google Home Premium など)は解約されません。ユーザーは、定期購入プロバイダを通じて定期購入を別途解約する必要があります。
kotlin
try {
val decommissionedDeviceIds = device.decommissionDevice()
if (decommissionedDeviceIds.contains(device.id)) {
// Camera was successfully decommissioned
}
} catch (e: HomeException) {
// Handle cancellation or decommission error
}
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!") }