Home >> Blog >> 什麼是 MQTT 及其工作原理

什麼是 MQTT 及其工作原理

本文是對 MQTT 協議的介紹。MQTT代表Message Quueuing Telemetry Transport ,一種適用於網際網路設備之間通信的簡單訊息傳遞協議。

什麼是 MQTT 及其工作原理

什麼是 MQTT?

MQTT代表 訊息隊列 遙測傳輸 。_ _ MQTT 是一種簡單的訊息傳遞協議,專為頻寬受限的設備而設計。因此,它是在多個網際網路設備之間交換數據的完美解決方案。

MQTT 通信作為 發布 和 訂閱 系統工作。設備 發布 關於特定主題的訊息。訂閱 該主題的所有設備都會 收到該訊息。

什麼是 MQTT 及其工作原理

它的主要應用包括發送訊息以控制輸出、從傳感器節點讀取和發布數據等等。

MQTT 基本概念

在 MQTT 中,您需要了解一些基本概念:

MQTT – 發布/訂閱

第一個概念是 發布和訂閱 系統。在發布和訂閱系統中,設備可以在某個主題上發布訊息,也可以訂閱特定主題以接收訊息

什麼是 MQTT 及其工作原理

MQTT – 訊息

訊息是您希望在設備之間交換的資訊。例如,它可以是命令之類的訊息,也可以是傳感器讀數之類的數據。

MQTT – 主題

另一個重要的概念是主題。主題是您註冊對傳入訊息感興趣的方式或您如何指定要在何處發布訊息。

主題用正斜杠分隔的字符串表示。每個正斜杠表示一個主題級別。下面是一個示例,說明如何在家庭辦公室中為一盞燈創建主題:

什麼是 MQTT 及其工作原理

注意:主題區分大小寫,這使得這兩個主題不同:

什麼是 MQTT 及其工作原理

如果您想使用 MQTT 在您的家庭辦公室中打開一盞燈開始你一天的SEO優化進度,您可以想像以下場景:

什麼是 MQTT 及其工作原理

  1. 設備在家庭/辦公室/燈 主題上發布“開”和“關”訊息 。
  2. 您有一個控制燈的設備(它可以是 ESP32、ESP8266 或任何其他板或設備)。控制您的燈的 ESP32 訂閱了相同的主題: home/office/lamp。
  3. 因此,當有關該主題的新訊息發佈時,ESP32 會接收“開”或“關”訊息並打開或關閉燈。

發布訊息的設備可以是 ESP32、ESP8266 或支持 MQTT 的家庭自動化控制器平台,例如 Node-RED、Home Assistant、Domoticz 或 OpenHAB。

什麼是 MQTT 及其工作原理

MQTT – 經紀人

最後,另一個重要的概念是經紀人。

MQTT 代理 負責 接收 所有訊息, 過濾 訊息, 決定 誰對它們感興趣,然後 將 訊息發布 給所有訂閱的客戶端。

什麼是 MQTT 及其工作原理

您可以使用幾個經紀人。在家庭自動化項目中,我們使用 安裝在 Raspberry Pi 上的Mosquitto Broker 。您還可以在您的 PC 上安裝 Mosquitto 代理(這不如使用 Raspberry Pi 板方便,因為您必須讓您的電腦一直運行以保持設備之間的 MQTT 連接)。

什麼是 MQTT 及其工作原理

將 Mosquitto 代理安裝在本地網絡上的 Raspberry Pi 上,您可以在也連接到同一網絡的 IoT 設備之間交換數據。

要在 Raspberry Pi 上安裝 Mosquitto 代理,請遵循我們的教學:

您還可以在雲中運行 Mosquitto MQTT 代理。在雲中運行 MQTT Mosquitto Broker 允許您使用不同的網絡從任何地方連接多個 IoT 設備,只要它們具有 Internet 連接。檢查下面的教學:

如何在家庭自動化和網際網路項目中使用 MQTT

MQTT 非常適合家庭自動化和網際網路項目。這是一個如何在使用Raspberry Pi、ESP32、ESP8266 和 Arduino 等低成本開發板構建的家庭自動化系統中使用它的示例。

什麼是 MQTT 及其工作原理

  • Raspberry Pi 運行 Mosquitto 代理,這對於 MQTT 協議至關重要。
  • 同樣的 Raspberry Pi 運行 Node-RED,這是一個支持 MQTT 的家庭自動化平台——這意味著它可以訂閱主題以接收來自其他網際網路設備的訊息,並在特定主題上發布訊息以向其他設備發送訊息。
  • Node-RED 還允許您構建一個用戶界面,其中包含用於控制輸出的按鈕和用於顯示傳感器讀數的圖表。
  • Arduino、ESP32 和 ESP8266 可以充當發布和訂閱主題的 MQTT 客戶端。
  • 這些板連接到 LED 或繼電器等執行器,以及溫度、濕度、煙霧傳感器等傳感器。
  • 這些Node-RED可以在特定主題上發布有關傳感器狀態的數據,Node-RED 也訂閱了該主題。這樣,Node-RED 接收傳感器讀數並可以在用戶界面上顯示它們。
  • 另一方面,當您使用界面上的按鈕時,Node-RED 可以發布有關特定主題的數據以控制輸出。其他板也訂閱了該主題並相應地控制輸出。

下圖顯示了一個 Node-RED UI 示例,它允許您控制一個輸出並顯示溫度和濕度讀數:

什麼是 MQTT 及其工作原理

以下是構建之前描述的東西時應該遵循的步驟的快速摘要:

  1. 設置您的Raspberry Pi。
  2. 啟用並使用 SSH 連接您的 Raspberry Pi。
  3. 您需要 在 Pi 和 Node-RED Dashboard上安裝 Node-RED 。
  4. 在 Raspberry Pi 上安裝Mosquitto 代理。
  5. 將 ESP8266 或 ESP32 添加到此系統。您可以按照以下 MQTT 教學進行操作:

包起來

MQTT 是一種基於發布和訂閱系統的通信協議。設備可以訂閱主題或發布有關主題的數據。設備接收在他們訂閱的主題上發布的訊息。

MQTT 使用簡單,非常適合網際網路和家庭自動化項目。您可以在此處查看我們所有與 MQTT 相關的教學。

我們希望您發現本教學很有用,並且您現在了解了什麼是 MQTT 以及它是如何工作的。

謝謝閱讀。如果你喜歡這篇文章,請訂閱我的FB來支持我們的工作。