AWS IoT Device Shadow 演示应用程序 - FreeRTOS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS IoT Device Shadow 演示应用程序

FreeRTOS 包含一个演示应用程序,该应用程序演示如何以编程方式更新并响应 AWS IoT Device Shadow 中的变化。此演示应用程序在 FreeRTOS/demos/shadow/aws_iot_demo_shadow.c 中进行定义。此情景中的设备是灯泡,其颜色可以设置为红色或绿色。

此演示应用程序创建三个任务:

  • 调用 prvShadowMainTask 的主演示任务。

  • 调用 prvUpdateTask 的设备更新任务。

  • 调用 prvShadowUpdateTasks 的多个影子更新任务。

prvShadowMainTask 初始化 Device Shadow 客户端,并使用 demos/include/aws_clientcredential.h 中指定的客户端凭证启动与 AWS IoT 的 MQTT 连接。aws_clientcredential.h 中指定的信息(包括设备的 AWS IoT 事物名以及 MQTT 代理终端节点和端口)必须正确,应用程序才能成功连接到 AWS 云。

建立 MQTT 连接后,应用程序将创建设备更新任务。最后,它创建影子更新任务,然后终止。在 aws_iot_demo_shadow.c 中定义的 democonfigSHADOW_DEMO_NUM_TASKS 常量控制创建的影子更新任务数。

prvShadowUpdateTasks 生成初始事物影子文档并使用文档更新影子。然后,它会进入无限循环,定义更新事物影子的所需状态,请求灯泡改变其颜色(从红色到绿色到红色)。

prvUpdateTask 响应影子所需状态的更改。当所需的状态发生更改时,此任务将更新报告的影子状态以反映新的所需状态。

您必须先完成入门初始步骤以设置 AWS IoT 和 FreeRTOS,使设备能够与 AWS 云进行通信,之后才能运行 Device Shadow 演示。

在设置 AWS IoT 和 FreeRTOS 后,执行以下操作:

  1. 将以下策略添加到您的设备证书:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:aws-cn:iot:us-west-2:123456789012:client/yourClientId" }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": "arn:aws-cn:iot:us-west-2:123456789012:topicfilter/$aws/things/thingName/shadow/*" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws-cn:iot:us-west-2:123456789012:topic/$aws/things/thingName/shadow/*" }, { "Effect": "Allow", "Action": "iot:Publish", "Resource": "arn:aws-cn:iot:us-west-2:123456789012:topic/$aws/things/thingName/shadow/*" } ] }
  2. 打开 freertos/vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h,注释掉 #define CONFIG_MQTT_DEMO_ENABLED 并定义 CONFIG_SHADOW_DEMO_ENABLED

  3. 构建和运行 FreeRTOS 并将其刷新到您的设备。

您可以使用 AWS IoT 控制台来查看设备的影子并确认所需的状态,定期报告状态更改。

  1. 在 AWS IoT 控制台中,从左侧导航窗格中选择管理

  2. 管理下,选择事物,然后选择要查看其影子的事物。

  3. 在事物详细信息页面上,从左侧导航窗格中,选择 Shadow (影子) 以显示事物影子。

有关设备与影子如何交互的更多信息,请参阅 Device Shadow 服务数据流