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 進行橋接,連接不同地理位置的節點。這通常通過兩種方式實現:
-
公共 MQTT 服務器:
- Meshtastic 的官方 MQTT 服務器提供了一個簡單的選項,可以將您的 mesh 網絡連接到全球。
- 這使得您的設備可以在世界地圖上顯示,並將您的 mesh 流量以 JSON 格式複製。
- 只需啟用 MQTT 並在您想要通過 MQTT 分享的頻道上設置上行和下行。
- 使用公共 MQTT 服務器時,默認設備配置使用加密。
- 注意:公共服務器的默認頻道(LongFast)通常流量很大,您的設備可能會過載並可能不再正常工作。建議使用不同的頻道或使用您自己的 MQTT 服務器。
-
私有 MQTT 服務器:
- 您也可以指定自己的私有 MQTT 服務器來橋接網絡,通過互聯網或僅局域 IP 網絡實現。
- 自建服務器可以使用 Mosquitto 等開源軟件,在 Raspberry Pi 或其他低功耗設備上運行。
- 提供更好的隱私保護和完全控制權。
:::spoiler 如何自建 MQTT 服務器 (基於 Mosquitto)
- 安裝 Mosquitto 服務器:
sudo apt-get install mosquitto mosquitto-clients
- 啟動 MQTT 服務器:
sudo systemctl start mosquitto
- 測試服務器: 訂閱一個主題來測試
mosquitto_sub -h localhost -t test/topic
- 在另一個終端發布消息
mosquitto_pub -h localhost -t test/topic -m "Hello Meshtastic!"
:::
MQTT 主題結構
如果沒有配置特定的根主題,默認的根主題將是 msh/
。每個連接到 MQTT 的設備都會將其 MQTT 狀態(在線/離線)發佈到:
msh/2/stat/USERID
其中 USERID
是網關設備(連接到 MQTT 的設備)的節點 ID。
配置步驟
要快速開始使用 MQTT,請按照以下步驟操作:
-
設置 WiFi 連接:
- 配置您的網關節點連接到 WiFi:
meshtastic --set network.wifi_ssid "您的WiFi名稱" meshtastic --set network.wifi_psk "您的WiFi密碼" meshtastic --set network.wifi_enabled true
-
配置 MQTT Broker:
- 設置 MQTT broker 信息:
meshtastic --set mqtt.address "mqtt.meshtastic.org" meshtastic --set mqtt.username "您的用戶名" # 可選 meshtastic --set mqtt.password "您的密碼" # 可選
- 如果所有設置留空,設備將自動連接到 Meshtastic 官方 broker。
-
啟用上行/下行功能:
- 為頻道設置 MQTT 功能:
meshtastic --ch-index 0 --ch-set uplink_enabled true meshtastic --ch-index 0 --ch-set downlink_enabled true
其中:
uplink_enabled
:設備將 mesh 包發佈到 MQTTdownlink_enabled
:設備訂閱 MQTT,並將任何來自那裡的包轉發到 mesh
使用移動應用程序配置 MQTT
Android 用戶:
- 打開 Meshtastic 應用
- 點擊右上角三點圖標 > 無線電配置 > MQTT
- 啟用 “MQTT 已啟用” 滑塊並點擊 “發送”
- 可選:啟用 “MQTT 客戶端代理” 滑塊以使用手機的網絡連接
iOS 用戶:
- 打開 Meshtastic 應用
- 進入設置 > MQTT
- 啟用 MQTT 模塊
- 根據需要配置服務器地址和認證信息
進階 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 不僅可以橋接遙遠的網絡節點,還可以實現與智能家居控制系統和其他物聯網設備的直接交互。