Skip to main content

Спецификация OCPP модуля для зарядных станций

1. Обзор задачи

1.1 Архитектура взаимодействия

graph TB
    subgraph "Backend Infrastructure"
        CSMS[Central System Management Service]
    end
    
    subgraph "EV Charging Station"
        subgraph "Ваша зона ответственности"
            OCPP[OCPP Communication Module]
            WS[WebSocket Client]
            PARSER[Message Parser/Generator]
            QUEUE[Message Queue]
        end
        
        subgraph "Station System (существующее)"
            STATION[Station Controller]
            HARDWARE[Hardware Controllers]
        end
    end
    
    CSMS <--> WS
    WS <--> OCPP
    OCPP <--> PARSER
    OCPP <--> QUEUE
    OCPP <--> STATION
    STATION <--> HARDWARE

1.2 Задача модуля

Основная функция: Обеспечить двустороннюю связь между мобильной зарядной станцией и CSMS по протоколу OCPP 2.0.1

Контекст использования: Мобильные зарядные станции, которые техник привозит к клиенту или на базу для подзарядки. Управление зарядкой через пульт станции или мобильное приложение CSMS.

Интерфейсы:

  • Внешний: WebSocket соединение с CSMS
  • Внутренний: API для интеграции с системой станции

1.3 Таблица методов OCPP модуля

Методы для реализации на стороне станции

МетодОписаниеКогда вызывается
initialize(config)Инициализация модуля с конфигурациейПри запуске системы
connect()Установка соединения с CSMSПосле инициализации
disconnect()Разрыв соединения с CSMSПри выключении/обслуживании
sendStationEvent(event)Отправка события от станцииПри изменении состояния станции
sendMeterData(data)Отправка показаний счетчиковКаждые 10 сек во время зарядки
sendStatusUpdate(status)Отправка обновления статусаПри смене состояния станции
handleStartCharging(params)Обработка команды начала зарядкиПо команде от CSMS
handleStopCharging(transactionId)Обработка команды остановки зарядкиПо команде от CSMS
handleDataRequest(requestType)Обработка запроса данныхПо команде от CSMS
getStationStatus()Получение текущего статуса станцииПо запросу от CSMS
getBatteryData()Получение данных о батарее станцииПо запросу от CSMS
getLocationData()Получение GPS координат станцииПо запросу от CSMS

Методы для реализации на стороне CSMS

МетодОписаниеКогда вызывается
handleBootNotification(stationData)Обработка уведомления о запуске станцииПри подключении станции
handleStatusNotification(status)Обработка уведомления о статусеПри изменении статуса станции
handleTransactionEvent(event)Обработка событий транзакцииПри начале/окончании зарядки
handleMeterValues(values)Обработка показаний счетчиковКаждые 10 сек во время зарядки
handleNotifyEvent(event)Обработка уведомлений об ошибкахПри возникновении ошибок
sendRemoteStart(stationId, params)Отправка команды удаленного стартаПо запросу пользователя
sendRemoteStop(transactionId)Отправка команды удаленной остановкиПо запросу пользователя
requestStationData(stationId, dataType)Запрос данных станцииПо запросу пользователя
updateStationConfig(stationId, config)Обновление конфигурации станцииПри изменении настроек

2. Состояния мобильной зарядной станции

2.1 Основные состояния станции

stateDiagram-v2
    [*] --> Standby
    Standby --> CustomerCharging: Техник начал зарядку клиента
    Standby --> StationCharging: Техник начал зарядку станции
    CustomerCharging --> Standby: Зарядка клиента завершена
    StationCharging --> Standby: Зарядка станции завершена
    
    note right of Standby
        Станция включена
        Зарядка не происходит
        Готова к работе
    end note
    
    note right of CustomerCharging
        Идёт зарядка автомобиля клиента
        Данные каждые 10 секунд
    end note
    
    note right of StationCharging
        Идёт зарядка самой станции
        Данные каждые 10 секунд
    end note

