利用MQTT和智慧網關實現高效安全的物聯網連接

  • MQTT 提供輕量級、可靠且安全的基於發布/訂閱的訊息傳遞,非常適合資源受限的物聯網設備和不穩定的網路。
  • MQTT 閘道充當本地感測器和雲端平台之間的橋樑,將各種協定轉換為 MQTT,並將資料整合到中央代理中。
  • 採用中央代理的架構有助於實現可擴展性、硬體和軟體之間的解耦,以及與分析、大數據和自動化服務的整合。
  • MQTT 在工業、低功耗廣域網路、物流、智慧家庭和汽車領域已被廣泛應用,證明了它在實際物聯網專案中的成熟度和多功能性。

物聯網 MQTT

當你談論 連接數百萬個物聯網設備 說到可靠、輕量級且安全的通信,人們總是會想到同一個名字:MQTT。該協定已成為感測器、工業網關、智慧家庭設備和雲端平台進行通訊的關鍵組件,既能有效避免網路過載,又能防止能耗飆升。

絕對不僅僅是“另一種協議”, MQTT 與物聯網的實際需求完美契合。網路不穩定、頻寬極低、硬體資源非常有限、要求嚴苛的工業環境,或像智慧工廠、能源遙測或高級智慧家庭等近即時應用,都需要用到 MQTT。讓我們冷靜而詳細地了解它的工作原理、它在物聯網連接中扮演的角色、MQTT 網關是什麼,以及在哪些特定情況下,與其他方案相比,使用它更合適。

什麼是MQTT?為什麼它在物聯網領域如此受歡迎?

MQTT(訊息隊列遙測傳輸)是一種 輕量級、開放的標準訊息傳遞協議 它專為機器對機器 (M2M) 通訊而設計,並由此延伸至物聯網。其目標非常明確:即使網路狀況不佳、頻寬有限且裝置記憶體或運算能力很低,也能在裝置之間發送和接收資料。

與傳統的客戶端伺服器模型不同,MQTT 使用了一種 發布/訂閱架構 它是基於一個名為「代理」的中央中介。設備之間不直接通信,而是將訊息發佈到特定主題並訂閱感興趣的主題。代理負責接收所有這些訊息,對其進行過濾,並將其傳遞給相應的客戶端。

這種工作方式使得 MQTT 成為可能 極其靈活且可擴展不再需要數百或數千個難以管理的點對點連接,所有操作都透過代理進行協調,代理可以處理從幾個設備到數百萬個設備,具體取決於實現方式和可用資源。

MQTT在物聯網中的關鍵技術特性

輕量高效的協議

MQTT在物聯網領域如此受歡迎的主要原因之一是它 輕得離譜該設備實現所需的程式碼量非常少,資源需求也很低,因此非常適合小型微控制器、低成本感測器或電池供電設備。

MQTT 控制訊息的最小版本可以包含 僅兩個位元組的數據此外,訊息頭非常緊湊,最大限度地減少了通訊開銷。這種設計非常適合以下場景: 帶寬小 或昂貴的網路(例如某些蜂窩網路或低功耗廣域網路),其中每個位元組都至關重要。

與 HTTP 等請求複雜、標頭冗長的協定相比,MQTT 允許 為了優化網路使用當成千上萬台設備每隔幾秒鐘就進行通訊時,這一點至關重要。

發布/訂閱模板及主題

MQTT 基於以下模型: 關於主題的出版/訂閱這些是文字字串(採用 UTF-8 編碼),用於將資訊組織成不同的層級。例如,在智慧家庭中,我們可能會有:

  • 房屋/客廳/溫度
  • 房子/廚房/煙霧
  • 房屋/車庫/門

客廳裡的溫度感測器會將讀數發佈到該主題下 房屋/客廳/溫度監控應用程式會訂閱相同主題以接收所有傳入訊息。這樣,新增設備或資料使用者就變得非常簡單。 使用合適的主題無需改變現有基礎設施。

