Подписаться на события

События асинхронны и управляются Google Cloud Pub/Sub, в одной теме для каждого. Project. События обеспечивают обновления для всех устройств и структур, и получение событий гарантировано до тех пор, пока токен доступа не отозван пользователем и срок действия сообщений о событиях не истек.

События — это дополнительная функция SDM API. Их можно легко реализовать и проверить с помощью вашего проекта Google Cloud.

Включить события

События можно включить в Device Access Консоль. Выберите свой проект в консоли, если вы еще этого не сделали.

Перейти к Device Access Консоль

Если вы уже включили события (например, во время создания проекта ), поле темы Pub/Sub в разделе «Информация о проекте» уже должно иметь значение, называемое идентификатором темы, в формате:

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

Если вы не включили события:

  1. Нажмите значок для темы Pub/Sub и выберите «Изменить» .
  2. Установите флажок «Включить события» и нажмите « Сохранить» .
  3. Идентификатор темы генерируется для вас в формате, показанном выше.

Скопируйте свой идентификатор темы, он понадобится вам для создания подписки на тему, чтобы можно было получать сообщения о событиях.

Создать подписку по запросу

Подписка по запросу — это когда подписчик инициирует запросы к серверу Pub/Sub для сообщений о событиях в очереди. Это быстрый и простой способ убедиться, что события генерируются для ваших авторизованных устройств.

Откройте Cloud Shell для вашего проекта Google Cloud:

Перейдите в Google Cloud Shell.

В командной строке Cloud Shell выполните следующую команду, чтобы создать подписку по запросу на вашу тему, используя любой subscription-id и уникальный идентификатор темы:

gcloud pubsub subscriptions create subscription-id --topic=projects/sdm-prod/topics/enterprise-project-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].

Инициировать события

Чтобы инициировать события в первый раз после создания подписки Pub/Sub, позвоните и перечислите свои устройства в качестве одноразового триггера:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

События для всех структур и устройств будут опубликованы после этого вызова API.

Генерировать события

События генерируются для всех изменений полей признаков, некоторые из которых происходят автоматически, некоторые — вручную.

Например, если температура окружающей среды рядом с термостатом Nest изменится, произойдет событие дляТемпература черта будет автоматически отправлена ​​с новым ambientTemperatureCelsius .

Чтобы создать его вручную, выполните одно из следующих действий:

  1. Физически измените состояние вашего устройства, например измените режим термостата Nest.
  2. Запустите событие, например движение, человека или звук, на камере Google Nest Cam Indoor.
  3. Выполните команду устройства с помощью API SDM.

Просмотр сообщений

Сообщения о событиях можно просмотреть в вашем проекте Google Cloud в разделе «Подписки на публикацию/подписку»:

Перейдите в раздел «Подписки на Google Cloud Pub/Sub».

  1. Нажмите на идентификатор подписки, который вы создали ранее.
  2. На экране сведений о подписке вы должны увидеть активность для диаграммы количества неподтвержденных сообщений . Это означает, что для вашей подписки поступили сообщения о событиях. Если вы не видите никакой активности, подождите немного или создайте еще несколько событий.
  3. Нажмите ПРОСМОТР СООБЩЕНИЙ, чтобы открыть панель «Сообщения» .
  4. Нажмите PULL , чтобы просмотреть сообщения. Они должны соответствовать действиям, которые вы использовали для генерации событий.

Сообщения также можно просмотреть в Cloud Shell с помощью базовой команды pull :

gcloud pubsub subscriptions pull subscription-id

Дополнительную информацию о типах подписок, а также о типах событий, отправляемых SDM API, и о том, как их использовать, см . в разделе «События» .

Управление сообщениями

Сообщения следует регулярно подтверждать и удалять, чтобы обеспечить чистоту подписки и избежать дублирования доставки сообщений другим подписчикам. Все сообщения о подписке можно удалить вручную в разделе «Подписки на публикацию/подписку»:

Перейдите в раздел «Подписки на Google Cloud Pub/Sub».

  1. Нажмите на идентификатор подписки.
  2. Есть несколько способов признать и очистить:
    1. Нажмите Просмотр сообщений», чтобы открыть панель «Сообщения» . Установите флажок «Включить подтверждающие сообщения» и нажмите «PULL», чтобы просмотреть и подтвердить все сообщения.
    2. Нажмите ОЧИСТИТЬ СООБЩЕНИЯ , чтобы удалить все существующие сообщения, подтвердив их без просмотра. Нажмите ОЧИСТИТЬ для подтверждения.

Сообщения также можно очистить в Cloud Shell, используя флаг --auto-ack с базовой командой pull :

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

Управление подписками

Подписки можно настроить различными способами, как описано в разделе Использование свойств подписки .

Хотя то, как вы хотите управлять подписками и сообщениями, зависит от вас, для рабочего приложения мы рекомендуем использовать для аутентификации учетные записи службы , а не учетную запись пользователя, которую вы использовали до сих пор в этом кратком руководстве. Учетная запись службы используется приложением или виртуальной машиной, а не человеком, и имеет собственный уникальный ключ учетной записи.

Для получения дополнительной информации об аутентификации учетной записи службы с помощью Device Access, см. События .