DPIP 為什麼這麼難用?
前言
TREM 與 DPIP 最早是從 2022 年 5 月中開始開發的。當時我完全沒有寫程式的基礎,一切都是邊做邊學,服務範圍也從單純的地震,逐漸拓展到其他不同類型。 隨著時間推移,服務範圍越來越廣、系統也越來越複雜,維護因此變得困難,穩定性也逐漸下滑。
這篇文章放了半年,總算要開始說故事了。要釐清 DPIP 為什麼這麼難用,得先從 TREM 的整個發展過程說起。
為什麼選擇做地震?
故事要從 2022 年 3 月 23 日的花蓮地震 說起。當時人在臺南的我,先感受到搖晃,警報才姍姍來遲,這讓我開始思考:我可不可以自己動手測地震,看出哪裡正在發生地震? 有了這個想法後,恰好學測剛結束,多出不少可運用的時間,於是同年 5 月,這個計畫就這樣展開了。
TREM-net 觀測網
TREM-net 觀測網總共由三種感測器組成:
| 網路名稱 | 感測器類型 | 上線時間 | 備註 |
|---|---|---|---|
| ES-net (Enhanced Sensitivity) | MEMS 加速度儀 | 2025-11-02 | 增強靈敏度地震觀測網 |
SE-net / MS-net 預計於 2026 Q4 淘汰,後續將由 ES-net 接替。
第一台地震儀
這台地震儀是用 MPU6050 + ESP32 做的,編號 6732340,放置於我自己的家中,從 2022 年 5 月運作至今(2026 年 8 月),目前仍正常運作。
上圖為安裝於一般住家中的 SE-net 地震儀 ver 1.0。ver 1.0 採用 AC 110V 供電,機內降壓至 DC 5V;隨後推出的 ver 2.0 則改為外部 DC 5V(一般手機充電器)輸入。到了 ver 2.1,則採用透明 Arduino UNO 外殼設計,藉此簡化加工流程、降低生產難度並縮小體積。ver 2.2 則首次嘗試 3D 列印外殼——雖然創新,但受限於當時尚未擁有自有 3D 印表機,僅生產極少量,最終停產並繼續以 ver 2.1 為主力生產規格。
從 2022 年 5 月到 2026 年 8 月,SE-net 一直是 DPIP 即時資訊與強震監視器通知的主要資料來源,但隨著時間推移,也逐漸浮現出一些問題。
於是在 2025 年 9 月,在
ttyAMA0
ES-net,目標是更穩定、更靈敏。
新舊地震儀比較
以 2026/08/25 臺灣東南部海域 M5.8 地震為例,比較兩套地震儀在同一場地震中的實際表現:
SE-net
臺東縣臺東市 7725352
因架構設計問題,SE-net 在遇到強震時容易丟失資料。
三軸分量
| 項目 | EW | NS | UD |
|---|---|---|---|
| 加速度 (cm/s²) | 36.12 | 19.19 | 10.51 |
| 速度 (cm/s) | 1.62 | 1.16 | 1.55 |
綜合指標
| 項目 | 數值 |
|---|---|
| 3 分量合成加速度 (PGA, gal) | 39.07 |
| 3 分量合成速度 (PGV, kine) | 1.65 |
| 最大計測震度 | 3.9 |
| 最大震度階 | 4 級 |
| 速度反應譜 (SVA) | 3.43 |
| 長周期地震動階級 (LPGM) | 0 (3.43 cm/s) |
| 開始時間 | 2026/08/25 15:00:06 |
| 結束時間 | 2026/08/25 15:01:22 |
ES-net
分析
除了穩定性不佳之外,從雜訊表現也能看出兩者的差距:SE-net 雜訊高達 400 µg/√Hz,ES-net 則只有 60 µg/√Hz。
而且不穩定的狀況並不只發生在強震當下——SE-net 平時就很容易斷線,工作人員得頻繁聯絡用戶,請對方重新插拔地震儀,大幅增加了維運的工作量。
高雜訊加上不穩定(並伴隨大量雜訊誤報),正是我們下定決心開發新版地震儀的主要原因。
講故事
硬體是一段辛酸史,軟體架構同樣沒少踩雷。時間拉回最初,看看整個系統是怎麼一路演進(也一路壞掉)到現在的。
第 1 卷
早期(2022 年 5 月,大約是高三學測後)剛開始做 SE-net 時,完全沒有程式基礎,主要以 PM2 + JavaScript 進行開發。
站在如今的視角看,當時選擇 JavaScript 也為後續埋下了一系列的炸彈,但 JavaScript 在當時是我唯一能駕馭、足以拿來撰寫大型專案的語言。
要知道當時可沒有 AI 啊!!!身邊也沒有朋友或家人從事這方面的工作,更別說有人可以請教(別指望普通高中的老師,高職或許有機會?)。
從 CMD 換成 PM2 時相當震驚,原來還有這麼好用的東西(笑)。
製作的過程中認識了蛋捲PVP,學到非常多知識(主要是地球科學相關)。在蛋捲的推動下,開始於全台各地部署 SE-net 地震儀。
當時並不知道這樣能不能測到地震——那可是 MPU6050 啊!!!一顆才 60 元台幣,說出來我自己都不信,我跟蛋捲都是在賭。
同年,在一位熱心人士的引薦下,認識了 CWB 地震測報中心的科長陳達毅。讓我學到了非常多(海量)EEW 系統相關的知識,並於 12 月正式與交通部中央氣象局(CWB)簽約合作。
當時的名稱還是交通部中央氣象局(CWB),現已改為交通部中央氣象署(CWA)。
簽約半年後,於東華大學部署了第一台 MS-net 力平衡式地震儀。 這東西做得很粗糙:ADS1115 + Geophone(4.5 Hz)+ ESP32,沒了,卻運作到現在,我覺得已經是奇蹟了。 如果需要高精度力平衡式地震儀,可以參考 AnyShake 的產品。
SE-net 是範圍主力,負責收集全台觀測資料;MS-net 則是速度主力,能測到非常小的 P 波,進而提升預警速度。
我當時的主力電腦(ASUS X55V),CPU Pentium 2020M、Ram 4GB DDR3,就是撿家人汰換下來的電腦,開個 VSCode 都卡到炸——天崩開局。SE-net 就是在這樣的環境下誕生的(沒錯,它現在還活著——而且,再說一次,當時真的沒有 AI 可以問!!!)。
當時的主力伺服器(AMD Ryzen 5 5600X),現……現在還在服役……(笑),只是已經從主力戰將被貶去打雜了(負責各類非即時資料整理)。
第 2 卷
PM2 一路用到 2024 年初,後來經歷一次大重構:PM2 → Docker、Node.js → Bun.js(JavaScript)。重構完成後,有了「看似」不錯的表現?
好景不常,僅僅過了幾個月,JavaScript 沒有型別約束所導致的問題開始浮現,隨著新功能不斷疊加,開始頻繁出錯,頭都大了,於是開始引入 TypeScript 試圖緩解這類問題。
TREM-Lite 就是這個時期的產物,知道為什麼這麼難用了吧——它連 IDE 都不會提示型別,得自己背下每個變數的型別跟用意。
2024 年 4 月,發生了 0403 地震(M7.1),面對突然暴增的流量,完全束手無策,設備、經驗兩頭空。
第 2.5 卷?
2024 年 0403 地震後,意外認識了更多人,也迎來了強力外援。首先是巨科資訊有限公司,贊助了我的個人電腦(換掉那台 ASUS X55V)跟伺服器(AMD Ryzen 9 7900X)。緊接著是台灣數位串流有限公司,提供了超高頻寬的伺服器(用來應付地震時的突發流量)。地震觀測本來就是個冷門領域,這兩家公司願意伸出援手,真的非常感激。
AMD Ryzen 9 7900X 到目前(截止 2026 年 8 月)都還是主力,而且看樣子還會撐很長一段時間——現在硬體貴成這樣,怕是要傾家蕩產才換得起(笑)。只是它最近開始出現不少毛病(像是硬碟頻繁掉盤等),讓我很頭痛。
第 3 卷
整個 2025 上半年都是在修修補補中度過,沒什麼實質性的進展。
真正的改變在同年 9 月,在
ttyAMA0
效果非常顯著:終於能高效地用上多核(相較於 JavaScript),記憶體用量更低,CPU 用量在等價計算下也更低,打包出來的 Image 更小等等。
除了用 Golang 重寫外,也大砍了架構設計(以前過於複雜且冗餘,很常不穩定),把 Balance Server 上 Nginx 後方的 Server 砍掉,改成 Openresty + Lua 實做,同時用 Lua 實做更細緻的快取控制(如果去 YouTube 上翻地震紀錄影片,可以發現現在延遲超級低,這就是改用 Lua JIT 實做帶來的差異)。
還有諸如把 JSON 儲存換成 SQLite 這類調整(嚴肅!不要笑!這是歷史遺留問題)。
Server 資料庫也從 MariaDB 改成 ClickHouse(存波形)+ HA PostgreSQL(存解算資料),內部通訊則由 WebSocket 換成 NATS(不需維護健康狀態,簡化邏輯並提高穩定度,同時天然具備異地備援能力)。
以前 JSON 時代,API 響應速度會有明顯延遲。
2026 Q4 預計將從 HTTP Polling 改成 SSE。
新舊 TREM EEW 系統差異
舊版的異地多活雖然兩個節點都會發報,但解算結果通常差異很大。實際使用時,也只能固定使用單一節點(且故障時得手動切換)。
新系統兩邊一樣都會解算,但最後會透過仲裁來決定哪個節點有發布權限(自動故障轉移)。 同時也會自動補齊兩邊差異測站,避免特定測站只存在單邊的情況(例如一邊連不上)。
狀態監測
ML 模型
YuYu1015-PhaseNet-50Hz-268k-v1
YuYu1015-IntensityGMM-TW-45k-v1
結論
番外篇
學生時代
高一高二高三,我的成績應該都是倒數的(不是班排,是校排),但我其實有認真在讀書(大概吧?)。 高中念了 4 年,大一還回去高中重補修,全校大概也就我了。 反正當時應該就是被當成怪人(不上課都在胡搞瞎搞) + 廢人(成績爛),一開始家人還會很生氣,但後來就放棄了。 而且當時家人很討厭我用 3C 產品,希望我能好好讀書,手機還曾被折成兩半(喜提折疊機)。 經過好幾次家庭革命,才勉強能做自己想做的事。 說到底,也只能說是運氣好,一路上遇到很多願意幫助我的人。
有很長一段時間,都是用手機在寫程式的,記程式碼在哪個檔案的哪個位置(因為手機螢幕很小,用背的比用找的快)。
2024/04/03 地震
主震時的 TREM EEW 內部紀錄:ExpTech 2024/04/03 07:58 M7.1 地震紀錄。
餘震剛好都發生在語音通話時,你是什麼人 2024/04/27 M5.8 地震紀錄,事後看真的快被笑死。