2.2 Данные по состояниям

2.2.1 Состояние "Standby" (Станция включена, зарядка не происходит)

Данные для отправки в CSMS:

{
  "stationStatus": "Available",
  "batteryLevel": 75,
  "batteryVoltage": 48.2,
  "batteryTemperature": 25.5,
  "location": {
    "latitude": 55.7558,
    "longitude": 37.6176,
    "accuracy": 10
  },
  "signalStrength": -65,
  "internalTemperature": 22.0,
  "outputVoltage": 0.0,
  "outputCurrent": 0.0,
  "outputPower": 0.0,
  "connectorStatus": "Available",
  "errorCodes": [],
  "lastMaintenanceDate": "2025-07-10T09:00:00Z"
}

Периодичность отправки: При изменении состояния + по запросу от CSMS

2.2.2 Состояние "CustomerCharging" (Идёт зарядка автомобиля клиента)

Данные для отправки в CSMS каждые 10 секунд:

{
  "stationStatus": "Charging",
  "transactionId": "TXN_123456",
  "transactionType": "customer_charging",
  "chargingStartTime": "2025-07-12T10:30:00Z",
  "chargingDuration": 1800,
  "energyDelivered": 5.2,
  "currentPower": 7200,
  "outputVoltage": 230.5,
  "outputCurrent": 31.2,
  "vehicleBatteryLevel": 65,
  "estimatedTimeToComplete": 2400,
  "batteryLevel": 68,
  "batteryVoltage": 47.8,
  "batteryTemperature": 28.0,
  "location": {
    "latitude": 55.7558,
    "longitude": 37.6176,
    "accuracy": 10
  },
  "signalStrength": -68,
  "internalTemperature": 32.0,
  "connectorStatus": "Occupied",
  "connectorTemperature": 35.0,
  "errorCodes": [],
  "chargingEfficiency": 92.5
}

Периодичность отправки: Каждые 10 секунд во время зарядки

2.2.3 Состояние "StationCharging" (Идёт зарядка самой станции)

Данные для отправки в CSMS каждые 10 секунд:

{
  "stationStatus": "SelfCharging", 
  "transactionId": "TXN_SELF_789",
  "transactionType": "station_charging",
  "chargingStartTime": "2025-07-12T14:00:00Z",
  "chargingDuration": 3600,
  "energyReceived": 15.8,
  "inputPower": 5000,
  "inputVoltage": 220.0,
  "inputCurrent": 22.7,
  "batteryLevel": 85,
  "batteryVoltage": 49.2,
  "batteryTemperature": 30.0,
  "estimatedTimeToComplete": 1800,
  "location": {
    "latitude": 55.7520,
    "longitude": 37.6140,
    "accuracy": 5
  },
  "signalStrength": -72,
  "internalTemperature": 28.0,
  "connectorStatus": "SelfCharging",
  "chargingSource": "grid",
  "errorCodes": [],
  "chargingEfficiency": 94.2
}

Периодичность отправки: Каждые 10 секунд во время зарядки

3. Интерфейс OCPP модуля

2.1 API для интеграции с системой станции

flowchart LR
    subgraph "Station System"
        CONTROLLER[Station Controller]
    end
    
    subgraph "OCPP Module API"
        direction TB
        IN[Incoming Events]
        OUT[Outgoing Commands]
        STATUS[Status Queries]
        CONFIG[Configuration]
    end
    
    subgraph "CSMS"
        BACKEND[Backend Server]
    end
    
    CONTROLLER -->|Events| IN
    OUT -->|Commands| CONTROLLER
    CONTROLLER -->|Query| STATUS
    CONTROLLER -->|Setup| CONFIG
    
    IN -.->|OCPP Messages| BACKEND
    BACKEND -.->|OCPP Messages| OUT

2.2 Входящие события от станции