雖然這個系統並非嚴格意義上的傳統訊息佇列,但它與基於佇列的模型非常相似:設備產生訊息並將其發送到中心點(代理),然後… 處理系統會消耗這些數據。 根據他們的需求進行擴展。這樣一來,無需更換感測器,即可透過增加消費者數量來輕鬆擴展系統。

服務品質 (QoS) 和可靠性

許多物聯網設備透過以下方式連接 延遲高、頻寬低、可靠性有限的網絡例如網路訊號不穩定或無線鏈路擁塞等情況。 MQTT 包含一系列機制,以確保在這種環境中訊息的傳遞。

該協議定義了三個級別 服務品質(QoS):

  • QoS 0 – “最多一次”訊息僅發送一次,無需確認。這是最快捷、最輕的方式,但可能會遺失部分訊息。
  • 服務品質 1 – “至少一次”這樣可以確保訊息送達,儘管訊息可能會重複發送。系統採用確認機制來確保資訊的送達。
  • QoS 2 – “恰好一次”這是最可靠的等級。它確保每個訊息只發送一次,使用… 四階段握手它稍微重一些,但在某些特殊情況下是必不可少的。

由於這些服務品質等級,MQTT 可以進行調整 不同的使用場景從遙測系統中遺失特定資料不會發生任何事情,到關鍵系統中重複或遺失訊息都是不可接受的。

重新連接和不穩定網路的管理

另一個優點是 MQTT 的設計初衷是 頻繁斷線的環境該協議包含一些功能,可以縮短設備重新連接到代理伺服器所需的時間,這在網路品質不佳的蜂窩網路或 Wi-Fi 網路上至關重要;提高… 安全的WiFi連接 可以補充這些能力。

此外,代理還可以管理保留的訊息、會話狀態和其他允許設備執行操作的功能。 恢復溝通而不失去上下文 每次網路中斷再恢復時都會發生這種情況。

安全和加密

在物聯網中,安全並非可有可無。 MQTT 整合了對以下方面的支援: 加密和認證 依靠現代協定:TLS 1.3 可用於加密通道,透過用戶端憑證進行身份驗證,OAuth 以及在商業和雲端環境中常見的其他技術。

這使得訊息在傳輸過程中能夠加密並應用。 訪問控制 關於誰可以發布或訂閱某些主題,保護資訊的機密性和完整性,這在工業、能源或健康環境中尤其重要。

廣泛支援多種語言和平台

MQTT 有 成熟的多語言經紀商和客戶端實現 (支援 Python、C、C++、Java、JavaScript、Go 等多種程式語言),並且擁有非常活躍的社群。這使得開發人員可以輕鬆地將物聯網設備與現有系統、資料庫、大數據工具或雲端服務集成,而無需重複造輪子。

作為一個開源協議 經過充分測試的庫學習曲線相對較短,相容性問題的風險也降低了,因此對於從小型原型到大規模部署的各種專案都極具吸引力。

MQTT代理在物聯網架構中的作用

經紀人是 任何基於 MQTT 的架構的核心它是接收所有訊息、處理訊息並將其分發給訂閱相應主題的客戶端的元件。

其主要功能包括:

  • 接收訊息 由客戶端(感測器、網關、應用程式等)發布。
  • 解碼和過濾訊息 根據主題、服務品質等級或安全規則而定。
  • 確定哪些客戶感興趣 在每條訊息中(根據您的訂閱)。
  • 將訊息傳遞給目標客戶遵守服務品質和授權策略。

存在多種代理實現,兩者 開源以及商業其中最知名的軟體之一是 Mosquitto,它廣泛應用於家庭環境、創客空間以及更嚴肅的部署中,它允許透過相對簡單的配置管理從幾個到數千個客戶端。

MQTT 實作:Arduino、ESP8266 和區域網

物聯網 MQTT

在許多家庭或半專業物聯網專案中,一個相當典型的場景是: 運行在樹莓派或PC上的MQTT代理 在本地網路內,以及各種設備,例如: 使用 Arduino IoT Cloud Remote 應用的 Arduino 或 ESP8266 作為客戶端連線。

