⚡ OCPP Протоколы¶
Open Charge Point Protocol — коммуникация с зарядными станциями
Поддержка OCPP 1.6J (текущие станции) и OCPP 2.0.1 (новые станции)
21Хендлеров v1.6
9Хендлеров v2.0.1
12/12E2E тестов pass
Сравнение версий¶
| Характеристика | OCPP 1.6J | OCPP 2.0.1 |
|---|---|---|
| Статус | Основная (большинство станций) | Для новых станций |
| Транспорт | WebSocket (JSON) | WebSocket (JSON) |
| Порт | 9210 | 9211 |
| Авторизация | idTag (RFID/app) | idToken (расширенный) |
| Безопасность | Basic Auth | TLS + Certificates |
| Мониторинг | MeterValues | MeterValues + Variables |
| Smart Charging | Профили зарядки | Расширенные профили |
| Firmware | UpdateFirmware | Signed updates |
| Хендлеров | 21 | 9 (реализованных) |
OCPP 1.6J — 21 хендлер¶
Station → Server (входящие)¶
| # | Хендлер | Описание | Статус |
|---|---|---|---|
| 1 | BootNotification | Станция загрузилась, регистрация | ✅ |
| 2 | Heartbeat | Пульс каждые 30 сек | ✅ |
| 3 | StatusNotification | Изменение статуса коннектора | ✅ |
| 4 | Authorize | Запрос авторизации idTag | ✅ |
| 5 | StartTransaction | Начало зарядной сессии | ✅ |
| 6 | StopTransaction | Завершение зарядной сессии | ✅ |
| 7 | MeterValues | Данные счётчика (каждые 15 сек) | ✅ |
| 8 | DataTransfer | Произвольные данные | ✅ |
| 9 | DiagnosticsStatusNotification | Статус диагностики | ✅ |
| 10 | FirmwareStatusNotification | Статус обновления firmware | ✅ |
Server → Station (исходящие)¶
| # | Хендлер | Описание | Статус |
|---|---|---|---|
| 11 | RemoteStartTransaction | Удалённый старт зарядки | ✅ |
| 12 | RemoteStopTransaction | Удалённый стоп зарядки | ✅ |
| 13 | Reset | Перезагрузка станции (Soft/Hard) | ✅ |
| 14 | ChangeAvailability | Включить/выключить коннектор | ✅ |
| 15 | UnlockConnector | Разблокировать коннектор | ✅ |
| 16 | GetConfiguration | Получить конфигурацию станции | ✅ |
| 17 | ChangeConfiguration | Изменить параметр станции | ✅ |
| 18 | ClearCache | Очистить кэш авторизации | ✅ |
| 19 | TriggerMessage | Запросить сообщение от станции | ✅ |
| 20 | SetChargingProfile | Установить профиль зарядки | ✅ |
| 21 | GetDiagnostics | Запросить диагностику | ✅ |
OCPP 2.0.1 — 9 хендлеров¶
| # | Хендлер | Описание | Статус |
|---|---|---|---|
| 1 | BootNotification | Регистрация с расширенными данными | ✅ |
| 2 | Heartbeat | Пульс станции | ✅ |
| 3 | StatusNotification | Статус коннектора | ✅ |
| 4 | TransactionEvent | Единый хендлер транзакций | ✅ |
| 5 | MeterValues | Расширенные данные счётчика | ✅ |
| 6 | Authorize | idToken авторизация | ✅ |
| 7 | RequestStartTransaction | Удалённый старт | ✅ |
| 8 | RequestStopTransaction | Удалённый стоп | ✅ |
| 9 | SetVariables | Установка переменных станции | ✅ |
Процесс зарядной сессии¶
sequenceDiagram
participant C as 📱 Клиент (PWA)
participant A as 🖥 API Server
participant O as ⚡ OCPP Server
participant S as 🔌 Станция
participant R as 🔴 Redis
Note over C,S: 1. Инициация зарядки
C->>A: POST /charging/start
A->>A: Проверка баланса
A->>A: Резервирование средств (95% лимита)
A->>O: RemoteStartTransaction(idTag, connectorId)
O->>S: RemoteStartTransaction.req
S-->>O: RemoteStartTransaction.conf (Accepted)
Note over C,S: 2. Начало транзакции
S->>O: StartTransaction(idTag, meterStart)
O->>A: Создание charging_session
O->>R: PUB session:started
R-->>C: WS: {status: charging}
Note over C,S: 3. Мониторинг (каждые 15 сек)
loop MeterValues
S->>O: MeterValues(energy, power, current, voltage)
O->>R: PUB meter:update
R-->>C: WS: {kWh, power, cost, duration}
O->>O: Проверка лимита (95% → авто-стоп)
end
Note over C,S: 4. Завершение
C->>A: POST /charging/stop
A->>O: RemoteStopTransaction
O->>S: RemoteStopTransaction.req
S-->>O: StopTransaction(meterStop, reason)
O->>A: Финализация: списание, расчёт
A-->>C: Чек (PDF) + Push уведомление
E2E Test Results¶
12/12 шагов пройдено — 2026-02-19
| # | Шаг | Результат |
|---|---|---|
| 1 | Подключение WebSocket | ✅ Pass |
| 2 | BootNotification | ✅ Pass |
| 3 | Heartbeat | ✅ Pass |
| 4 | StatusNotification (Available) | ✅ Pass |
| 5 | Authorize (idTag) | ✅ Pass |
| 6 | RemoteStartTransaction | ✅ Pass |
| 7 | StartTransaction | ✅ Pass |
| 8 | MeterValues (3 цикла) | ✅ Pass |
| 9 | RemoteStopTransaction | ✅ Pass |
| 10 | StopTransaction | ✅ Pass |
| 11 | StatusNotification (Available) | ✅ Pass |
| 12 | Disconnect | ✅ Pass |
Предупреждения (3)¶
W1 — Charge24 API
Нет документации по Charge24 API для роуминга. Нужен контакт от Red Petroleum.
W2 — OCPP 2.0.1 Smart Charging
Smart Charging профили для v2.0.1 реализованы базово. Полная поддержка ISO 15118 — в следующей фазе.
W3 — Firmware Update
FirmwareUpdate тестировался только на симуляторе. Нужен тест на реальной станции.