演示使用 Amazon IoT 设备客户端发布消息 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

演示使用 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/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 设备客户端,以便它发布一条默认 MQTT 消息,MQT T 测试客户端会收到并显示该消息。

从 Amazon IoT 设备客户端发送默认 MQTT 消息
  1. 执行此过程时,请确保连接到 Raspberry Pi 的本地主机上的终端窗口和使用 MQTT测试客户端的窗口都可见。

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

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

    在终端窗口中, Amazon IoT 设备客户端显示信息消息以及运行时出现的任何错误。

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

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

  4. 如果 Amazon IoT 设备客户端没有显示任何错误并且你看到 Hello World! 发送到 MQTT 测试客户端中的test/dc/pubtopic消息时,您已演示连接成功。

  5. 在终端窗口中,输入 ^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 设备客户端发布
  1. 在终端窗口中,打开文本编辑器,例如nano

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

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

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

    chmod 600 ~/messages/*
为 Amazon IoT 设备客户端创建用于发送自定义消息的配置文件
  1. 在终端窗口中,在文本编辑器(例如)中nano,打开现有的 Amazon 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

使用 Amazon IoT 设备客户端发布自定义 MQTT 消息

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

从 Amazon IoT 设备客户端发送 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 设备客户端显示信息消息以及运行时出现的任何错误。

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

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

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

  5. 在终端窗口中,输入 ^C (Ctrl-C) 以停止 Amazon IoT 设备客户端。

在您证明 Amazon IoT 设备客户端发布了自定义消息负载之后,您可以继续演示使用 Amazon IoT 设备客户端订阅消息