As APIs Google Home para Android oferecem uma superfície de API unificada para que os desenvolvedores interajam com o estado das entidades na casa de um usuário. Essas entidades podem descrever dispositivos e informações não relacionadas a dispositivos associadas à estrutura e aos ambientes de um usuário.
As APIs Home definem as seguintes entidades com que um usuário pode interagir:
- Estruturas representam uma casa que contém ambientes e dispositivos.
- Os ambientes fazem parte de uma estrutura e contêm dispositivos.
- Os dispositivos implementam atributos que contêm atributos, estão em conformidade com os tipos, emitem eventos e respondem a comandos.
- Os grupos de dispositivos são coleções de dispositivos definidas pelo usuário em uma estrutura.
- As automações fazem parte de uma estrutura e usam metadados e dispositivos da casa para automatizar tarefas.
A Figura 1 ilustra essa arquitetura:
Os tipos de dispositivo da API Home podem ser compatíveis com o Matter, um padrão aberto para casa inteligente, ou ser um dispositivo Cloud-to-cloud no ecossistema do Google Home. Alguns tipos de dispositivo podem incorporar funcionalidades de ambos. Consulte Tipos de dispositivos compatíveis com o Android para mais informações.
No Matter, a funcionalidade do dispositivo é agrupada por clusters, que são representados nas APIs Home como características padrão do Matter. As APIs Home são compatíveis com o conjunto padrão de clusters do Matter, conforme definido na especificação atual do Matter.
No ecossistema do Google Home, a funcionalidade do dispositivo é agrupada por características de casa inteligente, que são representadas nas APIs Home como características de casa inteligente do Google. As APIs Home são compatíveis com o conjunto de características de casa inteligente definido no programa Cloud-to-cloud.
Outros atributos, como clusters específicos do fabricante e atributos de plataforma, também estão disponíveis. Para saber mais, consulte Modelo de dados no Android.
Ecossistema
O ecossistema do Google Home oferece uma base simplificada para criar, gerenciar, proteger e integrar experiências de casa inteligente. A Figura 2 mostra como todos os componentes funcionam juntos.
O ecossistema inclui o Google Automation Engine, que armazena e executa automações que oferecem uma maneira de automatizar tarefas e configurações do dispositivo em uma casa.
As APIs Home usam o OAuth 2.0 para conceder acesso aos dispositivos na estrutura. O OAuth permite que um usuário conceda permissão a um app ou serviço sem precisar expor as credenciais de login.
O Google Home Developer Console é usado para gerenciar todas as etapas de um projeto das APIs Home, desde a verificação da marca até o desenvolvimento, teste, certificação e, por fim, o lançamento. Ele simplifica o processo de desenvolvimento e oferece ferramentas robustas e distribuição pelo ecossistema do Google Home.
Idioma
As APIs Home para Android são escritas em Kotlin e oferecem uma interface idiomática do Kotlin que usa o Flow para gerenciar o estado e a inscrição. Isso oferece várias vantagens em relação a uma API de assinatura padrão.
Recomendamos que você se familiarize com a documentação do Kotlin sobre corrotinas, fluxo e Jetpack Compose, caso ainda não tenha feito isso:
- Desenvolver apps Android com Kotlin
- Conheça o Kotlin para Android
- Corrotinas do Kotlin no Android. Estes codelabs específicos podem ser úteis:
- Fluxos do Kotlin no Android e, mais especificamente, StateFlow.
- Estado e Jetpack Compose, especificamente a
função
collectAsStateWithLifecycle(). Essa função gerencia automaticamente a inscrição e o cancelamento de inscrição nos fluxos com base no fato de a IU que mostra esse estado estar em primeiro plano ou não. - Se você estiver trabalhando com a API Automation, leia sobre os builders com segurança de tipos do Kotlin para entender como a DSL de automação funciona.
Identificadores de entidade
Cada entidade nas APIs Home tem um ID que representa o identificador principal. Esse ID é um identificador exclusivo e estável que nunca vai mudar durante o ciclo de vida da entidade. Esse ID pode ser usado para armazenar objetos em cache ou verificar a igualdade, já que os metadados de uma entidade podem mudar.
Consulte a interface HasId para saber
quais entidades têm um ID.
Mapeamento de terminologia
As entidades nas APIs Home são mapeadas para os conceitos de Matter e Cloud-to-cloud da seguinte maneira:
| APIs do Google Home | Matter | Cloud-to-cloud |
|---|---|---|
| Atributo | Cluster | Atributo |
| Atributo | Atributo | Atributo, estado |
| Comando | Comando | Comando |
| Evento | Evento | Resposta de acompanhamento, Notificação |