幫我們的粉絲專頁按個讚!
結合 EMQX MQTT Server 規則引擎與雙向過濾,打造高效能的 Meshtastic 私有 MQTT 閘道器。

你的基站也在「過勞」嗎?固定節點的甜蜜負擔
如果你在頂樓或高處架設了一個 Meshtastic 固定節點 (Base Station),你的初衷一定是想當個好鄰居,透過 MQTT 把屏東跟臺北、臺中串起來,玩玩好玩的「鏈網」。
但現實通常很骨感。當你高興地開啟 MQTT 轉發,沒過幾天你就會發現:
- 記憶體永遠在崩潰邊緣:(msh/TW)雖然好熱鬧,但裡面塞滿了各種機器人、虛擬節點。你的 ESP32 記憶體只有那麼一點點,光是記住這些「不認識的網友」就飽了,真正的隊友反而被擠掉。
- LoRa 模組變成了「垃圾轉運站」:最氣人的是,這些網路上亂跑的測試訊息、
缺德多跳機器人,會一直透過你的基站往無線電廣播。這不僅浪費電,還佔用了寶貴的頻寬,導致附近的同好想傳個訊息都傳不出去。
看著基站因為 Node DB 塞滿而頻繁閃退,我決定動手寫個「資料洗滌塔」——這就是 MeshGate 的由來。
核心理念:別讓沒用的資料進你的家門
我把 MeshGate 設計成一個數據緩衝區。簡單來說,它透過 EMQX MQTT Server 在你的基站跟官方 MQTT 之間蓋了一座護城河。
架構概覽,為了讓大家理解資料是怎麼流向的,可以參考下圖:

- 隔離區:我的地盤我做主
本地節點不再直接面對官方那個混亂的世界。我幫每個節點設定了專屬帳號。- 身分強繫結:這招很狠,帳號是 A,你就只能發布 A 的主題。想冒充別人的 ID 發垃圾訊息?門都沒有。
- 資料裁切:訊息發出去前,我們先把那些沒用的廢話刪掉,只把精華傳給官方。
- 進口精煉:只歡迎真正的隊友
對於從官方同進來的封包,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 看看這套方案。
「這不只是一個技術專案,這是一場關於無線電資源主權的實踐。我們與世界連結,但我們拒絕被垃圾訊息淹沒。」
類別:分享
標籤:Meshtastic