{
  "eventType": "station_event",
  "events": [
    {
      "type": "cable_connected",
      "evseId": 1,
      "connectorId": 1,
      "timestamp": "2025-07-12T10:30:00Z"
    },
    {
      "type": "rfid_scanned", 
      "rfidToken": "RFID_12345",
      "evseId": 1,
      "timestamp": "2025-07-12T10:30:00Z"
    },
    {
      "type": "charging_started",
      "transactionId": "TXN_123",
      "evseId": 1,
      "connectorId": 1,
      "timestamp": "2025-07-12T10:30:00Z"
    },
    {
      "type": "meter_reading",
      "evseId": 1,
      "readings": {
        "energy": 5.2,
        "power": 7.2,
        "voltage": 230.5,
        "current": 31.2
      },
      "timestamp": "2025-07-12T10:31:00Z"
    },
    {
      "type": "charging_stopped",
      "transactionId": "TXN_123", 
      "reason": "user_stopped",
      "finalEnergy": 8.5,
      "timestamp": "2025-07-12T10:45:00Z"
    },
    {
      "type": "error_detected",
      "errorCode": "connector_lock_failure",
      "severity": "alert",
      "component": "charging_connector",
      "timestamp": "2025-07-12T10:35:00Z"
    },
    {
      "type": "status_changed",
      "evseId": 1,
      "connectorId": 1,
      "newStatus": "available",
      "timestamp": "2025-07-12T10:30:00Z"
    }
  ]
}

2.3 Исходящие команды к станции

{
  "commandType": "csms_command",
  "commands": [
    {
      "type": "authorize_user",
      "rfidToken": "RFID_12345",
      "authStatus": "accepted",
      "expiryDate": "2025-12-31T23:59:59Z"
    },
    {
      "type": "start_charging",
      "evseId": 1,
      "rfidToken": "RFID_12345",
      "chargingProfile": {
        "maxPower": 7200,
        "phases": 1
      }
    },
    {
      "type": "stop_charging",
      "transactionId": "TXN_123",
      "reason": "remote_stop"
    },
    {
      "type": "request_data",
      "dataType": "battery_status",
      "requestId": "REQ_001"
    },
    {
      "type": "update_configuration",
      "parameters": {
        "heartbeatInterval": 300,
        "meterValueSampleInterval": 60
      }
    },
    {
      "type": "reset_station",
      "resetType": "soft"
    }
  ]
}

3. OCPP Communication Flow

3.1 Установка соединения

sequenceDiagram
    participant Station as Station System
    participant OCPP as OCPP Module
    participant CSMS as CSMS Server
    
    Station->>OCPP: Initialize Connection
    Note over OCPP: Config: server URL, API key, station ID
    
    OCPP->>CSMS: WebSocket Connect
    Note over OCPP,CSMS: wss://csms.server.com/ocpp/{stationId}<br/>Authorization: Bearer {apiKey}
    
    CSMS->>OCPP: Connection Accepted
    
    OCPP->>CSMS: BootNotification
    Note over OCPP: Station info, firmware version
    
    CSMS->>OCPP: BootNotification Response
    Note over CSMS: Status: Accepted, Heartbeat interval
    
    OCPP->>Station: Connection Established
    
    loop Heartbeat
        OCPP->>CSMS: Heartbeat (every interval)
        CSMS->>OCPP: Heartbeat Response
    end

3.4.2 Обработка событий по состояниям станции

4.2.1 Состояние "Standby" (Станция готова к работе)

