Node-RED: MQTT 伺服器

如何將 Node-RED 連接到 Mosquitto MQTT 伺服器

👋 歡迎來到 Stackhero 文檔!

Stackhero 提供即用型的 Node-RED cloud 解決方案,帶來多項優勢,包括:

  • 包含 MQTT 伺服器(Mosquitto)。
  • 完整訪問 Node-RED 管理介面
  • 包含 Node-RED 儀表板
  • 包含無限制且專用的 SMTP 電郵伺服器
  • 只需點擊即可輕鬆更新
  • 使用 HTTPS 保護的可自訂域名(例如,https://node-red.your-company.com)。
  • 專用私有 VM 提供的最佳性能和強大安全性

節省時間簡化您的生活:只需 5 分鐘即可嘗試 Stackhero 的 Node-RED cloud hosting 解決方案!

Stackhero 的 Node-RED 服務內建 MQTT 伺服器,讓您能夠透過安全且可靠的通訊管道輕鬆整合您的 IoT 裝置。

開始使用時,只需前往 Stackhero 控制台,找到您的 Node-RED 服務,並在服務設定中啟用「MQTT Server」選項。

伺服器啟用後,您可以透過 8883 埠連線。所有連線皆採用 TLS 加密,確保您的資料受到保護。

如果您是第一次在 Node-RED 使用 MQTT,以下是一個簡單範例,協助您快速上手。這個範例展示如何將訊息發送到主題(topic)並從中接收訊息。您可以下載這個流程範例,並透過「Import」選單匯入至您的 Node-RED 實例。

連接 MQTT 到 Node-RED 的簡單範例連接 MQTT 到 Node-RED 的簡單範例

如果您的 MQTT 節點一直停留在「connecting」狀態,建議您檢查 MQTT authentication 流程是否仍然存在。如果缺少此流程,您可以在這裡下載:mqttAuthenticationFlow.json。將此流程匯入您的 Node-RED 實例,並於 Users 節點中更新您偏好的密碼,必要時移除不需要的註解。

透過 Node-RED 的專屬流程,管理 MQTT 使用者驗證變得非常簡單。您可以直接在 Node-RED 管理介面中找到「MQTT Authentication」流程。

MQTT 驗證流程MQTT 驗證流程

在這個驗證流程中,請尋找 Users 範本節點。此節點包含一個陣列,您可以在其中為每位使用者設定帳號密碼。您可依專案需求新增任意數量的使用者。

注意:node-red 使用者是 Node-RED 連接 MQTT 伺服器所必需的,請勿從設定中移除此使用者。

MQTT 使用者節點MQTT 使用者節點

您可以選擇使用 MQTT 協定或 WebSockets 來連接 Mosquitto MQTT 伺服器。

雖然 MQTT 協定輕量且非常適合 IoT 裝置,但它並未被網頁瀏覽器原生支援。如果您希望從瀏覽器與 MQTT 伺服器互動,建議使用 WebSockets。這種方式可將 MQTT 流量封裝於 WebSocket 協定中,並可與 Stackhero 的服務無縫整合。

要啟用 WebSocket 連線,只需在 Stackhero 控制台中啟用「WebSocket Support」選項。啟用後,請將您的客戶端設定為使用 WebSocket URL:wss://<XXXXXX>.stackhero-network.com:443/mqtt。請記得將預設的 mqtts://<XXXXXX>.stackhero-network.com 替換為此 WebSocket URL,以便從瀏覽器進行連線。

在開發時,您可能會發現「MQTT.js」函式庫特別實用。這是一套強大的 JavaScript 函式庫,支援 Node.js 及瀏覽器環境。您可以參考其官方儲存庫以取得更多資訊。

如果您需要一個實際範例,說明如何從瀏覽器透過 WebSockets 連接到 MQTT 伺服器,可以參考這個儲存庫:https://github.com/stackhero-io/mqttWebSocketGettingStarted。請依您的設定修改 src/index.html 檔案中的 urlusernamepassword

MQTT WebSocket 範例MQTT WebSocket 範例

在嘗試此設定前,請先確認您已在 Stackhero 控制台啟用 WebSocket 支援,以確保瀏覽器連線能順利運作。