演示使用 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 用 test/dc/pubtopic MQTT 主题发布消息的全效。

    { "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 消息
  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 测试客户端订阅窗口中,查看发送到 test/dc/pubtopic 消息主题的 Hello World! 消息。

  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 Device Client,以便将自定义 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 主题(由 ~/dc-configs/dc-pubsub-custom-config.json 红的 publish-topic 值定义) 已更改,还需要修改策略语句 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 设备客户端订阅消息