Amazon IoT Device Shadow 教程 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon IoT Device Shadow 教程

这些教程介绍如何使用 Amazon IoT Device Shadow 服务来存储和更新设备的状态信息。影子文档是 JSON 文档,根据设备、本地应用程序或服务发布的消息显示设备状态的更改。在本教程中,影子文档将显示灯泡颜色的变化。这些教程还显示影子如何存储此信息,即使设备与互联网断开连接,并在设备重新联机并请求此信息时将最新状态信息传递回设备。

我们建议您按照这里显示的顺序尝试这些教程,从需要创建的 Amazon IoT 资源以及必要的硬件设置开始,这也有助于您逐步学习这些概念。这些教程展示了如何配置和连接 Raspberry Pi 设备,以便与 Amazon IoT 搭配使用。如果您没有所需的硬件,您可以按照这些教程将它们适配于您选择的设备或使用 Amazon EC2 创建虚拟设备

教程场景概览

这些教程的场景是一个本地应用程序或服务,该应用程序或服务可更改灯泡的颜色,并将其数据发布到预留的影子主题。这些教程类似交互式入门教程中所述的 Device Shadowq 功能,并且已在 Raspberry Pi 设备上实现。本部分中的教程侧重于单个经典影子,同时将展示如何容纳已命名的影子或多个设备。

本部分中的以下教程将帮助您了解如何使用 Amazon IoT Device Shadow 服务。

Amazon IoT Device Shadow 概览

Device Shadow 是由您在 Amazon IoT 注册表中创建的事物资源所管理的设备的持续性虚拟化展示。设备的影子是用于存储和检索设备的当前状态信息的 JSON 或 JavaScript 注释文档。您可以使用该影子通过 MQTT 主题或 HTTP REST APIs 获取和设置设备的状态,无论该设备是否连接到互联网。

影子文档包含一个 state 属性,以描述设备状态的以下方面。

  • desired:应用程序更新 desired 对象以指定设备属性的所需状态。

  • reported:设备在 reported 对象中报告其当前状态。

  • delta:Amazon IoT 在 delta 对象中报告所需的状态和报告的状态之间的差异。

以下为示例影子状态文档:

{ "state": { "desired": { "color": "green" }, "reported": { "color": "blue" }, "delta": { "color": "green" } } }

要更新设备的影子文档,可以使用预留的 MQTT 主题Device Shadow REST API支持 GETUPDATE,和 DELETE 方法,以及 Amazon IoT CLI

在前面的示例中,假设您希望将 desired 颜色改为 yellow。要执行此操作,请将请求发送到 UpdateThingShadow API 或将消息发布到更新主题,$aws/things/THING_NAME/shadow/update

{ "state": { "desired": { "color": yellow } } }

更新仅影响请求中指定的字段。成功更新 Device Shadow 后,Amazon IoT 将发布新 desired 状态至 delta主题,$aws/things/THING_NAME/shadow/delta。在这种情况下,影子文档如下所示:

{ "state": { "desired": { "color": yellow }, "reported": { "color": green }, "delta": { "color": yellow } } }

然后,新状态将使用 Update 主题 $aws/things/THING_NAME/shadow/update 报告给 Amazon IoT Device Shadow,其中包含以下 JSON 消息:

{ "state": { "reported": { "color": yellow } } }

如果要获取当前状态信息,请将请求发送至 GetThingShadow API 或将 MQTT 消息发布到 Get(获取)主题,$aws/things/THING_NAME/shadow/get

有关使用 Device Shadow 服务的更多信息,请参阅 Amazon IoT Device Shadow 服务

有关在设备、应用程序和服务中使用 Device Shadow 的更多信息,请参阅 在设备中使用影子在应用程序和服务中使用影子

有关与 Amazon IoT 影子交互的信息,请参阅 与影子交互

有关 MQTT 预留主题和 HTTP REST API 的信息,请参阅 Device Shadow MQTT 主题Device Shadow REST API