本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
示範使用 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訊息
-
執行此程序時,請確定本機主機電腦上連線至 Raspberry Pi 的終端機視窗和具有MQTT測試用戶端的視窗都可見。
-
在終端機視窗中,輸入這些命令,以使用在 中建立的組態檔案執行 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測試用戶端 。
-
在MQTT測試用戶端 的訂閱視窗中,請參閱傳送至訊息主題的 Hello World!
test/dc/pubtopic
訊息。 -
如果 AWS IoT Device Client 沒有顯示錯誤,而且您看到 Hello World! 傳送至MQTT測試用戶端 中的
test/dc/pubtopic
訊息,表示您已成功連線。 -
在終端機視窗中,輸入
^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 要發佈的裝置用戶端建立自訂訊息
-
在終端機視窗中,開啟文字編輯器,例如
nano
。 -
在文字編輯器中,複製並貼上下列JSON文件。這將是 AWS IoT Device Client 發佈MQTT的訊息承載。
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
將文字編輯器的內容儲存為
~/messages/sample-ws-message.json
。 -
輸入下列命令,為剛建立的訊息檔案設定許可。
chmod 600 ~/messages/*
為 AWS IoT Device Client 建立組態檔案,以用於傳送自訂訊息
-
在終端機視窗中,在文字編輯器中
nano
開啟現有的 AWS IoT Device Client 組態檔案:~/dc-configs/dc-pubsub-config.json
。 -
按如下所示編輯
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" -
將文字編輯器的內容儲存為
~/dc-configs/dc-pubsub-custom-config.json
。 -
執行此命令來設定新組態檔的許可。
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 傳送訊息
-
執行此程序時,請確定可同時看見終端機視窗和具有MQTT測試用戶端的視窗。此外,請確定您的MQTT測試用戶端仍訂閱 # 個主題篩選條件。如果未訂閱,請訂閱 # 主題篩選條件。
-
在終端機視窗中輸入這些命令,使用在 建立組態檔 中建立的組態檔來執行 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測試用戶端。
-
在MQTT測試用戶端 的訂閱視窗中,請參閱傳送至訊息主題的自訂
test/dc/pubtopic
訊息承載。 -
如果 AWS IoT Device Client 沒有顯示錯誤,而且您在MQTT測試用戶端 中看到發佈至
test/dc/pubtopic
訊息的自訂訊息承載,表示您已成功發佈自訂訊息。 -
在終端機視窗中,輸入
^C
(Ctrl-C) 以停止 AWS IoT Device Client。
展示 AWS IoT Device Client 發佈自訂訊息承載後,您可以繼續 示範使用 AWS IoT Device Client 訂閱訊息。