# 充電樁
:::success
充電樁管理系統應用實務依據 OCPP 1.6 標準與智慧杆技術規範,涵蓋充電樁狀態監控、交易管理與設備控制,適用於電動車充電樁與智慧杆系統整合。
:::
## 欄位與資料定義
### 基礎設備資訊
| 欄位名稱 | 格式 | 必備 | 說明 | OCPP 對應訊息 |
| -------- | -------- | -------- | -------- | -------- |
| **廠商資訊** |
| Vender | String | M | 廠商 | 記錄設備實際製造廠商名稱 |
| Model | String | M | 型號 | 記錄設備型號 |
| Serial | String | M | 序號 | 記錄設備唯一序號 |
| **系統與應用欄位** |
| chargePointId | String | M | 充電樁唯一識別碼 | ChargePoint.id |
| poleId | String | O | 智慧杆編號 | 關聯杆體資訊 |
| vendor | String | M | 製造商名稱 | BootNotification |
| firmwareVersion | String | M | 韌體版本 | BootNotification |
| connectorType | String | M | 充電接口類型 | Enum:Type1 / Type2 /CCS |
| maxPower | Float | M | 最大輸出功率(kW) | 硬體規格 |
| voltage | Float | O | 當前電壓(V) | MeterValues |
| current | Float | O | 當前電流(A) | MeterValues |
### 充電狀態資訊
| 欄位名稱 | 格式 | 必備 | 說明 | OCPP 對應訊息 |
| -------- | -------- | -------- | -------- | -------- |
| sessionId | String | M | 充電工作階段 ID | StartTransaction |
| status | String | M | 充電狀態 | Enum: Available Preparing / Charging / Suspended / Error |
| startTime | DateTime | O | 充電開始時間 | StartTransaction |
| endTime | DateTime | O | 充電結束時間 | StopTransaction |
| energyDelivered | Float | O | 已供電量(kWh) | MeterValues |
| currentPower | Float | O | 即時功率(kW) | MeterValues |
| userId | String | O | 使用者識別碼 | IdTag |
| transactionId | Integer | O | 交易流水號 | TransactionId |
### 控制指令參數
| 欄位名稱 | 格式 | 必備 | 說明 | OCPP 對應訊息 |
| -------- | -------- | -------- | -------- | -------- |
| command | String | M | 控制指令 | Enum: RemoteStart / RemoteStop / Reset / UnlockConnector |
| targetPower | Float | O | 目標充電功率(kW) | ChargingProfile |
| schedule | JSON | O | 充電排程設定 | SetChargingProfile |
| authId | String | O | 授權識別碼 | 用於 RemoteStart |
## 資料結構與操作規則
### 主要資料結構
```json!
// 充電樁狀態回報(即時)
{
"chargePointId": "CP-001",
"poleId": "POLE-1024",
"status": "Charging",
"connectorType": "CCS",
"voltage": 380.5,
"current": 32.1,
"currentPower": 12.2,
"energyDelivered": 45.7,
"sessionId": "SESSION-20231001-001",
"userId": "USER-5566",
"timestamp": "2023-08-15T14:30:00Z"
}
// 控制指令範例
{
"command": "RemoteStart",
"chargePointId": "CP-001",
"authId": "CARD-887766",
"targetPower": 60.0,
"schedule": {
"startTime": "2023-08-15T22:00:00Z",
"duration": 120
}
}
```
### API 端點與操作
| 操作類型 | HTTP 方法 | 端點路徑 | 說明 |
| -------- | -------- | -------- | -------- |
| 狀態回報 | POST | /api/v1/charging/status | 即時傳輸充電狀態 |
| 啟動充電 | POST | /api/v1/charging/sessions/start | 遠端啟動充電 |
| 停止充電 | POST | /api/v1/charging/sessions/stop | 遠端停止充電 |
| 查詢紀錄 | GET | /api/v1/charging/sessions | 依時間範圍查詢充電紀錄 |
| 更新設定 | PUT | /api/v1/charging/config | 修改充電樁參數設定 |
### 交換頻率與限制
* 即時數據:充電狀態變化5秒內上報,功率值每秒採樣
* 批量數據:交易紀錄每15分鐘批次上傳
* 控制指令:需在1秒內回應
* API 限流:每設備每秒最多10次請求
## 錯誤處理機制
### 錯誤代碼表
| 錯誤碼 | 說明 | 處理建議 |
| -------- | -------- | -------- |
| 400 | 指令參數缺失/格式錯誤 | 檢查JSON結構與數值範圍 |
| 403 | 充電樁忙碌/無法執行指令 | 檢查設備狀態後重試 |
| 404 | 充電樁 ID 不存在 | 驗證設備註冊狀態 |
| 409 | 充電槍未就緒 | 檢查連接器狀態 |
| 500 | 充電樁內部錯誤 | 重試或聯繫廠商技術支援 |
### 錯誤回傳格式
```json!
{
"errorCode": "OCPP-4001",
"message": "連線器未解鎖,無法啟動充電",
"details": {
"chargePointId": "CP-001",
"connectorId": 1,
"timestamp": "2023-08-15T14:35:00Z"
}
}
```
## OCPP 1.6 對應實作
### 主要指令對應表
| OCPP指令 | API端點 | 說明 |
| -------- | -------- | -------- |
| BootNotification | POST /device/register | 設備註冊 |
| Heartbeat | POST /healthcheck | 心跳檢測 |
| StartTransaction | POST /sessions/start | 啟動交易 |
| StopTransaction | POST /sessions/stop | 結束交易 |
| MeterValues | POST /telemetry | 計量數據上傳 |
### 安全驗證機制
* TLS 1.2 + 加密:所有 API 傳輸強制使用 HTTPS
* 雙向認證:充電樁需憑數位證書連接
* OCPP-JSON 編碼:訊息採用 RFC7159 標準
### 測試建議
提供以下測試情境模擬資料
* 正常充電流程(含啟動/計量/停止)
* 異常中斷情境(斷電/網路中斷)
* 併網負載測試(多槍同時充電)