例如,你可以使用一個有 DHT22 溫度感測器的 Arduino,定期將讀數發佈到某個主題,例如 房屋/客廳/溫度同時,另一個 Arduino 設備或行動應用程式訂閱了同一個主題,以即時顯示溫度。在本例中,訊息代理程式(Mosquitto)負責接收來自第一個 Arduino 設備的訊息並將其傳遞給第二個設備,而這兩個設備無需相互了解或建立直接連接。

這種架構有一個巨大的優勢: 它幾乎毫不費力就能擴展您可以新增更多感測器、更多資料使用者,並將它們連接到資料庫、機器學習系統或視覺化儀表板,而無需修改已部署裝置的行為。您只需嘗試不同的主題和訂閱方式即可。

為什麼選擇 MQTT 而不是 HTTP?

一個非常常見的問題是,既然似乎可以用其他方式解決所有問題,那麼使用 MQTT 是否真的值得。 直接 HTTP 請求 只需在路由器上打開一個端口,即可連接到 ESP8266 或類似設備,或者甚至可以透過以下方式連接: Android 上的 WebSocket.

答案是,雖然從技術上講是可行的,但MQTT有幾個重要的優勢:

  • 更低的平均延遲和更少的開銷 在頻繁的通訊中,尤其是在每隔幾秒鐘發送一次短訊息的情況下。
  • Native Pub/Sub手機不需要直接與每個設備通訊;它只需要與經紀人通訊。
  • 集中式安全性和身份驗證管理 在代理伺服器上運行,而不是在每個設備上複製邏輯。
  • 易於擴展如果明天設備數量從 5 台增加到 500 台,你不需要打開 500 個端口,也不需要重新設計整個拓撲結構。
  • 原生支援重連和QoS 考慮到網路不穩定的情況,HTTP 預設並未提供這種支援。

在典型場景中,您的行動應用程式會連接到 MQTT 伺服器(可以是區域網路內的連接埠轉送伺服器,也可以是雲端伺服器),並向控制主題發佈訊息(例如)。 房子/客廳/燈/套裝),而訂閱了該主題的 ESP8266 幾乎會立即收到該命令。 你只需要揭露經紀商資訊。並非網路上的所有設備。

關於 io.adafruit.com 等服務及其啟動間隔(免費版每 15 分鐘一次,付費版每 5 秒一次),情況是這樣的: 該特定服務的局限性問題不在於MQTT協定本身。該協定本身可以實現極低的延遲;問題在於服務提供者對使用頻率設定了限制。

使用 WebRTC 和 SDK 進行視訊通話和即時串流傳輸
相關文章:
使用 WebRTC 和 SDK 進行視訊通話和即時串流傳輸

MQTT 網關:感測器與雲端之​​間的網關

什麼是MQTT網關?

所謂的「MQTT網關」或MQTT網關本質上是一個 感測器或本地設備與物聯網平台或MQTT代理之間的中間設備它的主要功能是收集不同協定(例如藍牙、有線感測器、Modbus 等)的數據,將其轉換為 MQTT 格式,然後傳送到雲端或中央代理。

在許多情況下,MQTT 閘道的實作方式是: 具有特定軟體的乙太網路網關 它充當 MQTT 客戶端。此網關可以具有無線電介面、工業輸入輸出或現場匯流排連接,並負責將所有這些訊號轉換為 MQTT 語言以實現統一。

MQTT閘道(包括藍牙MQTT)的優勢

基於 MQTT 的網關,尤其是那些整合了藍牙功能的網關,具有以下幾個顯著優勢:

  • 非常輕微的訊息即使多個感測器同時發送數據,也能確保通訊高效。
  • 雙向訊息傳遞它們不僅支援上行鏈路遙測,還支援雲端到設備和設備到雲端的通訊。
  • 可靠的配送 透過 QoS 等級提供支持,確保訊息按照配置的保證等級到達。
  • 內置安全性網關通常支援 TLS 加密和憑證認證,因此透過網關傳輸的資料可以安全地到達雲端。

