Skip to main content

MQTT 是什麼

MQTT(Message Queuing Telemetry Transport)是一種輕量級的消息傳遞協議,專為小型設備和低帶寬、不可靠或高延遲的網絡環境設計。這種協議基於發布/訂閱模型,使得多個設備可以通過共享主題彼此交換消息,這在物聯網(IoT)應用中尤為常見。

MQTT 的主要特點和優勢

特點描述
低資源消耗極低的帶寬需求,適合資源受限設備
可靠機制即使在不穩定網絡下也能確保消息傳遞
實時性低延遲,適合需要即時反饋的應用
安全性支持TLS/SSL加密和用戶名/密碼認證
可擴展性能夠支持大量客戶端同時連接

Meshtastic 如何使用 MQTT

Meshtastic 可以利用 MQTT 擴展其通訊功能,允許設備通過互聯網發送和接收消息,這是在地理位置分散或通訊範圍外的設備之間進行通訊的理想方法。以下是 Meshtastic 使用 MQTT 的基本步驟:

啟用 MQTT 功能:

在 Meshtastic 的設備上,你需要首先確保裝置固件支持 MQTT。 通過 Meshtastic 的應用程序或命令行工具配置裝置,啟用 MQTT 功能。

MQTT服務器選擇

官方服務器

  • mqtt.meshtastic.org
    • 優點:設置簡單,全球可訪問
    • 缺點:公共頻道流量大,可能導致設備過載

非官方服務器

  • mqtt.bashcat.net
    • 由社區維護的替代選項

Meshtastic MQTT 連接顯示

Meshtastic 使用 MQTT 的架構

Meshtastic 網絡可以透過 MQTT 進行橋接,連接不同地理位置的節點。這通常通過兩種方式實現:

  1. 公共 MQTT 服務器

    • Meshtastic 的官方 MQTT 服務器提供了一個簡單的選項,可以將您的 mesh 網絡連接到全球。
    • 這使得您的設備可以在世界地圖上顯示,並將您的 mesh 流量以 JSON 格式複製。
    • 只需啟用 MQTT 並在您想要通過 MQTT 分享的頻道上設置上行和下行。
    • 使用公共 MQTT 服務器時,默認設備配置使用加密。
    • 注意:公共服務器的默認頻道(LongFast)通常流量很大,您的設備可能會過載並可能不再正常工作。建議使用不同的頻道或使用您自己的 MQTT 服務器。
  2. 私有 MQTT 服務器

    • 您也可以指定自己的私有 MQTT 服務器來橋接網絡,通過互聯網或僅局域 IP 網絡實現。
    • 自建服務器可以使用 Mosquitto 等開源軟件,在 Raspberry Pi 或其他低功耗設備上運行。
    • 提供更好的隱私保護和完全控制權。

:::spoiler 如何自建 MQTT 服務器 (基於 Mosquitto)

  1. 安裝 Mosquitto 服務器:
sudo apt-get install mosquitto mosquitto-clients
  1. 啟動 MQTT 服務器:
sudo systemctl start mosquitto
  1. 測試服務器: 訂閱一個主題來測試
mosquitto_sub -h localhost -t test/topic
  1. 在另一個終端發布消息
mosquitto_pub -h localhost -t test/topic -m "Hello Meshtastic!"

:::

MQTT 主題結構

如果沒有配置特定的根主題,默認的根主題將是 msh/。每個連接到 MQTT 的設備都會將其 MQTT 狀態(在線/離線)發佈到:

msh/2/stat/USERID

其中 USERID 是網關設備(連接到 MQTT 的設備)的節點 ID。

配置步驟

要快速開始使用 MQTT,請按照以下步驟操作:

  1. 設置 WiFi 連接

    • 配置您的網關節點連接到 WiFi:
    meshtastic --set network.wifi_ssid "您的WiFi名稱"
    meshtastic --set network.wifi_psk "您的WiFi密碼"
    meshtastic --set network.wifi_enabled true
  2. 配置 MQTT Broker

    • 設置 MQTT broker 信息:
    meshtastic --set mqtt.address "mqtt.meshtastic.org"
    meshtastic --set mqtt.username "您的用戶名" # 可選
    meshtastic --set mqtt.password "您的密碼"   # 可選
    • 如果所有設置留空,設備將自動連接到 Meshtastic 官方 broker。
  3. 啟用上行/下行功能

    • 為頻道設置 MQTT 功能:
    meshtastic --ch-index 0 --ch-set uplink_enabled true
    meshtastic --ch-index 0 --ch-set downlink_enabled true

    其中:

    • uplink_enabled:設備將 mesh 包發佈到 MQTT
    • downlink_enabled:設備訂閱 MQTT,並將任何來自那裡的包轉發到 mesh

使用移動應用程序配置 MQTT

Android 用戶:

  1. 打開 Meshtastic 應用
  2. 點擊右上角三點圖標 > 無線電配置 > MQTT
  3. 啟用 “MQTT 已啟用” 滑塊並點擊 “發送”
  4. 可選:啟用 “MQTT 客戶端代理” 滑塊以使用手機的網絡連接

iOS 用戶:

  1. 打開 Meshtastic 應用
  2. 進入設置 > MQTT
  3. 啟用 MQTT 模塊
  4. 根據需要配置服務器地址和認證信息

進階 MQTT 配置選項

JSON 格式支持

Meshtastic 支持將數據以 JSON 格式通過 MQTT 發送,方便與其他系統集成:

meshtastic --set mqtt.json_enabled true

自定義根主題

您可以定義自己的 MQTT 根主題,以便在共享服務器上隔離您的流量:

meshtastic --set mqtt.root "mynetwork/"

加密控制

控制 MQTT 數據是否加密:

meshtastic --set mqtt.encryption_enabled true

MQTT 與智能家居集成

Meshtastic 通過 MQTT 可以與許多智能家居平台無縫集成,例如:

  • Home Assistant:接收 Meshtastic 設備的位置和狀態信息
  • Node-RED:創建複雜的自動化工作流
  • OpenHAB:整合到開源智能家居系統中

這種集成使得 Meshtastic 不僅可以橋接遙遠的網絡節點,還可以實現與智能家居控制系統和其他物聯網設備的直接交互。