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 dos eventos é garantido, desde que o token de acesso não seja revogado pelo usuário e as mensagens do 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 seu projeto no Console, caso ainda não tenha feito isso.

Acesse o Device Access Console

Se você já tiver ativado 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 "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 e recuperar as mensagens de eventos.

Criar uma assinatura de 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 seu projeto do Google Cloud:

Acesse o Google Cloud Shell

No prompt do Cloud Shell, execute o seguinte comando para criar uma assinatura de pull do tópico, usando o subscription-id que quiser 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 após a criação da assinatura do Pub/Sub, 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 alterações de campos de características, algumas automáticas, outras 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. Mudar fisicamente 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.

Veja as mensagens

É possível visualizar as mensagens de eventos no 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 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 ver as mensagens. Eles precisam corresponder às ações usadas para gerar eventos.

Também é possível visualizar 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 entrega de mensagens duplicadas para 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 mensagens de confirmação e clique em PULL para visualizar e confirmar todas as mensagens.
    2. Clique em LIMPAR MENSAGENS para limpar todas as mensagens existentes, reconhecendo-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 básico pull:

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.

Embora você decida gerenciar as assinaturas e as mensagens, no caso de um aplicativo de produção, recomendamos usar contas de serviço para autenticação, em vez de usar uma conta de usuário como foi feito 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 sua própria chave de conta exclusiva.

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