如果是 MQTT藍牙網關該裝置掃描並偵測範圍內所有藍牙低功耗 (BLE) 感測器,管理與它們的通信,並將資料傳輸集中到 MQTT 伺服器。從物聯網平台的角度來看,所有這些藍牙感測器都“使用 MQTT 協定”,儘管它們實際上是透過網關進行通訊的。

MQTT閘道的工作原理及設定方法

一般來說,MQTT網關的典型流程如下:

  1. 掃描並偵測其範圍內的感測器和裝置(例如,透過藍牙或有線網路)。
  2. 收集數據 透過相應的協定從這些感測器獲取數據。
  3. 將資料轉換為 MQTT 格式(定義適當的主題和有效負載)。
  4. 在經紀商處發布數據。 或在選定的物聯網平台上。

實體網關的設定首先涉及以下方面: 硬體組裝:正確的佈線,感測器連接和無線模組之間的隔離,以及連接埠、MAC 位址和靜態 IP 的選擇,以確保在網路上的唯一識別。

接下來,您需要選擇 MQTT 用戶端將運行的模組,例如:

  • Arduino + W5100 乙太網路模組.
  • ESP8266模組 支援WiFi連線。

韌體定義了 出版及訂閱主題例如,像這樣的前綴 MY_MQTT_PUBLISH_TOPIC_PREFIX/FROM_NODE_ID/SENSOR_ID 可以引發諸如此類的話題 mygateway1-out/2/1/1/0/49而要向感測器發送命令,則需要使用訂閱前綴,例如: MY_MQTT_SUBSCRIBE_TOPIC_PREFIX由此引發了以下類型的話題 mygateway1-in/2/1/1/0/49.

配置完成後,強烈建議使用知名的 MQTT 代理程式(例如 Mosquitto)測試 MQTT 閘道。 確認訊息已正確接收它們按預期主題發布,訂閱設備也收到了應該收到的內容。

MQTT 閘道作為連接中央伺服器的橋樑

當您在多個實體位置部署 MQTT 設備時,通常需要 將所有這些數據整合到一個共享伺服器上 或部署在集中式雲端平台。 MQTT 網關正是在這方面發揮橋樑作用。

其想法是在每個有物聯網設備的地方安裝一個MQTT閘道。每個網關都會從其本地環境中收集資訊。 新增並轉發 使用 MQTT 將資料傳送到中央伺服器(或雲端代理)。這樣,您既可以全域查看所有數據,又能保持本地控制,同時還能優化網路流量消耗。

此外,這些網關可以 使用自有憑證確保安全TLS 加密和認證機制可保護位於網關「後方」的感測器和物聯網邊緣裝置。它們還可以將資訊儲存在本地,調整使用者介面以管理附近的設備,並根據需要添加與其他工業協議的兼容性。

MQTT 與雲端平台和其他協定的兼容性

MQTT最大的優點之一在於它是 與大多數主流雲端物聯網平台相容許多工業級 MQTT 閘道標配以下功能:

  • Azure 物聯網.
  • 谷歌雲端物聯網.
  • AWS IoT.
  • IBM Watson物聯網.

網關會解讀從感測器接收的數據,並且 它以 MQTT 格式將它們傳輸到平台。用戶只需訂閱相關主題即可隨時查看或處理資訊。

此外,許多這樣的T台還可以用作 協定轉換器透過將 Modbus TCP 等網路與 MQTT 集成,並提供遠端 Web 面板來管理設備群組,MQTT 成為混合架構的核心組件,使傳統系統與新的物聯網解決方案能夠共存。

MQTT 和物聯網的實際應用案例

工業環境和遙測

在工業領域,MQTT 已經是一種 傳輸遙測資料的實際標準 來自分佈在工廠、採礦作業、石油和天然氣設施或農產品公司的感測器和設備。

該公司安裝了大量感測器,用於測量溫度、壓力、流量、振動和能耗等參數。這些數據透過 MQTT 協議發送到分析系統。 他們能發現不一致之處、趨勢和改進機會。 在營運方面,這有利於優化流程、預測故障並減少非計劃性停機時間。

