События происходят асинхронно и управляются системой Google Cloud Pub/Sub в рамках одной темы на каждый элемент. ProjectСобытия обеспечивают обновления для всех устройств и структур, и получение событий гарантировано до тех пор, пока токен доступа не будет отозван пользователем и сообщения о событиях не истекут.
События — это необязательная функция API SDM. Их легко реализовать и проверить с помощью вашего проекта Google Cloud.
Включить события
События можно включить в Device Access Консоль. Выберите свой проект в консоли, если вы еще этого не сделали.
Перейдите в Device Access Консоль
Если вы уже включили события (например, при создании проекта ), поле «Тема публикации/подписки» в разделе « Включить тему публикации/подписки для событий» уже должно содержать значение, называемое идентификатором темы, в старом формате:
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Предоставьте 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
Запишите идентификатор вашей темы (Topic ID), он понадобится вам для активации событий. Дополнительную информацию см. в разделе «Создание темы» .
Для включения событий:
- Установите флажок «Включить события» и нажмите «Создать проект» .
- Щелкните значок для темы Pub/Sub и выберите «Включить события с темой PubSub» .
- Введите идентификатор темы публикации/подтемы, который был предоставлен или создан ранее.
Скопируйте идентификатор вашей темы (Topic ID), он понадобится для создания подписки на тему, чтобы можно было получать сообщения о событиях.
Создать подписку на получение данных (pull subscription)
Подписка по принципу «pull subscription» — это когда подписчик инициирует запросы к серверу 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 .
Для создания его вручную можно использовать один из следующих способов:
- Физически измените состояние вашего устройства, например, измените режим работы термостата Nest.
- Запустите событие, например, обнаружение движения, человека или звука, на камере Google Nest Cam Indoor.
- Выполните команду устройства, используя API SDM.
Просмотреть сообщения
Сообщения о событиях можно просмотреть в вашем проекте Google Cloud в разделе «Подписки Pub/Sub»:
Перейдите в раздел «Подписки Google Cloud Pub/Sub».
- Нажмите на идентификатор подписки, который вы создали ранее.
- На экране сведений о подписке вы должны увидеть активность на графике количества неподтвержденных сообщений . Это означает, что для вашей подписки поступили сообщения о событиях. Если вы не видите никакой активности, подождите немного или сгенерируйте еще несколько событий.
- Нажмите кнопку « сообщения» , чтобы открыть панель сообщений .
- Нажмите кнопку «Потянуть» , чтобы просмотреть сообщения. Они должны соответствовать действиям, которые вы использовали для генерации событий.
Сообщения также можно просмотреть в Cloud Shell с помощью простой команды pull :
gcloud pubsub subscriptions pull subscription-idДля получения дополнительной информации о типах подписки, а также о типах событий, отправляемых API SDM, и о том, как их использовать, см. раздел «События» .
Управление сообщениями
Сообщения следует регулярно подтверждать и удалять, чтобы поддерживать чистоту подписки и избегать повторной отправки сообщений другим подписчикам. Все сообщения подписки можно удалить вручную в разделе «Подписки на публикацию/подписку»:
Перейдите в раздел «Подписки Google Cloud Pub/Sub».
- Нажмите на идентификатор подписки.
- Существует несколько способов признать проблему и избавиться от неё:
- Нажмите кнопку > «Просмотреть сообщения» , чтобы открыть панель сообщений . Установите флажок «Включить подтверждение сообщений» и нажмите кнопку «Получить» , чтобы просмотреть и подтвердить все сообщения.
- Нажмите кнопку сообщения» , чтобы удалить все существующие сообщения, подтвердив их без просмотра. Нажмите кнопку «Удалить» для подтверждения.
В Cloud Shell также можно удалить сообщения, используя флаг --auto-ack с помощью простой команды pull :
gcloud pubsub subscriptions pull subscription-id --auto-ackУправление подписками
Подписки можно настраивать различными способами, как описано в разделе «Использование свойств подписки» .
Хотя способ управления подписками и сообщениями остается на ваше усмотрение, для производственного приложения мы рекомендуем использовать служебные учетные записи для аутентификации, а не учетные записи пользователей, как это было в данном кратком руководстве. Служебная учетная запись используется приложением или виртуальной машиной, а не человеком, и имеет свой собственный уникальный ключ учетной записи.
Для получения дополнительной информации об аутентификации служебной учетной записи с помощью Device AccessСм. раздел «События» .