IoT現場

公司要你評估導入或自建物聯網伺服器,該怎麼規劃?

當公司要導入或自行開發物聯網系統,工程師接到「評估一套物聯網伺服器該怎麼規劃」的任務時,通常不會只有寫一支接收資料的程式這麼單純。

資料從哪裡來、怎麼傳輸、要在哪裡處理,以及最後要提供哪些功能,都會影響整體系統的設計。

在分工較完整的公司裡,這些內容可能需要和硬體、韌體、控制、網路、廠務、資訊或設備廠商共同討論;但在中小企業裡,也可能直接由同一位工程師負責大部分的規劃與實作。

不論實際分工如何,接到物聯網伺服器的規劃任務時,可以先從以下兩個動作開始:

  1. 釐清收到的資料要拿來做什麼
  2. 設計資料的架構與路徑

■釐清收到的資料要拿來做什麼

不同的資料用途,會直接決定伺服器需要開發哪些程式。

這裡不是要工程師重新評估導入物聯網對公司有沒有商業效益, 而是要把公司提出的目的,轉換成可以實作的軟體功能。

1. 判斷是否超過某個數值

例如:

  • 溫度是否超過上限
  • 電流是否突然升高
  • 壓力是否低於安全範圍
  • 設備是否停止運轉

這類用途通常需要開發:

  • 條件比較程式
  • 警示規則
  • 警示紀錄
  • 通知系統
  • 警示解除或確認機制

警示需要多快產生,也會影響資料的取樣頻率、傳輸頻率,以及判斷程式應該放在現場還是中央伺服器。

2. 查看每週用電分布、溫度變化或設備運轉時間

這類用途通常需要:

  • 保存歷史資料
  • 進行每小時、每日、每週或每月統計
  • 建立報表
  • 提供圖表或查詢介面
  • 匯出 Excel、CSV 或 PDF

這時除了確認資料收不收得到,也要考慮資料要保存多久,以及大量歷史資料的查詢速度。

3. 分析設備是否出現異常趨勢

例如:

  • 溫度持續緩慢上升
  • 相同產量下,用電量逐漸增加
  • 設備停機次數變得頻繁
  • 某項數值開始偏離平常範圍

這類用途可能需要:

  • 移動平均
  • 趨勢比較
  • 基準值比較
  • 統計分析
  • 異常偵測程式

分析結果是否準確,不只和演算法有關,也和資料量、資料是否缺漏,以及資料本身的可信任程度有關。

4. 預測設備故障、用電量或未來行為

如果要預測未來狀況,可能需要導入AI使用機器學習或神經網路模型,並建立模型推論流程。

取得資料
↓
資料前處理
↓
模型推論
↓
輸出判斷結果
↓
警示、報表或其他系統使用

如果模型要在現場即時執行,還要確認 Gateway 或現場主機是否具備足夠的運算能力。

預測準確度同樣會受到資料量、資料品質及資料標記方式影響。

5. 顯示設備目前狀態

例如:

  • 設備現在是否運轉
  • 目前溫度、電流或轉速
  • 哪一台設備已經離線
  • 最新一次收到資料的時間

這類用途通常需要:

  • 即時資料更新
  • 設備狀態管理
  • 裝置在線或離線判斷
  • 最新資料快取
  • 前端查詢介面

畫面需要多快更新,也會影響取樣頻率、傳輸頻率及整體網路架構。

6. 根據資料控制設備

如果系統不只是查看資料,還要根據資料控制設備,就需要額外開發:

  • 控制指令
  • 操作權限
  • 指令傳送紀錄
  • 設備回應確認
  • 逾時與重試機制
  • 操作失敗後的處理方式

控制設備不能只確認「指令已經送出」,還要確認設備是否收到及執行。

7. 把資料提供給其他系統使用

如果資料還要提供給 ERP、MES、能源管理系統、手機 APP、外部平台或其他軟體,就可能需要開發:

  • API
  • Webhook
  • MQTT Topic
  • CSV 或 Excel 匯出
  • 排程傳送
  • 第三方系統串接介面
  • 權限與驗證機制

因此,資料最後的使用者不一定只有物聯網系統自己的網頁,也可能是其他內部或外部系統。


■本文從「開始執行」的階段出發

公司導入物聯網系統,大致可能經過以下幾個階段:

  1. 公司老闆或高層產生導入想法
  2. 評估導入後對公司有什麼效益
  3. 決定自行開發、購買現有產品,或採用混合方式
  4. 開始執行

本文從第四階段出發。此時方向通常已由老闆、主管或其他單位決定,工程師要做的是把既有目的轉換成明確的系統功能,並找出資料格式、程式模組及通訊流程中還沒有被定義的部分。


■設計資料的架構與路徑

確認資料用途後,下一步才是規劃資料要怎麼從現場進入伺服器,經過哪些處理,最後提供給哪一個系統使用。

一條基本的資料路徑可能如下:

