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

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

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

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

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

教程场景概览

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

以下教程将帮助您学习如何使用 Dev AWS IoT ice Shadow 服务。

AWS IoTDevice Shadow 概述

Device Shadow 是设备的永久虚拟表示形式,该设备由您在AWS IoT注册表中创建的事物资源管理。Shadow 文档是一个 JSON 或 JavaScript 符号文档,用于存储和检索设备的当前状态信息。无论设备是否已连接到互联网,您都可以使用 shadow 通过 MQTT 主题或 HTTP RES APIs T 获取和设置设备的状态。

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

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

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

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

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

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

要更新设备的 Shadow 文档,您可以使用保留的 MQTT 主题、支持、、HTTP DELETE 操作 APIs的 Device Shado w RES T 以及 AWS IoTCLIGET UPDATE

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

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

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

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

然后,使用$aws/things/THING_NAME/shadow/update带有以下 JSON 消息的Update主题向 Dev AWS IoT ice Shadow 报告新状态:

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

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

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

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

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

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