Os eventos são assíncronos e gerenciados pelo Google Cloud Pub/Sub em um único tópico por Project. Os eventos fornecem atualizações para todos os dispositivos e estruturas, e o recebimento deles é garantido enquanto o token de acesso não for revogado pelo usuário e as mensagens de evento não expirarem.
Os eventos são um recurso opcional da API SDM. Elas podem ser implementadas e verificadas facilmente usando seu projeto do Google Cloud.
Ativar eventos
Os eventos podem ser ativados no console do Device Access . Selecione seu projeto no console, se ainda não tiver feito isso.
Acesse o Device Access Console.
Se você já tiver ativado os eventos (por exemplo, durante a criação do projeto), o campo Tópico do Pub/Sub na seção Ativar o tópico do Pub/Sub para eventos já terá um valor, chamado de ID do tópico, no formato mais antigo:
projects/sdm-prod/topics/enterprise-project-id
Para migrar de um tópico hospedado pelo Google, desative o tópico do Pub/Sub hospedado pelo Google no Device Access console e reative os eventos usando um tópico do Pub/Sub autohospedado criado no seu próprio projeto do Google Cloud. A migração da configuração do tópico do Pub/Sub não invalida os tokens de acesso do usuário nem as permissões do OAuth.
Os tópicos do Pub/Sub auto-hospedados podem ser criados ou alterados no seu próprio projeto na nuvem do Google Cloud e estão sujeitos aos preços padrão do Google Cloud Pub/Sub, que incluem um nível sem custo financeiro de 10 GB por mês.
Crie o tópico do Pub/Sub:
gcloud pubsub topics create {topic} --message-retention-duration=0sConceda as permissões necessárias da API SDM para acessar e publicar dados de eventos para o ID do tópico do seu projeto:
gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"O formato do ID do tópico recém-criado será semelhante a este:
projects/gcp-project-name/subscriptions/topic-id
Anote o ID do tópico, porque você vai precisar dele para concluir a ativação de eventos. Para mais informações, consulte Criar um tópico.
Para ativar eventos (ou migrar de um tópico hospedado pelo Google):
- Se estiver criando um projeto, selecione Ativar eventos e clique em Criar projeto. Se você estiver migrando um projeto de um tópico hospedado pelo Google, primeiro desative o tópico do Pub/Sub na tela de informações do projeto.
- Clique no ícone para Tópico do Pub/Sub e selecione Ativar eventos com o tópico do Pub/Sub ou Editar o tópico atual.
- Insira o ID do tópico do Pub/Sub autohospedado que você criou anteriormente.
Copie o ID do tópico. Você vai precisar dele para criar uma assinatura e recuperar mensagens de eventos.
Criar uma assinatura por pull
Uma assinatura por pull é quando um assinante inicia solicitações ao servidor do Pub/Sub para mensagens de eventos enfileiradas. Essa é uma maneira rápida e fácil de verificar se os eventos estão sendo gerados para seus dispositivos autorizados.
Abra o Cloud Shell para seu projeto na nuvem do Google Cloud:
No prompt do Cloud Shell, execute o comando a seguir para criar uma assinatura de extração para seu tópico, usando o subscription-id que você quiser e seu ID de tópico exclusivo:
gcloud pubsub subscriptions create subscription-id --topic=projects/gcp-project-name/subscriptions/topic-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].Iniciar eventos
Para iniciar eventos pela primeira vez depois que a assinatura do Pub/Sub for criada, faça uma chamada para listar seus dispositivos como um gatilho único:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'Os eventos de todas as estruturas e dispositivos serão publicados após essa chamada de API.
Gerar eventos
Os eventos são gerados para todas as mudanças no campo de traços, algumas automáticas e outras manuais.
Por exemplo, se a temperatura ambiente perto do Nest Thermostat mudar, um evento para a característicaTemperature será enviado automaticamente com um novo valor ambientTemperatureCelsius.
Para gerar um manualmente, faça o seguinte:
- Mudar fisicamente o estado do dispositivo, como mudar o modo do termostato Nest.
- Acione um evento, como movimento, pessoa ou som, em uma Google Nest Cam Interna.
- Execute um comando de dispositivo usando a API SDM.
Veja as mensagens
As mensagens de evento podem ser visualizadas no seu projeto na nuvem do Google Cloud, na seção "Assinaturas do Pub/Sub":
Acessar as assinaturas do Pub/Sub do Google Cloud
- Clique no ID da assinatura que você criou.
- Na tela Detalhes da assinatura, você vai encontrar a atividade do gráfico Contagem de mensagens não confirmadas. Isso indica que as mensagens de evento chegaram pela sua assinatura. Se não houver atividade, aguarde um pouco ou gere mais alguns eventos.
- Clique em VER MENSAGENS para abrir o painel Mensagens.
- Clique em PULL para ver as mensagens. Elas precisam corresponder às ações usadas para gerar eventos.
As mensagens também podem ser visualizadas no Cloud Shell com um comando pull básico:
gcloud pubsub subscriptions pull subscription-idPara mais informações sobre os tipos de assinatura, bem como os tipos de eventos enviados pela API SDM e como usá-los, consulte Eventos.
Gerenciar mensagens
As mensagens precisam ser reconhecidas e excluídas regularmente para manter uma assinatura limpa e evitar a entrega de mensagens duplicadas para outros assinantes. Todas as mensagens de assinatura podem ser excluídas manualmente na seção "Assinaturas do Pub/Sub":
Acessar as assinaturas do Pub/Sub do Google Cloud
- Clique no ID da assinatura.
- Há algumas maneiras de confirmar e limpar:
- Clique em VER MENSAGENS para abrir o painel Mensagens. Marque a caixa de seleção Ativar mensagens de confirmação e clique em PULL para ver e confirmar todas as mensagens.
- Clique em REMOVER MENSAGENS para remover todas as mensagens atuais confirmando-as sem visualizá-las. Clique em PURGE para confirmar.
As mensagens também podem ser excluídas no Cloud Shell usando a flag --auto-ack com
um comando pull básico:
gcloud pubsub subscriptions pull subscription-id --auto-ackGerenciar assinaturas
As assinaturas podem ser configuradas de várias maneiras, conforme descrito em Usar propriedades de assinatura.
Embora a forma de gerenciar assinaturas e mensagens seja sua, para um aplicativo de produção, recomendamos usar contas de serviço para autenticação, em vez de uma conta de usuário como você fez até agora neste guia de início rápido. Uma conta de serviço é usada por um aplicativo ou máquina virtual, não por uma pessoa, e tem uma chave de conta exclusiva.
Para mais informações sobre a autenticação de contas de serviço com Device Access, consulte Eventos.