本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
演示使用 Amazon IoT 设备客户端发布消息
本节中的过程演示 Amazon IoT 设备客户端如何发送默认和自定义 MQTT 消息。
在上一步中为这些练习创建的策略中的以下策略声明授予 Raspberry Pi 执行以下操作的权限:
-
iot:Connect
让名
PubSubTestThing
为的客户端(运行 Amazon IoT 设备客户端的 Raspberry Pi)进行连接。{ "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing" ] }
-
iot:Publish
授予 Raspberry Pi 用
test/dc/pubtopic
MQTT 主题发布消息的全效。{ "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic" ] }
iot:Publish
操作提供发布到资源数组中列出的 MQTT 主题权限。那些消息的内容不受策略声明的控制。
使用 Amazon IoT Device Client发布原定设置消息
此过程运行 Amazon IoT 设备客户端,以便它发布一条默认 MQTT 消息,MQT T 测试客户端会收到并显示该消息。
从 Amazon IoT 设备客户端发送默认 MQTT 消息
-
执行此过程时,请确保连接到 Raspberry Pi 的本地主机上的终端窗口和使用 MQTT测试客户端的窗口都可见。
-
在终端窗口中,输入这些命令以使用中创建的配置文件运行 Amazon IoT 设备客户端创建配置文件。
cd ~/aws-iot-device-client/build ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-config.json
在终端窗口中, Amazon IoT 设备客户端显示信息消息以及运行时出现的任何错误。
如果终端窗口中没有显示错误,请查看 MQTT 测试客户端。
-
在 MQTT test client(MQTT 测试客户端)的 Subscriptions(订阅)窗口中,参阅发送到
test/dc/pubtopic
消息主题的 Hello World! 消息。 -
如果 Amazon IoT 设备客户端没有显示任何错误并且你看到 Hello World! 发送到 MQTT 测试客户端中的
test/dc/pubtopic
消息时,您已演示连接成功。 -
在终端窗口中,输入
^C
(Ctrl-C) 以停止 Amazon IoT 设备客户端。
在您证明 Amazon IoT 设备客户端发布了默认 MQTT 消息之后,您可以继续。使用 Amazon IoT Device Client 发布自定义消息
使用 Amazon IoT Device Client 发布自定义消息
本节中的过程创建一条自定义 MQTT 消息,然后运行 Amazon IoT Device Client,以便将自定义 MQTT 消息发布一次,以便 MQTT 测试客户端接收和显示。
为 Amazon IoT 设备客户端创建自定义 MQTT 消息
在连接到 Raspberry Pi 的本地主机上的终端窗口中执行以下步骤。
创建自定义消息供 Amazon IoT 设备客户端发布
-
在终端窗口中,打开文本编辑器,例如
nano
。 -
在文本编辑器中,复制并粘贴以下 JSON 文档。这将是 Amazon IoT 设备客户端发布的 MQTT 消息负载。
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
将文本编辑器的内容另存为
~/messages/sample-ws-message.json
。 -
输入以下命令设置刚才创建的消息文件的权限。
chmod 600 ~/messages/*
为 Amazon IoT 设备客户端创建用于发送自定义消息的配置文件
-
在终端窗口中,在文本编辑器(例如)中
nano
,打开现有的 Amazon 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
使用 Amazon IoT 设备客户端发布自定义 MQTT 消息
此更改仅影响 MQTT 消息负载的内容,因此当前策略将继续工作。但是,如果MQTT 主题(由 ~/dc-configs/dc-pubsub-custom-config.json
红的 publish-topic
值定义) 已更改,还需要修改策略语句 iot::Publish
,允许 Raspberry Pi 发布到新的 MQTT 主题。
从 Amazon IoT 设备客户端发送 MQTT 消息
-
在执行此过程时,确保终端窗口和窗口都有 MQTT 测试客户端可见。此外,请确保 MQTT 测试客户端仍订阅为#主题筛选条件。如果没有订阅,请再次订阅#筛选条件主题。
-
在终端窗口中,输入这些命令以使用在 Amazon IoT 中创建的配置文件运行 创建配置文件Device Client。
cd ~/aws-iot-device-client/build ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-custom-config.json
在终端窗口中, Amazon IoT 设备客户端显示信息消息以及运行时出现的任何错误。
如果终端窗口中没有显示错误,请查看 MQTT 测试客户端。
-
在 MQTT 测试客户端中,在订阅窗口中,请参阅发送到
test/dc/pubtopic
消息主题的自定义消息负载。 -
如果 Amazon IoT 设备客户端未显示任何错误,并且您看到在 MQTT 测试客户端中发布到
test/dc/pubtopic
消息的自定义消息负载,则表示您已成功发布自定义消息。 -
在终端窗口中,输入
^C
(Ctrl-C) 以停止 Amazon IoT 设备客户端。
在您证明 Amazon IoT 设备客户端发布了自定义消息负载之后,您可以继续演示使用 Amazon IoT 设备客户端订阅消息。