Спецификация для разработчиков EV зарядных станций
Спецификация системыдля упразработчиковления EV заряднымих станциямий
1. Обзор системы
1.1 АОбщая архитектура системы
graph TB
subgraph "Backend Infrastructure"
CSMS[Central System Management Service]
API[REST API Gateway]
DB[(Database)]
WS[WebSocket Handler]
end
subgraph "EV Charging Station"Station (Ваша зона ответственности)"
CP[Charge Point]Point Controller]
MODEM[4G Modem]
BATTERY[Battery Management]
CONNECTOR[Charging Connector]
METER[Energy Meter]
RFID[RFID Reader]
DISPLAY[Display/UI]
GPS[GPS Module]
end
subgraph "ExternalExternal"
Systems"USER[End MOBILE[MobileUser]
App]VEHICLE[Electric WEB[Web Dashboard]
BILLING[Billing System]Vehicle]
end
MOBILE --> API
WEB --> API
API --> CSMS
CSMS --> DB
CSMS <--> WS
WS <--> MODEM
MODEM <--> CP
CP --> BATTERY
CP --> CONNECTOR
CSMSCP --> BILLINGMETER
CP --> RFID
CP --> DISPLAY
CP --> GPS
USER --> RFID
USER --> DISPLAY
VEHICLE <--> CONNECTOR
1.2 Протокол коммуникации
Протокол: OCPP 2.0.1 (Open Charge Point Protocol)
Транспорт: WebSocket Secure (WSS) over 4G
Формат данных: JSON
Аутентификация: Certificate-based authentication + API KeysKey в заголовке Authorization
2. КомпЗона отвенты систвемы
2.1 Backend Service (CSMS - Central System Management Service)
Обязанности:
Упразработчиковление пулом зарядныхстанцийи
2.1 О
брсновные заботкдачиmindmap root((EV Station Tasks)) OCPPсообщенийClient
МонWebSocket Connection Message Handling Error Recovery Hardware Integration Connector Control Meter Reading Battery Monitoring RFID Processing State Management Station Status Transaction Lifecycle Error States Local Features Offline Mode Local Authorization Display Management Monitoring Self Diagnostics Event Logging Telemetry Collection2.2 Архит
оектурингасостоянияПО станцийУправление транзакциями зарядкиАналитика и отчетностьИнтеграция с внешними системами
2.2 EV Charging Station (Charge Point)
Обязанности:
flowchart TD
Выполнениеsubgraph команд"Application отLayer"
CSMS OCPP[OCPP ОтправкаClient]
телеметрииSM[State иMachine]
событий AUTH[Authorization УправлениеManager]
процессомend
зарядки subgraph Локальная"Business авторизацияLogic"
(offlineTXN[Transaction mode) Manager]
ДиагностикаMETER_MGR[Meter иManager]
самотестирование EVENT[Event
Manager]
CONFIG[Configuration Manager]
end
subgraph "Hardware Abstraction Layer"
CONN_HAL[Connector HAL]
METER_HAL[Meter HAL]
BATTERY_HAL[Battery HAL]
COMM_HAL[Communication HAL]
RFID_HAL[RFID HAL]
end
subgraph "Hardware"
HW[Physical Components]
end
OCPP <--> SM
OCPP <--> TXN
SM <--> AUTH
TXN <--> METER_MGR
TXN <--> EVENT
METER_MGR <--> METER_HAL
CONN_HAL <--> HW
METER_HAL <--> HW
BATTERY_HAL <--> HW
COMM_HAL <--> HW
RFID_HAL <--> HW
3. OCPP MessageClient FlowImplementation
3.1 ИУстанициовкализация соединения
sequenceDiagram
participant CP as Charge Point
participant CSMS as Backend CSMS
Note over CP: Power On / Network Available
CP->>CSMS: WebSocket Connection Request<br/>wss://csms.server.com/ocpp/{stationId}
Note over CP: Headers: Authorization: Bearer {apiKey}
CSMS->>CP: WebSocket Connection Accepted
CP->>CSMS: BootNotification
Note over CP: {<br/>"reason": "PowerUp",<br/>"chargingStation": {<br/>"model": "YourModel",<br/>"vendorName": "YourVendor",<br/>"firmwareVersion": "1.0.0"<br/>}<br/>}
CSMS->>CP: BootNotification Response
(Accepted)Note over CSMS: {<br/>"status": "Accepted",<br/>"interval": 300,<br/>"currentTime": "2025-07-12T10:00:00Z"<br/>}
CP->>CSMS: StatusNotification
(Available)Note over CP: Connector Status: "Available"
loop Heartbeat Every 300s
CP->>CSMS: Heartbeat
CSMS->>CP: Heartbeat Response
end
3.2 ПолАучтентиефикация
WebSocket Headers:
Authorization: Bearer your-api-key-here
Sec-WebSocket-Protocol: ocpp2.0.1
Reconnection Strategy:
flowchart TD
DISCONNECT[Connection Lost] --> WAIT[Wait Period]
WAIT --> RETRY[Retry Connection]
RETRY --> SUCCESS{Connected?}
SUCCESS -->|Yes| BOOT[Send BootNotification]
SUCCESS -->|No| BACKOFF[Increase Wait Period]
BACKOFF --> WAIT
BOOT --> OPERATIONAL[Operational State]
4. Состояния зарядной станции
4.1 Основная диаграмма состояния станции (Backend-инициированное)й
sequenceDiagramstateDiagram-v2
participant[*] --> PowerOn
PowerOn --> Connecting: Network Available
Connecting --> Available: CSMS asConnected
BackendConnecting CSMS--> participantOffline: CPConnection asFailed
ChargeAvailable Point--> NotePreparing: overCable CSMS,CP:Connected
ЗAvailable --> Reserved: RemoteStartTransaction
Available --> Unavailable: SetChargingProfile(Unavailable)
Preparing --> Charging: RFID Authorized
Preparing --> Available: Authorization Failed
Preparing --> Available: Cable Disconnected
Reserved --> Preparing: Cable Connected
Reserved --> Available: Reservation Expired
Charging --> SuspendedEVSE: Station Error
Charging --> SuspendedEV: Vehicle Error
Charging --> Finishing: Stop Requested
SuspendedEVSE --> Charging: Error Cleared
SuspendedEV --> Charging: Vehicle Ready
SuspendedEVSE --> Faulted: Critical Error
Finishing --> Available: Transaction Complete
Faulted --> Available: Fault Cleared
Faulted --> Unavailable: Manual Reset Required
Offline --> Connecting: Retry Connection
Unavailable --> Available: Reset Command
4.2 Обрапрботка событий в каждом состоянияи
flowchart CSMS-TD
subgraph "Available State"
A1[Cable Connected] --> A2[Send StatusNotification: Preparing]
A3[RemoteStartTransaction] -->CP: GetReportA4[Send (component:StatusNotification: Battery)Reserved]
CP-A5[RFID Scan] --> A6[Local Authorization Check]
end
subgraph "Charging State"
C1[Meter Reading Timer] -->CSMS: GetReportC2[Send ResponseMeterValues]
CP-C3[Vehicle Disconnected] --> C4[Send TransactionEvent: Ended]
C5[Error Detected] -->CSMS: NotifyReportC6[Send (BatteryStatusNotification: Status)SuspendedEVSE]
Noteend
oversubgraph CSMS,CP:"Error ЗапросHandling"
статусаE1[Hardware зарядкиError] CSMS---> E2[Log Error Locally]
E2 -->CP: GetTransactionStatusE3[Send CP-NotifyEvent]
E3 -->>CSMS: GetTransactionStatusE4[Update ResponseState Noteto overFaulted]
CSMS,CP: Запрос местоположения
CSMS->>CP: GetLocationInfo
CP->>CSMS: GetLocationInfo Response (GPS coordinates)end
3.35. СОбязательные OCPP сообытщения от станции
(Station-и5.1 Инициированные)
sequenceDiagram
participant CP as Charge Point
participant CSMS as Backend CSMS
participant USER as End User
Note over CP,CSMS: Начало изарядки
USER->>CP: Подключение автомобиля
CP->>CSMS: StatusNotification (Preparing)
CP->>CSMS: TransactionEvent (Started)
CSMS->>CP: TransactionEvent Response
Note over CP,CSMS: Процесс зарядки
loop Во время зарядки
CP->>CSMS: MeterValues (Energy, Power, Voltage, Current)
CP->>CSMS: StatusNotification (Charging)
end
Note over CP,CSMS: Ошибка зарядки
CP->>CSMS: StatusNotification (Faulted)
CP->>CSMS: NotifyEvent (Error Details)
Note over CP,CSMS: Окончание зарядки
USER->>CP: Отключение автомобиля
CP->>CSMS: TransactionEvent (Ended)
CP->>CSMS: StatusNotification (Available)
CSMS->>CP: TransactionEvent Response
3.4 Удаленное управление
sequenceDiagram
participant API as REST API
participant CSMS as Backend CSMS
participant CP as Charge Point
Note over API,CP: Удаленный запуск зарядки
API->>CSMS: POST /stations/{id}/start
CSMS->>CP: RequestStartTransaction
CP->>CSMS: RequestStartTransaction Response
CP->>CSMS: TransactionEvent (Started)
CSMS->>API: 200 OK
Note over API,CP: Удаленная остановка зарядки
API->>CSMS: POST /stations/{id}/stop
CSMS->>CP: RequestStopTransaction
CP->>CSMS: RequestStopTransaction Response
CP->>CSMS: TransactionEvent (Ended)
CSMS->>API: 200 OK
4. Детальная спецификация и сообщтатус
sequenceDiagram
participant CP as Charge Point
participant CSMS as Backend CSMS
participant USER as End User
Note over CP,CSMS: Начало изарядки
USER->>CP: Подключение автомобиля
CP->>CSMS: StatusNotification (Preparing)
CP->>CSMS: TransactionEvent (Started)
CSMS->>CP: TransactionEvent Response
Note over CP,CSMS: Процесс зарядки
loop Во время зарядки
CP->>CSMS: MeterValues (Energy, Power, Voltage, Current)
CP->>CSMS: StatusNotification (Charging)
end
Note over CP,CSMS: Ошибка зарядки
CP->>CSMS: StatusNotification (Faulted)
CP->>CSMS: NotifyEvent (Error Details)
Note over CP,CSMS: Окончание зарядки
USER->>CP: Отключение автомобиля
CP->>CSMS: TransactionEvent (Ended)
CP->>CSMS: StatusNotification (Available)
CSMS->>CP: TransactionEvent Response
sequenceDiagram
participant API as REST API
participant CSMS as Backend CSMS
participant CP as Charge Point
Note over API,CP: Удаленный запуск зарядки
API->>CSMS: POST /stations/{id}/start
CSMS->>CP: RequestStartTransaction
CP->>CSMS: RequestStartTransaction Response
CP->>CSMS: TransactionEvent (Started)
CSMS->>API: 200 OK
Note over API,CP: Удаленная остановка зарядки
API->>CSMS: POST /stations/{id}/stop
CSMS->>CP: RequestStopTransaction
CP->>CSMS: RequestStopTransaction Response
CP->>CSMS: TransactionEvent (Ended)
CSMS->>API: 200 OK
BootNotification (при старте)
{
"reason": "PowerUp",
"chargingStation": {
"model": "EV-CHARGER-V1",
"vendorName": "YourCompany",
"firmwareVersion": "1.2.3",
"serialNumber": "SN123456789"
}
}
StatusNotification (при изменений
4.1 Запросы Backend → Station
4.1.1 Получение состояния батареи)
OCPP Message: GetReport
{
"requestId": 1,
"componentVariable": [
{
"component": {
"name": "BatteryManagement"
},
"variable": {
"name": "StateOfCharge"
}
},
{
"component": {
"name": "BatteryManagement"
},
"variable": {
"name": "BatteryVoltage"
}
}
]
}
Response: NotifyReport
{
"requestId": 1,
"generatedAt"timestamp": "2025-07-12T10:30:00Z",
"reportData": [
{
"component": {
"name"connectorStatus": "BatteryManagement"
}Available",
"variable"evseId": {1,
"name"connectorId": "StateOfCharge"
},
"variableAttribute": {
"value": "85",
"unit": "Percent"
}
},
{
"component": {
"name": "BatteryManagement"
},
"variable": {
"name": "BatteryVoltage"
},
"variableAttribute": {
"value": "48.2",
"unit": "V"
}
}
]1
}
4.1.2Heartbeat П(периолудичение статуса зарядки)
OCPP Message: GetTransactionStatus
{
"transactionId": "TXN_123456"
}
Response:
{
"ongoingIndicator": true,
"messagesInQueue": false
}
4.1.3 Получение местоположения
OCPP Message: GetLocationInfo
{
"requestId": 2
}
Response:
{
"location": {
"latitude": "55.7558",
"longitude": "37.6176",
"altitude": "156.0"
},
"timestamp"currentTime": "2025-07-12T10:30:00Z"
}
4.5.2 События Station → Backendтранзакций
4.2.1TransactionEvent Н(начало зарядки)
OCPP Message: TransactionEvent
{
"eventType": "Started",
"timestamp": "2025-07-12T10:30:00Z",
"triggerReason": "Authorized",
"seqNo": 0,
"transactionInfo": {
"transactionId": "TXN_123456"TXN_" + generateUniqueId(),
"chargingState": "Charging"
},
"evse": {
"id": 1,
"connectorId": 1
},
"idToken": {
"idToken": "RFID_12345",
"type": "ISO14443"
},
"meterValue": [
{
"timestamp": "2025-07-12T10:30:00Z",
"sampledValue": [
{
"value": "0.0",
"measurand": "Energy.Active.Import.Register",
"unit": "kWh"
}
]
}
]
}
4.2.2MeterValues Ошибка(во время зарядки каждые 60 сек)
OCPP
"evseId": {
Message1,
"meterValue": [
{
"timestamp": "2025-07-12T10:31:00Z",
"sampledValue": [
{
"value": "7.2",
"measurand": "Power.Active.Import",
"unit": "kW"
},
{
"value": "1.2",
"measurand": "Energy.Active.Import.Register",
"unit": "kWh"
},
{
"value": "230.5",
"measurand": "Voltage",
"unit": "V"
},
{
"value": "31.2",
"measurand": "Current.Import",
"unit": "A"
}
]
}
]
}
5.3 События системы
NotifyEvent (ошибки и важные события)
{
"generatedAt": "2025-07-12T10:35:00Z",
"eventData": [
{
"eventId": 1,
"timestamp": "2025-07-12T10:35:00Z",
"trigger": "Alerting",
"eventType": "FaultDetected",
"component": {
"name": "ChargingStation"
},
"variable": {
"name": "OverCurrentProtection"ConnectorLockFailure"
},
"eventNotificationType": "Alert"
}
]
}
4.2.36. ТеОбработка команд от CSMS
6.1 Команды управления
RemoteStartTransaction
sequenceDiagram
participant CSMS
participant CP as Charge Point
participant USER as User
CSMS->>CP: RemoteStartTransaction
Note over CSMS: {<br/>"idToken": {"idToken": "RFID_123", "type": "ISO14443"},<br/>"evseId": 1<br/>}
CP->>CP: Check EVSE Availability
alt EVSE Available
CP->>CSMS: RemoteStartTransaction Response (Accepted)
CP->>CSMS: StatusNotification (Reserved)
USER->>CP: Connect Cable
CP->>CSMS: StatusNotification (Preparing)
CP->>CSMS: TransactionEvent (Started)
else EVSE Occupied/Faulted
CP->>CSMS: RemoteStartTransaction Response (Rejected)
end
RemoteStopTransaction
sequenceDiagram
participant CSMS
participant CP as Charge Point
CSMS->>CP: RemoteStopTransaction
Note over CSMS: {"transactionId": "TXN_123456"}
CP->>CP: Find Active Transaction
alt Transaction Found
CP->>CSMS: RemoteStopTransaction Response (Accepted)
CP->>CP: Stop Power Delivery
CP->>CSMS: TransactionEvent (Ended)
CP->>CSMS: StatusNotification (Available)
else Transaction Not Found
CP->>CSMS: RemoteStopTransaction Response (Rejected)
end
6.2 Команды мониторинга
GetReport (запрос данных)
sequenceDiagram
participant CSMS
participant CP as Charge Point
participant USER as User
CSMS->>CP: RemoteStartTransaction
Note over CSMS: {<br/>"idToken": {"idToken": "RFID_123", "type": "ISO14443"},<br/>"evseId": 1<br/>}
CP->>CP: Check EVSE Availability
alt EVSE Available
CP->>CSMS: RemoteStartTransaction Response (Accepted)
CP->>CSMS: StatusNotification (Reserved)
USER->>CP: Connect Cable
CP->>CSMS: StatusNotification (Preparing)
CP->>CSMS: TransactionEvent (Started)
else EVSE Occupied/Faulted
CP->>CSMS: RemoteStartTransaction Response (Rejected)
end
sequenceDiagram
participant CSMS
participant CP as Charge Point
CSMS->>CP: RemoteStopTransaction
Note over CSMS: {"transactionId": "TXN_123456"}
CP->>CP: Find Active Transaction
alt Transaction Found
CP->>CSMS: RemoteStopTransaction Response (Accepted)
CP->>CP: Stop Power Delivery
CP->>CSMS: TransactionEvent (Ended)
CP->>CSMS: StatusNotification (Available)
else Transaction Not Found
CP->>CSMS: RemoteStopTransaction Response (Rejected)
end
Запрос от CSMS:
{
"requestId": 1,
"componentVariable": [
{
"component": {"name": "BatteryManagement"},
"variable": {"name": "StateOfCharge"}
}
]
}
Ваш ответ:
{
"status": "Accepted",
"statusInfo": {
"reasonCode": "NoError"
}
}
Затем отправить NotifyReport:
{
"requestId": 1,
"generatedAt": "2025-07-12T10:30:00Z",
"reportData": [
{
"component": {"name": "BatteryManagement"},
"variable": {"name": "StateOfCharge"},
"variableAttribute": {
"value": "85",
"unit": "Percent"
}
}
]
}
7. Мониторинг компонентов станции
7.1 Компоненты для мониторинга
graph TD
subgraph "Station Components"
BATTERY[Battery Management]
CONNECTOR[Charging Connector]
METER[Energy Meter]
TEMP[Temperature Sensors]
RFID[RFID Reader]
NETWORK[Network Module]
end
subgraph "Monitored Variables"
BATTERY --> B1[StateOfCharge]
BATTERY --> B2[BatteryVoltage]
BATTERY --> B3[BatteryTemperature]
CONNECTOR --> C1[ConnectorStatus]
CONNECTOR --> C2[LockStatus]
METER --> M1[Energy.Active.Import.Register]
METER --> M2[Power.Active.Import]
METER --> M3[Voltage]
METER --> M4[Current.Import]
TEMP --> T1[InletTemperature]
TEMP --> T2[OutletTemperature]
RFID --> R1[ReaderStatus]
NETWORK --> N1[SignalStrength]
NETWORK --> N2[NetworkStatus]
end
7.2 Периодическая отправка данных
MeterValues каждые 60 секунд во время зарядки С
OCPP Message:: MeterValues{flowchart "evseId":TD
1,START[Transaction "meterValue":Started] [--> {TIMER[Start "timestamp":60s "2025-07-12T10:30:00Z",Timer]
"sampledValue":TIMER [--> {READ[Read "value":All "7.2",Meters]
"measurand":READ "Power.Active.Import",--> "unit":SEND[Send "kW"MeterValues]
},SEND {--> "value":CHECK{Transaction "230.5",
"measurand": "Voltage",
"unit": "V"
},
{
"value": "31.2",
"measurand": "Current.Import",
"unit": "A"
},
{
"value": "45.2",
"measurand": "Temperature",
"unit": "Celsius"
Active?}
]CHECK }-->|Yes| ]TIMER
}CHECK -->|No| END[Stop Reporting]
5.8. REST API дЛокальная авнешнторихзация систем(Offline Mode)5.8.1 ЭндпКэш авторинтызацииуflowchart TD
RFID[RFID Scanned] --> CACHE{In Local Cache?}
CACHE -->|Yes| AUTH[Authorize Locally]
CACHE -->|No| ONLINE{CSMS Online?}
ONLINE -->|Yes| REMOTE[Request Remote Auth]
ONLINE -->|No| REJECT[Reject Authorization]
REMOTE --> RESPONSE{Authorized?}
RESPONSE -->|Yes| CACHE_ADD[Add to Local Cache]
RESPONSE -->|No| REJECT
CACHE_ADD --> AUTH
AUTH --> START[Start Transaction]
8.2 Управлени
яе станциякэшемиGET /api/v1/stations # писотрук всех станций
GET /api/v1/stations/{id} # Информация о станции
GET /api/v1/stations/{id}/status # Текущий статус станции
GET /api/v1/stations/{id}/battery # Состояние батареи
GET /api/v1/stations/{id}/location # Местоположение
POST /api/v1/stations/{id}/start # Запуск зарядки
POST /api/v1/stations/{id}/stop # Остановка зарядкписи GETв /api/v1/stations/{id}/transactions # История транзакций
GET /api/v1/stations/{id}/events # События станции
5.2 WebSocket для real-time событий
ws://backend.com/api/v1/stations/{id}/events
Примэшер сообщения::{
"stationId"idToken": "STATION_001"RFID_12345",
"timestamp"type": "ISO14443",
"status": "Accepted",
"expiryDate": "2025-07-12T10:30:00Z"12-31T23:59:59Z",
"eventType"groupIdToken": "ChargingStarted",
"data": {
"transactionId": "TXN_123456",
"connectorId": 1,
"power": 7.2,
"vehicleId": "RFID_CARD_123"
}GROUP_001"
}
6. Схема состояний зарядной станции
stateDiagram-v2
[*] --> Offline
Offline --> Available: BootNotification
Available --> Preparing: Cable Connected
Preparing --> Charging: Authorization Success
Preparing --> Available: Authorization Failed
Charging --> SuspendedEVSE: Station Fault
Charging --> SuspendedEV: Vehicle Fault
Charging --> Finishing: Charging Complete
SuspendedEVSE --> Charging: Fault Cleared
SuspendedEV --> Charging: Vehicle Resumed
Finishing --> Available: Cable Disconnected
Available --> Unavailable: Maintenance Mode
Unavailable --> Available: Maintenance Complete
Available --> Faulted: Critical Error
Faulted --> Available: Error Resolved
Faulted --> Offline: System Restart Required
7.9. Обработка ошибок и вдиагносстикановление7.9.1 Типы ошибок и реакцияflowchart 9.2 Self-Diagnostics
КПериоммундические проверки кацждые 5 мионут:flowchart TD
START[Diagnostic Timer] --> BATTERY[Check Battery Status]
BATTERY --> CONNECTOR[Check Connector Status]
CONNECTOR --> METER[Check Meter Communication]
METER --> TEMP[Check Temperature Sensors]
TEMP --> NETWORK[Check Network Signal]
NETWORK --> RFID[Check RFID Reader]
RFID --> RESULT{All OK?}
RESULT -->|Yes| SCHEDULE[Schedule Next Check]
RESULT -->|No| ALERT[Send Alert to CSMS]
ALERT --> SCHEDULE
SCHEDULE --> START
10. Схема данны
ех ошибки
Потердлясвязилокальногос backendTimeout сообщхраненийя
Ош10.1 Структура данных
erDiagram TRANSACTIONS { string transaction_id PK datetime start_time datetime end_time string rfid_token float start_energy float end_energy string status json meter_values } AUTH_CACHE { string rfid_token PK string status datetime expiry_date string group_id } ERROR_LOG { int id PK datetime timestamp string error_type string component string description string status } CONFIG { string key PK string value datetime updated_at }11. При
бкмеры реалиаутентификзации
Аппаратные ошибки
НеисправностьконнектораПрлючевышх функций11.1 OCPP Message Handler
// Псение температурыПроблемы с электропитанием
Программные ошибки
Ошибки протвдокод дла OCPPНеверные параметры конфигурацииОшибкия обработкитранзакций
7.2 Стратегии восстановления
flowchart TD
ERROR[Ошибка] --> CHECK{Тип ошибки}
CHECK -->|Коммуникация| RECONNECT[Перепходключенящие]
CHECK -->|Аппаратная| HARDWARE[Диагностика]
CHECK -->|Программная| SOFTWARE[Restart Service]
RECONNECT --> BACKOFF[Exponential Backoff]
BACKOFF --> SUCCESS{Успешно?}
SUCCESS -->|Да| RESUME[Возобновление работы]
SUCCESS -->|Нет| OFFLINE[Offline режим]
HARDWARE --> REPAIR{Можно починить?}
REPAIR -->|Да| FIX[Автоматическое исправление]
REPAIR -->|Нет| MAINTENANCE[Режим обслуживания]
SOFTWARE --> RESTART[Перезапуск]
RESTART --> RESUME
FIX --> RESUME
8. Безопасность
8.1 Аутентификация и авторизация
Certificate-based authenticationдля OCPP соединенийJWT токеныдля REST APIRole-based access control(RBAC)API Rate limiting
8.2 Шифрование
TLS 1.3для всехсоединенийEnd-to-end encryptionдля критичных данныхCertificate pinningдля mobile приложений
9. Мониторинг и логирование
9.1 Метрики мониторинга
Availability зарядных станцийВремя отклика OCPPсообщенийКоличествоfunctionактивныхhandleOCPPMessage(messageType,сессийmessageId,зарядкиpayload) Энергопотребление{иswitch(messageType)эффективность{
Частотаcaseошибок'RemoteStartTransaction':иreturnтипыhandleRemoteStart(payload);неисправностейcase
9.2return ЛогированиеhandleRemoteStop(payload);
событий
case - 'GetReport':
ВсеreturnOCPPhandleGetReport(payload);сообщенияcase(request/response)'Reset':
СистемныеreturnсобытияhandleReset(payload);иdefault:ошибкиreturn Транзакции{зарядкиstatus: Изменения'NotSupported',конфигурацииstatusInfo: События{безопасностиreasonCode:
10.}
Требования};
к}
реализации
}
10.1 Backend Requirements
Технологии:
WebSocket server (Node.js/Python/Java)REST API frameworkБаза данных (PostgreSQL/MongoDB)Message queue (Redis/RabbitMQ)Monitoring (Prometheus/Grafana)
Функциональность:
OCPP 2.0.1 protocol handlerStation management interfaceReal-time monitoring dashboardBilling integrationAnalytics and reporting
10.2 Station Requirements
Технологии:
Embedded Linux/RTOSOCPP 2.0.1 client library4G/5G modem with static IPLocal storage for offline modeSecure element for certificates
Функциональность:
OCPP message handlingLocal authorization cacheMeter data collectionHardware diagnosticsFirmware update support
11. Тестирование
11.1 Unit тесты
OCPP message parsing/generationBusiness logic компонентовAPI endpoints
11.2 IntegrationState тестыMachine Implementation
// End-to-endПсевдокод OCPPдля flows state Databasemachine
operations class ExternalChargingStationStateMachine system{
integration constructor() {
11.3this.currentState Load= тесты
'Available';
this.allowedTransitions Concurrent= charging{
sessions 'Available': High['Preparing', message'Reserved', volume 'Unavailable'],
Network'Preparing': failure['Available', scenarios 'Charging'],
'Charging': ['Finishing', 'SuspendedEVSE', 'SuspendedEV'],
'Finishing': ['Available']
};
}
transitionTo(newState, reason) {
if (this.allowedTransitions[this.currentState].includes(newState)) {
this.currentState = newState;
this.sendStatusNotification(newState, reason);
return true;
}
return false;
}
}
Данная спецификация оспредновазначена для разработчиков ПО заряднаых станций и содержит все необходимые требования для ртеализации OCPP 2.0.1 кли лучших прентактиках индустрии EV charging infrastructure..