La referencia del protocolo OCPP 1.6J.
Lo que se dicen un cargador y su backoffice: los 28 mensajes con sus campos y un ejemplo, las 43 claves de configuración, lo que puede medir un cargador y lo que falla en la práctica.
¿Qué es OCPP 1.6J?
OCPP, el Open Charge Point Protocol, es un estándar libre y abierto de la Open Charge Alliance. Define cómo se comunica un cargador con el software que lo gestiona: el Central System en la especificación, el backoffice en el mercado.
En la versión 1.6J, el cargador abre un WebSocket hacia el backoffice y ambos lados se envían mensajes JSON por él. El cargador informa de su estado, sus valores de medida y sus sesiones. El backoffice inicia y detiene sesiones, cambia ajustes y fija límites de carga.
Como el estándar es abierto, un cargador que lo habla también puede conectarse a otros backoffices que lo hablen, según el modelo, el firmware y la configuración. Eso le permite combinar marcas en una misma ubicación y pasar un cargador a otro backoffice. Para usar un cargador con varios backoffices a la vez, utilice el proxy OCPP.
- Un estándar abiertoLibre de implementar, mantenido por la Open Charge Alliance.
- WebSocket y JSONUna conexión que permanece abierta, con mensajes estructurados.
- 28 mensajesEn seis perfiles de funciones, de Core a Remote Trigger.
- En ambos sentidosEl cargador y el backoffice inician cada uno sus propios mensajes.
Los 28 mensajes de OCPP 1.6
Cada mensaje es una solicitud de un lado y una respuesta del otro, emparejadas por un ID de mensaje único.
Core
Obligatorio. Operaciones básicas del punto de carga: autorización, transacciones, notificación de estado, configuración y control remoto básico.
Solicita la autorización de un idTag antes de permitir la carga.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| idTag | string | Obligatorio | El identificador que se autoriza. Como máximo 20 caracteres. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| idTagInfo | object | Obligatorio | Información de autorización del idTag. |
| status | string | Obligatorio | Estado de la autorización. Uno de Accepted, Blocked, Expired, Invalid, ConcurrentTx. |
| expiryDate | string | Opcional | Fecha y hora a partir de la cual el idTag se considera caducado. Una fecha y hora. |
| parentIdTag | string | Opcional | idTag principal para la autorización en grupo. Como máximo 20 caracteres. |
Ejemplo
[2, "7f83df9c", "Authorize", {
"idTag": "04A2B3C4D5E6F7"
}][3, "7f83df9c", {
"idTagInfo": {
"status": "Accepted"
}
}]En OCPP 2.0.1: Authorize
Se envía tras el arranque para registrarse en el backoffice.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| chargePointVendor | string | Obligatorio | Fabricante del punto de carga. Como máximo 20 caracteres. |
| chargePointModel | string | Obligatorio | Modelo del punto de carga. Como máximo 20 caracteres. |
| chargePointSerialNumber | string | Opcional | Número de serie del punto de carga. Como máximo 25 caracteres. |
| chargeBoxSerialNumber | string | Opcional | Número de serie de la charge box. Como máximo 25 caracteres. |
| firmwareVersion | string | Opcional | Versión de firmware del punto de carga. Como máximo 50 caracteres. |
| iccid | string | Opcional | ICCID de la tarjeta SIM. Como máximo 20 caracteres. |
| imsi | string | Opcional | IMSI de la tarjeta SIM. Como máximo 20 caracteres. |
| meterType | string | Opcional | Tipo del contador de energía. Como máximo 25 caracteres. |
| meterSerialNumber | string | Opcional | Número de serie del contador de energía. Como máximo 25 caracteres. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Estado del registro. Uno de Accepted, Pending, Rejected. |
| currentTime | string | Obligatorio | Hora actual del Central System. Una fecha y hora. |
| interval | integer | Obligatorio | Intervalo de heartbeat en segundos. |
Ejemplo
[2, "392b5b40", "BootNotification", {
"chargePointVendor": "ExampleVendor",
"chargePointModel": "ExampleModel",
"firmwareVersion": "1.4.2"
}][3, "392b5b40", {
"status": "Accepted",
"currentTime": "2026-10-06T09:30:00Z",
"interval": 300
}]En OCPP 2.0.1: BootNotification
Cambia la disponibilidad de un conector.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| connectorId | integer | Obligatorio | ID del conector (0 = todo el punto de carga). |
| type | string | Obligatorio | Cambio de disponibilidad solicitado. Uno de Inoperative, Operative. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Resultado de la solicitud de cambio de disponibilidad. Uno de Accepted, Rejected, Scheduled. |
Ejemplo
[2, "be3dcf2e", "ChangeAvailability", {
"connectorId": 1,
"type": "Operative"
}][3, "be3dcf2e", {
"status": "Accepted"
}]En OCPP 2.0.1: ChangeAvailability
Cambia una clave de configuración en el cargador.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| key | string | Obligatorio | Clave de configuración que se cambia. Como máximo 50 caracteres. |
| value | string | Obligatorio | Nuevo valor de la clave de configuración. Como máximo 500 caracteres. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Resultado del cambio de configuración. Uno de Accepted, Rejected, RebootRequired, NotSupported. |
Ejemplo
[2, "6fdf2255", "ChangeConfiguration", {
"key": "MeterValueSampleInterval",
"value": "60"
}][3, "6fdf2255", {
"status": "Accepted"
}]En OCPP 2.0.1: SetVariables
Borra la caché de autorización del cargador.
Solicitud
Sin campos: la solicitud está vacía.
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Resultado de la solicitud de borrado de la caché. Uno de Accepted, Rejected. |
Ejemplo
[2, "e993e844", "ClearCache", {}][3, "e993e844", {
"status": "Accepted"
}]En OCPP 2.0.1: ClearCache
Intercambio de datos específicos del fabricante.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| vendorId | string | Obligatorio | Identifica al fabricante. Como máximo 255 caracteres. |
| messageId | string | Opcional | Identificación adicional del mensaje. Como máximo 50 caracteres. |
| data | string | Opcional | Datos específicos del fabricante. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Resultado de la transferencia de datos. Uno de Accepted, Rejected, UnknownMessageId, UnknownVendorId. |
| data | string | Opcional | Datos de respuesta específicos del fabricante. |
Ejemplo
[2, "e1a403d5", "DataTransfer", {
"vendorId": "com.example"
}][3, "e1a403d5", {
"status": "Accepted"
}]En OCPP 2.0.1: DataTransfer
Obtiene claves de configuración del cargador.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| key | array | Opcional | Lista de claves de configuración que se solicitan. items Como máximo 50 caracteres. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| configurationKey | array | Opcional | Lista de claves de configuración conocidas. |
| key | string | Obligatorio | Nombre de la clave de configuración. Como máximo 50 caracteres. |
| readonly | boolean | Obligatorio | Si la clave es de solo lectura. |
| value | string | Opcional | Valor actual de la clave. Como máximo 500 caracteres. |
| unknownKey | array | Opcional | Lista de claves solicitadas que son desconocidas. items Como máximo 50 caracteres. |
Ejemplo
[2, "02bd00f5", "GetConfiguration", {
"key": [
"MeterValueSampleInterval"
]
}][3, "02bd00f5", {
"configurationKey": [
{
"key": "MeterValueSampleInterval",
"readonly": false,
"value": "60"
}
]
}]En OCPP 2.0.1: GetBaseReport y GetVariables
Señal periódica para que el backoffice sepa que el cargador está en línea.
Solicitud
Sin campos: la solicitud está vacía.
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| currentTime | string | Obligatorio | Hora actual del Central System. Una fecha y hora. |
Ejemplo
[2, "83622997", "Heartbeat", {}][3, "83622997", {
"currentTime": "2026-10-06T09:30:00Z"
}]En OCPP 2.0.1: Heartbeat
Envía lecturas del contador periódicas o activadas.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| connectorId | integer | Obligatorio | ID del conector (0 = contador principal). |
| meterValue | array | Obligatorio | Uno o varios valores de medida con marca de tiempo. |
| timestamp | string | Obligatorio | Marca de tiempo del valor de medida. Una fecha y hora. |
| sampledValue | array | Obligatorio | Uno o varios valores muestreados. |
| value | string | Obligatorio | El valor medido. |
| context | string | Opcional | Contexto de la lectura. Uno de Interruption.Begin, Interruption.End, Sample.Clock, Sample.Periodic, Transaction.Begin, Transaction.End, Trigger, Other. |
| format | string | Opcional | Formato del valor. Uno de Raw, SignedData. |
| measurand | string | Opcional | Tipo de medida. Uno de Energy.Active.Export.Register, Energy.Active.Import.Register, Energy.Reactive.Export.Register, Energy.Reactive.Import.Register, Energy.Active.Export.Interval, Energy.Active.Import.Interval, Energy.Reactive.Export.Interval, Energy.Reactive.Import.Interval, Power.Active.Export, Power.Active.Import, Power.Offered, Power.Reactive.Export, Power.Reactive.Import, Power.Factor, Current.Import, Current.Export, Current.Offered, Voltage, Frequency, Temperature, SoC, RPM. |
| phase | string | Opcional | Fase a la que se refiere la medida. Uno de L1, L2, L3, N, L1-N, L2-N, L3-N, L1-L2, L2-L3, L3-L1. |
| location | string | Opcional | Punto de medida. Uno de Cable, EV, Inlet, Outlet, Body. |
| unit | string | Opcional | Unidad de medida. Uno de Wh, kWh, varh, kvarh, W, kW, VA, kVA, var, kvar, A, V, K, Celcius, Celsius, Fahrenheit, Percent. |
| transactionId | integer | Opcional | Transacción a la que se refieren estos valores de medida. |
Respuesta
Sin campos: la respuesta está vacía.
Ejemplo
[2, "80a15023", "MeterValues", {
"connectorId": 1,
"meterValue": [
{
"timestamp": "2026-10-06T09:30:00Z",
"sampledValue": [
{
"value": "19840",
"measurand": "Energy.Active.Import.Register",
"unit": "Wh"
}
]
}
],
"transactionId": 4521
}][3, "80a15023", {}]En OCPP 2.0.1: MeterValues
Inicia a distancia una sesión de carga.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| idTag | string | Obligatorio | El identificador que se usa para esta sesión. Como máximo 20 caracteres. |
| connectorId | integer | Opcional | Conector en el que se inicia. |
| chargingProfile | object | Opcional | Perfil de carga que se aplica a esta sesión. |
| chargingProfileId | integer | Obligatorio | Identificador único de este perfil de carga. |
| stackLevel | integer | Obligatorio | Nivel de prioridad del perfil (más alto = más prioridad). |
| chargingProfilePurpose | string | Obligatorio | Finalidad del perfil de carga. Uno de ChargePointMaxProfile, TxDefaultProfile, TxProfile. |
| chargingProfileKind | string | Obligatorio | Tipo de programación. Uno de Absolute, Recurring, Relative. |
| chargingSchedule | object | Obligatorio | La programación de carga. |
| chargingRateUnit | string | Obligatorio | Unidad de la tasa de carga (amperios o vatios). Uno de A, W. |
| chargingSchedulePeriod | array | Obligatorio | Lista de periodos de la programación. |
| startPeriod | integer | Obligatorio | Inicio del periodo en segundos desde el inicio de la programación. |
| limit | number | Obligatorio | Límite de potencia o corriente durante este periodo. En pasos de 0,1. |
| numberPhases | integer | Opcional | Número de fases que se usan para cargar. |
| duration | integer | Opcional | Duración de la programación en segundos. |
| startSchedule | string | Opcional | Fecha y hora de inicio de la programación. Una fecha y hora. |
| minChargingRate | number | Opcional | Tasa de carga mínima admitida. En pasos de 0,1. |
| transactionId | integer | Opcional | Transacción a la que se aplica este perfil. |
| recurrencyKind | string | Opcional | Frecuencia de repetición de los perfiles recurrentes. Uno de Daily, Weekly. |
| validFrom | string | Opcional | Fecha y hora desde la que el perfil es válido. Una fecha y hora. |
| validTo | string | Opcional | Fecha y hora a partir de la cual el perfil deja de ser válido. Una fecha y hora. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Si el punto de carga aceptó la solicitud. Uno de Accepted, Rejected. |
Ejemplo
[2, "b7e2ef8a", "RemoteStartTransaction", {
"idTag": "04A2B3C4D5E6F7",
"connectorId": 1
}][3, "b7e2ef8a", {
"status": "Accepted"
}]En OCPP 2.0.1: RequestStartTransaction
Detiene a distancia una sesión de carga.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| transactionId | integer | Obligatorio | ID de la transacción que se detiene. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Si el punto de carga aceptó la solicitud. Uno de Accepted, Rejected. |
Ejemplo
[2, "7fb0afb2", "RemoteStopTransaction", {
"transactionId": 4521
}][3, "7fb0afb2", {
"status": "Accepted"
}]En OCPP 2.0.1: RequestStopTransaction
Reinicia el punto de carga (hard o soft).
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| type | string | Obligatorio | Tipo de reinicio. Uno de Hard, Soft. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Si el punto de carga aceptó el reinicio. Uno de Accepted, Rejected. |
Ejemplo
[2, "526d688f", "Reset", {
"type": "Soft"
}][3, "526d688f", {
"status": "Accepted"
}]En OCPP 2.0.1: Reset
Avisa al backoffice de que ha empezado una sesión de carga.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| connectorId | integer | Obligatorio | Conector en el que empezó la transacción. |
| idTag | string | Obligatorio | Identificador usado para iniciar la transacción. Como máximo 20 caracteres. |
| meterStart | integer | Obligatorio | Valor del contador al inicio de la transacción (Wh). |
| timestamp | string | Obligatorio | Marca de tiempo del inicio de la transacción. Una fecha y hora. |
| reservationId | integer | Opcional | ID de la reserva que se usó. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| idTagInfo | object | Obligatorio | Información de autorización del idTag. |
| status | string | Obligatorio | Estado de la autorización. Uno de Accepted, Blocked, Expired, Invalid, ConcurrentTx. |
| expiryDate | string | Opcional | Fecha y hora a partir de la cual el idTag se considera caducado. Una fecha y hora. |
| parentIdTag | string | Opcional | idTag principal para la autorización en grupo. Como máximo 20 caracteres. |
| transactionId | integer | Obligatorio | ID de transacción asignado por el Central System. |
Ejemplo
[2, "2410a6a5", "StartTransaction", {
"connectorId": 1,
"idTag": "04A2B3C4D5E6F7",
"meterStart": 12500,
"timestamp": "2026-10-06T09:30:00Z"
}][3, "2410a6a5", {
"idTagInfo": {
"status": "Accepted"
},
"transactionId": 4521
}]En OCPP 2.0.1: TransactionEvent
Informa del estado actual y de los errores de un conector.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| connectorId | integer | Obligatorio | Conector del que se informa el estado. |
| errorCode | string | Obligatorio | Código de error (NoError si no hay error). Uno de ConnectorLockFailure, EVCommunicationError, GroundFailure, HighTemperature, InternalError, LocalListConflict, NoError, OtherError, OverCurrentFailure, PowerMeterFailure, PowerSwitchFailure, ReaderFailure, ResetFailure, UnderVoltage, OverVoltage, WeakSignal. |
| status | string | Obligatorio | Estado actual del conector. Uno de Available, Preparing, Charging, SuspendedEVSE, SuspendedEV, Finishing, Reserved, Unavailable, Faulted. |
| info | string | Opcional | Información adicional en texto libre sobre el estado. Como máximo 50 caracteres. |
| timestamp | string | Opcional | Marca de tiempo del cambio de estado. Una fecha y hora. |
| vendorId | string | Opcional | Identificador específico del fabricante. Como máximo 255 caracteres. |
| vendorErrorCode | string | Opcional | Código de error específico del fabricante. Como máximo 50 caracteres. |
Respuesta
Sin campos: la respuesta está vacía.
Ejemplo
[2, "d9b0420e", "StatusNotification", {
"connectorId": 1,
"errorCode": "NoError",
"status": "Available"
}][3, "d9b0420e", {}]En OCPP 2.0.1: StatusNotification
Avisa al backoffice de que ha terminado una sesión de carga.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| transactionId | integer | Obligatorio | ID de la transacción que se detiene. |
| timestamp | string | Obligatorio | Marca de tiempo del fin de la transacción. Una fecha y hora. |
| meterStop | integer | Obligatorio | Valor del contador al final de la transacción (Wh). |
| idTag | string | Opcional | Identificador que solicitó la parada. Como máximo 20 caracteres. |
| reason | string | Opcional | Motivo de la parada de la transacción. Uno de EmergencyStop, EVDisconnected, HardReset, Local, Other, PowerLoss, Reboot, Remote, SoftReset, UnlockCommand, DeAuthorized. |
| transactionData | array | Opcional | Array de objetos MeterValue (misma estructura que MeterValues.meterValue). |
| timestamp | string | Obligatorio | Marca de tiempo del valor de medida. Una fecha y hora. |
| sampledValue | array | Obligatorio | Uno o varios valores muestreados. |
| value | string | Obligatorio | El valor medido. |
| context | string | Opcional | Contexto de la lectura. Uno de Interruption.Begin, Interruption.End, Sample.Clock, Sample.Periodic, Transaction.Begin, Transaction.End, Trigger, Other. |
| format | string | Opcional | Formato del valor. Uno de Raw, SignedData. |
| measurand | string | Opcional | Tipo de medida. Uno de Energy.Active.Export.Register, Energy.Active.Import.Register, Energy.Reactive.Export.Register, Energy.Reactive.Import.Register, Energy.Active.Export.Interval, Energy.Active.Import.Interval, Energy.Reactive.Export.Interval, Energy.Reactive.Import.Interval, Power.Active.Export, Power.Active.Import, Power.Offered, Power.Reactive.Export, Power.Reactive.Import, Power.Factor, Current.Import, Current.Export, Current.Offered, Voltage, Frequency, Temperature, SoC, RPM. |
| phase | string | Opcional | Fase a la que se refiere la medida. Uno de L1, L2, L3, N, L1-N, L2-N, L3-N, L1-L2, L2-L3, L3-L1. |
| location | string | Opcional | Punto de medida. Uno de Cable, EV, Inlet, Outlet, Body. |
| unit | string | Opcional | Unidad de medida. Uno de Wh, kWh, varh, kvarh, W, kW, VA, kVA, var, kvar, A, V, K, Celcius, Celsius, Fahrenheit, Percent. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| idTagInfo | object | Opcional | Información de autorización del idTag. |
| status | string | Obligatorio | Estado de la autorización. Uno de Accepted, Blocked, Expired, Invalid, ConcurrentTx. |
| expiryDate | string | Opcional | Fecha y hora a partir de la cual el idTag se considera caducado. Una fecha y hora. |
| parentIdTag | string | Opcional | idTag principal para la autorización en grupo. Como máximo 20 caracteres. |
Ejemplo
[2, "b380dc07", "StopTransaction", {
"transactionId": 4521,
"timestamp": "2026-10-06T09:30:00Z",
"meterStop": 19840,
"idTag": "04A2B3C4D5E6F7"
}][3, "b380dc07", {
"idTagInfo": {
"status": "Accepted"
}
}]En OCPP 2.0.1: TransactionEvent
Desbloquea un conector a distancia.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| connectorId | integer | Obligatorio | Conector que se desbloquea. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Resultado de la solicitud de desbloqueo. Uno de Unlocked, UnlockFailed, NotSupported. |
Ejemplo
[2, "882ccab0", "UnlockConnector", {
"connectorId": 1
}][3, "882ccab0", {
"status": "Unlocked"
}]En OCPP 2.0.1: UnlockConnector
Gestión del firmware
Actualizaciones de firmware y envío de diagnósticos para el mantenimiento remoto de los puntos de carga.
Pide al cargador que suba sus registros de diagnóstico.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| location | string | Obligatorio | URI a la que se suben los diagnósticos. Una dirección (URI). |
| retries | integer | Opcional | Número de reintentos de subida. |
| retryInterval | integer | Opcional | Segundos entre reintentos. |
| startTime | string | Opcional | Inicio del intervalo de tiempo de los registros. Una fecha y hora. |
| stopTime | string | Opcional | Fin del intervalo de tiempo de los registros. Una fecha y hora. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| fileName | string | Opcional | Nombre del archivo de diagnóstico. Como máximo 255 caracteres. |
Ejemplo
[2, "da7920cd", "GetDiagnostics", {
"location": "ftp://files.example.com/diagnostics/"
}][3, "da7920cd", {}]En OCPP 2.0.1: GetLog
Informa del estado de una subida de diagnósticos.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Estado actual de la subida de diagnósticos. Uno de Idle, Uploaded, UploadFailed, Uploading. |
Respuesta
Sin campos: la respuesta está vacía.
Ejemplo
[2, "d1c853b4", "DiagnosticsStatusNotification", {
"status": "Uploaded"
}][3, "d1c853b4", {}]En OCPP 2.0.1: LogStatusNotification
Informa del estado de una actualización de firmware.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Estado actual de la actualización de firmware. Uno de Downloaded, DownloadFailed, Downloading, Idle, InstallationFailed, Installing, Installed. |
Respuesta
Sin campos: la respuesta está vacía.
Ejemplo
[2, "dc9afcb2", "FirmwareStatusNotification", {
"status": "Installed"
}][3, "dc9afcb2", {}]En OCPP 2.0.1: FirmwareStatusNotification
Indica al cargador que descargue e instale firmware nuevo.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| location | string | Obligatorio | URI desde la que se descarga el firmware. Una dirección (URI). |
| retrieveDate | string | Obligatorio | Fecha y hora a partir de la cual el cargador debe descargar el firmware. Una fecha y hora. |
| retries | integer | Opcional | Número de reintentos de descarga. |
| retryInterval | integer | Opcional | Segundos entre reintentos. |
Respuesta
Sin campos: la respuesta está vacía.
Ejemplo
[2, "a57cc6a2", "UpdateFirmware", {
"location": "ftp://files.example.com/fw-1.4.3.bin",
"retrieveDate": "2026-10-07T02:00:00Z"
}][3, "a57cc6a2", {}]En OCPP 2.0.1: UpdateFirmware
Lista de autorización local
Gestione una lista de autorización local en el punto de carga para autenticar sin conexión.
Obtiene el número de versión de la lista de autorización local.
Solicitud
Sin campos: la solicitud está vacía.
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| listVersion | integer | Obligatorio | Número de versión actual de la lista de autorización local. |
Ejemplo
[2, "ccf23a29", "GetLocalListVersion", {}][3, "ccf23a29", {
"listVersion": 1
}]En OCPP 2.0.1: GetLocalListVersion
Envía una actualización completa o parcial de la lista de autorización local.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| listVersion | integer | Obligatorio | Número de versión de esta actualización de la lista. |
| updateType | string | Obligatorio | Si es una sustitución completa o una actualización diferencial. Uno de Differential, Full. |
| localAuthorizationList | array | Opcional | Lista de entradas de autorización. |
| idTag | string | Obligatorio | El identificador que se autoriza. Como máximo 20 caracteres. |
| idTagInfo | object | Opcional | Información de autorización del idTag. |
| status | string | Obligatorio | Estado de la autorización. Uno de Accepted, Blocked, Expired, Invalid, ConcurrentTx. |
| expiryDate | string | Opcional | Fecha y hora a partir de la cual el idTag se considera caducado. Una fecha y hora. |
| parentIdTag | string | Opcional | idTag principal para la autorización en grupo. Como máximo 20 caracteres. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Resultado de la actualización de la lista local. Uno de Accepted, Failed, NotSupported, VersionMismatch. |
Ejemplo
[2, "a23c9563", "SendLocalList", {
"listVersion": 1,
"updateType": "Full",
"localAuthorizationList": [
{
"idTag": "04A2B3C4D5E6F7",
"idTagInfo": {
"status": "Accepted"
}
}
]
}][3, "a23c9563", {
"status": "Accepted"
}]En OCPP 2.0.1: SendLocalList
Reserva
Reserve con antelación un conector para un usuario concreto.
Cancela una reserva existente.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| reservationId | integer | Obligatorio | ID de la reserva que se cancela. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Si se canceló la reserva. Uno de Accepted, Rejected. |
Ejemplo
[2, "63258356", "CancelReservation", {
"reservationId": 7
}][3, "63258356", {
"status": "Accepted"
}]En OCPP 2.0.1: CancelReservation
Crea una reserva en un conector concreto.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| connectorId | integer | Obligatorio | Conector que se reserva (0 = ningún conector concreto). |
| expiryDate | string | Obligatorio | Fecha y hora en que caduca la reserva. Una fecha y hora. |
| idTag | string | Obligatorio | Identificador para el que se hace la reserva. Como máximo 20 caracteres. |
| reservationId | integer | Obligatorio | ID único de esta reserva. |
| parentIdTag | string | Opcional | idTag principal para la reserva en grupo. Como máximo 20 caracteres. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Resultado de la solicitud de reserva. Uno de Accepted, Faulted, Occupied, Rejected, Unavailable. |
Ejemplo
[2, "62a25d78", "ReserveNow", {
"connectorId": 1,
"expiryDate": "2026-10-06T10:00:00Z",
"idTag": "04A2B3C4D5E6F7",
"reservationId": 7
}][3, "62a25d78", {
"status": "Accepted"
}]En OCPP 2.0.1: ReserveNow
Carga inteligente
Defina y gestione perfiles de carga para el balanceo de carga, la integración solar y la carga programada.
Elimina uno o varios perfiles de carga del cargador.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| id | integer | Opcional | ID del perfil de carga que se borra. |
| connectorId | integer | Opcional | Conector cuyos perfiles se borran. |
| chargingProfilePurpose | string | Opcional | Finalidad de los perfiles que se borran. Uno de ChargePointMaxProfile, TxDefaultProfile, TxProfile. |
| stackLevel | integer | Opcional | Nivel de pila de los perfiles que se borran. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Si se borró algún perfil. Uno de Accepted, Unknown. |
Ejemplo
[2, "2c436739", "ClearChargingProfile", {}][3, "2c436739", {
"status": "Accepted"
}]En OCPP 2.0.1: ClearChargingProfile
Solicita la programación de carga combinada de un conector.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| connectorId | integer | Obligatorio | Conector del que se solicita la programación. |
| duration | integer | Obligatorio | Duración en segundos de la programación solicitada. |
| chargingRateUnit | string | Opcional | Unidad preferida para la programación. Uno de A, W. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Si el punto de carga puede facilitar la programación. Uno de Accepted, Rejected. |
| connectorId | integer | Opcional | Conector al que se aplica la programación. |
| scheduleStart | string | Opcional | Fecha y hora de inicio de la programación compuesta. Una fecha y hora. |
| chargingSchedule | object | Opcional | La programación de carga compuesta. |
| chargingRateUnit | string | Obligatorio | Unidad de la tasa de carga (amperios o vatios). Uno de A, W. |
| chargingSchedulePeriod | array | Obligatorio | Lista de periodos de la programación. |
| startPeriod | integer | Obligatorio | Inicio del periodo en segundos desde el inicio de la programación. |
| limit | number | Obligatorio | Límite de potencia o corriente durante este periodo. En pasos de 0,1. |
| numberPhases | integer | Opcional | Número de fases que se usan para cargar. |
| duration | integer | Opcional | Duración de la programación en segundos. |
| startSchedule | string | Opcional | Fecha y hora de inicio de la programación. Una fecha y hora. |
| minChargingRate | number | Opcional | Tasa de carga mínima admitida. En pasos de 0,1. |
Ejemplo
[2, "50bc203f", "GetCompositeSchedule", {
"connectorId": 1,
"duration": 3600
}][3, "50bc203f", {
"status": "Accepted"
}]En OCPP 2.0.1: GetCompositeSchedule
Envía un perfil de carga al cargador.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| connectorId | integer | Obligatorio | Conector al que se aplica el perfil. |
| csChargingProfiles | object | Obligatorio | El perfil de carga que se instala. |
| chargingProfileId | integer | Obligatorio | Identificador único de este perfil de carga. |
| stackLevel | integer | Obligatorio | Nivel de prioridad del perfil (más alto = más prioridad). |
| chargingProfilePurpose | string | Obligatorio | Finalidad del perfil de carga. Uno de ChargePointMaxProfile, TxDefaultProfile, TxProfile. |
| chargingProfileKind | string | Obligatorio | Tipo de programación. Uno de Absolute, Recurring, Relative. |
| chargingSchedule | object | Obligatorio | La programación de carga. |
| chargingRateUnit | string | Obligatorio | Unidad de la tasa de carga (amperios o vatios). Uno de A, W. |
| chargingSchedulePeriod | array | Obligatorio | Lista de periodos de la programación. |
| startPeriod | integer | Obligatorio | Inicio del periodo en segundos desde el inicio de la programación. |
| limit | number | Obligatorio | Límite de potencia o corriente durante este periodo. En pasos de 0,1. |
| numberPhases | integer | Opcional | Número de fases que se usan para cargar. |
| duration | integer | Opcional | Duración de la programación en segundos. |
| startSchedule | string | Opcional | Fecha y hora de inicio de la programación. Una fecha y hora. |
| minChargingRate | number | Opcional | Tasa de carga mínima admitida. En pasos de 0,1. |
| transactionId | integer | Opcional | Transacción a la que se aplica este perfil. |
| recurrencyKind | string | Opcional | Frecuencia de repetición de los perfiles recurrentes. Uno de Daily, Weekly. |
| validFrom | string | Opcional | Fecha y hora desde la que el perfil es válido. Una fecha y hora. |
| validTo | string | Opcional | Fecha y hora a partir de la cual el perfil deja de ser válido. Una fecha y hora. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Si se aceptó el perfil. Uno de Accepted, Rejected, NotSupported. |
Ejemplo
[2, "01be9b20", "SetChargingProfile", {
"connectorId": 1,
"csChargingProfiles": {
"chargingProfileId": 10,
"stackLevel": 0,
"chargingProfilePurpose": "TxDefaultProfile",
"chargingProfileKind": "Relative",
"chargingSchedule": {
"chargingRateUnit": "A",
"chargingSchedulePeriod": [
{
"startPeriod": 0,
"limit": 16.0
}
]
}
}
}][3, "01be9b20", {
"status": "Accepted"
}]En OCPP 2.0.1: SetChargingProfile
Activación remota
Pida al punto de carga que envíe un mensaje concreto cuando usted lo solicite.
Pide al punto de carga que envíe de inmediato un mensaje concreto.
Solicitud
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| requestedMessage | string | Obligatorio | El mensaje que debe enviar el punto de carga. Uno de BootNotification, DiagnosticsStatusNotification, FirmwareStatusNotification, Heartbeat, MeterValues, StatusNotification. |
| connectorId | integer | Opcional | Conector para el que se envía el mensaje. |
Respuesta
| Campo | Tipo | Uso | Contenido |
|---|---|---|---|
| status | string | Obligatorio | Si el punto de carga enviará el mensaje. Uno de Accepted, Rejected, NotImplemented. |
Ejemplo
[2, "4c736efd", "TriggerMessage", {
"requestedMessage": "StatusNotification"
}][3, "4c736efd", {
"status": "Accepted"
}]En OCPP 2.0.1: TriggerMessage
Ningún mensaje coincide con esa búsqueda.
Claves de configuración de OCPP 1.6
ChangeConfiguration fija una clave cada vez en un cargador, y GetConfiguration las vuelve a leer. Aquí se decide casi todo el comportamiento real de un cargador: con qué frecuencia llegan los valores de medida, qué contienen, si una sesión sobrevive a un corte de red, cómo se desbloquea un cable.
Cómo se comporta la llamada
- Cada valor es una cadenaTambién los números y los booleanos: "60", "true". Un número JSON rompe el esquema del mensaje, y un cargador que comprueba el esquema responde con un CallError.
- Escriba los nombres de las claves como en la especificaciónLa especificación no distingue mayúsculas y minúsculas en los nombres de las claves, pero no todos los cargadores hacen lo mismo, así que escriba MeterValuesSampledData y no metervaluessampleddata.
- Algunas claves necesitan un reinicioEl cargador responde RebootRequired, y le toca a usted enviar un Reset.
- Los fabricantes añaden las suyasGetConfiguration con una lista de claves vacía devuelve todas las claves que admite un cargador, incluidas las del fabricante. Las claves que pide por nombre y que no reconoce vuelven en unknownKey.
Las cuatro respuestas
- Accepted
- La clave está fijada y activa desde ahora.
- Rejected
- La clave existe, pero se rechazó el valor: fuera de rango, formato incorrecto o de solo lectura en este cargador.
- RebootRequired
- El valor se guarda, pero no se aplica hasta que el cargador se reinicia.
- NotSupported
- El cargador no implementa esta clave en absoluto.
Las 43 claves, por perfil de funciones
| Clave | Tipo | Acceso | Qué hace |
|---|---|---|---|
| Core34 | |||
| AllowOfflineTxForUnknownIdOpcional en la especificación | boolean | Lectura y escritura | Si el cargador inicia una transacción para un idTag desconocido mientras está sin conexión.Con true, una ubicación sigue cargando durante un corte de red, a costa de sesiones que quizá no pueda facturar a nadie. |
| AuthorizationCacheEnabledOpcional en la especificación | boolean | Lectura y escritura | Si el cargador guarda en caché el resultado de llamadas Authorize anteriores.Distinto de la Local Auth List: la caché se llena sola con autorizaciones reales, la lista la envía el backend. |
| AuthorizeRemoteTxRequests | boolean | Lectura | Si el cargador autoriza el idTag de un RemoteStartTransaction antes de iniciar.Con true, un inicio remoto desde la app sigue necesitando un Authorize de ida y vuelta, así que un idTag incorrecto hace fallar el inicio. |
| BlinkRepeatOpcional en la especificación | integer | Lectura y escritura | Cuántas veces parpadea la luz del cargador durante una secuencia de parpadeo. |
| ClockAlignedDataInterval | integer | Lectura y escritura | Intervalo de los valores de medida alineados con el reloj, contado desde medianoche. 0 los desactiva.900 da una lectura cada cuarto de hora. Es la clave que alimenta MeterValuesAlignedData, y funciona haya o no un coche conectado. |
| ConnectionTimeOut | integer | Lectura y escritura | Cuánto espera el cargador a que el conductor conecte el coche tras la autorización antes de liberar el conector. |
| ConnectorPhaseRotation | CSL | Lectura y escritura | Rotación de fases por conector, en notación connectorId.RST, por ejemplo 0.RST, 1.RST, 2.RTS.Si está mal, los valores de medida por fase y el balanceo de carga monofásico también lo estarán. Conviene comprobarlo en cualquier ubicación trifásica. |
| ConnectorPhaseRotationMaxLengthOpcional en la especificación | integer | Lectura | Número máximo de elementos en ConnectorPhaseRotation. |
| GetConfigurationMaxKeys | integer | Lectura | Número máximo de claves que puede pedir una sola solicitud GetConfiguration.Si pide más, el cargador puede responder con un error. Envíe GetConfiguration sin ninguna clave para obtener todo lo que admite. |
| HeartbeatInterval | integer | Lectura y escritura | Con qué frecuencia envía el cargador un Heartbeat cuando no ocurre nada más.La respuesta a BootNotification puede sobrescribirlo. Con una SIM de pago por datos, un heartbeat corto es el coste discreto que se va acumulando. |
| LightIntensityOpcional en la especificación | integer | Lectura y escritura | Brillo de la iluminación del cargador, en porcentaje. |
| LocalAuthorizeOffline | boolean | Lectura y escritura | Si el cargador autoriza con su lista local o su caché mientras está sin conexión. |
| LocalPreAuthorize | boolean | Lectura y escritura | Si el cargador inicia una transacción con la lista local o la caché mientras está en línea, sin esperar al backend.Reduce la espera en el cargador, a costa de que el backend no tenga la última palabra en cada inicio. |
| MaxEnergyOnInvalidIdOpcional en la especificación | integer | Lectura y escritura | Energía que el cargador sigue entregando después de que una autorización resulte no válida. |
| MeterValuesAlignedData | CSL | Lectura y escritura | Magnitudes que se envían en los MeterValues alineados con el reloj, según ClockAlignedDataInterval.El mismo vocabulario de magnitudes que MeterValuesSampledData, con otro disparador: el reloj, no la sesión. |
| MeterValuesAlignedDataMaxLengthOpcional en la especificación | integer | Lectura | Número máximo de magnitudes en MeterValuesAlignedData. |
| MeterValuesSampledData | CSL | Lectura y escritura | Magnitudes que se muestrean durante una transacción y se envían en MeterValues, según MeterValueSampleInterval.La clave más útil de esta página. Vea el análisis detallado más abajo. |
| MeterValuesSampledDataMaxLengthOpcional en la especificación | integer | Lectura | Número máximo de magnitudes en MeterValuesSampledData.Léalo antes de montar una lista larga: si lo supera, el cargador rechaza la lista entera. |
| MeterValueSampleInterval | integer | Lectura y escritura | Con qué frecuencia, durante una transacción, muestrea el cargador MeterValuesSampledData. 0 desactiva el muestreo.60 es un valor por defecto razonable. Por debajo de 30, con una lista larga de magnitudes, genera mucho tráfico para muy poca información adicional. |
| MinimumStatusDurationOpcional en la especificación | integer | Lectura y escritura | Tiempo mínimo que el cargador permanece en un estado antes de notificar el siguiente.Útil contra los cambios de estado constantes en cargadores que saltan entre Preparing y Available. |
| NumberOfConnectors | integer | Lectura | Número de conectores físicos de este cargador. |
| ResetRetries | integer | Lectura y escritura | Cuántas veces reintenta el cargador un reinicio fallido. |
| StopTransactionOnEVSideDisconnect | boolean | Lectura y escritura | Si desconectar el cable en el lado del coche detiene la transacción en curso.False significa que la sesión sigue abierta después de desconectar el cable, y así acaba con sesiones que nunca terminan. |
| StopTransactionOnInvalidId | boolean | Lectura y escritura | Si el cargador detiene la transacción cuando el backend rechaza el idTag. |
| StopTxnAlignedData | CSL | Lectura y escritura | Magnitudes alineadas con el reloj que se añaden al transactionData de StopTransaction. |
| StopTxnAlignedDataMaxLengthOpcional en la especificación | integer | Lectura | Número máximo de magnitudes en StopTxnAlignedData. |
| StopTxnSampledData | CSL | Lectura y escritura | Magnitudes muestreadas que se añaden al transactionData de StopTransaction.Manténgalo corto. Todo lo que contiene se repite en cada muestra de toda la sesión dentro de una sola carga StopTransaction, y así los cargadores generan mensajes de parada de megabytes que los backends rechazan. |
| StopTxnSampledDataMaxLengthOpcional en la especificación | integer | Lectura | Número máximo de magnitudes en StopTxnSampledData. |
| SupportedFeatureProfiles | CSL | Lectura | Perfiles de funciones que implementa este cargador, por ejemplo Core, FirmwareManagement, SmartCharging.La respuesta sincera a lo que puede hacer un cargador. Léala antes de prometer carga inteligente a un cliente. |
| SupportedFeatureProfilesMaxLengthOpcional en la especificación | integer | Lectura | Número máximo de elementos en SupportedFeatureProfiles. |
| TransactionMessageAttempts | integer | Lectura y escritura | Cuántas veces reintenta el cargador enviar un mensaje de transacción que el backend no confirmó. |
| TransactionMessageRetryInterval | integer | Lectura y escritura | Espera base entre esos reintentos. El cargador la multiplica por el número de intento. |
| UnlockConnectorOnEVSideDisconnect | boolean | Lectura y escritura | Si el cable se desbloquea en el cargador cuando se desconecta en el lado del coche. |
| WebSocketPingIntervalOpcional en la especificación | integer | Lectura y escritura | Intervalo de los frames ping de WebSocket en la conexión OCPP-J.La solución discreta para cargadores que se desconectan una y otra vez detrás de un NAT o un cortafuegos que cierra las conexiones inactivas. |
| Lista de autorización local3 | |||
| LocalAuthListEnabled | boolean | Lectura y escritura | Si se usa la lista de autorización local. |
| LocalAuthListMaxLength | integer | Lectura | Cuántas entradas contiene la lista de autorización local. |
| SendLocalListMaxLength | integer | Lectura | Cuántas entradas caben en un solo mensaje SendLocalList.Una lista mayor tiene que enviarse en varias actualizaciones diferenciales. |
| Reserva1 | |||
| ReserveConnectorZeroSupportedOpcional en la especificación | boolean | Lectura | Si el cargador acepta una reserva en el conector 0, es decir, en cualquier conector. |
| Carga inteligente5 | |||
| ChargeProfileMaxStackLevel | integer | Lectura | Nivel de pila más alto que acepta el cargador en un perfil de carga. Los niveles más altos prevalecen. |
| ChargingScheduleAllowedChargingRateUnit | CSL | Lectura | Qué unidades acepta el cargador en una programación de carga: Current (A), Power (W) o ambas.Si envía un perfil en vatios a un cargador que solo acepta amperios, lo rechaza. Esta clave le dice cuál usar. |
| ChargingScheduleMaxPeriods | integer | Lectura | Número máximo de periodos en una programación de carga. |
| ConnectorSwitch3to1PhaseSupportedOpcional en la especificación | boolean | Lectura | Si el cargador puede cambiar entre carga trifásica y monofásica.Decide si puede bajar por debajo del mínimo trifásico en lugar de pausar del todo. |
| MaxChargingProfilesInstalled | integer | Lectura | Cuántos perfiles de carga pueden estar instalados a la vez. |
Ninguna clave coincide con esa búsqueda.
MeterValuesSampledData: lo que mide un cargador
Una sola clave, MeterValuesSampledData, decide qué telemetría obtiene de una sesión de carga. Es una lista de magnitudes separadas por comas, y el cargador muestrea cada elemento al intervalo que fija MeterValueSampleInterval y luego los envía en un mensaje MeterValues. Si la deja por defecto, obtiene una lectura de energía acumulada, suficiente para facturar, y nada más: ni curva de potencia, ni corriente por fase, ni tensión, ni forma de ver si se aplicó un límite de carga inteligente.
Nunca funciona sola. MeterValueSampleInterval fija con qué frecuencia se dispara, MeterValuesSampledDataMaxLength limita cuántas magnitudes puede incluir, StopTxnSampledData decide cuáles se repiten dentro de StopTransaction, y MeterValuesAlignedData es el mismo vocabulario con un calendario de reloj en lugar de una sesión.
Las magnitudes
Cualquiera de ellas puede aparecer en la lista. Las que admite un cargador dependen de su hardware: un wallbox de CA no suele informar del estado de carga, y un cargador básico puede tener solo el registro de energía.
| Magnitud | Unidad | Habitual en | Qué le aporta |
|---|---|---|---|
| Energy.Active.Import.Register | Wh | CA y CC | Energía acumulada tomada de la red, leída directamente del registro del contador. Es el valor por defecto cuando MeterValuesSampledData está vacío, y el valor sobre el que se construye casi cualquier cálculo de facturación. |
| Energy.Active.Export.Register | Wh | Con V2G | Energía acumulada devuelta, en instalaciones bidireccionales. |
| Energy.Active.Import.Interval | Wh | CA y CC | Energía importada desde la muestra anterior, en lugar de un total acumulado. |
| Energy.Reactive.Import.Register | varh | Según el contador | Energía reactiva acumulada importada. |
| Power.Active.Import | W | CA y CC | Potencia activa instantánea. Lo que se representa para ver una curva de carga, y a lo que reacciona la gestión de carga. |
| Power.Offered | W | CA y CC | Potencia que el cargador ofrece en ese momento al coche. Compárela con Power.Active.Import para ver si de verdad se aplica un límite. |
| Power.Reactive.Import | var | Según el contador | Potencia reactiva instantánea. |
| Power.Factor | cociente | Según el contador | Cociente entre la potencia activa y la aparente. |
| Current.Import | A | CA y CC | Corriente consumida. Suele notificarse por fase, así que esta sola magnitud puede convertirse en tres valores por muestra. |
| Current.Offered | A | CA y CC | Límite de corriente que el cargador indica al coche. La lectura directa de si se aplicó su perfil de carga inteligente. |
| Current.Export | A | Con V2G | Corriente devuelta, en instalaciones bidireccionales. |
| Voltage | V | CA y CC | Tensión de alimentación, por fase en cargadores trifásicos. Útil para detectar una fase caída o una conexión débil. |
| Frequency | Hz | Según el contador | Frecuencia de la red. Tenga en cuenta que la especificación no le asigna campo de unidad. |
| Temperature | Celsius | Según el cargador | Temperatura en el cargador o en el conector. Explica una reducción de potencia en un día caluroso antes de que alguien lo considere un fallo. |
| SoC | % | CC, o ISO 15118 en CA | Estado de carga de la batería del coche. Solo aparece cuando el coche lo comunica, y en la carga de CA normal no suele hacerlo. |
| RPM | rpm | Poco habitual | Velocidad del ventilador, en cargadores que la notifican. |
Ninguna magnitud coincide con esa búsqueda.
Listas que funcionan
Copie una en el valor de una llamada ChangeConfiguration. Empiece con pocas y añada magnitudes cuando el cargador las acepte.
- Solo facturación
El mínimo que sigue produciendo una factura correcta. El valor por defecto en la mayoría de los cargadores.
Energy.Active.Import.Register - Telemetría estándar
Valor razonable por defecto para una ubicación de CA gestionada: una curva de potencia, corriente y tensión por fase para el diagnóstico.
Energy.Active.Import.Register, Power.Active.Import, Current.Import, Voltage - Carga inteligente
Añade los valores ofrecidos, para ver si un perfil se aplica de verdad en lugar de suponerlo.
Energy.Active.Import.Register, Power.Active.Import, Power.Offered, Current.Import, Current.Offered, Voltage - Carga rápida en CC
Añade el estado de carga y la temperatura, que los cargadores de CC sí notifican y que explican la mayoría de las reducciones de potencia.
Energy.Active.Import.Register, Power.Active.Import, Current.Import, Voltage, SoC, Temperature
Lo que falla
- Una magnitud incorrecta hace rechazar toda la lista
Los cargadores validan la lista como un todo. Si un solo elemento no se admite, obtiene Rejected o NotSupported para todo, sin indicación de cuál falló. Fije la lista magnitud a magnitud para encontrar la culpable, o lea antes MeterValuesSampledDataMaxLength y la documentación del fabricante.
- Una magnitud puede ser tres valores
Current.Import y Voltage se notifican por fase, así que en un cargador trifásico llegan como tres entradas sampledValue cada una, etiquetadas L1, L2, L3 o L1-N, etcétera. Una lista de seis magnitudes puede ser fácilmente una docena de valores por muestra. El tamaño de la carga útil crece más deprisa de lo que sugiere la longitud de la lista.
- Wh frente a kWh
El registro de energía está en Wh por defecto, pero el campo de unidad puede indicar kWh y algunos firmwares lo hacen. Lea la unidad en lugar de suponerla, o tendrá una factura que se desvía por un factor de mil.
- Un intervalo corto no sale gratis
MeterValueSampleInterval a 10 segundos con una lista larga supone cientos de mensajes por sesión. Con una SIM de pago por datos eso es dinero real, y en una ubicación grande es carga real para el backend. 60 segundos es un buen valor por defecto, 300 para ubicaciones en las que solo necesita la forma de la curva.
- StopTxnSampledData es la trampa de la carga útil
Todo lo que se incluye ahí se repite, en cada muestra de toda la sesión, dentro de un solo mensaje StopTransaction. Una lista larga en una sesión larga produce una carga útil tan grande que los backends la rechazan o la truncan, y la transacción no se cierra limpiamente. Limítela al registro de energía salvo que tenga un motivo concreto.
- Si quita el registro de energía, la facturación falla
Si Energy.Active.Import.Register no está en la lista, los valores de medida periódicos no llevan total acumulado. La mayoría de los backends recurren entonces a meterStart y meterStop de los mensajes de transacción, y cualquier sesión en la que falte el StopTransaction deja de poder facturarse. Manténgalo siempre en la lista.
- El SoC no suele estar disponible en CA
El estado de carga lo da el coche, por ISO 15118 o por el protocolo de carga en CC. En un wallbox de CA normal sin Plug & Charge el coche no lo comunica, así que pedir SoC se rechaza o no devuelve nada útil.
- Lea el campo context
Cada sampledValue lleva un context: Sample.Periodic, Transaction.Begin, Transaction.End, Sample.Clock o Trigger. Un valor en Transaction.Begin es un registro inicial, no un consumo. Tratar cada muestra como periódica es la forma de acabar contando sesiones dos veces.
Preguntas sobre OCPP 1.6J
OCPP 1.6J es la versión 1.6 del Open Charge Point Protocol en su forma JSON. El cargador abre un WebSocket hacia su backoffice, y ambos lados se envían mensajes JSON por él. La Open Charge Alliance publicó la versión 1.6 en 2015, y la mayoría de los cargadores siguen admitiéndola: en nuestra base de datos de cargadores, 483 de los 495 cargadores con una versión de OCPP conocida admiten la 1.6.
Transportan los mismos mensajes de otra manera. 1.6J envía JSON por un WebSocket que el cargador mantiene abierto, así que el cargador solo necesita una conexión saliente. 1.6S envía SOAP por HTTP, y entonces el backoffice también tiene que poder llegar al cargador.
2.0.1 es una versión más reciente con su propio conjunto de mensajes. Describe los ajustes de un cargador en un modelo de dispositivo, incorpora perfiles de seguridad, sustituye StartTransaction y StopTransaction por TransactionEvent y añade mensajes para Plug & Charge (ISO 15118). Las dos no se mezclan: un cargador y su backoffice acuerdan una versión al abrir la conexión. En nuestra base de datos de cargadores, 102 cargadores indican la 2.0.1 además de la 1.6 o en su lugar. Todos los mensajes de 2.0.1 y 2.1 están en la referencia de OCPP 2.0.1 y 2.1.
La Open Charge Alliance la publica gratis en su sitio web, con un esquema JSON para cada mensaje. Esta referencia sigue esa especificación. Donde difieran, la especificación tiene razón.
Mediante el perfil Smart Charging. El backoffice envía SetChargingProfile con una programación de límites en amperios o vatios. Un ChargePointMaxProfile limita todo el cargador, un TxDefaultProfile se aplica a cada sesión nueva y un TxProfile a una sesión en curso. Cuando se solapan dos perfiles con la misma finalidad, prevalece el de stackLevel más alto. Cómo lo usa Plugchoice está en la página de carga inteligente.
Búsquelo en la base de datos de cargadores: 775 cargadores, con las versiones de OCPP que conocemos y de dónde procede cada dato. La ficha técnica del cargador también suele indicarlo, a menudo como OCPP 1.6J u OCPP 1.6 JSON.
En los ajustes del cargador, a menudo en la app del instalador o en su página web local, introduzca la URL WebSocket del backoffice (empieza por ws:// o wss://) y el ID del cargador, la charge point identity. El cargador abre la conexión y envía un BootNotification. En cuanto el backoffice responde Accepted, el cargador está en línea y envía un StatusNotification por cada conector.
Plugchoice y OCPP
- Un backoffice gratuitoConecte un cargador OCPP 1.6J y gestiónelo en el portal web.
- La appPropietarios e instaladores controlan el mismo cargador desde su teléfono.
- El proxy OCPPUn cargador en varios backoffices a la vez.
- BackofficesLos backoffices que elige de una lista al conectar un cargador.
Más lecturas
Esta página para asistentes de IA
Toda la referencia, cada mensaje y cada clave de configuración, en un único archivo de texto plano que un asistente puede leer de una vez.
Gestione sus cargadores OCPP en Plugchoice
Conecte gratis sus cargadores OCPP 1.6J a Plugchoice y gestiónelos en el portal web, en la app y a través de la API.