Inscrever-se em eventos

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 Device Access Console. Selecione seu projeto no console, caso ainda não tenha feito isso.

Acessar 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

Esse formato de tópico é hospedado pelo Google e vai persistir no seu projeto, a menos que você desative o tópico do Pub/Sub hospedado pelo Google. Se você reativar depois, vai mudar para o tópico do Pub/Sub autohospedado.

Os tópicos do Pub/Sub auto-hospedados podem ser criados ou alterados no projeto do Google Cloud de um desenvolvedor. O desenvolvedor também é responsável por todos os custos associados ao uso do Pub/Sub. Consulte os preços do Pub/Sub para mais informações.

Crie o tópico do Pub/Sub:

gcloud pubsub topics create {topic} --message-retention-duration=0s

Conceda 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, que será necessário para concluir a ativação de eventos. Consulte Criar um tópico para mais informações.

Para ativar eventos:

  1. Marque Ativar eventos e clique em Criar projeto.
  2. Clique no ícone para Tópico do Pub/Sub e selecione Ativar eventos com o tópico do Pub/Sub.
  3. Insira o ID do tópico do Pub/Sub fornecido ou criado 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

Em uma assinatura pull, 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 do Google Cloud:

Acessar o Google Cloud Shell

No prompt do Cloud Shell, execute o comando a seguir para criar uma assinatura de extração para seu tópico, usando qualquer subscription-id que você queira 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 nos campos de traços, algumas automáticas e outras manuais.

Por exemplo, se a temperatura ambiente perto do seu 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:

  1. Mude fisicamente o estado do dispositivo, como o modo do termostato Nest.
  2. Acione um evento, como movimento, pessoa ou som, em uma Google Nest Cam interna.
  3. Execute um comando de dispositivo usando a API SDM.

Veja as mensagens

As mensagens de evento podem ser visualizadas no seu projeto do Google Cloud, na seção "Assinaturas do Pub/Sub":

Acessar "Assinaturas" do Google Cloud Pub/Sub

  1. Clique no ID da assinatura que você criou antes.
  2. Na tela Detalhes da assinatura, você vai encontrar a atividade no gráfico Contagem de mensagens não confirmadas. Isso indica que as mensagens de evento foram enviadas para sua assinatura. Se não houver atividade, aguarde um pouco ou gere mais alguns eventos.
  3. Clique em VER MENSAGENS para abrir o painel Mensagens.
  4. 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-id

Para 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 confirmadas e excluídas regularmente para manter uma assinatura limpa e evitar a entrega de mensagens duplicadas a outros assinantes. Todas as mensagens de assinatura podem ser excluídas manualmente na seção "Assinaturas do Pub/Sub":

Acessar "Assinaturas" do Google Cloud Pub/Sub

  1. Clique no ID da assinatura.
  2. Há algumas maneiras de confirmar e limpar:
    1. 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.
    2. 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 removidas no Cloud Shell usando a flag --auto-ack com um comando pull básico:

gcloud pubsub subscriptions pull subscription-id --auto-ack

Gerenciar 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 que você use 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.