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

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

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

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

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

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

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

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

Этот формат тем размещается в Google и сохранится в вашем проекте, пока вы не отключите тему Pub/Sub, размещенную в Google. Если вы включите её позже, вы будете переключены на собственную тему Pub/Sub.

Размещаемые самостоятельно темы Pub/Sub могут быть созданы или изменены в собственном проекте Google Cloud разработчика. Разработчик также несет ответственность за все расходы, связанные с использованием Pub/Sub. Подробнее см. в разделе «Цены на Pub/Sub» .

Создайте тему Pub/Sub:

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

Предоставьте необходимые разрешения SDM API для доступа и публикации данных о событиях для идентификатора темы вашего проекта:

gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"

Формат вашего нового идентификатора темы будет выглядеть следующим образом:

projects/gcp-project-name/subscriptions/topic-id

Запишите идентификатор вашей темы — он понадобится вам для завершения активации событий. Подробнее см. в разделе «Создание темы» .

Чтобы включить события:

  1. Установите флажок Включить события и нажмите Создать проект .
  2. Щелкните значок для темы Pub/Sub и выберите Включить события с темой PubSub .
  3. Введите идентификатор темы Pub/Sub, который был предоставлен или создан ранее.

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

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

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

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

Перейти в Google Cloud Shell

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

gcloud pubsub subscriptions create subscription-id --topic=projects/gcp-project-name/subscriptions/topic-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.
  3. Выполнение команды устройства с использованием API SDM.

Просмотреть сообщения

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

Перейти к подпискам Google Cloud Pub/Sub

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

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

gcloud pubsub subscriptions pull subscription-id

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

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

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

Перейти к подпискам Google Cloud Pub/Sub

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

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

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

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

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

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

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