sequenceDiagram
    participant Technician as Техник
    participant Station as Station System
    participant OCPP as OCPP Module  
    participant CSMS as CSMS Server
    
    Note over Technician,CSMS: Станция включена, ожидает команд
    Station->>OCPP: status_changed event (Available)
    OCPP->>CSMS: StatusNotification (Available)
    CSMS->>OCPP: StatusNotification Response
    
    Note over Technician,CSMS: Техник подключает кабель к автомобилю клиента
    Technician->>Station: Cable connected to customer vehicle
    Station->>OCPP: cable_connected event (customer)
    OCPP->>CSMS: StatusNotification (Preparing)
    CSMS->>OCPP: StatusNotification Response
    
    Note over Technician,CSMS: Техник запускает зарядку через пульт
    Technician->>Station: Start customer charging
    Station->>OCPP: charging_started event (customer)
    OCPP->>CSMS: TransactionEvent (Started, customer_charging)
    CSMS->>OCPP: TransactionEvent Response
    
    Note over Technician,CSMS: Альтернатива: запуск через CSMS
    CSMS->>OCPP: RemoteStartTransaction
    OCPP->>Station: start_charging command
    Station->>OCPP: Command accepted
    OCPP->>CSMS: RemoteStartTransaction Response (Accepted)

4.2.2 Состояние "CustomerCharging" (Зарядка клиента)

sequenceDiagram
    participant Station as Station System
    participant OCPP as OCPP Module  
    participant CSMS as CSMS Server
    
    Note over Station,CSMS: ПользовЗатель порядключила клиентаб активна
    
    loop Каждыель 10 секунд
        Station->>OCPP: cable_connectedmeter_reading event (customer data)
        OCPP->>CSMS: MeterValues (customer charging data)
        Note over OCPP: Включает: energyDelivered, currentPower,<br/>outputVoltage, vehicleBatteryLevel,<br/>batteryLevel станции, location
        CSMS->>OCPP: MeterValues Response
    end
    
    Note over Station,CSMS: Обработка событий во время зарядки
    alt Ошибка зарядки
        Station->>OCPP: error_detected event
        OCPP->>CSMS: NotifyEvent (Charging error)
        OCPP->>CSMS: StatusNotification (Preparing)SuspendedEVSE)
    else Зарядка завершена техником
        Station->>OCPP: charging_stopped event (user_stopped)
        OCPP->>CSMS: TransactionEvent (Ended)
        OCPP->>CSMS: StatusNotification (Available)
    else Удаленная остановка
        CSMS->>OCPP: StatusNotificationRemoteStopTransaction
        ResponseOCPP->>Station: Notestop_charging over Station,CSMS: Пользователь приложил RFIDcommand
        Station->>OCPP: rfid_scannedcharging_stopped event (remote_stopped)
        OCPP->>CSMS: Authorize
    CSMS->>OCPP: Authorize ResponseTransactionEvent (Accepted)Ended)
    OCPP->>Station:end
authorize_user
command

4.2.3 Состояние "StationCharging" (Зарядка станции)

sequenceDiagram
    participant Technician as Техник
    participant Station as Station System
    participant OCPP as OCPP Module  
    participant CSMS as CSMS Server
    
    Note over Station,Technician,CSMS: СТехник подключает станцию к источнику питания
    началаTechnician->>Station: зарядкуConnect to charging source
    Station->>OCPP: charging_startedstation_charging_started event
    OCPP->>CSMS: TransactionEvent (Started)Started, station_charging)
    CSMS->>OCPP: TransactionEvent Response
    OCPP->>CSMS: StatusNotification (SelfCharging)
    
    Note over Station,CSMS: Периодичцесс зарядкие показстанция счетчика
    loop EveryКаждые 6010 secondsсекунд
        Station->>OCPP: meter_reading event (station data)
        OCPP->>CSMS: MeterValues (station charging data)
        Note over OCPP: Включает: energyReceived, inputPower,<br/>batteryLevel, batteryTemperature,<br/>estimatedTimeToComplete, location
        CSMS->>OCPP: MeterValues Response
    end
    
    Note over Station,CSMS: Завершение зарядки станции
    alt Батарея полностью заряжена
        Station->>OCPP: station_charging_complete event
        OCPP->>CSMS: TransactionEvent (Ended, BatteryFull)
        OCPP->>CSMS: StatusNotification (Available)
    else Техник остановил зарядку
        Technician->>Station: Stop station charging
        Station->>OCPP: station_charging_stopped event
        OCPP->>CSMS: TransactionEvent (Ended, UserStopped)
        OCPP->>CSMS: StatusNotification (Available)
    else Ошибка зарядки
        Station->>OCPP: error_detected event (charging_fault)
        OCPP->>CSMS: NotifyEvent (Station charging error)
        OCPP->>CSMS: StatusNotification (Faulted)
    end