感測器/電表/PLC/設備控制器
↓
RS-485/Ethernet/Wi-Fi/BLE/LoRa 等傳輸介面或網路
↓
Modbus RTU/Modbus TCP/BLE Payload/廠商自訂協定
↓
Receiver/Gateway/工業電腦
↓
MQTT/HTTP/TCP
↓
物聯網伺服器
↓
資料檢查與資料庫
↓
警示/報表/AI/API/網頁/APP/其他系統

這部分不一定由軟體工程師單獨決定。

開發工程師通常要先提出軟體端的需求,再和硬體、韌體、控制、網路、廠務或設備廠商共同討論。

例如:

  • 資料多久內必須送達
  • 可以接受多少資料遺失
  • 網路中斷時是否仍要運作
  • 是否需要離線暫存及補傳
  • Gateway 是否需要執行判斷程式
  • 是否需要回傳控制指令
  • 資料格式由誰定義
  • 中央伺服器需要提供哪些介面

如果是在中小企業,以上內容也可能全部落在同一位工程師身上。即使角色重疊,也應該把每一段的功能與責任分開規劃。

1. 決定資料要在哪裡處理

若資料只需要製作歷史報表,通常可以送到中央伺服器後再統一處理。

但如果資料具有以下需求:

  • 需要快速反應
  • 網路中斷時仍要執行
  • 判斷結果會直接控制現場設備
  • 原始資料量很大,不適合全部上傳

就要考慮把部分判斷程式放在現場執行。

可以執行程式的位置包括:

  • PLC
  • MCU 或設備控制器
  • Gateway
  • 工業電腦
  • 現場伺服器

例如:

設備/PLC
↓
Modbus RTU
↓
具備作業系統的 Gateway
↓
執行條件判斷或模型推論
↓
立即產生警示或控制結果
↓
再將資料與結果傳送到中央伺服器

如果只是判斷數值是否超過門檻,不一定需要 AI,也不一定需要高效能主機。

若要執行較複雜的資料分析或模型推論, 才需要進一步確認 Gateway 的作業系統、CPU、記憶體及部署方式。

2. 選擇有線或無線傳輸

固定設備、重視穩定性,或要求傳輸延遲較為固定時,可以優先評估有線傳輸。

常見的有線介面或網路包括:

  • RS-485
  • Ethernet

設備資料再透過對應的通訊協定傳送,例如:

  • Modbus RTU
  • Modbus TCP

RS-485、Ethernet 是傳輸介面或網路;Modbus RTU、Modbus TCP 則是上層使用的通訊協定,兩者不能混在同一層比較。

但資料具有緊急性,不代表一定只能使用有線,也不能只看到「有線」或「Modbus RTU」就認定傳輸一定比較快。

實際速度與穩定性還會受到以下因素影響:

  • 鮑率
  • 輪詢週期
  • 同一條總線上的設備數量
  • 封包長度
  • 網路品質
  • 重送機制
  • 現場是否方便施工
  • 設備是否會移動

如果現場不方便拉線、設備會移動,或資料回傳頻率不高,也可以評估 BLE、Wi-Fi、LoRa 或其他無線方式。

軟體工程師主要要提出延遲、頻率、可靠度及斷線處理需求,再與相關人員共同決定通訊方式。

3. 決定伺服器放在哪裡

物聯網伺服器可以放在:

  • 公司內部伺服器
  • AWS
  • Microsoft Azure
  • Google Cloud
  • 本地與雲端混合架構

選擇時可以考慮:

  • 外部網路中斷時,系統是否仍要運作
  • 是否需要從公司外部查看資料
  • 資料是否允許離開公司
  • 是否需要跨廠區集中管理
  • 公司是否有人能維護本地伺服器
  • 雲端費用是否能長期負擔
  • 現場與雲端之間的網路是否穩定

常見的混合架構如下:

現場 Gateway/本地伺服器
負責收資料、即時判斷、暫存及補傳
↓
將需要的資料同步到雲端
↓
雲端負責跨廠區查詢、報表、模型訓練或外部服務

因此,伺服器要放在哪裡,不能只看哪一家雲端平台比較方便,而要連同斷線需求、資料安全及後續維護方式一起評估。

4. 定義資料的可信任程度

物聯網伺服器不能只收到一個數值,就直接認為這筆資料一定正確。

至少要能判斷:

  • 資料來自哪一台設備
  • 資料產生時間
  • 伺服器收到資料的時間
  • 資料是否延遲
  • 是否為離線補傳資料
  • 是否重複
  • 是否缺漏
  • 是否超出合理範圍
  • 單位及資料格式是否正確
  • 裝置目前是否正常
  • 這筆資料是原始值、換算值還是推估值

其中,「沒有收到資料」和「數值為零」是不同的狀態。

數值為零可能代表設備確實沒有運轉;沒有收到資料則可能是感測器、通訊、Gateway 或伺服器發生問題。

後面的警示、報表、分析及 AI 都建立在這些資料上。如果系統無法區分正常、延遲、缺漏及補傳資料,後面的判斷結果就很難被信任。

