步骤 2:演示使用 Amazon IoT Device Client 发布消息 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

步骤 2:演示使用 Amazon IoT Device Client 发布消息

本节中的过程演示了 Amazon IoTDevice Client 如何发送原定设置和自定义 MQTT 消息。

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

  • iot:Connect

    为客户提供 PubSubTestThing命名,您的 Raspberry Pi 运行 Amazon IoTDevice Client 连接。

    { "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 主题权限。那些消息的内容不受策略声明的控制。

使用 Amazon IoT Device Client发布原定设置消息

此过程运行Amazon IoT Device Client,这样发布一条原定设置 MQTT 消息接收和显示 MQTT 测试客户端

要从 Amazon IoTDevice Client 发送原定设置 MQTT 消息

  1. 执行此过程时,请确保连接到 Raspberry Pi 的本地主机上的终端窗口和使用 MQTT测试客户端的窗口都可见。

  2. 在终端窗口中,输入这些命令以使用在 Amazon IoT中创建的配置文件运行 创建配置文件Device Client。

    cd ~/aws-iot-device-client/build ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-config.json

    在终端窗口中,Amazon IoT Device Client 显示信息消息以及运行时发生的任何错误。

    如果终端窗口中未显示错误,请查看MQTT 测试客户端.

  3. MQTT test client(MQTT 测试客户端)的 Subscriptions(订阅)窗口中,参阅发送到 test/dc/pubtopic 消息主题的 Hello World! 消息。

  4. 如果Amazon IoT Device Client 没有显示错误,您会看到 Hello World!发送到MQTT 测试客户端中的 test/dc/pubtopic消息,您已经证明了成功的连接。

  5. 在终端窗口中,输入 ^C(Ctrl-C) 可停止 Amazon IoTDevice Client。

在您证明了 Amazon IoTDevice Client 发布了原定设置的 MQTT 消息后,您可以继续 使用 Amazon IoTDevice Client 发布指标消息

使用 Amazon IoTDevice Client 发布指标消息

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

为Amazon IoT Device Client 创建自定义 MMQTT 消息

在连接到 Raspberry Pi 的本地主机上的终端窗口中执行以下步骤。

为 Amazon IoTDevice Client 创建自定义消息

  1. 在终端窗口中,打开文本编辑器,例如nano

  2. 在文本编辑器中,复制并粘贴以下 JSON 文档。这是Amazon IoT Device Client 发布的 MQTT 消息负载。

    { "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
  3. 将文本编辑器的内容另存为 ~/messages/sample-ws-message.json

  4. 输入以下命令设置刚才创建的消息文件的权限。

    chmod 600 ~/messages/*

为 Amazon IoTDevice Client 创建用于发送自定义消息的配置文件

  1. 在终端窗口中,在文本编辑器中,例如 nano,打开现有 Amazon IoTDevice Client 配置文件:~/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

通过使用Amazon IoT Device Client 发布自定义 MQTT 消息

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

要从 Amazon IoTDevice Client 发送 MQTT 消息

  1. 在执行此过程时,确保终端窗口和窗口都有 MQTT 测试客户端可见。此外,请确保 MQTT 测试客户端仍订阅为#主题筛选条件。如果没有订阅,请再次订阅#筛选条件主题。

  2. 在终端窗口中,输入这些命令以使用在 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 Device Client 显示信息消息以及运行时发生的任何错误。

    如果终端窗口中没有显示错误,请查看 MQTT 测试客户端。

  3. MQTT 测试客户端中,在订阅窗口中,请参阅发送到 test/dc/pubtopic消息主题的自定义消息负载。

  4. 如果 Amazon IoTDevice Client 未显示任何错误,并且您在 MQTT测试客户端中看到发布到 test/dc/pubtopic消息的自定义消息负载,则表示您已成功发布自定义消息。

  5. 在终端窗口中,输入^C(Ctrl-C) 可停止Amazon IoT Device Client 。

在您演示了 Amazon IoTDevice Client 发布了自定义消息负载之后,您可以继续 步骤 3:演示使用 Amazon IoTDevice Client 订阅消息