本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
演示使用 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消息
-
执行此过程时,请确保连接到 Raspberry Pi 的本地主机上的终端窗口和带有MQTT测试客户端的窗口都可见。
-
在终端窗口中,输入这些命令以使用中创建的配置文件运行 AWS IoT 设备客户端创建配置文件。
cd ~/aws-iot-device-client/build ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-config.json
在终端窗口中, AWS IoT 设备客户端显示信息消息以及运行时出现的任何错误。
如果终端窗口中未显示任何错误,请查看MQTT测试客户端。
-
在MQTT测试客户端的 “订阅” 窗口中,查看 Hello World! 消息已发送到
test/dc/pubtopic
消息主题。 -
如果 AWS IoT 设备客户端没有显示任何错误并且你看到 Hello World! 发送到MQTT测试客户端中的
test/dc/pubtopic
消息时,您已证明连接成功。 -
在终端窗口中,输入
^C
(Ctrl-C) 以停止 AWS IoT 设备客户端。
在您证明 AWS IoT 设备客户端发布了默认MQTT消息之后,您可以继续使用 AWS IoT 设备客户端发布自定义消息。
使用 AWS IoT 设备客户端发布自定义消息
本节中的过程创建自定义MQTT消息,然后运行 AWS IoT 设备客户端,以便它发布一次自定义MQTT消息供MQTT测试客户端接收和显示。
为 AWS IoT 设备客户端创建自定义MQTT消息
在连接到 Raspberry Pi 的本地主机上的终端窗口中执行以下步骤。
创建自定义消息供 AWS IoT 设备客户端发布
-
在终端窗口中,打开文本编辑器,例如
nano
。 -
在文本编辑器中,复制并粘贴以下JSON文档。这将是 AWS IoT 设备客户端发布的MQTT消息负载。
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
将文本编辑器的内容另存为
~/messages/sample-ws-message.json
。 -
输入以下命令设置刚才创建的消息文件的权限。
chmod 600 ~/messages/*
为 AWS IoT 设备客户端创建用于发送自定义消息的配置文件
-
在终端窗口中,在文本编辑器(例如)中
nano
,打开现有的 AWS IoT 设备客户端配置文件:~/dc-configs/dc-pubsub-config.json
。 -
编辑
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" -
将文本编辑器的内容另存为
~/dc-configs/dc-pubsub-custom-config.json
。 -
运行这个命令在新文件上设置权限
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消息
-
执行此过程时,请确保终端窗口和带有MQTT测试客户端的窗口都可见。此外,请确保您的MQTT测试客户端仍订阅了 # 主题筛选器。如果没有订阅,请再次订阅#筛选条件主题。
-
在终端窗口中,输入这些命令以使用在 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测试客户端。
-
在MQTT测试客户端的 “订阅” 窗口中,查看发送到消息主题的自定义
test/dc/pubtopic
消息负载。 -
如果 AWS IoT 设备客户端未显示任何错误,并且您在MQTT测试客户端中看到已发布到
test/dc/pubtopic
消息的自定义消息负载,则表示您已成功发布自定义消息。 -
在终端窗口中,输入
^C
(Ctrl-C) 以停止 AWS IoT 设备客户端。
在您证明 AWS IoT 设备客户端发布了自定义消息负载之后,您可以继续演示使用 AWS IoT 设备客户端订阅消息。