Remover um dispositivo

Remover um dispositivo envolve desativá-lo da estrutura. Um usuário pode fazer isso usando o Google Home app (GHA), e um app pode desativar um dispositivo de casa inteligente de forma programática. Há limitações quanto aos dispositivos que podem ser removidos. Além disso, a remoção de um dispositivo pode afetar a estrutura e as experiências do usuário no app.

O que você pode remover

É possível remover programaticamente os seguintes dispositivos usando as APIs Home:

  • Matter dispositivos em que seu app tem permissões.
  • Matter, desde que o app tenha acesso a todos os dispositivos conectados por ela. A remoção da ponte remove todos os dispositivos Matter conectados a ela.
  • Dispositivos de câmera e campainha compatíveis, incluindo câmeras e campainhas Google Nest compatíveis com o Matter e câmeras de parceiros compatíveis. Para mais detalhes sobre modelos compatíveis e incompatíveis, consulte Câmeras e campainhas.

O que não pode ser removido

Os seguintes dispositivos não podem ser removidos por programação usando as APIs Home:

  • Matter dispositivos em que o app não tem permissões do usuário.
  • Dispositivos individuais conectados a uma ponte Matter.
  • Cloud-to-cloud dispositivos vinculados.
  • Dispositivos de caminho duplo sem câmera (dispositivos que implementam Matter e Cloud-to-cloud, exceto câmeras e campainhas compatíveis).
  • Dispositivos de câmera e campainha não compatíveis, incluindo smart displays com câmeras integradas e câmeras legadas que não são compatíveis com Matter. Consulte Câmeras e campainhas.

Considerações importantes antes de remover um dispositivo

Quando seu app remove um dispositivo, ele é removido de toda a estrutura, afetando todos os usuários e apps, incluindo o GHA. Dependendo do tipo de dispositivo, pode haver outros efeitos colaterais ao desativar um dispositivo:

  • Se um dispositivo oferecer várias funções, como uma iluminação inteligente que também funciona como um hub, a remoção dele também remove todos os dispositivos associados. O app precisa informar ao usuário se várias funções do dispositivo forem afetadas.
  • A remoção de uma câmera ou campainha exclui permanentemente todo o histórico de vídeo 24 horas, o histórico de atividades em vídeo, os clipes gravados e os dados da biblioteca de rostos conhecidos associados a essa câmera em toda a estrutura da casa.
  • Desativar uma câmera não cancela assinaturas ativas, como o Google Home Premium ou serviços de monitoramento de parceiros. As assinaturas continuam até serem canceladas pelo usuário.
  • Ao desativar uma câmera ou campainha, a plataforma das APIs Home apresenta uma tela de confirmação gerenciada pelo Google ao usuário explicando que o histórico de vídeo será apagado permanentemente. O usuário precisa confirmar essa solicitação antes que o dispositivo seja removido.
  • Tenha cuidado ao excluir dispositivos em superfícies compartilhadas, porque isso pode ter consequências indesejadas para outras pessoas.
  • A remoção do dispositivo só pode ser feita em plataformas autenticadas, como um smartphone, e não em dispositivos não autenticados, como TVs. Isso viola as políticas para desenvolvedores do Google Home.

Remover um dispositivo

Verificar a qualificação de um dispositivo para remoção é caro e só deve ser feito quando necessário. Para verificar se um dispositivo está qualificado para remoção, use o comando a seguir:

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

Dispositivos Matter

É possível remover um dispositivo Matter de forma programática se ele não estiver atrás de uma ponte Matter.

Para remover um dispositivo Matter, chame decommissionDevice() nele:

val decommissionedDeviceIds = device.decommissionDevice()

Se a chamada não gerar um erro, ela foi bem-sucedida.

Verifique se o ID do dispositivo está entre os retornados pelo decommissionDevice() :

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

Câmeras e campainhas

É possível remover câmeras e campainhas compatíveis de forma programática usando decommissionDevice() .

Os modelos compatíveis incluem:

  • 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)
  • Câmeras e campainhas de parceiros compatíveis (como onn. do Walmart)

Os seguintes dispositivos de câmera e campainha não podem ser desativados por programação:

  • Smart displays com câmeras integradas, como o Google Nest Hub Max.
  • Câmeras e campainhas Nest legadas que não são compatíveis com Matter e se conectam apenas por serviços de nuvem, como Nest Cam Interna (1ª geração), Nest Cam Externa (1ª geração), Nest Cam IQ e Nest Doorbell (com fio, 1ª geração).
  • Câmeras e campainhas vinculadas de terceiros Cloud-to-cloud.

Quando o app inicia a desativação de uma câmera ou campainha, a plataforma mostra uma tela de confirmação gerenciada pelo Google para o usuário. Essa tela informa ao usuário que a remoção da câmera exclui permanentemente todo o histórico de vídeo 24 horas, o histórico de eventos, os clipes e os dados da biblioteca de rostos conhecidos gravados associados ao dispositivo em toda a estrutura.

Se o usuário dispensar ou cancelar a tela de confirmação, decommissionDevice() vai gerar um HomeException.

A desativação de uma câmera não cancela as assinaturas ativas (como Google Home Premium). Os usuários precisam cancelar as assinaturas separadamente pelo provedor de assinatura.

kotlin try { val decommissionedDeviceIds = device.decommissionDevice() if (decommissionedDeviceIds.contains(device.id)) { // Camera was successfully decommissioned } } catch (e: HomeException) { // Handle cancellation or decommission error }

Dispositivos não Matter

Dispositivos que não são Matter (além de câmeras e campainhas compatíveis) não podem ser removidos por programação. Para remover outros dispositivos que não são Matter, emita uma solicitação de sincronização (consulte Solicitar sincronização) ou exclua a integração Cloud-to-cloud (consulte Excluir uma integração de nuvem para nuvem iniciada).

Se você chamar decommissionDevice() em um dispositivo não Matter sem suporte, uma HomeException será gerada.

Depois de remover um dispositivo que não é Matter, verifique se ele foi removido:

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