個人電腦與伺服器
巨科資訊有限公司 贊助個人電腦(換掉那台 ASUS X55V)和伺服器(AMD Ryzen 9 7900X)。
This content is not available in your language yet.
TREM 與 DPIP 從 2022 年 5 月中開始做。當時我完全不會寫程式,邊做邊學;服務也從地震慢慢擴到其他類型。 範圍變廣、系統變複雜之後,維護變難,穩定性也跟著往下掉。
這篇稿放了半年,現在才把故事寫完。要解釋 DPIP 為什麼這麼難用,得先從 TREM 怎麼長出來講起。
起點是 2022 年 3 月 23 日的花蓮地震。人在臺南,搖晃先到,警報才來。我開始想:能不能自己測,看出哪裡正在地震?學測剛考完,時間夠用,同年 5 月這個計畫就開始了。
TREM-net(TREM 地震觀測網)由三種感測器組成:
| 名稱 | 感測器 | 上線 | 說明 |
|---|---|---|---|
SE-net(Strong Earthquake) |
MEMS 加速度儀 | 2022-05-31 | 強震觀測網 |
MS-net(Micro Seismographic) |
磁電式速度儀 | 2023-04-09 | 微地震觀測網 |
ES-net(Enhanced Sensitivity) |
MEMS 加速度儀 | 2025-11-02 | 增強靈敏度地震觀測網 |

這台用 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 (GitHub @bclswl0827) 的幫助下,開始著手開發新一代 ES-net,目標是更穩定、更靈敏。
以 2026/08/25 臺灣東南部海域 M5.8 地震為例,看兩套地震儀在同一場地震的表現。
臺東縣臺東市 7725352

三軸分量
| 項目 | 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 |

穩定性以外,雜訊也差一截:SE-net 高達 400 µg/√Hz,ES-net 則是 60 µg/√Hz。
而且不穩不只發生在強震當下。SE-net 平時就很容易斷線,工作人員得頻繁聯絡用戶,請對方把地震儀重新插拔,維運的工作量因此大很多。
高雜訊、不穩定,再加上大量雜訊誤報,是我們下定決心開發新版地震儀的主要原因。
硬體是一段辛酸史,軟體架構也沒少踩雷。時間拉回最前面,看整個系統怎麼一路長出來,也一路壞掉。
2022 年 5 月,大約高三學測剛考完,開始做 SE-net。當時完全沒有程式基礎,用 PM2 + JavaScript。現在回頭看,選 JavaScript 等於替後面埋了一串炸彈;但那時候,它是我唯一寫得動大型專案的語言。
當時沒有 AI 可以問。身邊沒有朋友或家人在做這行,也沒有人可以請教(別指望普通高中的老師,高職或許有機會)。
過程中認識了蛋捲PVP,學到很多,主要是地球科學。在蛋捲的推動下,開始在全臺各地部署 SE-net 地震儀。
同年,一位熱心人士引薦,認識了 CWB 地震測報中心科長陳達毅。從他那邊學到非常多 EEW 系統的知識,12 月正式與交通部中央氣象局(CWB)簽約合作。
簽約半年後,在東華大學放上第一台 MS-net 磁電式速度儀。做法很粗:ADS1115 + Geophone(4.5 Hz)+ ESP32,就這三樣,卻一直運作到現在。我覺得已經是奇蹟了。要高精度的磁電式地震儀,可以看 AnyShake。

當時的主力電腦是家人汰換下來的 ASUS X55V:CPU Pentium 2020M、記憶體 4GB DDR3。開個 VSCode 都卡到炸——天崩開局。SE-net 就是在這樣的環境下誕生的。沒錯,它現在還活著。再說一次:當時真的沒有 AI 可以問。

當時的主力伺服器是 AMD Ryzen 5 5600X。現在還在服役(笑),只是從主力換成打雜,負責各類非即時資料整理。
PM2 用到 2024 年初,然後大改一次:PM2 換成 Docker,Node.js 換成 Bun.js(還是 JavaScript)。改完當下,「看似」還不錯。
好景不常。幾個月後,JavaScript 沒有型別的問題冒出來。新功能一直往上疊,錯誤變得很頻繁,於是開始加 TypeScript,想把這類問題壓下來。
0403 之後,意外認識了更多人,也來了很強的外援。
個人電腦與伺服器
巨科資訊有限公司 贊助個人電腦(換掉那台 ASUS X55V)和伺服器(AMD Ryzen 9 7900X)。
高頻寬伺服器
台灣數位串流有限公司 提供超高頻寬的伺服器,用來應付地震時的突發流量。
地震觀測本來就冷門,這兩家願意幫忙,真的非常感激。
整個 2025 年上半年都在修修補補,沒有多少實質進展。
真正的改變在同年 9 月。在
ttyAMA0 (GitHub @bclswl0827) 的推薦下,開始嘗試 Golang,再逐步、分批把舊服務全部用 Golang 重寫(是 rewrite,不是 native port)。
效果很明顯:跟 JavaScript 比,總算能有效用上多核;記憶體用量更低;同樣的計算,CPU 用量更低;打包出來的 Image 也更小,等等。
架構也砍掉一大塊。以前太複雜、太冗餘,常常不穩。
| 項目 | 以前 | 現在 |
|---|---|---|
| Balance Server | Nginx 後面還有一層 Server | 拿掉那層,改成 Openresty + Lua,快取控得更細 |
| 儲存 | JSON | SQLite(歷史遺留。嚴肅,別笑) |
| 資料庫 | MariaDB | ClickHouse(波形)+ HA PostgreSQL(解算資料) |
| 內部通訊 | WebSocket | NATS。不用維護健康狀態,邏輯比較簡單,也比較穩,而且本身就有異地備援 |
去 YouTube 翻地震紀錄影片,會發現現在延遲超級低。差在改用 Lua JIT。

舊版異地多活
兩個節點都會發報,但解算結果通常差很多。實際使用時只能固定單一節點,故障時要手動切換。
新系統
兩邊一樣都會解算,最後用仲裁決定哪個節點有發布權限(自動故障轉移)。也會自動補齊兩邊的差異測站,避免特定測站只存在單邊(例如一邊連不上)。

高一到高三,成績應該都是全校倒數(不是班排,是校排)。我其實有認真在讀書,大概吧。高中念了 4 年,大一還回高中重補修,全校大概只有我。
當時多半被當成怪人(不上課,都在胡搞瞎搞)加上廢人(成績爛)。家人一開始很生氣,後來就放棄了。他們很討厭我用 3C,希望我好好讀書,手機還被折成兩半(喜提折疊機)。經過好幾次家庭革命,才勉強能做自己想做的事。說到底,也只能說是運氣好,一路上遇到很多願意幫忙的人。