Modelo de dados no Android

As APIs Home para Android apresentam todos os dispositivos no ecossistema do Google Home em um modelo de dados unificado. Esse modelo de dados abrange todos os tipos de dispositivos (do Google Nest ou de fabricantes terceirizados), independentemente da tecnologia de casa inteligente subjacente (como Matter ou Cloud-to-cloud), e oferece uma superfície de API comum para criar experiências do usuário para desenvolvedores de smart home e de apps para dispositivos móveis.

Tipos de dispositivo

Os tipos de dispositivo apresentados nas APIs Home são uma unificação dos modelos de dados Matter e Cloud-to-cloud. Alguns são derivados diretamente de Matter, outros são uma extensão de tipos de dispositivo Matter e outros são derivados de Cloud-to-cloud.

Os tipos de dispositivo contêm atributos usados para controlar e gerenciar dispositivos. Assim como os tipos de dispositivo, os atributos são derivados de clusters do Matter e atributos do Cloud-to-cloud e apresentados em um formato comum semelhante ao dos clusters do Matter. Nas APIs Home, as características derivadas do Matter são chamadas de características, não de clusters.

Por isso, os tipos e as características de dispositivos nas APIs Home são destinados ao Matter. Um tipo de dispositivo ou atributo Matter tem precedência sobre um análogo Cloud-to-cloud.

Consulte Tipos de dispositivos compatíveis com o Android para ver uma lista de tipos de dispositivos e as características deles.

Características

As versões em Kotlin das características são geradas para uso nas APIs Home e contêm recursos adicionais específicos para as APIs Home (não encontrados em Matter ou Cloud-to-cloud). Por exemplo, cada característica tem métodos para verificar se ela é compatível com um atributo ou comando específico. Isso é útil para determinar se a leitura do estado ou determinadas ações podem ser realizadas no dispositivo de um usuário, já que nem todos os dispositivos de um tipo têm os mesmos recursos.

Cada característica está contida no próprio namespace e precisa ser importada individualmente para uso.

Por exemplo, para usar a característica de Ativar/Desativar Matter e o tipo de dispositivo Unidade de Plug-in de Ativar/Desativar, importe os seguintes pacotes para o aplicativo:

import com.google.home.matter.standard.OnOff
import com.google.home.matter.standard.OnOffPluginUnitDevice

Para um tipo de dispositivo de garagem (da casa inteligente do Google), inclua uma combinação de atributos do Matter e do Google:

import com.google.home.google.LockUnlock
import com.google.home.matter.standard.DoorLock
import com.google.home.matter.standard.GoogleGarageDevice

O Android Studio tem uma funcionalidade de preenchimento automático e geralmente processa os nomes completos dos pacotes para você ao adicionar linhas import aos arquivos de origem no seu projeto. No entanto, os nomes de pacotes não são consistentes em todos os tipos e atributos de dispositivo. Consulte a referência para verificar o nome correto do pacote para cada DeviceType ou Trait.

A maioria dos atributos é compatível com as automações, e alguns estão disponíveis apenas para automações. Para mais detalhes, consulte Suporte a atributos da API Automation no Android.

Composição do tipo de dispositivo

As APIs Home são compatíveis com a maioria dos clusters de aplicativos Matter como atributos no modelo de dados. Os clusters de configuração de baixo nível que não oferecem utilidade direta para os usuários finais, como Binding, não são expostos pelas APIs Home.

Os atributos derivados dos atributos de casa inteligente do Cloud-to-cloud normalmente têm o mesmo nome entre o Cloud-to-cloud e as APIs Home, como no exemplo de OpenClose. Outros são representados como extensões de traços de Matter, criados usando extensões específicas do fabricante de Matter. Esses atributos preenchem a lacuna de um atributo smart home em que a funcionalidade é dividida entre o SDK do Matter e o ecossistema do Google Home. Um exemplo específico disso são os tipos de dispositivo Google* que vêm do Cloud-to-cloud, mas ainda não têm análogos do Matter.

Os tipos de dispositivo são compostos por características de uma ou de ambas as fontes, Matter ou Cloud-to-cloud.

Por exemplo, o tipo de dispositivo Ventilador é composto por ambos e apresenta três atributos:

  • A característica Matter de Identify oferece todas as funcionalidades de Matter de Identify.
  • A característica FanControl Matter oferece todas as funcionalidades da característica Matter FanControl,
  • O atributo ExtendedFanControl do Google oferece todas as funcionalidades do atributo smart home do Google FanSpeed que não são cobertas pelo atributo FanControl Matter.

Esse tipo de composição de atributo fornece um modelo flexível para a funcionalidade completa do tipo de dispositivo, abstraindo os modelos de dados smart home subjacentes.

Grupos de dispositivos

Um grupo de dispositivos representa uma coleção de dispositivos definida pelo usuário em uma única estrutura. A participação no grupo é mantida nos Serviços do Google e fica visível para outros membros da estrutura e outros apps com acesso a ela.

Os grupos de dispositivos são representados pela entidade DeviceGroup, que é diferente de HomeDevice. Cada HomeDevice lista os grupos a que pertence usando a característica GroupMembership (resolvida de forma reativa com group.devices()), para que o app possa inspecionar as associações a grupos e iterar diretamente nos dispositivos membros de um grupo. Além disso, DeviceGroup implementa a interface PartsProvider para expor os tipos de dispositivo compatíveis com os dispositivos membros ao segmentar o grupo como um todo.

Consulte as APIs Structure e Controlar um grupo de dispositivos para mais informações sobre grupos de dispositivos.