示範使用 AWS IoT Device Client 發佈訊息 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

示範使用 AWS IoT Device Client 發佈訊息

本節中的程序示範 AWS IoT Device Client 如何傳送預設和自訂MQTT訊息。

在上一個步驟為這些練習建立的此政策中的政策陳述式,會授予 Raspberry Pi 執行這些動作的許可:

  • iot:Connect

    提供名為 的用戶端PubSubTestThing,也就是執行 AWS IoT Device Client 的 Raspberry Pi,以進行連線。

    { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing" ] }
  • iot:Publish

    授予 Raspberry Pi 許可,以發佈具有 MQTT主題的訊息test/dc/pubtopic

    { "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 Device Client 傳送預設MQTT訊息
  1. 執行此程序時,請確定本機主機電腦上連線至 Raspberry Pi 的終端機視窗和具有MQTT測試用戶端的視窗都可見。

  2. 在終端機視窗中,輸入這些命令,以使用在 中建立的組態檔案執行 AWS IoT Device Client建立組態檔

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

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

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

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

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

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

展示 AWS IoT Device Client 已發佈預設MQTT訊息後,您可以繼續前往 使用 AWS IoT Device Client 發佈自訂訊息

使用 AWS IoT Device Client 發佈自訂訊息

本節中的程序會建立自訂MQTT訊息,然後執行 AWS IoT Device Client,以便其發佈自訂MQTT訊息一次,讓MQTT測試用戶端接收和顯示。

為 AWS IoT 裝置用戶端建立自訂MQTT訊息

在連接至 Raspberry Pi 本機主機電腦上的終端機視窗中執行這些步驟。

為 AWS IoT 要發佈的裝置用戶端建立自訂訊息
  1. 在終端機視窗中,開啟文字編輯器,例如 nano

  2. 在文字編輯器中,複製並貼上下列JSON文件。這將是 AWS 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/*
為 AWS IoT Device Client 建立組態檔案,以用於傳送自訂訊息
  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 Device Client 發佈自訂MQTT訊息

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

從 AWS IoT Device Client MQTT 傳送訊息
  1. 執行此程序時,請確定可同時看見終端機視窗和具有MQTT測試用戶端的視窗。此外,請確定您的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 Device Client 會顯示資訊訊息,以及執行時發生的任何錯誤。

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

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

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

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

展示 AWS IoT Device Client 發佈自訂訊息承載後,您可以繼續 示範使用 AWS IoT Device Client 訂閱訊息