MQTT - 設置 MQTT 客戶端與 Broker 通信

材料準備

範例說明

介紹

MQTT (Message Queuing Telemetry Transport),它是為IBM和Eurotech共同製定出來的protocol,在MQTT的官網可以看到它對MQTT的介紹:
MQTT is a machine-to-machine (M2M)/”Internet of Things” connectivity protocol. It was designed as an extremely lightweight publish/subscribe messaging transport.
所以它是為了IOT而設計的protocol,它是基於TCP/IP的協定,並且透過publish/subscribe的方式做資料傳送與接收。
它的架構如下圖:

9-1
在MQTT的運行中,有以下幾個角色:

  • Publisher: 通常Publisher是配有感測器的設備(例如 Ameba)。 Publisher將感測器的數據上傳到MQTT-Broker,MQTT-Broker作為MQTT服務的資料庫。
  • Subscriber: Subscriber是指接收和分析消息的設備,例如筆電或手機。
  • Topic: 使用Topic來對消息進行分類,例如消息的Topic可以是“PM2.5”或“溫度”。 Subscriber可以選擇他們想要接收主題的消息。

在此有 3 個將 Ameba 連接到 MQTT-Broker 的範例。 然後作為Publisher發送消息並作為Subscriber接收來自 MQTT-Broker 的消息。

  • 1.MQTT_Basic
  • 2.MQTT_Auth
  • 3.MQTT_Publish_In_Callback

流程

MQTT_Basic 範例

打開 MQTT 範例 “File”->“Examples”->“AmebaMQTTClient”->“MQTT_Basic”
請修改一些WiFi相關的參數以及MQTT相關的一些資訊:

9-2

  • “ssid”是用於連接網路的SSID。
  • “pass”是用於連接網路的密碼。
  • “mqttServer”是指MQTT-Broker,有免費的MQTT “test.mosquitto.org”可用於測試。
  • “clientId”是 MQTT-Broker 識別連接設備的id。
  • “publishTopic”是已發布消息的主題,在範例中為“outTopic”。 訂閱“outTopic”的設備將會收到該消息。
  • “publishPayload”是要發布的內容。
  • “subscribeTopic”是告訴MQTT-broker要訂閱哪個主題。

接下來,編譯代碼並將其上傳到Ameba。 按重置按鈕,然後打開serial monitor。

9-3

Ameba 連接到 MQTT 服務器後,向“outTopic”發送消息“hello world”。 要查看消息,需要設置另一個 MQTT 客戶端。

“MQTT Explore”是一款適用於全部平台的應用程序,可設置為MQTT客戶端。 請參閱網站 http://mqtt-explorer.com/

單擊左上角的“Connections”開始新的設置連接。 “Name”可以自定義。 將“Host”設置為“test.mosquitto.org”。

9-5

單擊底部的“ADVANCED”進行主題設置。 使用與開發板上“publishTopic”相同的“outTopic”。 單擊“ADD”,然後單擊“BACK”。

9-6

單擊“CONNECT”。 “hello world”消息則顯示在左側。 在右側的“Publish”下,使用與開發板上“sucribeTopic”相同的“inTopic”。 選擇“raw”並輸入“Text hello Ameba”,然後單擊“PUBLISH”。 開發板將收到 MQTT Explorer 發布的原始消息。 請注意,由於該主機是免費的公用服務器,因此開發板可能會收到預期外的消息。

9-7

9-7

MQTT_Auth 範例

打開 MQTT 範例 “File”->“Examples”->“AmebaMQTTClient”->“MQTT_Auth”
請修改一些WiFi相關的參數以及MQTT相關的一些資訊:

9-7

  • “mqttServer”指MQTT-Broker,amebaiot主頁“cloud.amebaiot.com”提供免費的MQTT認證主機。 請參閱 https://www.amebaiot.com/en/cloud-getting-started/ 用於帳戶設置。
  • “clientId”是 MQTT-Broker 識別連接設備的標識符。 在本例中,它是註冊的設備名稱。 請參閱https://www.amebaiot.com/en/cloud-service/ .
  • “clientUser”是身份驗證用戶名。 在本範例中,它是 Realtek IoT/Wi-Fi MCU Solutions 網站的登錄用戶名。 注意,如果使用“clientUser”郵箱,將無法接收消息。
  • “clientPass”是認證密碼。 在本範例中,它是 Realtek IoT/Wi-Fi MCU Solutions 網站的登錄密碼。
  • 其他參數與之前相同。

接下來,編譯代碼並將其上傳到Ameba。 按重置按鈕,然後打開serial monitor。 Ameba 連接到 MQTT 服務器後,向“outTopic”發送消息“hello world”。 要查看消息,需要設置另一個 MQTT 客戶端。

啟動 MQTT Explore,並設置身份驗證連接。

單擊左上角的“Connections”開始新的連接。 “Name”可以自定義。 將“Host”設置為“cloud.amebaiot.com”。 “Username”和“Password”與“clientUser”和“clientPass”相同。

9-7

單擊底部的“ADVANCED”進行主題設置。 使用與開發板上“publishTopic”相同的“outTopic”。 單擊“ADD”,然後單擊“BACK”。

單擊“CONNECT”。 “hello world”消息則顯示在左側。 在右側的“Publish”下,使用與開發板上“sucribeTopic”相同的“inTopic”。 選擇“raw”並輸入“Text hello Ameba”,然後單擊“PUBLISH”。 開發板將收到 MQTT Explorer 發布的原始消息。 請注意,“hello world”有時不會顯示,因為開發板在 MQTT Explorer 之前連接到 MQTT Broker。

9-7

9-7

MQTT_Publish_In_Callback 範例

打開 MQTT 範例 “File”->“Examples”->“AmebaMQTTClient”->“MQTT_Publish_In_Callback”

請修改一些WiFi相關的參數以及MQTT相關的一些資訊:

• 所有參數與 MQTT_Auth 範例相同。

接下來,編譯代碼並將其上傳到Ameba。 按重置按鈕,然後打開serial monitor。 Ameba 連接到 MQTT 服務器後,向“outTopic”發送消息“hello world”。 要查看消息,需要設置另一個 MQTT 客戶端。

啟動 MQTT Explore,並設置身份驗證連接。 所有設置與 MQTT_Auth 範例相同。

單擊底部的“ADVANCED”進行主題設置。 使用與開發板上“publishTopic”相同的“outTopic”。 單擊“ADD”,然後單擊“BACK”。

單擊“CONNECT”。 “hello world”消息則顯示在左側。 在右側的“Publish”下,使用與開發板上“sucribeTopic”相同的“inTopic”。 選擇“raw”並輸入“Text hello Ameba”,然後單擊“PUBLISH”。 開發板將收到 MQTT Explorer 發布的原始消息。 請注意,“hello world”有時不會顯示,因為開發板在 MQTT Explorer 之前連接到 MQTT Broker。

9-7

9-7

請先確認已安裝QQ通訊軟體