View a markdown version of this page

使用 MQTT 用戶端檢視 AWS IoT MQTT 訊息 - AWS IoT Core

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

使用 MQTT 用戶端檢視 AWS IoT MQTT 訊息

本節說明如何使用AWS IoT 主控台中的 AWS IoT MQTT 測試用戶端來監看由 傳送和接收的 MQTT 訊息 AWS IoT。本節中使用的範例與 AWS IoT Core 教學課程入門 中使用的範例相關;不過,您可以將範例中使用的 topicName 取代為 IoT 解決方案所使用的任何主題名稱或主題篩選條件。

裝置會發佈主題識別的 MQTT 訊息,以向其傳達其狀態 AWS IoT,並 AWS IoT 發佈 MQTT 訊息,以通知裝置和應用程式變更和事件。您可以使用 MQTT 用戶端來訂閱這些主題,並在發生訊息時觀看它們。您也可以使用 MQTT 測試用戶端,將 MQTT 訊息發佈至 中的訂閱裝置和服務 AWS 帳戶。

在 MQTT 用戶端中檢視 MQTT 訊息

下列程序說明如何訂閱裝置發佈訊息的特定 MQTT 主題,並在 AWS IoT 主控台中檢視這些訊息。

在 MQTT 測試用戶端中檢視 MQTT 訊息
  1. 在 AWS IoT 主控台中的左側選單中,依序選擇 Test (測試) 和 MQTT test client (MQTT 測試用戶端)。

    從左側導覽的主控台功能表中選擇 MQTT 測試用戶端。
  2. 在 Subscribe to a topic (訂閱主題) 索引標籤中,輸入 topicName 來訂閱裝置發佈的主題。如需入門範例應用程式,請訂閱 #,其會訂閱所有訊息主題。

    繼續入門範例,在 Subscribe to a topic (訂閱主題) 標籤的 Topic filter (主題篩選條件) 欄位中,輸入 #,然後選擇 Subscribe (訂閱)。

    訂閱主題索引標籤。

    主題訊息日誌頁面 # 即會開啟,而且 # 會出現在 Subscriptions (訂閱) 清單中。如果您在 中設定的裝置設定您的裝置正在執行範例程式,您應該會在 # 訊息日誌 AWS IoT 中看到傳送至 的訊息。收到具有訂閱主題的訊息時,訊息日誌項目會出現在發佈區段下方 AWS IoT。

    顯示主題的 區段已成功訂閱。
  3. 在 # 訊息日誌頁面上,您也可以將訊息發佈至主題,但您必須指定主題名稱。您無法發佈至 # 主題。

    發佈至已訂閱主題的訊息會在收到時出現在訊息日誌中,最近的訊息首先出現。

疑難排解 MQTT 訊息

使用萬用字元主題篩選條件

