订阅活动

事件是异步的,并由 Google Cloud Pub/Sub 根据每个 Project的单个主题进行管理。只要用户未撤消访问令牌,且事件消息未过期,事件就会针对所有设备和结构提供更新,并保证收到事件。

事件是 SDM API 的可选功能。您可以使用 Google Cloud 项目轻松实现并验证这些文件。

允许显示活动

您可以在 Device Access 控制台中启用事件。在控制台中选择您的项目(如果您尚未选择)。

前往 Device Access 控制台

如果您已启用事件(例如,在创建项目期间),项目信息部分中的 Pub/Sub 主题字段应该已经有一个值(称为 Topic 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 温控器附近的环境温度发生变化,系统便会自动向温度 特征发送新的 ambientTemperatureCelsius 值。

如需手动生成一个,请执行以下任一操作:

  1. 实际更改设备状态,例如更改 Nest Thermostat 模式。
  2. 在 Google Nest Cam Indoor 上触发事件,例如移动、人物或声音。
  3. 使用 SDM API 执行设备命令

查看消息

您可以在 Google Cloud 项目的“Pub/Sub 订阅”部分查看事件消息:

前往 Google Cloud Pub/Sub 订阅

  1. 点击您之前创建的订阅 ID。
  2. 订阅详情屏幕上,您应该会看到未确认的消息数图表的活动。这表示您已收到订阅的事件消息。如果您没有看到任何 activity,请稍等片刻,或者再生成一些事件。
  3. 点击 查看消息以调出消息面板。
  4. 点击拉取以查看消息。它们应该与您用于生成事件的操作相对应。

您也可以通过基本的 pull 命令在 Cloud Shell 中查看消息:

gcloud pubsub subscriptions pull subscription-id

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

管理邮件

您应该定期确认并完全清除消息,以保持订阅整洁,避免向其他订阅者重复传递消息。可在 Pub/Sub 订阅部分中手动完全清除所有订阅消息:

前往 Google Cloud Pub/Sub 订阅

  1. 点击“订阅 ID”。
  2. 您可以通过以下几种方法确认和完全清除数据:
    1. 点击 查看消息以调出消息面板。勾选启用确认消息复选框,然后点击拉取以查看和确认所有消息。
    2. 点击 “完全清除”消息,通过确认所有现有消息而不予以查看。点击清除进行确认。

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

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

管理订阅

您可以通过各种方式配置订阅,如使用订阅属性中所述。

虽然您希望以何种方式管理订阅和消息,但对于生产应用,我们建议您使用服务帐号进行身份验证,而不是像本快速入门指南中那样使用您目前拥有的用户帐号。服务帐号由应用或虚拟机(而非个人)使用,并且有自己的唯一帐号密钥。

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