События асинхронны и управляются Google Cloud Pub/Sub в одной теме на ProjectСобытия предоставляют обновления для всех устройств и структур, а получение событий гарантируется до тех пор, пока токен доступа не отозван пользователем и срок действия сообщений о событиях не истек.
События — это дополнительная функция API SDM. Их можно легко реализовать и проверить с помощью вашего проекта Google Cloud.
Включить события
События могут быть включены в Device Access Консоль. Выберите свой проект в консоли, если вы еще этого не сделали.
Перейти к Device Access Консоль
Если вы уже включили события (например, во время создания проекта ), поле темы Pub/Sub в разделе « Включить тему Pubsub для событий» уже должно иметь значение, называемое идентификатором темы, в старом формате:
projects/sdm-prod/topics/enterprise-project-id
Этот формат темы размещен на Google и сохранится для вашего проекта, если вы не отключите размещенную на Google тему Pub/Sub. Если вы включите ее позже, вы будете переключены на размещенную на собственном хостинге тему Pub/Sub.
Самостоятельно размещенные темы Pub/Sub могут быть созданы или изменены в собственном проекте Google Cloud разработчика. Разработчик также несет ответственность за все расходы, связанные с использованием Pub/Sub, см. цены Pub/Sub для получения дополнительной информации.
Создайте тему Pub/Sub:
gcloud pubsub topics create {topic} --message-retention-duration=0s
Предоставьте необходимые разрешения API SDM для доступа и публикации данных о событиях для идентификатора темы вашего проекта:
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
Запишите свой идентификатор темы, он вам понадобится для завершения событий включения. Для получения дополнительной информации см. раздел Создание темы .
Чтобы включить события:
- Установите флажок Включить события и нажмите Создать проект .
- Щелкните значок для темы Pub/Sub и выберите Включить события с темой PubSub .
- Введите идентификатор темы Pub/Sub, который был предоставлен или создан ранее.
Скопируйте идентификатор темы, он вам понадобится для создания подписки на тему, чтобы можно было получать сообщения о событиях.
Создать подписку по запросу
Подписка на получение — это когда подписчик инициирует запросы к серверу Pub/Sub для сообщений о событиях в очереди. Это быстрый и простой способ проверить, что события генерируются для ваших авторизованных устройств.
Откройте Cloud Shell для вашего проекта Google Cloud:
В командной строке Cloud Shell выполните следующую команду, чтобы создать подписку pull на вашу тему, используя любой желаемый 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
.
Чтобы сгенерировать его вручную, выполните одно из следующих действий:
- Физически измените состояние вашего устройства, например, измените режим термостата Nest.
- Активируйте событие, например движение, человека или звук, на внутренней камере Google Nest Cam.
- Выполнение команды устройства с использованием API SDM.
Просмотреть сообщения
Сообщения о событиях можно просмотреть в вашем проекте Google Cloud в разделе «Подписки Pub/Sub»:
Перейти к подпискам Google Cloud Pub/Sub
- Нажмите на идентификатор подписки, который вы создали ранее.
- На экране сведений о подписке вы должны увидеть активность для диаграммы количества неотвеченных сообщений . Это означает, что для вашей подписки пришли сообщения о событиях. Если вы не видите никакой активности, подождите немного или сгенерируйте еще несколько событий.
- Нажмите ПРОСМОТР СООБЩЕНИЙ , чтобы открыть панель сообщений .
- Нажмите PULL , чтобы просмотреть сообщения. Они должны соответствовать действиям, которые вы использовали для генерации событий.
Сообщения также можно просматривать в Cloud Shell с помощью простой команды pull
:
gcloud pubsub subscriptions pull subscription-id
Дополнительную информацию о типах подписок, а также о типах событий, отправляемых API SDM, и о том, как их использовать, см. в разделе События .
Управление сообщениями
Сообщения должны регулярно подтверждаться и очищаться, чтобы поддерживать подписку чистой и избегать дублирования сообщений для других подписчиков. Все сообщения подписки можно вручную очистить в разделе подписок Pub/Sub:
Перейти к подпискам Google Cloud Pub/Sub
- Нажмите на идентификатор подписки.
- Есть несколько способов признания и очищения:
- Нажмите ПРОСМОТР СООБЩЕНИЙ , чтобы открыть панель сообщений . Установите флажок Включить сообщения подтверждения и нажмите ПОЛУЧИТЬ , чтобы просмотреть и подтвердить все сообщения.
- Нажмите ОЧИСТИТЬ СООБЩЕНИЯ , чтобы очистить все существующие сообщения, подтвердив их без просмотра. Нажмите ОЧИСТИТЬ для подтверждения.
Сообщения также можно очистить в Cloud Shell, используя флаг --auto-ack
с базовой командой pull
:
gcloud pubsub subscriptions pull subscription-id --auto-ack
Управление подписками
Подписки можно настроить различными способами, как описано в разделе Использование свойств подписки .
Хотя то, как вы хотите управлять подписками и сообщениями, зависит от вас, для производственного приложения мы рекомендуем вам использовать учетные записи служб для аутентификации, а не учетную запись пользователя, как вы делали до сих пор в этом кратком руководстве. Учетная запись службы используется приложением или виртуальной машиной, а не человеком, и имеет свой собственный уникальный ключ учетной записи.
Для получения дополнительной информации об аутентификации учетной записи службы с помощью Device Access, см. События .