結合 EMQX MQTT Server 規則引擎與雙向過濾,打造高效能的 Meshtastic 私有 MQTT 閘道器。

你的基站也在「過勞」嗎?固定節點的甜蜜負擔

如果你在頂樓或高處架設了一個 Meshtastic 固定節點 (Base Station),你的初衷一定是想當個好鄰居,透過 MQTT 把屏東跟臺北、臺中串起來,玩玩好玩的「鏈網」。

但現實通常很骨感。當你高興地開啟 MQTT 轉發,沒過幾天你就會發現:

  • 記憶體永遠在崩潰邊緣:(msh/TW)雖然好熱鬧,但裡面塞滿了各種機器人、虛擬節點。你的 ESP32 記憶體只有那麼一點點,光是記住這些「不認識的網友」就飽了,真正的隊友反而被擠掉。
  • LoRa 模組變成了「垃圾轉運站」:最氣人的是,這些網路上亂跑的測試訊息、缺德多跳機器人,會一直透過你的基站往無線電廣播。這不僅浪費電,還佔用了寶貴的頻寬,導致附近的同好想傳個訊息都傳不出去。

看著基站因為 Node DB 塞滿而頻繁閃退,我決定動手寫個「資料洗滌塔」——這就是 MeshGate 的由來。

核心理念:別讓沒用的資料進你的家門

我把 MeshGate 設計成一個數據緩衝區。簡單來說,它透過 EMQX MQTT Server 在你的基站跟官方 MQTT 之間蓋了一座護城河。

架構概覽,為了讓大家理解資料是怎麼流向的,可以參考下圖:

  1. 隔離區:我的地盤我做主
    本地節點不再直接面對官方那個混亂的世界。我幫每個節點設定了專屬帳號。
    • 身分強繫結:這招很狠,帳號是 A,你就只能發布 A 的主題。想冒充別人的 ID 發垃圾訊息?門都沒有。
    • 資料裁切:訊息發出去前,我們先把那些沒用的廢話刪掉,只把精華傳給官方。
  2. 進口精煉:只歡迎真正的隊友
    對於從官方同進來的封包,MeshGate 就像一個嚴格的保全:
    • 拒絕機器人:看到已知的虛擬 ID 、黑名單節點或特定封包類型,直接丟垃圾桶,不準進到我的本地網路。
    • 拯救 Node DB:因為這些垃圾進不來,你的節點終於可以安安穩穩地記住那些「真正重要的節點」與轉發乾淨的封包到當地 LoRa 網路上。

技術實作:那一串神奇的 SQL 語法

既然這是一個鏈網基站,最怕的就是「回聲(Loop)」。如果封包在本地跟官方之間繞圈圈,整個網路幾秒鐘內就會癱瘓。

我利用 EMQX 的規則引擎,寫了一段 SQL 來解決這個問題。重點就在這行:

WHERE coalesce(username, '') <> 'LOCAL_BRIDGE'

這行字雖然簡單,但它確保了閘道器自己抓回來的資料,不會又被當成「新資料」發出去。再加上一些主題裁切(Topic Rewriting),我們就能優雅地實現雙向同步,卻互不幹擾。

透過這張圖,我們可以更清楚看到 MeshGate 的四道防線:

  • 下行流動:官方封包進來後,先在 Bridge 層被接住。
  • 智慧分派 (Fan-out):Filter 像大腦一樣,把一個封包「分身」到各個節點專屬的 Topic 裡,確保每個節點只收到自己該收的。
  • 安全上行:本地節點發文時,EMQX 會檢查 ACL 許可權,確認你沒有冒名發文,再由規則引擎改寫主題發往官方。
  • 切斷迴圈:圖中面板 4 清晰展示了 SQL 規則如何像閘門一樣,把可能引發風暴的「回頭封包」直接擋掉。

守護成果:讓通訊回歸純粹

自從掛上 MeshGate 後,我的固定節點終於重獲新生:

  • 穩如泰山:Node DB 裡面乾乾淨淨,閃退次數歸零。
  • 空域清新:LoRa 頻道不再充滿機器人噪音,每一秒發射都是有意義的。

這不只是一個技術專案,更是一場關於無線電資源主權的實踐。我們想跟世界連結,但我們拒絕被數位垃圾淹沒。

「別人不過濾,只有我過濾有用嗎?」——這就是關鍵所在

可能會有人酸說:絕大部分的人都是連上官方 MQTT,你一個人過濾有什麼用?

其實這觀念全錯。MeshGate 不是要拯救世界,它是要拯救你家屋頂的那片天空。

為什麼你該過濾?因為這叫「空域道德」

  • 你家基站不再是噪音源:以前你的基站是盲目轉播來自官方 MQTT 的垃圾封包;現在加上了 MeshGate,垃圾在發射前就被擋掉。雖然雲端還是亂,但至少從你家天線噴出去的訊號是乾淨的。
  • 把頻寬還給真正的隊友:LoRa 的發射時間(Airtime)極其寶貴。你少轉發一封垃圾封包,當地的無線電頻譜就多一分空間給真正的玩家。這就是實質的貢獻。
  • 保護路人的節點:當地的鄰居或路過的同好,只要收到你的轉發,他們裝置裡的 Node DB 就不會被機器人塞爆到閃退。

一言以蔽之:我們管不了大江大海的污染,但我們可以保證從我家基站發出去的訊號不是毒水。 少一台節點亂噴,頻寬就多一點空間。這就是架設者的態度。

不只是連接,更是連上「自我管理」

在 Meshtastic 的世界裡,固定節點不應該只是一個盲目轉發封包的「啞管道」。如果你只是單純地把裝置接上公共 MQTT,那你其實是將自己基站的頻寬與穩定性,交給了無法預測的網路洪流。

透過 MeshGate,你的基站不再只是「連上網路」,而是「連上自我管理」

  • 管理的廣度:你決定了哪些區域的封包可以進入你的 LoRa 頻道。
  • 管理的深度:你決定了哪些 NodeID 是值得信任的夥伴,哪些是必須攔截的雜訊。
  • 管理的韌性:你讓硬體從無意義的運算中解脫,將每一份資源都精準地投放在真實的通訊需求上。

固定節點是我們 Mesh 生態系的骨幹。透過這套方案,我們讓骨幹變得更聰明、更有主見。如果你也深受「資料洪水」之苦,想拿回基站的掌控權,歡迎來我的 GitHub 看看這套方案。

「這不只是一個技術專案,這是一場關於無線電資源主權的實踐。我們與世界連結,但我們拒絕被垃圾訊息淹沒。」

GitHub 連結:https://github.com/NFS-TW-Developer/MeshGate

類別:
標籤:

拒絕空中垃圾訊息:透過 MeshGate 與 EMQX MQTT 規則引擎守護你的 LoRa 頻寬與硬體 Node DB - QR Code

本站內容未經授權許可請勿擅自抄襲
如果需引用部分內容請註明來源網址

發表時間:2026/03/14 17:29:41

此頁面網址:https://blog.reh.tw/archives/4121

Facebook 留言