3.3 Обработка команд от CSMS

sequenceDiagram
    participant CSMS as CSMS Server
    participant OCPP as OCPP Module
    participant Station as Station System
    
    Note over CSMS,Station: Удаленный запуск зарядки
    CSMS->>OCPP: RemoteStartTransaction
    OCPP->>Station: start_charging command
    Station->>OCPP: Command accepted
    OCPP->>CSMS: RemoteStartTransaction Response (Accepted)
    
    Note over CSMS,Station: Запрос данных о батарее
    CSMS->>OCPP: GetReport (Battery)
    OCPP->>Station: request_data command
    Station->>OCPP: Data response
    OCPP->>CSMS: GetReport Response
    OCPP->>CSMS: NotifyReport (Battery data)

4. Детальная спецификация OCPP сообщений

4.1 Исходящие сообщения (Station → CSMS)

BootNotification (при запуске)

{
  "reason": "PowerUp",
  "chargingStation": {
    "model": "получить_от_station_system",
    "vendorName": "получить_от_station_system", 
    "firmwareVersion": "получить_от_station_system",
    "serialNumber": "получить_от_station_system"
  }
}

StatusNotification (при изменении статуса)

{
  "timestamp": "получить_от_station_system",
  "connectorStatus": "Available|Preparing|Charging|SuspendedEVSE|SuspendedEV|Finishing|Reserved|Unavailable|Faulted",
  "evseId": "получить_от_station_system",
  "connectorId": "получить_от_station_system"
}

TransactionEvent (события транзакции)

{
  "eventType": "Started|Updated|Ended", 
  "timestamp": "получить_от_station_system",
  "triggerReason": "Authorized|CablePluggedIn|ChargingStateChanged|ChargingRateChanged|ChargingStateChanged|Deauthorized|EnergyLimitReached|EVCommunicationLost|EVConnectTimeout|MeterValueClock|MeterValuePeriodic|TimeLimitReached|Trigger|UnlockCommand|StopAuthorized|EVDeparted|EVDetected|RemoteStop|RemoteStart|AbnormalCondition|SignedDataReceived|ResetCommand"TechnicianStart|TechnicianStop|StationChargingStart|StationChargingComplete",
  "seqNo": "incremental_number",
  "transactionInfo": {
    "transactionId": "получить_от_station_system",
    "chargingState": "Charging|EVConnected|SuspendedEV|SuspendedEVSE|Idle",
    "chargingType": "customer_charging|station_charging"
  },
  "evse": {
    "id": "получить_от_station_system",
    "connectorId": "получить_от_station_system"
  },
  "idToken"customData": {
    "idToken"technicianId": "получить_от_station_system",
    "type"customerInfo": "ISO14443|ISO15693|KeyCode|Local|MacAddress|NoAuthorization"получить_от_station_system_если_зарядка_клиента",
    "chargingLocation": "получить_от_station_system"
  },
  "meterValue": [
    {
      "timestamp": "получить_от_station_system",
      "sampledValue": [
        {
          "value": "получить_от_station_system",
          "measurand": "Energy.Active.Import.Register|Power.Active.Import|Voltage|Current.Import|Temperature",
          "unit": "kWh|kW|V|A|Celsius"
        }
      ]
    }
  ]
}

MeterValues (телеметрия каждые 10 секунд во время зарядки)