如果您的訊息未如預期般顯示在訊息日誌中,請嘗試訂閱萬用字元主題篩選條件,如 主題名稱篩選條件 中所述。MQTT 多層萬用字元主題篩選條件是雜湊或井號 (#),並且可以用作 Subscription topic (訂閱主題) 欄位中的主題篩選條件。

訂閱 # 主題篩選條件會訂閱訊息代理程式接收的每個主題。您可以縮小篩選範圍,方法是將主題篩選條件路徑的元素取代為 # 多層萬用字元或 '+' 單層萬用字元。

在主題篩選條件中使用萬用字元時
  • 多層萬用字元必須是主題篩選條件中的最後一個字元。

  • 主題篩選條件路徑的每個主題層只能有一個單層萬用字元。

例如:

主題篩選條件

顯示訊息與

#

任何主題名稱

topic_1/#

開頭為 topic_1/ 的主題名稱

topic_1/level_2/#

開頭為 topic_1/level_2/ 的主題名稱

topic_1/+/level_3

開頭為 topic_1/、結尾為 /level_3,並且在兩者之間有任何值之一個元素的主題名稱。

如需主題篩選條件的詳細資訊,請參閱 主題名稱篩選條件。

檢查主題名稱錯誤

MQTT 主題和主題篩選條件會區分大小寫。例如,如果您的裝置正在將訊息發佈至 Topic_1 (具有大寫 T) 而不是 topic_1 (您已訂閱的主題),其訊息將不會出現在 MQTT 測試用戶端中。不過,訂閱萬用字元主題篩選條件會顯示裝置正在發佈訊息,而且您可以看到它使用的主題名稱不是您預期的。

從 MQTT 用戶端發佈 MQTT 訊息

將訊息發佈至 MQTT 主題
  1. 在 MQTT 測試用戶端頁面的 Publish to a topic (發佈到主題) 標籤中,於 Topic name (主題名稱) 欄位中輸入您訊息的 topicName。在此範例中,使用 my/topic。

    注意

    無論是在 MQTT 測試用戶端還是在系統實作中使用主題名稱,請不要在這些主題名稱中使用個人識別資訊。主題名稱可以出現在未加密的通訊和報告中。

  2. 在訊息承載視窗中,輸入下列 JSON:

    { "message": "Hello, world", "clientType": "MQTT test client" }
  3. 選擇 Publish (發佈) 以將您的訊息發佈至 AWS IoT。

    注意

    確定您已訂閱 my/topic 主題,然後再發佈您的訊息。

    發佈至主題索引標籤。
  4. 在 Subscriptions (訂閱) 清單中,選擇 my/topic 來查看訊息。您應該會在發佈訊息承載視窗下方看到訊息出現在 MQTT 測試用戶端中。

    已收到顯示已發佈主題的畫面。

您可以變更 Topic name (主題名稱) 欄位中的 topicName,然後選擇 Publish (發佈) 按鈕,以將 MQTT 郵件發佈至其他主題。

重要

當您利用重疊主題建立多個訂閱時 (例如 probe1/temperature 和 probe1/#),同時發布到與兩個訂閱相符的主題的單一訊息,有可能會多次交付,每個重疊訂閱交付一次。

在 MQTT 用戶端中測試共享訂閱

本節說明如何使用AWS IoT 主控台中的 AWS IoT MQTT 用戶端來觀看 AWS IoT 使用共用訂閱傳送和接收的 MQTT 訊息。 共用訂閱 允許多個用戶端共用訂閱主題,只有一個用戶端使用隨機分佈接收發佈至該主題的訊息。若要模擬共用相同訂閱的多個 MQTT 用戶端 (在此範例中為兩個 MQTT 用戶端),您可以從多個 Web 瀏覽器在AWS IoT 主控台中開啟 AWS IoT MQTT 用戶端。本節中使用的範例與 AWS IoT Core 教學課程入門 中使用的範例無關。如需詳細資訊,請參閱共享訂閱。

共享 MQTT 主題的訂閱
  1. 在 AWS IoT 主控台的導覽窗格中,選擇測試,然後選擇 MQTT 測試用戶端。

  2. 在 Subscribe to a topic (訂閱主題) 索引標籤中,輸入 topicName 來訂閱裝置發佈的主題。若要使用共享訂閱,請訂閱共享訂閱的主題篩選條件,如下所示:

    $share/{ShareName}/{TopicFilter}

    範例主題篩選條件可以是 $share/group1/topic1,其會訂閱訊息主題 topic1。

    標籤顯示如何指定共用訂閱的主題篩選條件。
  3. 開啟另一個 Web 瀏覽器,然後重複步驟 1 和步驟 2。透過此方式,您模擬兩個共享相同訂閱 $share/group1/topic1 的不同 MQTT 客戶端。

  4. 選擇 MQTT 用戶端,在發佈到主題標籤的主題名稱欄位中輸入您訊息的 topicName。在此範例中,使用 topic1。請嘗試發佈訊息幾次。從這兩個 MQTT 用戶端的訂閱清單中,您應該能夠看到用戶端使用隨機分佈接收訊息。在這個範例中,我們發佈相同的訊息 "Hello from AWS IoT console" 三次。左側的 MQTT 用戶端收到兩次訊息,右側的 MQTT 用戶端收到一次訊息。

    共用訂閱會與兩個用戶端進行流程,以共用主題的訂閱,只有一個用戶端會使用隨機分佈接收發佈至該主題的訊息。