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. Eles podem ser facilmente implementados e verificados usando seu projeto do Google Cloud.

Ativar eventos

Os eventos podem ser ativados no Device Access Console. Selecione o projeto no Console, caso ainda não tenha feito isso.

Acesse o Device Access Console

Se você já ativou eventos (por exemplo, durante a criação do projeto), o campo Tópico do Pub/Sub na seção Informações do projeto já deve ter um valor, chamado de ID do tópico, no formato de:

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

Se você não tiver ativado 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 tópico é gerado para você no formato mostrado acima.

Copie o ID do tópico para criar uma assinatura do tópico e recuperar as mensagens de eventos.

Criar uma assinatura de pull

Uma assinatura de pull é onde um assinante inicia solicitações ao servidor do Pub/Sub para mensagens de evento na fila. Essa é uma maneira rápida e fácil de verificar se os eventos estão sendo gerados para os dispositivos autorizados.

Abra o Cloud Shell para seu 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 seu tópico, usando o subscription-id que você quiser e seu 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 após a criação da assinatura do Pub/Sub, faça uma chamada para listar seus dispositivos como um acionador ú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 alterações de campo de característica, algumas automáticas ou manuais.

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

Para gerar um manualmente:

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

Ver as mensagens

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

Acessar "Assinaturas do Google Cloud Pub/Sub"

  1. Clique no código da assinatura que você criou anteriormente.
  2. Na tela Detalhes da assinatura, você verá a atividade do gráfico Contagem de mensagens não confirmadas. Isso indica que as mensagens de evento foram enviadas para sua assinatura. Se você não vir nenhuma 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. Eles devem corresponder às ações usadas para gerar eventos.

Também é possível ver as mensagens 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 a entrega duplicada de mensagens a outros assinantes. Todas as mensagens de assinatura podem ser limpas 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 ack messages e clique em PULL para ver e confirmar todas as mensagens.
    2. Clique em LIMPAR MENSAGENS para limpar todas as mensagens existentes confirmando-as sem visualizá-las. Clique em LIMPAR para confirmar.

As mensagens também podem ser limpas no Cloud Shell usando a sinalização --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 propriedades de assinatura.

A maneira como você quer gerenciar assinaturas e mensagens depende de você, mas, 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ê tem até agora neste guia de início rápido. Uma conta de serviço é usada por um aplicativo ou uma 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 da conta de serviço com Device Access, consulte Eventos.