{
  "evseId": "получить_от_station_system",
  "meterValue": [
    {
      "timestamp": "получить_от_station_system",
      "sampledValue": [
        {
          "value": "получить_от_station_system",
          "measurand": "Energy.Active.Import.Register|Power.Active.Import|Voltage|Current.Import|Temperature",
          "unit": "kWh|kW|V|A|Celsius"
        }
      ]
    }
  ]
}

NotifyEvent (ошибки и события)

{
  "generatedAt": "текущее_время",
  "eventData": [
    {
      "eventId": "уникальный_id",
      "timestamp": "получить_от_station_system",
      "trigger": "Alerting|Delta|Periodic",
      "eventType": "получить_от_station_system",
      "component": {
        "name": "получить_от_station_system"
      },
      "variable": {
        "name": "получить_от_station_system"
      },
      "eventNotificationType": "HardWiredNotification|HardWiredMonitor|PreconfiguredMonitor|CustomMonitor"
    }
  ]
}

Authorize (авторизация)

{
  "idToken": {
    "idToken": "получить_от_station_system",
    "type": "ISO14443|ISO15693|KeyCode|Local|MacAddress|NoAuthorization"
  },
  "evseId": "получить_от_station_system"
}

4.2 Входящие сообщения (CSMS → Station)

RemoteStartTransaction

Получили от CSMS:

{
  "idToken": {
    "idToken": "RFID_12345",
    "type": "ISO14443"
  },
  "evseId": 1,
  "chargingType": "customer_charging|station_charging",
  "chargingProfile": {
    "id": 1,
    "stackLevel": 0,
    "chargingProfilePurpose": "TxProfile",
    "chargingProfileKind": "Absolute",
    "chargingSchedule": [
      {
        "id": 1,
        "startSchedule": "2025-07-12T10:30:00Z",
        "duration": 3600,
        "chargingRateUnit": "W",
        "chargingSchedulePeriod": [
          {
            "startPeriod": 0,
            "limit": 7200
          }
        ]
      }
    ]
  },
  "customData": {
    "customerInfo": {
      "customerId": "CUST_001",
      "vehicleType": "Tesla Model 3"
    },
    "technicianId": "TECH_005",
    "estimatedDuration": 3600
  }
}

Отправить в station_system:

{
  "type": "start_charging"start_customer_charging",
  "evseId": 1,
  "rfidToken": "RFID_12345",
  "maxPower": 7200,
  "duration": 36003600,
  "customerInfo": {
    "customerId": "CUST_001",
    "vehicleType": "Tesla Model 3"
  },
  "technicianId": "TECH_005"
}

Ответ CSMS:

{
  "status": "Accepted|Rejected",
  "statusInfo": {
    "reasonCode": "NoError|Busy|Occupied|Faulted"
  }
}

RemoteStopTransaction

Получили от CSMS:

{
  "transactionId": "TXN_123456"
}

Отправить в station_system:

{
  "type": "stop_charging",
  "transactionId": "TXN_123456",
  "reason": "remote_stop"
}

GetReport

Получили от CSMS:

{
  "requestId": 1,
  "componentVariable": [
    {
      "component": {"name": "BatteryManagement"},
      "variable": {"name": "StateOfCharge"}
    }
  ]
}

Отправить в station_system:

{
  "type": "request_data",
  "requestId": 1,
  "dataType": "battery_status"
}

Получить от station_system:

{
  "requestId": 1,
  "batteryLevel": 85,
  "batteryVoltage": 48.2,
  "batteryTemperature": 25.5
}

Отправить CSMS (NotifyReport):

{
  "requestId": 1,
  "generatedAt": "текущее_время",
  "reportData": [
    {
      "component": {"name": "BatteryManagement"},
      "variable": {"name": "StateOfCharge"},
      "variableAttribute": {
        "value": "85",
        "unit": "Percent"
      }
    }
  ]
}

5. Обработка ошибок и переподключение

5.1 Стратегия переподключения

