演示使用 AWS IoT 设备客户端发布消息 - AWS IoT Core

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

演示使用 AWS IoT 设备客户端发布消息

本节中的过程演示 AWS IoT 设备客户端如何发送默认消息和自定义MQTT消息。

在上一步中为这些练习创建的策略中的以下策略声明授予 Raspberry Pi 执行以下操作的权限:

  • iot:Connect

    让名PubSubTestThing为的客户端(运行 AWS IoT 设备客户端的 Raspberry Pi)进行连接。

    { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing" ] }
  • iot:Publish

    授予 Raspberry Pi 发布MQTT主题为的消息的权限test/dc/pubtopic

    { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic" ] }

    iot:Publish操作授予发布资源数组中列出的MQTT主题的权限。那些消息的内容不受策略声明的控制。

使用 AWS IoT Device Client发布原定设置消息

此过程运行 AWS IoT 设备客户端,使其发布一条默认MQTT消息,供MQTT测试客户端接收并显示。

从 AWS IoT 设备客户端发送默认MQTT消息
  1. 执行此过程时,请确保连接到 Raspberry Pi 的本地主机上的终端窗口和带有MQTT测试客户端的窗口都可见。

  2. 在终端窗口中,输入这些命令以使用中创建的配置文件运行 AWS IoT 设备客户端创建配置文件

    cd ~/aws-iot-device-client/build ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-config.json

    在终端窗口中, AWS IoT 设备客户端显示信息消息以及运行时出现的任何错误。

    如果终端窗口中未显示任何错误,请查看MQTT测试客户端

  3. MQTT测试客户端的 “订阅” 窗口中,查看 Hello World! 消息已发送到test/dc/pubtopic消息主题。

  4. 如果 AWS IoT 设备客户端没有显示任何错误并且你看到 Hello World! 发送到MQTT测试客户端中的test/dc/pubtopic消息时,您已证明连接成功。

  5. 在终端窗口中,输入 ^C (Ctrl-C) 以停止 AWS IoT 设备客户端。

在您证明 AWS IoT 设备客户端发布了默认MQTT消息之后,您可以继续使用 AWS IoT 设备客户端发布自定义消息

使用 AWS IoT 设备客户端发布自定义消息

本节中的过程创建自定义MQTT消息,然后运行 AWS IoT 设备客户端,以便它发布一次自定义MQTT消息供MQTT测试客户端接收和显示。

为 AWS IoT 设备客户端创建自定义MQTT消息

在连接到 Raspberry Pi 的本地主机上的终端窗口中执行以下步骤。

创建自定义消息供 AWS IoT 设备客户端发布
  1. 在终端窗口中,打开文本编辑器,例如nano

  2. 在文本编辑器中,复制并粘贴以下JSON文档。这将是 AWS IoT 设备客户端发布的MQTT消息负载。

    { "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
  3. 将文本编辑器的内容另存为 ~/messages/sample-ws-message.json

  4. 输入以下命令设置刚才创建的消息文件的权限。

    chmod 600 ~/messages/*
为 AWS IoT 设备客户端创建用于发送自定义消息的配置文件
  1. 在终端窗口中,在文本编辑器(例如)中nano,打开现有的 AWS IoT 设备客户端配置文件:~/dc-configs/dc-pubsub-config.json

  2. 编辑 samples对象如下所示。此文件的其他部分不需要更改。

    "samples": { "pub-sub": { "enabled": true, "publish-topic": "test/dc/pubtopic", "publish-file": "~/messages/sample-ws-message.json", "subscribe-topic": "test/dc/subtopic", "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
  3. 将文本编辑器的内容另存为 ~/dc-configs/dc-pubsub-custom-config.json

  4. 运行这个命令在新文件上设置权限

    chmod 644 ~/dc-configs/dc-pubsub-custom-config.json

使用 AWS IoT 设备客户端发布自定义MQTT消息

此更改仅影响MQTT消息负载的内容,因此当前的策略将继续有效。但是,如果MQTT主题(由中的publish-topic值定义~/dc-configs/dc-pubsub-custom-config.json)发生更改,则还需要修改iot::Publish政策声明以允许 Raspberry Pi 发布到新MQTT主题。

从 AWS IoT 设备客户端发送MQTT消息
  1. 执行此过程时,请确保终端窗口和带有MQTT测试客户端的窗口都可见。此外,请确保您的MQTT测试客户端仍订阅了 # 主题筛选器。如果没有订阅,请再次订阅#筛选条件主题。

  2. 在终端窗口中,输入这些命令以使用在 AWS IoT 中创建的配置文件运行 创建配置文件Device Client。

    cd ~/aws-iot-device-client/build ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-custom-config.json

    在终端窗口中, AWS IoT 设备客户端显示信息消息以及运行时出现的任何错误。

    如果终端窗口中未显示任何错误,请查看MQTT测试客户端。

  3. MQTT测试客户端的 “订阅” 窗口中,查看发送到消息主题的自定义test/dc/pubtopic消息负载。

  4. 如果 AWS IoT 设备客户端未显示任何错误,并且您在MQTT测试客户端中看到已发布到test/dc/pubtopic消息的自定义消息负载,则表示您已成功发布自定义消息。

  5. 在终端窗口中,输入 ^C (Ctrl-C) 以停止 AWS IoT 设备客户端。

在您证明 AWS IoT 设备客户端发布了自定义消息负载之后,您可以继续演示使用 AWS IoT 设备客户端订阅消息