專案

一般

配置概況

動作

Bug #1421

進行中

Bug #1343: [Branch] 華城充電樁 FINISHING 後未送 StatusNotification(Available),導致 connector 卡住無法充電 (FINISHING timeout fallback 修補)

[E2E testing] Fortune OCPP command capability 與 FINISHING 無人恢復驗證

是由 陳國瑋 於 約 2 個月 前加入. 於 約 2 個月 前更新.

狀態:
In Progress
優先權:
High
被分派者:
開始日期:
2026-08-10
完成日期:
預估工時:

概述

背景

Fortune(華城/FE-EVI)充電樁完成一次交易後,在充電槍仍插於車上的情況下會維持 FINISHING;必須實體拔槍後才回報 AVAILABLE。這使離峰充電與輪充在「第一次與第二次充電之間無人拔槍」的實務情境中,可能無法再次啟動。

目前 EMS 已提供受控的 Engineer Command API,可發送 19 個 OCPP 1.6 CSMS → Charge Point actions;Fortune FE-EVI 對這些 action 的 capability 尚缺乏完整實機證據,初始狀態為 UNVERIFIED。本單不重複建立 raw OCPP console,而是利用既有 audit、schema validation 與 operation timeline 進行 vendor certification。

相關議題:#1342、#1343、#1397、#1398、#1418。

目標

  1. 建立 Fortune 的 OCPP command capability matrix,保存每個 command 的:
    • 測試時設備/Connector 狀態。
    • request payload。
    • CALLRESULT/CALLERROR/timeout。
    • 後續 StatusNotification、transaction 與 power-state 變化。
    • firmware/model 適用範圍。
  2. 找出能在不需要人員拔槍的前提下,支援離峰與輪充的可行控制方式。
  3. 依實機結果提出精準方案,區分短期 workaround、正式輪充設計與 vendor firmware 需求。
  4. 將已驗證結果回寫 e_ocpp_command_capability 與長期 E2E Catalog。

優先測試範圍

Phase 0:只讀/低風險能力探測

  • GetConfiguration
    • 查詢 smart charging profiles、max profiles、charging rate units,以及 transaction/unlock 相關 configuration keys。
  • TriggerMessage(StatusNotification)
    • 驗證能否要求 Fortune 主動重送 connector 狀態。
  • GetCompositeSchedule
    • 驗證 smart charging schedule 查詢能力。

Phase 1:避免結束 transaction 的輪充路徑

  • SetChargingProfile
    • 交易進行中將允許功率/電流降至 0 或設備可接受的最小值,觀察是否進入 SuspendedEVSE 且交易保持。
    • 恢復 profile 後觀察是否能在不經 FINISHING、不拔槍的情況下繼續充電。
  • ClearChargingProfile
    • 驗證清除 profile 後的恢復行為。
  • GetCompositeSchedule
    • 驗證 profile 實際生效結果。

Phase 2:FINISHING 恢復能力

在交易已結束、槍仍插著且 raw status 為 FINISHING 時,依序分開測試:

  • RemoteStartTransaction:確認 Fortune 是否允許由 FINISHING 直接開始下一筆交易。
  • TriggerMessage(StatusNotification):確認設備是否只重送 FINISHING,或重新判定實際狀態。
  • ChangeAvailability(Inoperative → Operative):確認是否能重置 connector lifecycle。
  • UnlockConnector:確認是否會解除鎖定並改變狀態;不得把「回 Accepted」等同於可再次充電。
  • Reset(Soft):確認 soft reset 後設備在槍未拔除時回到何種狀態,以及能否 RemoteStart。

Phase 3:情境驗證

  • 私樁離峰:先插槍等待離峰,到點啟動、暫停/結束後於下一控制週期再次啟動。
  • 輪充:車輛數大於 slots 時,Fortune 被輪出與再輪入期間不需拔槍。
  • 交易一致性:不得產生重複 transaction、幽靈 operation 或供電狀態與 EMS 投影不一致。

首輪排除項目

以下 actions 與本問題沒有直接收益或風險過高,首輪不執行:

  • UpdateFirmware
  • SendLocalList
  • ClearCache
  • 任意 vendor DataTransfer
  • 未先備份原值的 ChangeConfiguration
  • Reset(Hard)
  • ReserveNow/CancelReservation
  • GetDiagnostics

若低風險測試無法形成解法,再另行提出擴充測試計畫並重新取得授權。

安全與前置條件

  • 每次 state-changing command 前確認目標 Charge Point OCPP online。
  • 確認沒有其他住戶/測試者正在使用,且 Branch/CP 不存在非本測試的 ACTIVE transaction/remote operation。
  • 一次只測一個 command,等待狀態穩定並保存證據後才進下一項。
  • SetChargingProfile 必須同步驗證實際 MeterValues/電流,不以 Accepted 作為成功。
  • Reset(Soft)、ChangeAvailability 與 UnlockConnector 必須預先確認可接受短暫離線或設備狀態改變。
  • 所有 command 由既有 Engineer Command API 發送並留下 audit,不繞過安全邊界直接注入 WebSocket frame。

E2E Impact

  • Add:Fortune 插槍不拔情境下,離峰再次啟動/輪出再輪入的 vendor regression。
  • Add:Fortune smart charging pause/resume capability certification。
  • Priority:P0 Conditional(影響開始/停止與 unsafe power-state 判定)。
  • Trigger:Fortune firmware/model 導入、離峰/輪充/OCPP charging-control 變更,以及 Fortune 案場發版。
  • Release pack:Charging/OCPP + Site/Vendor Certification。
  • 執行結果保存於 test_report/;長期 Catalog 只保存穩定案例與 capability。

驗收標準

  • 對每個實際測試的 command 都取得 request、response、後續狀態與 power/transaction 證據。
  • 將 capability 明確標示為 VERIFIED、UNSUPPORTED 或保留 UNVERIFIED 並註明原因。
  • 至少得到一項可支援無人拔槍的離峰/輪充方案,或以完整實機證據確認必須由 Fortune firmware 配合。
  • 推薦方案必須說明失敗 fallback、timeout、重試與避免重複 transaction 的條件。
  • E2E Catalog validator 通過。

SOP 狀態

本單建立後先進行需求確認與測試規劃。任何會連接外部環境、操作實體 Fortune 樁或修改共用資料的測試,均需先列出完整步驟與風險,等待 Ken 明確回覆「開始測試」後才能執行。

動作

匯出至 Atom PDF