flowchart TD
    DISCONNECT[Connection Lost] --> LOG[Log Disconnect Event]
    LOG --> QUEUE[Queue Outgoing Messages]
    QUEUE --> WAIT[Wait Period]
    WAIT --> RETRY[Attempt Reconnection]
    RETRY --> SUCCESS{Connected?}
    
    SUCCESS -->|Yes| BOOT[Send BootNotification]
    SUCCESS -->|No| BACKOFF[Increase Wait Period]
    
    BACKOFF --> MAXWAIT{Max Wait Reached?}
    MAXWAIT -->|No| WAIT
    MAXWAIT -->|Yes| RESET[Reset Wait Period]
    RESET --> WAIT
    
    BOOT --> SYNC[Send Queued Messages]
    SYNC --> OPERATIONAL[Operational Mode]

5.2 Обработка таймаутов

sequenceDiagram
    participant OCPP as OCPP Module
    participant CSMS as CSMS Server
    participant Station as Station System
    
    OCPP->>CSMS: Request Message
    Note over OCPP: Start 30s timeout timer
    
    alt Response received
        CSMS->>OCPP: Response Message
        Note over OCPP: Clear timeout, process response
    else Timeout occurred
        Note over OCPP: 30s elapsed, no response
        OCPP->>Station: Notify timeout error
        OCPP->>OCPP: Queue message for retry
    end

6. Конфигурация модуля

6.1 Параметры подключения

{
  "connection": {
    "serverUrl": "wss://csms.example.com/ocpp",
    "stationId": "STATION_001",
    "apiKey": "your-api-key-here",
    "reconnectInterval": 30,
    "maxReconnectInterval": 300,
    "messageTimeout": 30,
    "heartbeatInterval": 300
  },
  "station": {
    "model": "EV-CHARGER-V1",
    "vendorName": "YourCompany",
    "serialNumber": "SN123456789",
    "firmwareVersion": "1.0.0"
  },
  "intervals": {
    "meterValueSampleInterval": 60,10,
    "clockAlignedDataInterval": 900,
    "connectionTimeOut": 60
  }
}

6.2 Методы управления

// Псевдокод API модуля
class OCPPModule {
    // Инициализация
    initialize(config) { }
    
    // Управление соединением
    connect() { }
    disconnect() { }
    isConnected() { }
    
    // Отправка событий от станции
    sendStationEvent(event) { }
    
    // Получение команд для станции (callback)
    onStationCommand(callback) { }
    
    // Статус модуля
    getStatus() { }
    getLastError() { }
    
    // Логирование
    enableLogging(level) { }
}

7. Протокол взаимодействия с системой станции

7.1 Инициализация модуля

sequenceDiagram
    participant Station as Station System
    participant OCPP as OCPP Module
    
    Station->>OCPP: Initialize(config)
    OCPP->>OCPP: Load configuration
    OCPP->>Station: Initialization complete
    
    Station->>OCPP: SetEventHandler(callback)
    OCPP->>Station: Handler registered
    
    Station->>OCPP: Connect()
    OCPP->>OCPP: Establish WebSocket connection
    OCPP->>Station: onStationCommand("connection_established")

7.2 Обработка событий в runtime

sequenceDiagram
    participant Station as Station System
    participant OCPP as OCPP Module
    participant CSMS as CSMS Server
    
    Note over Station,CSMS: Обычный поток событий
    Station->>OCPP: sendStationEvent(cable_connected)
    OCPP->>CSMS: StatusNotification
    CSMS->>OCPP: StatusNotification Response
    
    Note over Station,CSMS: Команда от CSMS
    CSMS->>OCPP: RemoteStartTransaction
    OCPP->>Station: onStationCommand(start_charging)
    Station->>OCPP: Command response (accepted)
    OCPP->>CSMS: RemoteStartTransaction Response

Данная спецификация определяет требования к модулю OCPP коммуникации для интеграции с системой зарядной станции.