View a markdown version of this page

演示使用发布消息 AWS IoT Device Client - AWS IoT Core

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

演示使用发布消息 AWS IoT Device Client

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

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

  • iot:Connect

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

    { "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 Device Client

此过程运行 AWS IoT 设备客户端,以便它发布一条默认 MQTT 消息,由 MQTT 测试客户端接收和显示。

从发送默认 MQTT 消息 AWS IoT Device Client
  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 Device Client

使用发布自定义消息 AWS IoT Device Client

本节中的步骤创建一条自定义 MQTT 消息,然后运行 AWS IoT Device Client,以便将自定义 MQTT 消息发布一次,以便 MQTT 测试客户端接收和显示。

为创建自定义 MQTT 消息 AWS IoT Device Client

在连接到 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

使用发布自定义 MQTT 消息 AWS IoT Device Client

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

从发送 MQTT 消息 AWS IoT Device Client
  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 Device Client。