示範使用 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 Device Client,以便發佈 MQTT 測試用戶端接收和顯示的單一預設 MQTT 訊息。

從 AWS IoT 裝置用戶端傳送預設 MQTT 訊息
  1. 請確保這兩個連接到 Raspberry Pi 的本機主機電腦終端機視窗和有 MQTT test client (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 test client (MQTT 測試用戶端)。

  3. MQTT test client (MQTT 測試用戶端) 的 Subscriptions (訂閱) 視窗中,請參閱傳送至 test/dc/pubtopic 訊息主題的 Hello World! 訊息。

  4. 如果 AWS IoT 裝置用戶端未顯示錯誤,而且您在 MQTT 測試用戶端中看到 Hello World! 傳送至test/dc/pubtopic訊息,表示連線成功。

  5. 在終端機視窗中,輸入 ^C(Ctrl-C) 以停止 AWS IoT 裝置用戶端。

在您示範 AWS IoT Device Client 已發佈預設 MQTT 訊息之後,您可以繼續前往 使用 AWS IoT 裝置用戶端發佈自訂訊息

使用 AWS IoT 裝置用戶端發佈自訂訊息

本節中的程序會建立自訂 MQTT 訊息,然後執行 AWS IoT 裝置用戶端,以便它發佈一次自訂 MQTT 訊息,供 MQTT test client (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 Device 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

使用 AWS IoT 裝置用戶端發佈自訂 MQTT 訊息

此項變更只會影響 MQTT 訊息承載的內容,因此目前的政策會繼續運作。不過,如果 MQTT 主題 (如 ~/dc-configs/dc-pubsub-custom-config.json 中定義的 publish-topic 值) 已變更,iot::Publish 政策陳述式也需要進行修改,以允許 Raspberry Pi 發佈至新的 MQTT 主題。

從 AWS IoT 裝置用戶端傳送 MQTT 訊息
  1. 請確保這兩個終端機視窗和有 MQTT test client (MQTT 測試用戶端) 的視窗,會在您執行此程序時顯示出來。此外,請確保 MQTT test client (MQTT 測試用戶端) 仍然訂閱了 # 主題篩選條件。如果未訂閱,請訂閱 # 主題篩選條件。

  2. 在終端機視窗中輸入這些命令,使用在 建立組態檔 中建立的組態檔來執行 AWS IoT 裝置用戶端。

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

    在終端機視窗中, AWS IoT 裝置用戶端會顯示資訊訊息,以及執行時發生的任何錯誤。

    如果終端機視窗中未顯示任何錯誤,請檢閱 MQTT test client (MQTT 測試用戶端)。

  3. MQTT test client (MQTT 測試用戶端) 的 Subscriptions (訂閱) 視窗中,參閱傳送至 test/dc/pubtopic 訊息主題的自訂訊息承載。

  4. 如果 AWS IoT Device Client 沒有顯示錯誤,而且您在 MQTT 測試用戶端中看到發佈至test/dc/pubtopic訊息的自訂訊息承載,表示您已成功發佈自訂訊息。

  5. 在終端機視窗中,輸入 ^C(Ctrl-C) 以停止 AWS IoT 裝置用戶端。

在您證明 AWS IoT Device Client 已發佈自訂訊息承載之後,您可以繼續 示範使用 AWS IoT 裝置用戶端訂閱訊息