本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
演示使用 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 用
test/dc/pubtopicMQTT 主题发布消息的全效。{ "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic" ] }iot:Publish操作提供发布到资源数组中列出的 MQTT 主题权限。那些消息的内容不受策略声明的控制。
使用 AWS IoT 设备客户端发布默认消息
此过程运行 AWS IoT 设备客户端,以便它发布一条默认 MQTT 消息,MQT T 测试客户端会收到并显示该消息。
从 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 测试客户端的订阅窗口中,查看发送到
test/dc/pubtopic消息主题的 Hello World! 消息。 -
如果 AWS IoT 设备客户端没有显示任何错误并且你看到 Hello World! 发送到 MQTT 测试客户端中的
test/dc/pubtopic消息时,您已演示连接成功。 -
在终端窗口中,输入
^C(Ctrl-C) 以停止 AWS IoT 设备客户端。
在您证明 AWS IoT 设备客户端发布了默认 MQTT 消息之后,您可以继续。使用 AWS IoT 设备客户端发布自定义消息
使用 AWS IoT 设备客户端发布自定义消息
本节中的步骤创建一条自定义 MQTT 消息,然后运行 AWS IoT Device Client,以便将自定义 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 主题(由 ~/dc-configs/dc-pubsub-custom-config.json 红的 publish-topic 值定义) 已更改,还需要修改策略语句 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 设备客户端订阅消息。