5. 保持模組的獨立性與可維護性

物聯網系統通常會隨著設備增加而持續修改。

因此,不建議把設備通訊、資料解析、資料庫、警示、報表及 API 全部寫死在同一段程式裡。

可以依照功能分成:

設備接收模組
↓
通訊協定解析模組
↓
資料格式轉換與檢查模組
↓
資料儲存模組
↓
警示/報表/AI 模組
↓
API/網頁/外部系統介面

這樣做不代表一定要採用微服務,而是要避免其中一個設備或通訊方式變更時,整套系統都必須重寫。

例如:

  • 更換某一廠牌電表,只修改該設備的解析模組
  • 更換通知方式,不影響資料接收
  • 增加新的報表,不修改原始通訊程式
  • 更換資料庫時,盡量不影響上游設備介面

模組之間的資料格式與責任如果先定義清楚,後續會比較容易測試、替換及維護。

6. 確認資料庫由誰維護

開發工程師不只要決定資料如何寫入資料庫,也要先確認系統上線後由誰維護。

例如:

  • 誰負責建立及修改資料表
  • 誰負責資料庫版本更新
  • 誰檢查硬碟容量
  • 誰執行備份
  • 誰確認備份資料能否還原
  • 誰處理資料庫異常
  • 歷史資料要保留多久
  • 是否需要自動壓縮、彙整或刪除舊資料

資料要使用 MySQL、SQL Server、時間序列資料庫,還是 CSV 型態資料庫,除了考慮資料量與查詢方式,也要考慮維護人員的技術背景。

如果公司有專職 RD、DBA,或熟悉資料庫程式與查詢工具的人員,可以依照關聯查詢、權限、交易及效能需求選擇合適的資料庫。

但如果後續維護人員是廠務、MIS 或一般操作人員,不具備 SQL 或資料庫程式經驗,而且資料量與查詢需求也適合,CSV 型態資料庫會比較容易使用。只要資料有依設備、日期及統計週期整理,維護人員就能使用 Excel 或文字工具讀取,也比較容易備份、搬移及交接。

CSV 型態資料庫仍然要由程式定義資料夾層級、檔名、欄位、時間週期及讀寫規則。維護人員可以直接讀取,不代表可以任意修改系統保存的原始內容。如果系統需要大量並行寫入、複雜關聯查詢、交易一致性或集中式權限管理,就要再評估關聯式資料庫、時間序列資料庫或其他儲存方式。

如果廠務、行政或其他人員需要新增設備、修改名稱或查詢資料,應提供管理介面,而不是要求他們直接操作資料庫。


■結語

被公司要求評估或規劃物聯網伺服器時,不需要立刻決定要使用哪些通訊協定、資料庫、開發框架或部署平台。可以先用下面這張確認表,把已知、未知及負責人整理出來,再決定下一步要找誰討論。


物聯網伺服器規劃確認表

不需要在第一次會議就決定所有答案。先把已經確認與尚未確認的項目分開,至少能知道下一步還要找誰、補哪些資料。

物聯網伺服器規劃確認表
物聯網伺服器規劃確認表

下載可編輯版本(ZIP:Markdown+可用 Excel 開啟的 CSV)

把填好的資料交給 AI 整理

確認表填完後,可以使用下面這段提示詞,讓 AI 協助整理目前已知的內容與還沒有被定義的部分。

你是一位物聯網伺服器系統規劃助手。

以下是我目前完成的物聯網伺服器規劃確認表。
請只根據我提供的內容整理,不要自行假設未提供的資訊,
也不要一開始就推薦品牌、雲端平台、程式框架或資料庫產品。

請協助我輸出:

1. 公司目的與需要實作的軟體功能
2. 從設備到使用端的完整資料路徑
3. 已確認與尚未確認的項目
4. 資料延遲、缺漏、重複、補傳及可信度風險
5. 現場、本地伺服器與遠端服務的責任分工
6. 接收、解析、儲存、警示、報表及 API 的模組責任
7. 資料儲存、備份、還原及後續維護責任
8. 下一次會議最優先需要確認的問題

請用表格輸出:
「項目/目前已知/尚未確認/可能風險/建議詢問對象」。

如果資料不足,請標示「待確認」,不要替我補答案。

以下是目前資料:
【貼上填寫後的確認表】

確認表和 AI 可以協助整理問題,但不會直接替你決定系統該怎麼設計。


如果你還不清楚這些功能該怎麼設計

  1. 資料可信任度的設計
  2. 資料保留在本地端,同時支援遠端觀看的設計方式
  3. 各功能模組保持獨立的設計方式

G蛋有整理一門《物聯網伺服器,自己來就好》的課程,可以參考看看。

查看課程內容與免費預覽

繼續讀同一個主題

這裡收錄 G蛋一路工作、學習與生活留下的整理,可以從下方前後篇繼續閱讀。

查看 Medium 原文