低功耗廣域網路(LPWAN)

低功耗廣域網路 (LPWAN) 網路的設計目的是 能夠遠距離發送短訊息的超低功耗設備通常情況下,高延遲和頻寬有限的網路會帶來諸多問題。 MQTT 非常適合這種環境,因為它訊息輕量級、支援服務品質 (QoS) 並且能夠適應不可靠的網路。

對於使用 LPWAN 將感測器資料傳送到雲端解決方案的公司而言,MQTT 可實現 傳輸大量訊息 在不造成網路擁塞的情況下,盡可能確保資料到達分析和監控系統。

社群網路和群發訊息

MQTT 在傳統工業環境之外的一個顯著應用案例是: Facebook它已被用作即時管理海量訊息的主要通訊協定。它也在向 Instagram 等平台傳遞訊息方面發揮作用。

像MQTT這樣規模的公司選擇投資於MQTT,進一步印證了MQTT是一家… 適用於高並發場景的穩健、可擴展協議不僅適用於小型物聯網專案。

智慧家庭和家庭自動化

在國內領域,MQTT 已成為其中之一。 智慧家庭自動化常用協議它可與 Azure 或 IBM Watson 等雲端平台以及本地自動化系統無縫整合。

使用 MQTT,您可以監控 家庭能源消耗控制照明、即時監測溫度或空氣質量,並協調多個設備(恆溫器、百葉窗、灌溉系統等),包括以下設備: 小米 Vela無需各設備直接與其他設備通訊。例如,MQTT 藍牙閘道可以將家中所有 BLE 感測器集中起來,並將它們連接到同一個代理伺服器。

汽車部分

汽車產業的數位轉型涉及車輛、生產線和管理系統的連結。 MQTT 被用作… 雲端與車輛之間可靠的訊息傳遞通道允許發送遙測資料、遠端診斷和參數更新。

MQTT 即使在行動網路連接不斷變化的情況下也能實現近乎即時的通信,這使得它成為汽車製造商和服務提供商非常有吸引力的選擇。

運輸和物流

在運輸和物流領域,運力 追蹤車隊和貨物的運動狀態 這一點至關重要。 MQTT 用於傳送有關位置、貨物狀態、門開啟事件或貨櫃內部環境狀況的資料。

透過使用輕量級訊息傳遞和基於代理的架構,可以實現這一點。 即時監控大型車隊 延遲低,且不會對用於連接的移動或衛星網路造成過載。

可擴展架構以及硬體和軟體之間的解耦

在物聯網專案中採用 MQTT 的一大好處是它允許 將硬體層與軟體層明確區分開來。感測器和設備只負責向代理商發送資料並接收來自特定主題的命令;從那裡發生的一切(儲存、分析、視覺化)都可以獨立發展。

這種方法常常讓人想起 微服務模式每個組件都只負責一項功能,並將其發揮到極致。在我們的案例中,硬體設備專注於測量和資料發布;其他服務則負責處理、儲存、視覺化或應用人工智慧,而感測器無需「了解」它們的任何資訊。

由於這種解耦,如果明天你決定從樹莓派上的簡單視覺化網站遷移到… 大數據和機器學習的複雜系統 在雲端,您無需幹預感測器。它們會持續向代理伺服器發送數據,您只需連接訂閱現有主題的新用戶即可。

適用於 Android 的 Arduino IoT Cloud Remote 應用程式有什麼用途?
相關文章:
什麼是適用於 Android 的 Arduino IoT Cloud Remote 應用程式以及如何充分利用它?

MQTT及其相關網關共同構成了一個解決方案。 對於物聯網連接而言,它非常強大它輕量級、可擴展、安全,相容於主流雲端平台,並支援從低功耗廣域網路 (LPWAN) 到家庭 Wi-Fi 或工業乙太網路等各種類型的網路。所有這些優勢,再加上其發布/訂閱模型以及添加橋接協議網關的能力,使其成為建立物聯網現在和未來的關鍵組件之一。 分享資訊以便更多用戶了解主題.


新增為首選來源