订阅事件

事件是异步的,并由 Google Cloud Pub/Sub 进行管理,每个 Project。事件为所有设备和结构提供更新,而事件的接收则是 只要用户未撤消访问令牌,且事件消息尚未 已过期。

事件是 SDM API 的可选功能。他们可以 可以轻松实现和验证 项目。

允许显示活动

事件可以在控制台中启用。 Device Access 在 控制台(如果您尚未执行此操作)。

前往 Device Access 控制台

如果您已经启用了事件(例如,在项目期间 创建)、 项目信息部分中的 Pub/Sub 主题字段应已填写 值(称为主题 ID),格式为:

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

如果您尚未启用事件:

  1. 点击 Pub/Sub 的 图标 主题,然后选择修改
  2. 选中启用事件,然后点击保存
  3. 系统会为您生成一个主题 ID(格式如上所示)。

复制您的主题 ID,您需要用它来创建对主题的订阅, 可检索事件消息。

创建拉取订阅

拉取订阅是订阅者向 Pub/Sub 发起请求 服务器。您可以通过这种方式快速、轻松地验证 系统正在为您授权的设备生成 个事件。

为您的 Google Cloud 项目打开 Cloud Shell:

转到 Google Cloud Shell

在 Cloud Shell 提示符下,运行以下命令以创建拉取 使用您喜欢的任何 subscription-id 订阅您的主题 以及您的唯一主题 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 Thermostat 会发生变更, 体温 特征将 新的 ambientTemperatureCelsius 值。

要手动生成一个代码,请执行以下任一操作:

  1. 以物理方式更改设备状态,例如更改 Nest Thermostat。
  2. 触发事件,如动作、人物或声音 Google Nest Cam Indoor。
  3. 执行设备命令 使用 SDM API。

查看消息

您可以在 Google Cloud 项目、 Pub/Sub 订阅部分:

转到 Google Cloud Pub/Sub 订阅

  1. 点击您之前创建的订阅 ID。
  2. 订阅详情屏幕上,您应该会看到 未确认消息数图表。这表示事件消息来自 持续到订阅阶段如果您没有看到任何活动,请稍等片刻 或再生成几个事件
  3. 点击 查看消息即可执行以下操作: Messages 面板。
  4. 点击拉取以查看消息。它们应与 生成事件的方法

您还可以使用基本的 pull 命令在 Cloud Shell 中查看消息:

gcloud pubsub subscriptions pull subscription-id

如需详细了解订阅类型以及发送的事件类型 SDM API 及其使用方法,请参阅 事件

管理邮件

应定期确认和清除消息,以保留订阅 清理消息,避免重复向其他订阅者传送消息。全部 订阅消息可以在 Pub/Sub 订阅中手动完全清除 部分:

转到 Google Cloud Pub/Sub 订阅

  1. 点击订阅 ID。
  2. 您可以通过以下几种方式确认和完全清除这些数据:
    1. 点击 查看消息即可执行以下操作: Messages 面板。选中 Enable ack messages(启用确认消息) 复选框,然后点击拉取以查看并确认所有消息。
    2. 点击 “清除” MESSAGES 以在不使用 查看。点击完全清除进行确认。

您还可以使用 --auto-ack 标志在 Cloud Shell 中完全清除消息 基本的 pull 命令:

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

管理订阅

订阅可以通过多种方式进行配置,具体说明请参见 使用订阅属性

虽然如何管理订阅和消息由您决定 建议您使用 服务账号: 而不需要像你现在那样使用 入门指南。服务账号由应用或虚拟机使用,而不是 且拥有自己的唯一账号密钥。

如需详细了解如何使用 Device Access进行服务账号身份验证,请参阅 事件