选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

在设备处于离线状态时使用设备影子保持设备状态

聚焦模式
在设备处于离线状态时使用设备影子保持设备状态 - AWS IoT Core

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

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

教程场景概览

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

以下教程将帮助您了解如何使用 AWS IoTDevice Shadow 服务。

AWS IoT Device Shadow 概览

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

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

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

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

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

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

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

要更新设备的影子文档,可以使用预留的 MQTT 主题Device Shadow REST API支持 GETUPDATE,和 DELETE操作,以及 AWS IoTCLI

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

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

更新仅影响请求中指定的字段。成功更新 Device Shadow 后,AWS 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报告给 AWS IoTDevice Shadow,其中包含以下 JSON 消息:

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

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

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

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

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

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

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。