OCPP

por | 26 febrero, 2025

OCPP (Open Charge Point Protocol) es el protocolo utilizado para la comunicación entre estaciones de carga eléctrica de vehículos eléctricos, y sistemas de gestión centralizadas.

El estandard OCPP es desarrollado y mantenido por el Open Charge Alliance

https://www.openchargealliance.org

OCPP permite que estaciones de carga y plataformas de software de distintos proveedores se comuniquen sin depender de una tecnología propietaria. Actualmente existen dos versiones validadas:

1.6: Basada en WebSockets, es la más extendida a nivel mundial.
2.0: Más avanzada, soporta autenticación y mejoras de seguridad.

OCPP permite gestionar cosas como el inicio y final de la sesión de carga, autenticación de usuarios (con tarjetas RFID por ejemplo), monitoreo y diagnóstico remoto, facturación y reportes de consumo, etc.

En la nomenclatura utilizada:

  • Estación de Carga es el Charge Point
  • El sistema de gestión central se denomina Central System

El sistema centra, osea, el sistema de gestión de cargadores, actúa como servidor. Es decir, recibirá una conexión TCP desde la estacion de carga la cual apuntará al servidor de gestión con una url, algo así como, por ejemplo:

ws://sistema.local.gestion.cargadores.es/
ó
wss://192.168.120.34:9000/CP_ID

(ws se utiliza habitualmente para identificar websocket)

Estructura de mensajes:

Los mensajes están basados en JSON (RPC 2.0), es decir, cada uno tiene un identificador único. Los mensajes pueden ser:

Llamada (Request): Enviada por la estación o el backend.
Respuesta (Response): Responde a una llamada anterior.
Error: En caso de problemas en la comunicación.

Los tipos de mensajes en OCPP 1.6 son:

Autenticación y control: Authorize, BootNotification, Heartbeat.
Gestión de carga: StartTransaction, StopTransaction, MeterValues.
Gestión remota: RemoteStartTransaction, RemoteStopTransaction, Reset.
Estado y diagnóstico: StatusNotification, DiagnosticsStatusNotification.
Actualización de firmware: FirmwareStatusNotification.

El flujo normal de mensajes en un sesión OCCP sería:

1. BootNotification → La estación se registra.
2. Authorize → El usuario se autentica (tarjeta RFID, app, etc.).
3. StartTransaction → Se inicia la sesión de carga.
4. MeterValues → Se envían datos de consumo periódicamente.
5. StopTransaction → Se finaliza la sesión de carga.

Veamos unos ejemplos con los formatos JSON involucrados:

Inicio de la comunicacion

Cuando una estación de carga se enciende, envía un mensaje de tipo BootNotification al servidor (sistema de gestión) para identificarse y verificar si puede operar. El formato sería algo como esto:

[
  2,
  "1",
  "BootNotification",
    {
    "chargePointModel": "ModelX",
    "chargePointVendor": "EVChargerCo"
    }
]

A continución el sistema de gestión contesta aceptando o denegando la conexión:

[
  3,
  "1",
  {
    "status": "Accepted",
    "currentTime": "2025-02-25T12:34:56Z",
    "interval": 300
  }
]

Una vez el sistema acepta la conexíon desde el cargador, la estación de carga está registrada y envía heartbeats cada 300 segundos.

Ahora cuando un usuario conecta su vehículo y autentica su sesión (ejemplo usando una tarjeta RFID), la estación envía un StartTransaction. al sistema de gestion

[
  2,
  "2",
  "StartTransaction",
    {
    "connectorId": 1,
    "idTag": "ABC123",
    "timestamp": "2025-02-25T12:40:00Z",
    "meterStart": 0
    }
]

El sistema de gestión contesta aceptado (o denegando) la transacción:

[
    3,
    "2",
    {
    "transactionId": 98765,
    "idTagInfo": {
      "status": "Accepted"
      }
    }
]

En este ejemplo se inicia la carga con ID de transacción 98756.

A partir de aquí, la estación envía periódicamente datos de consumo al sistema de gestión. Es lo que se llama MeterValues:

[
  2,
  "3",
  "MeterValues",
    {
     "transactionId": 98765,
     "meterValue": [
     {
      "timestamp": "2025-02-25T12:50:00Z",
      "sampledValue": [
       {
         "value": "5.2",
         "unit": "kWh"
       }
       ]
      }
    ]
  }
]

En este ejmplo el servidor, o sistema de gestion registrará un consumo de 5.2kWh

Finalmente cuando el ususrio desconecta el vehículo, la estación de carga envía un mensaje StopTransaction:

[
  2,
  "4",
  "StopTransaction",
  {
    "transactionId": 98765,
    "timestamp": "2025-02-25T13:00:00Z",
    "meterStop": 10.5
   }
]

y finalmente el sistema de gestion, el servidor, envía un mensaje de aceptacion:

[
  3,
  "4",
  {
  "idTagInfo": {
  "status": "Accepted"
    }
  }
]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *