條件監控通知器:範例執行結果

這是範例:用虛構資料重播,讓程式跑一次後輸出的結果。這個工具還沒有在實際設備或手機上使用過。

虛構資料:3 台設備(OVEN-01、OVEN-02、PUMP-01),2026-11-02 08:00~10:00,每分鐘一筆,共 300 筆

OVEN-01 溫度與通知時間點

17518519520521508:0008:3009:0009:30 冷卻中,不重複通知 門檻 200°C
發出「溫度過高」發出「已恢復正常」條件又成立,但在 30 分鐘冷卻內,不通知

09:11~09:19 溫度在 200°C 上下來回跳了 5 次。如果每次超過都通知,9 分鐘內會收到 5 則「過熱」加 5 則「恢復」;實際只通知第一次和它的恢復。

程式輸出的通知內容(共 6 則)

資料時間 08:40・條件成立
【緊急】OVEN-01 溫度過高
條件:溫度(°C) >= 200
目前:溫度(°C)=200,壓力(bar)=1.03
資料時間:2026-11-02 08:40:00
規則:oven_overheat
資料時間 08:48・恢復
【通知】OVEN-01 已恢復正常
規則:溫度過高
目前:溫度(°C)=197,壓力(bar)=1.02
資料時間:2026-11-02 08:48:00
資料時間 09:10・資料中斷
【警告】OVEN-02 資料停止更新超過 10 分鐘
最後資料時間 2026-11-02 08:59:00
資料時間 09:11・條件成立
【緊急】OVEN-01 溫度過高
條件:溫度(°C) >= 200
目前:溫度(°C)=200.7,壓力(bar)=1.04
資料時間:2026-11-02 09:11:00
規則:oven_overheat
資料時間 09:12・恢復
【通知】OVEN-01 已恢復正常
規則:溫度過高
目前:溫度(°C)=198.7,壓力(bar)=1.02
資料時間:2026-11-02 09:12:00
資料時間 09:30・條件成立
【警告】PUMP-01 壓力跌破下限
條件:壓力(bar) 向下穿越 0.8
目前:壓力(bar)=0.65
資料時間:2026-11-02 09:30:00
規則:pump_pressure_low

對應的規則設定

rules:
  - id: oven_overheat
    target: "*"            # 所有設備
    message: 溫度過高
    level: critical
    notify_recover: true   # 恢復正常也通知
    all:
      - { field: temp, op: ">=", value: 200 }

  - id: pump_pressure_low
    target: PUMP-01
    message: 壓力跌破下限
    level: warning
    all:
      - { field: pressure, op: cross_below, value: 0.8 }

其他設定

設定範例值作用
冷卻時間30 分鐘同一條規則通知後,多久內不再通知
資料中斷10 分鐘某台設備超過 10 分鐘沒有新資料就通知(OVEN-02 在 08:59 之後停止回報)
監控時段週一~五 08:00~20:00下班時間不檢查資料中斷,避免半夜被吵醒
來源失敗連續 3 次檔案讀不到、API 連不上,連續失敗才通知,恢復後再通知一次