AWS IoT
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

步骤 3:发送和接收事物的测试数据

在此步骤中,您练习将测试数据发送到 Raspberry Pi(或作为设备模拟器的开发计算机)的事物影子。在后面的步骤中,您可以通过 Raspberry Pi 将来自土壤含水量传感器套件的真实数据发送到其事物影子,或将来自开发计算机的模拟数据发送到其事物影子。

事物的影子为 JSON 文档,存储在 AWS IoT 中,AWS IoT 使用它来保存和检索设备的当前状态信息。适用于 AWS IoT 的 Device Shadow 服务 为您连接到 AWS IoT 的每个设备维护一个影子。您可以使用该影子获取和设置设备的状态,无论该设备是否连接到 Internet。

  1. AWS IoT 控制台事物页面上,选择 MyRPi

    
              AWS IoT 控制台管理、事物页面,其中突出显示了名为 MyRPi 的事物。
  2. 选择交互

    
              名为 MyRPi 的事物的交互页面。
  3. 对于 MQTT,记录以下各个 MQTT 主题的值,这使您可以设置影子和获取对影子的更新:

    • 更新到此事物影子(例如,$aws/things/MyRPi/shadow/update

    • 获取此事物影子(例如,$aws/things/MyRPi/shadow/get

    • 已接受获取此事物影子(例如,$aws/things/MyRPi/shadow/get/accepted

    
              名为 MyRPi 的事物的交互页面,突出显示了多个 MQTT 主题。
  4. 选择“返回”按钮。

  5. 如果显示了 AWS IoT 设备管理简介对话框,请选择以后显示或者按 Esc

  6. 在服务导航窗格中,选择测试

    
              AWS IoT 导航窗格,其中突出显示了测试。
  7. 对于订阅主题,输入您在此过程的第 3 步中,为更新到此事物影子记录的 MQTT 主题值(例如,$aws/things/MyRPi/shadow/update),然后选择订阅主题

    
              显示 MQTT 客户端详细信息的测试页面,突出显示了 $aws/things/MyRPi/shadow/update 和订阅主题。

    重要

    如果您将事物命名为 MyRPi 之外的名称,请确保在第 3 步中前述 MQTT 主题名称和其他 MQTT 主题名称中,使用您的事物名称替换 MyRPi。否则,订阅的 MQTT 主题不会显示任何活动。

  8. 选择订阅主题

    
              显示 MQTT 客户端详细信息的测试页面,突出显示了订阅主题。
  9. 对于您为获取此事物影子(例如,$aws/things/MyRPi/shadow/get)和已接受获取此事物影子(例如,$aws/things/MyRPi/shadow/get/accepted)记录的 MQTT 主题值,重复此过程中的第 7 步和第 8 步。

  10. 现在,推送一些测试数据到影子。要执行此操作,在 MQTT 客户端导航窗格中,选择更新到此事物影子(例如,$aws/things/MyRPi/shadow/update)的 MQTT 主题值。您可能需要将鼠标悬停在截断的主题值上查看其完整值。

  11. 在消息负载区域中,使用以下负载替换当前负载:

    { "state": { "desired": { "welcome": null }, "reported": { "welcome": null, "moisture": "low" } } }

    前面的负载删除影子的默认欢迎值,并将值为 low 的含水量值添加到影子。

  12. 选择 Publish to topic

    
              显示 MQTT 客户端详细信息的测试页面,突出显示了订阅主题。
  13. 要从影子获取该数据,请选择获取此事物影子的 MQTT 主题值(例如,$aws/things/MyRPi/shadow/get)。

  14. 在消息负载区域中,使用以下负载替换当前负载:

    {}

    此处您可以指定空的大括号,因为获取此事物影子 MQTT 主题仅获取空负载。

  15. 选择 Publish to topic

    
              显示 MQTT 客户端详细信息的 $aws/things/MyRPi/shadow/get 的测试页面,其中突出显示订阅主题。

    已接受获取此事物影子 的 MQTT 值旁边显示了一个绿点。这意味着为该 MQTT 主题显示了新信息。

    
              显示 MQTT 客户端的测试页面,$aws/things/MyRPi/shadow/get/accepted 旁边显示有绿点,用于指示此 MQTT 主题有新信息。
  16. 已接受获取此事物影子选择 MQTT 主题值(例如,$aws/things/MyRPi/shadow/get/accepted),然后记录输出,例如:

    { "state": { "reported": { "moisture": "low" } }, "metadata": { "reported": { "moisture": { "timestamp": 1539272338 } } }, "version": 19, "timestamp": 1539272436 }

    在前面的输出中,显示了较早报告的 moisture 值,以及每个相应事件发生的时间和当前影子文档版本。

  17. 对影子再进行一次更新。要执行此操作,在 MQTT 客户端导航窗格中,选择更新到此事物影子(例如,$aws/things/MyRPi/shadow/update)的 MQTT 主题值。

  18. 在消息负载区域中,使用以下负载替换当前负载以更改当前含水量值:

    { "state": { "reported": { "moisture": "okay" } } }
  19. 选择 Publish to topic

  20. 获取此事物影子选择 MQTT 主题值(例如,$aws/things/MyRPi/shadow/get)。

  21. 在消息负载区域中,使用以下负载替换当前负载:

    {}
  22. 选择 Publish to topic已接受获取此事物影子 的 MQTT 值旁边显示了一个绿点。

  23. 已接受获取此事物影子选择 MQTT 主题值(例如,$aws/things/MyRPi/shadow/get/accepted),然后记录输出,例如:

    { "state": { "reported": { "moisture": "okay" } }, "metadata": { "reported": { "moisture": { "timestamp": 1539272823 } } }, "version": 20, "timestamp": 1539272827 }

    在前面的输出中,显示了刚刚更改的 moisture 值,以及每个相应事件发生的时间和新的当前影子文档版本。