動作
Bug #1421
進行中Bug #1343: [Branch] 華城充電樁 FINISHING 後未送 StatusNotification(Available),導致 connector 卡住無法充電 (FINISHING timeout fallback 修補)
[E2E testing] Fortune OCPP command capability 與 FINISHING 無人恢復驗證
開始日期:
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。
目標¶
- 建立 Fortune 的 OCPP command capability matrix,保存每個 command 的:
- 測試時設備/Connector 狀態。
- request payload。
-
CALLRESULT/CALLERROR/timeout。 - 後續
StatusNotification、transaction 與 power-state 變化。 - firmware/model 適用範圍。
- 找出能在不需要人員拔槍的前提下,支援離峰與輪充的可行控制方式。
- 依實機結果提出精準方案,區分短期 workaround、正式輪充設計與 vendor firmware 需求。
- 將已驗證結果回寫
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、不拔槍的情況下繼續充電。
- 交易進行中將允許功率/電流降至 0 或設備可接受的最小值,觀察是否進入
-
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 與本問題沒有直接收益或風險過高,首輪不執行:
UpdateFirmwareSendLocalListClearCache- 任意 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 明確回覆「開始測試」後才能執行。
動作