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 de eventos é garantido desde que o token de acesso não seja revogado pelo usuário e as mensagens de evento não tenham expirado.

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, se ainda não tiver feito isso.

Acessar o console do Device Access

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 Informações do projeto já terá um valor, chamado de ID do tópico, no formato:

projects/sdm-prod/topics/enterprise-project-id

Se você não ativou os eventos:

  1. Clique no ícone do tópico do Pub/Sub e selecione Editar.
  2. Marque Ativar eventos e clique em Salvar.
  3. Um ID de tema é gerado para você no formato mostrado acima.

Copie o ID do tópico. Você vai precisar dele para criar uma assinatura do tópico e que as mensagens de evento possam ser recuperadas.

Criar uma assinatura por pull

Uma assinatura de pull é o local em que um assinante inicia solicitações para mensagens de eventos na fila no servidor Pub/Sub. 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 o projeto do Google Cloud:

Acessar o Google Cloud Shell

No prompt do Cloud Shell, execute o seguinte comando para criar uma assinatura de pull para o tópico usando qualquer subscription-id e o ID exclusivo do tópico:

gcloud pubsub subscriptions create subscription-id --topic=projects/sdm-prod/topics/enterprise-project-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'

Eventos para 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 de campo de atributo, algumas automáticas e outras manuais.

Por exemplo, se a temperatura ambiente perto do Nest Thermostat mudar, um evento para o Temperature será enviado automaticamente com um novo valor ambientTemperatureCelsius.

Para gerar uma manualmente, faça o seguinte:

  1. Mude fisicamente o estado do dispositivo, como mudar o modo do termostato Nest.
  2. Acionar um evento, como movimento, pessoa ou som em uma Google Nest Cam Indoor.
  3. Executar um comando do dispositivo usando a API SDM.

Veja as mensagens

É possível visualizar as mensagens de eventos no projeto do Google Cloud na seção "Assinaturas do Pub/Sub":

Acessar as assinaturas do Pub/Sub do Google Cloud

  1. Clique no ID da assinatura que você criou anteriormente.
  2. Na tela Detalhes da assinatura, é mostrada a atividade do gráfico Contagem de mensagens não confirmadas. Isso indica que as mensagens de evento foram recebidas para sua assinatura. Se nenhuma atividade for mostrada, aguarde um pouco ou gere mais alguns eventos.
  3. Clique em VER MENSAGENS para abrir o painel Mensagens.
  4. Clique em PULL para conferir as mensagens. Elas precisam corresponder às ações que você usou 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 limpas regularmente, para manter uma assinatura limpa e evitar entrega de mensagens duplicadas para outros assinantes. Todas as mensagens de assinatura podem ser limpas manualmente na seção "Assinaturas" do Pub/Sub:

Acessar as assinaturas do Pub/Sub do Google Cloud

  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 confirmadas e clique em PULL para conferir e confirmar todas as mensagens.
    2. Clique em LIMPAR MENSAGENS para limpar todas as mensagens atuais confirmando sem abrir. Clique em LIMPAR 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-ack

Gerenciar assinaturas

As assinaturas podem ser configuradas de várias maneiras, conforme descrito em Como usar as propriedades de assinatura.

Embora a forma de gerenciar assinaturas e mensagens seja sua escolha, para um aplicativo de produção, recomendamos o uso de 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 a própria chave de conta exclusiva.

Para mais informações sobre a autenticação de contas de serviço com Device Access, consulte Eventos.