Conectar dispositivos de casa inteligente ao Google Assistente | Google Codelabs
Conectar dispositivos de casa inteligente ao Google Assistente
Como desenvolvedor da Internet das Coisas (IoT, na sigla em inglês), é possível criar ações de casa inteligente que permitem os usuários controlar os dispositivos por meio dos controles por toque no app Google Home e nos comandos de voz com o Google Assistente.
Essas ações usam o Home Graph para fornecer dados de contexto sobre a casa e os dispositivos, criando um mapa lógico da casa. Esse contexto permite que o Google Assistente entenda melhor as solicitações do usuário em relação à localização na casa. Por exemplo, o Home Graph pode armazenar o conceito de uma sala de estar que contém vários tipos de dispositivos de diferentes fabricantes, como termostato, luminária, ventilador e aspirador.
Neste codelab, você vai publicar um serviço de nuvem que gerencia uma máquina de lavar virtual, criar uma ação de casa inteligente e conectá-la ao Google Assistente.
Como implantar um serviço de casa inteligente em nuvem
Como conectar seu serviço ao Google Assistente
Como publicar alterações de estado do dispositivo no Google
"Atividade na Web e de apps".
A interface de linha de comando (CLI, na sigla em inglês) do Firebase permite exibir seus apps da Web localmente e implantá-los no Firebase Hosting.
Autorize a CLI do Firebase com sua Conta do Google. Para isso, execute o seguinte:
washer-done: o código completo do exemplo do app finalizado da lavadora.
O projeto inicial dá dicas sobre onde mudar ou adicionar o código. Exemplo:
Esse comando implanta um app da Web, além de várias Cloud Functions para Firebase.
Observação: os estados dos dispositivos virtuais são armazenados usando o Firebase Realtime Database. É possível visualizar o conteúdo do banco de dados diretamente usando o Console do Firebase. Na barra de ferramentas à esquerda, clique em Desenvolver > Banco de dados. As atualizações no estado da lavadora aparecerão aqui.
Agora, você pode começar a implementar os webhooks necessários para conectar o estado do dispositivo ao Google Assistente.
Após configurar a ação, você poderá adicionar dispositivos e enviar dados. Seu serviço em nuvem precisa processar as seguintes intents:
A intent SYNC ocorre quando o Google Assistente quer saber a quais dispositivos o usuário está conectado. Ela é enviada ao seu serviço quando o usuário vincula uma conta. Você deve responder com um payload JSON de todos os dispositivos e recursos do usuário.
A intent QUERY ocorre quando o Google Assistente quer saber o estado atual ou o status de um dispositivo. Você deve responder com um payload JSON com o estado de cada dispositivo solicitado.
A intent EXECUTE ocorre quando o Google Assistente quer controlar um dispositivo em nome do usuário. Você deve responder com um payload JSON com o status de execução de cada dispositivo solicitado.
A intent DISCONNECT ocorre quando o usuário desvincula a conta do Google Assistente. Você deve parar de enviar eventos dos dispositivos deste usuário para o Google Assistente.
Você atualizará as funções implantadas para manipular as intents nas seções a seguir.
Atualizar resposta sincronizada
Abra functions/index.js, que contém o código para responder a solicitações do Google Assistente.
Você precisará processar uma intent SYNC. Para isso, retorne os metadados e os recursos do dispositivo. Atualize o JSON na matriz onSync para incluir as informações do dispositivo e os traços recomendados para uma lavadora de roupas.
Implante o fulfillment da nuvem atualizado usando a CLI do Firebase:
Para testar a ação da casa inteligente, você precisa vincular seu projeto a uma Conta do Google. Isso permite realizar testes usando as plataformas do Google Assistente e o app Google Home, desde que estejam conectados à mesma conta.
Agora que seu serviço de nuvem informa corretamente o dispositivo da lavadora ao Google, adicione o recurso para solicitar o estado do dispositivo e enviar comandos.
Processar intents de CONSULTA
Uma intent QUERY inclui um conjunto de dispositivos. Você deve responder com o estado atual de cada dispositivo.
Em functions/index.js, edite o gerenciador QUERY para processar a lista de dispositivos de destino na solicitação de intent.
Retorne o estado atual armazenado no Realtime Database de cada dispositivo da solicitação. Atualize as funções queryFirebase e queryDevice para retornar os dados de estado da lavadora.
Processar intents de EXECUÇÃO
A intent EXECUTE processa comandos para atualizar o estado do dispositivo. A resposta retorna o status de cada comando, como SUCCESS, ERROR ou PENDING, e o novo estado do dispositivo.
Em functions/index.js, edite o gerenciador EXECUTE para processar a lista de traços que precisam de atualizações e o conjunto de dispositivos de destino de cada comando:
Atualize os valores no Realtime Database que correspondem ao traço solicitado de cada comando e dispositivo de destino. Modifique a função updateDevice para atualizar a referência apropriada do Firebase e retornar o estado atualizado do dispositivo.
Observação: não há código no gerenciador EXECUTE para o traço RunCycle porque o traço só permite leitura e não é compatível com comandos.
Depois de implementar as três intents, é possível testar se a ação controla a lavadora.
Testar a lavadora
Agora você pode ver a mudança no valor ao tentar usar um dos seguintes comandos de voz no seu smartphone:
"Ok Google, pausar minha lavadora."
Também é possível fazer perguntas para ver o estado atual da sua lavadora.
"Ok Google, minha lavadora está ligada?"
"Ok Google, minha lavadora está funcionando?"
"Ok Google, em que ciclo está a lavadora?"
Você também pode ver essas consultas e comandos nos registros do Console do Firebase. Basta clicar em Desenvolver > Funções > Registros no menu de navegação.
Você integrou totalmente seu serviço de nuvem com as intents de casa inteligente. Assim, os usuários podem controlar e conferir o estado atual dos dispositivos. No entanto, a implementação ainda não permite que o serviço envie informações do evento (como alterações de estado ou presença do dispositivo) para o Google Assistente por conta própria.
Com a sincronização de solicitações, você pode acionar uma nova solicitação de sincronização quando os usuários adicionarem ou removerem dispositivos ou quando os recursos do dispositivo mudarem. Com o Estado do relatório, o serviço de nuvem pode enviar o estado de um dispositivo para o Home Graph por conta própria quando os usuários mudarem fisicamente o estado de um dispositivo (por exemplo, ao acender uma luz) ou mudarem o estado usando outro serviço.
Nesta seção, você vai adicionar código para chamar esses métodos do app da Web de front-end.
Observação: confira se a ação de casa inteligente parou de enviar atualizações ao Google ao receber uma intent DISCONNECT para um determinado usuário. Essa intent indica que o usuário desvinculou a conta do Google Assistente.
Nesse console, selecione o projeto que corresponde às ações <project-id>.. Em seguida, na API HomeGraph da tela da biblioteca, clique em Ativar.
Ativar estado do relatório
As gravações no Realtime Database acionam a função reportstate no projeto inicial. Atualize a função reportstate em functions/index.js para capturar os dados gravados no banco de dados e postá-los no Home Graph usando o estado do relatório.
Ativar a sincronização de solicitações
A atualização do ícone na IU da Web do front-end aciona a função requestsync no projeto inicial. Implemente a função requestsync em functions/index.js para chamar a API HomeGraph.
Implante o código atualizado usando a CLI do Firebase:
Como testar a implementação
Clique no botão Atualizar na IU da Web e verifique se aparece uma solicitação de sincronização no registro do Console do Firebase.
Em seguida, ajuste os atributos do dispositivo da lavadora na IU da Web do front-end e clique em Atualizar. Verifique se é possível ver a alteração de estado informada para o Google nos registros do console do Firebase.
Parabéns! Você integrou o Google Assistente a um serviço de nuvem do dispositivo usando ações de casa inteligente.
Adicione modos e botões ao seu dispositivo.
Adicione mais traços compatíveis ao seu dispositivo.
Conheça a execução local para casas inteligentes.
Confira nosso exemplo do GitHub para ver mais informações.
Você também pode saber mais sobre como testar e enviar uma ação para análise, incluindo o processo de certificação para publicá-la aos usuários.