Ir al contenido

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.

MensajesClaves de configuraciónMagnitudes medidasPreguntas

¿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
CampoTipoUsoContenido
idTagstringObligatorioEl identificador que se autoriza. Como máximo 20 caracteres.
Respuesta
CampoTipoUsoContenido
idTagInfoobjectObligatorioInformación de autorización del idTag.
statusstringObligatorioEstado de la autorización. Uno de Accepted, Blocked, Expired, Invalid, ConcurrentTx.
expiryDatestringOpcionalFecha y hora a partir de la cual el idTag se considera caducado. Una fecha y hora.
parentIdTagstringOpcionalidTag principal para la autorización en grupo. Como máximo 20 caracteres.
Ejemplo
El cargador envía
[2, "7f83df9c", "Authorize", {
  "idTag": "04A2B3C4D5E6F7"
}]
El backoffice responde
[3, "7f83df9c", {
  "idTagInfo": {
    "status": "Accepted"
  }
}]

En OCPP 2.0.1: Authorize

Se envía tras el arranque para registrarse en el backoffice.

Solicitud
CampoTipoUsoContenido
chargePointVendorstringObligatorioFabricante del punto de carga. Como máximo 20 caracteres.
chargePointModelstringObligatorioModelo del punto de carga. Como máximo 20 caracteres.
chargePointSerialNumberstringOpcionalNúmero de serie del punto de carga. Como máximo 25 caracteres.
chargeBoxSerialNumberstringOpcionalNúmero de serie de la charge box. Como máximo 25 caracteres.
firmwareVersionstringOpcionalVersión de firmware del punto de carga. Como máximo 50 caracteres.
iccidstringOpcionalICCID de la tarjeta SIM. Como máximo 20 caracteres.
imsistringOpcionalIMSI de la tarjeta SIM. Como máximo 20 caracteres.
meterTypestringOpcionalTipo del contador de energía. Como máximo 25 caracteres.
meterSerialNumberstringOpcionalNúmero de serie del contador de energía. Como máximo 25 caracteres.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioEstado del registro. Uno de Accepted, Pending, Rejected.
currentTimestringObligatorioHora actual del Central System. Una fecha y hora.
intervalintegerObligatorioIntervalo de heartbeat en segundos.
Ejemplo
El cargador envía
[2, "392b5b40", "BootNotification", {
  "chargePointVendor": "ExampleVendor",
  "chargePointModel": "ExampleModel",
  "firmwareVersion": "1.4.2"
}]
El backoffice responde
[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
CampoTipoUsoContenido
connectorIdintegerObligatorioID del conector (0 = todo el punto de carga).
typestringObligatorioCambio de disponibilidad solicitado. Uno de Inoperative, Operative.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioResultado de la solicitud de cambio de disponibilidad. Uno de Accepted, Rejected, Scheduled.
Ejemplo
El backoffice envía
[2, "be3dcf2e", "ChangeAvailability", {
  "connectorId": 1,
  "type": "Operative"
}]
El cargador responde
[3, "be3dcf2e", {
  "status": "Accepted"
}]

En OCPP 2.0.1: ChangeAvailability

Cambia una clave de configuración en el cargador.

Solicitud
CampoTipoUsoContenido
keystringObligatorioClave de configuración que se cambia. Como máximo 50 caracteres.
valuestringObligatorioNuevo valor de la clave de configuración. Como máximo 500 caracteres.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioResultado del cambio de configuración. Uno de Accepted, Rejected, RebootRequired, NotSupported.
Ejemplo
El backoffice envía
[2, "6fdf2255", "ChangeConfiguration", {
  "key": "MeterValueSampleInterval",
  "value": "60"
}]
El cargador responde
[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
CampoTipoUsoContenido
statusstringObligatorioResultado de la solicitud de borrado de la caché. Uno de Accepted, Rejected.
Ejemplo
El backoffice envía
[2, "e993e844", "ClearCache", {}]
El cargador responde
[3, "e993e844", {
  "status": "Accepted"
}]

En OCPP 2.0.1: ClearCache

Intercambio de datos específicos del fabricante.

Solicitud
CampoTipoUsoContenido
vendorIdstringObligatorioIdentifica al fabricante. Como máximo 255 caracteres.
messageIdstringOpcionalIdentificación adicional del mensaje. Como máximo 50 caracteres.
datastringOpcionalDatos específicos del fabricante.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioResultado de la transferencia de datos. Uno de Accepted, Rejected, UnknownMessageId, UnknownVendorId.
datastringOpcionalDatos de respuesta específicos del fabricante.
Ejemplo
Un lado envía
[2, "e1a403d5", "DataTransfer", {
  "vendorId": "com.example"
}]
El otro lado responde
[3, "e1a403d5", {
  "status": "Accepted"
}]

En OCPP 2.0.1: DataTransfer

Obtiene claves de configuración del cargador.

Solicitud
CampoTipoUsoContenido
keyarrayOpcionalLista de claves de configuración que se solicitan. items Como máximo 50 caracteres.
Respuesta
CampoTipoUsoContenido
configurationKeyarrayOpcionalLista de claves de configuración conocidas.
keystringObligatorioNombre de la clave de configuración. Como máximo 50 caracteres.
readonlybooleanObligatorioSi la clave es de solo lectura.
valuestringOpcionalValor actual de la clave. Como máximo 500 caracteres.
unknownKeyarrayOpcionalLista de claves solicitadas que son desconocidas. items Como máximo 50 caracteres.
Ejemplo
El backoffice envía
[2, "02bd00f5", "GetConfiguration", {
  "key": [
    "MeterValueSampleInterval"
  ]
}]
El cargador responde
[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
CampoTipoUsoContenido
currentTimestringObligatorioHora actual del Central System. Una fecha y hora.
Ejemplo
El cargador envía
[2, "83622997", "Heartbeat", {}]
El backoffice responde
[3, "83622997", {
  "currentTime": "2026-10-06T09:30:00Z"
}]

En OCPP 2.0.1: Heartbeat

Envía lecturas del contador periódicas o activadas.

Solicitud
CampoTipoUsoContenido
connectorIdintegerObligatorioID del conector (0 = contador principal).
meterValuearrayObligatorioUno o varios valores de medida con marca de tiempo.
timestampstringObligatorioMarca de tiempo del valor de medida. Una fecha y hora.
sampledValuearrayObligatorioUno o varios valores muestreados.
valuestringObligatorioEl valor medido.
contextstringOpcionalContexto de la lectura. Uno de Interruption.Begin, Interruption.End, Sample.Clock, Sample.Periodic, Transaction.Begin, Transaction.End, Trigger, Other.
formatstringOpcionalFormato del valor. Uno de Raw, SignedData.
measurandstringOpcionalTipo 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.
phasestringOpcionalFase 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.
locationstringOpcionalPunto de medida. Uno de Cable, EV, Inlet, Outlet, Body.
unitstringOpcionalUnidad de medida. Uno de Wh, kWh, varh, kvarh, W, kW, VA, kVA, var, kvar, A, V, K, Celcius, Celsius, Fahrenheit, Percent.
transactionIdintegerOpcionalTransacción a la que se refieren estos valores de medida.
Respuesta

Sin campos: la respuesta está vacía.

Ejemplo
El cargador envía
[2, "80a15023", "MeterValues", {
  "connectorId": 1,
  "meterValue": [
    {
      "timestamp": "2026-10-06T09:30:00Z",
      "sampledValue": [
        {
          "value": "19840",
          "measurand": "Energy.Active.Import.Register",
          "unit": "Wh"
        }
      ]
    }
  ],
  "transactionId": 4521
}]
El backoffice responde
[3, "80a15023", {}]

En OCPP 2.0.1: MeterValues

Inicia a distancia una sesión de carga.

Solicitud
CampoTipoUsoContenido
idTagstringObligatorioEl identificador que se usa para esta sesión. Como máximo 20 caracteres.
connectorIdintegerOpcionalConector en el que se inicia.
chargingProfileobjectOpcionalPerfil de carga que se aplica a esta sesión.
chargingProfileIdintegerObligatorioIdentificador único de este perfil de carga.
stackLevelintegerObligatorioNivel de prioridad del perfil (más alto = más prioridad).
chargingProfilePurposestringObligatorioFinalidad del perfil de carga. Uno de ChargePointMaxProfile, TxDefaultProfile, TxProfile.
chargingProfileKindstringObligatorioTipo de programación. Uno de Absolute, Recurring, Relative.
chargingScheduleobjectObligatorioLa programación de carga.
chargingRateUnitstringObligatorioUnidad de la tasa de carga (amperios o vatios). Uno de A, W.
chargingSchedulePeriodarrayObligatorioLista de periodos de la programación.
startPeriodintegerObligatorioInicio del periodo en segundos desde el inicio de la programación.
limitnumberObligatorioLímite de potencia o corriente durante este periodo. En pasos de 0,1.
numberPhasesintegerOpcionalNúmero de fases que se usan para cargar.
durationintegerOpcionalDuración de la programación en segundos.
startSchedulestringOpcionalFecha y hora de inicio de la programación. Una fecha y hora.
minChargingRatenumberOpcionalTasa de carga mínima admitida. En pasos de 0,1.
transactionIdintegerOpcionalTransacción a la que se aplica este perfil.
recurrencyKindstringOpcionalFrecuencia de repetición de los perfiles recurrentes. Uno de Daily, Weekly.
validFromstringOpcionalFecha y hora desde la que el perfil es válido. Una fecha y hora.
validTostringOpcionalFecha y hora a partir de la cual el perfil deja de ser válido. Una fecha y hora.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioSi el punto de carga aceptó la solicitud. Uno de Accepted, Rejected.
Ejemplo
El backoffice envía
[2, "b7e2ef8a", "RemoteStartTransaction", {
  "idTag": "04A2B3C4D5E6F7",
  "connectorId": 1
}]
El cargador responde
[3, "b7e2ef8a", {
  "status": "Accepted"
}]

En OCPP 2.0.1: RequestStartTransaction

Detiene a distancia una sesión de carga.

Solicitud
CampoTipoUsoContenido
transactionIdintegerObligatorioID de la transacción que se detiene.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioSi el punto de carga aceptó la solicitud. Uno de Accepted, Rejected.
Ejemplo
El backoffice envía
[2, "7fb0afb2", "RemoteStopTransaction", {
  "transactionId": 4521
}]
El cargador responde
[3, "7fb0afb2", {
  "status": "Accepted"
}]

En OCPP 2.0.1: RequestStopTransaction

Reinicia el punto de carga (hard o soft).

Solicitud
CampoTipoUsoContenido
typestringObligatorioTipo de reinicio. Uno de Hard, Soft.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioSi el punto de carga aceptó el reinicio. Uno de Accepted, Rejected.
Ejemplo
El backoffice envía
[2, "526d688f", "Reset", {
  "type": "Soft"
}]
El cargador responde
[3, "526d688f", {
  "status": "Accepted"
}]

En OCPP 2.0.1: Reset

Avisa al backoffice de que ha empezado una sesión de carga.

Solicitud
CampoTipoUsoContenido
connectorIdintegerObligatorioConector en el que empezó la transacción.
idTagstringObligatorioIdentificador usado para iniciar la transacción. Como máximo 20 caracteres.
meterStartintegerObligatorioValor del contador al inicio de la transacción (Wh).
timestampstringObligatorioMarca de tiempo del inicio de la transacción. Una fecha y hora.
reservationIdintegerOpcionalID de la reserva que se usó.
Respuesta
CampoTipoUsoContenido
idTagInfoobjectObligatorioInformación de autorización del idTag.
statusstringObligatorioEstado de la autorización. Uno de Accepted, Blocked, Expired, Invalid, ConcurrentTx.
expiryDatestringOpcionalFecha y hora a partir de la cual el idTag se considera caducado. Una fecha y hora.
parentIdTagstringOpcionalidTag principal para la autorización en grupo. Como máximo 20 caracteres.
transactionIdintegerObligatorioID de transacción asignado por el Central System.
Ejemplo
El cargador envía
[2, "2410a6a5", "StartTransaction", {
  "connectorId": 1,
  "idTag": "04A2B3C4D5E6F7",
  "meterStart": 12500,
  "timestamp": "2026-10-06T09:30:00Z"
}]
El backoffice responde
[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
CampoTipoUsoContenido
connectorIdintegerObligatorioConector del que se informa el estado.
errorCodestringObligatorioCó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.
statusstringObligatorioEstado actual del conector. Uno de Available, Preparing, Charging, SuspendedEVSE, SuspendedEV, Finishing, Reserved, Unavailable, Faulted.
infostringOpcionalInformación adicional en texto libre sobre el estado. Como máximo 50 caracteres.
timestampstringOpcionalMarca de tiempo del cambio de estado. Una fecha y hora.
vendorIdstringOpcionalIdentificador específico del fabricante. Como máximo 255 caracteres.
vendorErrorCodestringOpcionalCódigo de error específico del fabricante. Como máximo 50 caracteres.
Respuesta

Sin campos: la respuesta está vacía.

Ejemplo
El cargador envía
[2, "d9b0420e", "StatusNotification", {
  "connectorId": 1,
  "errorCode": "NoError",
  "status": "Available"
}]
El backoffice responde
[3, "d9b0420e", {}]

En OCPP 2.0.1: StatusNotification

Avisa al backoffice de que ha terminado una sesión de carga.

Solicitud
CampoTipoUsoContenido
transactionIdintegerObligatorioID de la transacción que se detiene.
timestampstringObligatorioMarca de tiempo del fin de la transacción. Una fecha y hora.
meterStopintegerObligatorioValor del contador al final de la transacción (Wh).
idTagstringOpcionalIdentificador que solicitó la parada. Como máximo 20 caracteres.
reasonstringOpcionalMotivo de la parada de la transacción. Uno de EmergencyStop, EVDisconnected, HardReset, Local, Other, PowerLoss, Reboot, Remote, SoftReset, UnlockCommand, DeAuthorized.
transactionDataarrayOpcionalArray de objetos MeterValue (misma estructura que MeterValues.meterValue).
timestampstringObligatorioMarca de tiempo del valor de medida. Una fecha y hora.
sampledValuearrayObligatorioUno o varios valores muestreados.
valuestringObligatorioEl valor medido.
contextstringOpcionalContexto de la lectura. Uno de Interruption.Begin, Interruption.End, Sample.Clock, Sample.Periodic, Transaction.Begin, Transaction.End, Trigger, Other.
formatstringOpcionalFormato del valor. Uno de Raw, SignedData.
measurandstringOpcionalTipo 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.
phasestringOpcionalFase 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.
locationstringOpcionalPunto de medida. Uno de Cable, EV, Inlet, Outlet, Body.
unitstringOpcionalUnidad de medida. Uno de Wh, kWh, varh, kvarh, W, kW, VA, kVA, var, kvar, A, V, K, Celcius, Celsius, Fahrenheit, Percent.
Respuesta
CampoTipoUsoContenido
idTagInfoobjectOpcionalInformación de autorización del idTag.
statusstringObligatorioEstado de la autorización. Uno de Accepted, Blocked, Expired, Invalid, ConcurrentTx.
expiryDatestringOpcionalFecha y hora a partir de la cual el idTag se considera caducado. Una fecha y hora.
parentIdTagstringOpcionalidTag principal para la autorización en grupo. Como máximo 20 caracteres.
Ejemplo
El cargador envía
[2, "b380dc07", "StopTransaction", {
  "transactionId": 4521,
  "timestamp": "2026-10-06T09:30:00Z",
  "meterStop": 19840,
  "idTag": "04A2B3C4D5E6F7"
}]
El backoffice responde
[3, "b380dc07", {
  "idTagInfo": {
    "status": "Accepted"
  }
}]

En OCPP 2.0.1: TransactionEvent

Desbloquea un conector a distancia.

Solicitud
CampoTipoUsoContenido
connectorIdintegerObligatorioConector que se desbloquea.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioResultado de la solicitud de desbloqueo. Uno de Unlocked, UnlockFailed, NotSupported.
Ejemplo
El backoffice envía
[2, "882ccab0", "UnlockConnector", {
  "connectorId": 1
}]
El cargador responde
[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
CampoTipoUsoContenido
locationstringObligatorioURI a la que se suben los diagnósticos. Una dirección (URI).
retriesintegerOpcionalNúmero de reintentos de subida.
retryIntervalintegerOpcionalSegundos entre reintentos.
startTimestringOpcionalInicio del intervalo de tiempo de los registros. Una fecha y hora.
stopTimestringOpcionalFin del intervalo de tiempo de los registros. Una fecha y hora.
Respuesta
CampoTipoUsoContenido
fileNamestringOpcionalNombre del archivo de diagnóstico. Como máximo 255 caracteres.
Ejemplo
El backoffice envía
[2, "da7920cd", "GetDiagnostics", {
  "location": "ftp://files.example.com/diagnostics/"
}]
El cargador responde
[3, "da7920cd", {}]

En OCPP 2.0.1: GetLog

Informa del estado de una subida de diagnósticos.

Solicitud
CampoTipoUsoContenido
statusstringObligatorioEstado actual de la subida de diagnósticos. Uno de Idle, Uploaded, UploadFailed, Uploading.
Respuesta

Sin campos: la respuesta está vacía.

Ejemplo
El cargador envía
[2, "d1c853b4", "DiagnosticsStatusNotification", {
  "status": "Uploaded"
}]
El backoffice responde
[3, "d1c853b4", {}]

En OCPP 2.0.1: LogStatusNotification

Informa del estado de una actualización de firmware.

Solicitud
CampoTipoUsoContenido
statusstringObligatorioEstado 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
El cargador envía
[2, "dc9afcb2", "FirmwareStatusNotification", {
  "status": "Installed"
}]
El backoffice responde
[3, "dc9afcb2", {}]

En OCPP 2.0.1: FirmwareStatusNotification

Indica al cargador que descargue e instale firmware nuevo.

Solicitud
CampoTipoUsoContenido
locationstringObligatorioURI desde la que se descarga el firmware. Una dirección (URI).
retrieveDatestringObligatorioFecha y hora a partir de la cual el cargador debe descargar el firmware. Una fecha y hora.
retriesintegerOpcionalNúmero de reintentos de descarga.
retryIntervalintegerOpcionalSegundos entre reintentos.
Respuesta

Sin campos: la respuesta está vacía.

Ejemplo
El backoffice envía
[2, "a57cc6a2", "UpdateFirmware", {
  "location": "ftp://files.example.com/fw-1.4.3.bin",
  "retrieveDate": "2026-10-07T02:00:00Z"
}]
El cargador responde
[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
CampoTipoUsoContenido
listVersionintegerObligatorioNúmero de versión actual de la lista de autorización local.
Ejemplo
El backoffice envía
[2, "ccf23a29", "GetLocalListVersion", {}]
El cargador responde
[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
CampoTipoUsoContenido
listVersionintegerObligatorioNúmero de versión de esta actualización de la lista.
updateTypestringObligatorioSi es una sustitución completa o una actualización diferencial. Uno de Differential, Full.
localAuthorizationListarrayOpcionalLista de entradas de autorización.
idTagstringObligatorioEl identificador que se autoriza. Como máximo 20 caracteres.
idTagInfoobjectOpcionalInformación de autorización del idTag.
statusstringObligatorioEstado de la autorización. Uno de Accepted, Blocked, Expired, Invalid, ConcurrentTx.
expiryDatestringOpcionalFecha y hora a partir de la cual el idTag se considera caducado. Una fecha y hora.
parentIdTagstringOpcionalidTag principal para la autorización en grupo. Como máximo 20 caracteres.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioResultado de la actualización de la lista local. Uno de Accepted, Failed, NotSupported, VersionMismatch.
Ejemplo
El backoffice envía
[2, "a23c9563", "SendLocalList", {
  "listVersion": 1,
  "updateType": "Full",
  "localAuthorizationList": [
    {
      "idTag": "04A2B3C4D5E6F7",
      "idTagInfo": {
        "status": "Accepted"
      }
    }
  ]
}]
El cargador responde
[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
CampoTipoUsoContenido
reservationIdintegerObligatorioID de la reserva que se cancela.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioSi se canceló la reserva. Uno de Accepted, Rejected.
Ejemplo
El backoffice envía
[2, "63258356", "CancelReservation", {
  "reservationId": 7
}]
El cargador responde
[3, "63258356", {
  "status": "Accepted"
}]

En OCPP 2.0.1: CancelReservation

Crea una reserva en un conector concreto.

Solicitud
CampoTipoUsoContenido
connectorIdintegerObligatorioConector que se reserva (0 = ningún conector concreto).
expiryDatestringObligatorioFecha y hora en que caduca la reserva. Una fecha y hora.
idTagstringObligatorioIdentificador para el que se hace la reserva. Como máximo 20 caracteres.
reservationIdintegerObligatorioID único de esta reserva.
parentIdTagstringOpcionalidTag principal para la reserva en grupo. Como máximo 20 caracteres.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioResultado de la solicitud de reserva. Uno de Accepted, Faulted, Occupied, Rejected, Unavailable.
Ejemplo
El backoffice envía
[2, "62a25d78", "ReserveNow", {
  "connectorId": 1,
  "expiryDate": "2026-10-06T10:00:00Z",
  "idTag": "04A2B3C4D5E6F7",
  "reservationId": 7
}]
El cargador responde
[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
CampoTipoUsoContenido
idintegerOpcionalID del perfil de carga que se borra.
connectorIdintegerOpcionalConector cuyos perfiles se borran.
chargingProfilePurposestringOpcionalFinalidad de los perfiles que se borran. Uno de ChargePointMaxProfile, TxDefaultProfile, TxProfile.
stackLevelintegerOpcionalNivel de pila de los perfiles que se borran.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioSi se borró algún perfil. Uno de Accepted, Unknown.
Ejemplo
El backoffice envía
[2, "2c436739", "ClearChargingProfile", {}]
El cargador responde
[3, "2c436739", {
  "status": "Accepted"
}]

En OCPP 2.0.1: ClearChargingProfile

Solicita la programación de carga combinada de un conector.

Solicitud
CampoTipoUsoContenido
connectorIdintegerObligatorioConector del que se solicita la programación.
durationintegerObligatorioDuración en segundos de la programación solicitada.
chargingRateUnitstringOpcionalUnidad preferida para la programación. Uno de A, W.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioSi el punto de carga puede facilitar la programación. Uno de Accepted, Rejected.
connectorIdintegerOpcionalConector al que se aplica la programación.
scheduleStartstringOpcionalFecha y hora de inicio de la programación compuesta. Una fecha y hora.
chargingScheduleobjectOpcionalLa programación de carga compuesta.
chargingRateUnitstringObligatorioUnidad de la tasa de carga (amperios o vatios). Uno de A, W.
chargingSchedulePeriodarrayObligatorioLista de periodos de la programación.
startPeriodintegerObligatorioInicio del periodo en segundos desde el inicio de la programación.
limitnumberObligatorioLímite de potencia o corriente durante este periodo. En pasos de 0,1.
numberPhasesintegerOpcionalNúmero de fases que se usan para cargar.
durationintegerOpcionalDuración de la programación en segundos.
startSchedulestringOpcionalFecha y hora de inicio de la programación. Una fecha y hora.
minChargingRatenumberOpcionalTasa de carga mínima admitida. En pasos de 0,1.
Ejemplo
El backoffice envía
[2, "50bc203f", "GetCompositeSchedule", {
  "connectorId": 1,
  "duration": 3600
}]
El cargador responde
[3, "50bc203f", {
  "status": "Accepted"
}]

En OCPP 2.0.1: GetCompositeSchedule

Envía un perfil de carga al cargador.

Solicitud
CampoTipoUsoContenido
connectorIdintegerObligatorioConector al que se aplica el perfil.
csChargingProfilesobjectObligatorioEl perfil de carga que se instala.
chargingProfileIdintegerObligatorioIdentificador único de este perfil de carga.
stackLevelintegerObligatorioNivel de prioridad del perfil (más alto = más prioridad).
chargingProfilePurposestringObligatorioFinalidad del perfil de carga. Uno de ChargePointMaxProfile, TxDefaultProfile, TxProfile.
chargingProfileKindstringObligatorioTipo de programación. Uno de Absolute, Recurring, Relative.
chargingScheduleobjectObligatorioLa programación de carga.
chargingRateUnitstringObligatorioUnidad de la tasa de carga (amperios o vatios). Uno de A, W.
chargingSchedulePeriodarrayObligatorioLista de periodos de la programación.
startPeriodintegerObligatorioInicio del periodo en segundos desde el inicio de la programación.
limitnumberObligatorioLímite de potencia o corriente durante este periodo. En pasos de 0,1.
numberPhasesintegerOpcionalNúmero de fases que se usan para cargar.
durationintegerOpcionalDuración de la programación en segundos.
startSchedulestringOpcionalFecha y hora de inicio de la programación. Una fecha y hora.
minChargingRatenumberOpcionalTasa de carga mínima admitida. En pasos de 0,1.
transactionIdintegerOpcionalTransacción a la que se aplica este perfil.
recurrencyKindstringOpcionalFrecuencia de repetición de los perfiles recurrentes. Uno de Daily, Weekly.
validFromstringOpcionalFecha y hora desde la que el perfil es válido. Una fecha y hora.
validTostringOpcionalFecha y hora a partir de la cual el perfil deja de ser válido. Una fecha y hora.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioSi se aceptó el perfil. Uno de Accepted, Rejected, NotSupported.
Ejemplo
El backoffice envía
[2, "01be9b20", "SetChargingProfile", {
  "connectorId": 1,
  "csChargingProfiles": {
    "chargingProfileId": 10,
    "stackLevel": 0,
    "chargingProfilePurpose": "TxDefaultProfile",
    "chargingProfileKind": "Relative",
    "chargingSchedule": {
      "chargingRateUnit": "A",
      "chargingSchedulePeriod": [
        {
          "startPeriod": 0,
          "limit": 16.0
        }
      ]
    }
  }
}]
El cargador responde
[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
CampoTipoUsoContenido
requestedMessagestringObligatorioEl mensaje que debe enviar el punto de carga. Uno de BootNotification, DiagnosticsStatusNotification, FirmwareStatusNotification, Heartbeat, MeterValues, StatusNotification.
connectorIdintegerOpcionalConector para el que se envía el mensaje.
Respuesta
CampoTipoUsoContenido
statusstringObligatorioSi el punto de carga enviará el mensaje. Uno de Accepted, Rejected, NotImplemented.
Ejemplo
El backoffice envía
[2, "4c736efd", "TriggerMessage", {
  "requestedMessage": "StatusNotification"
}]
El cargador responde
[3, "4c736efd", {
  "status": "Accepted"
}]

En OCPP 2.0.1: TriggerMessage

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

ClaveTipoAccesoQué hace
Core34
AllowOfflineTxForUnknownIdOpcional en la especificaciónbooleanLectura y escrituraSi 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ónbooleanLectura y escrituraSi 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.
AuthorizeRemoteTxRequestsbooleanLecturaSi 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ónintegerLectura y escrituraCuántas veces parpadea la luz del cargador durante una secuencia de parpadeo.
ClockAlignedDataIntervalintegerLectura y escrituraIntervalo 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.
ConnectionTimeOutintegerLectura y escrituraCuánto espera el cargador a que el conductor conecte el coche tras la autorización antes de liberar el conector.
ConnectorPhaseRotationCSLLectura y escrituraRotació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ónintegerLecturaNúmero máximo de elementos en ConnectorPhaseRotation.
GetConfigurationMaxKeysintegerLecturaNú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.
HeartbeatIntervalintegerLectura y escrituraCon 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ónintegerLectura y escrituraBrillo de la iluminación del cargador, en porcentaje.
LocalAuthorizeOfflinebooleanLectura y escrituraSi el cargador autoriza con su lista local o su caché mientras está sin conexión.
LocalPreAuthorizebooleanLectura y escrituraSi 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ónintegerLectura y escrituraEnergía que el cargador sigue entregando después de que una autorización resulte no válida.
MeterValuesAlignedDataCSLLectura y escrituraMagnitudes 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ónintegerLecturaNúmero máximo de magnitudes en MeterValuesAlignedData.
MeterValuesSampledDataCSLLectura y escrituraMagnitudes 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ónintegerLecturaNúmero máximo de magnitudes en MeterValuesSampledData.Léalo antes de montar una lista larga: si lo supera, el cargador rechaza la lista entera.
MeterValueSampleIntervalintegerLectura y escrituraCon 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ónintegerLectura y escrituraTiempo 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.
NumberOfConnectorsintegerLecturaNúmero de conectores físicos de este cargador.
ResetRetriesintegerLectura y escrituraCuántas veces reintenta el cargador un reinicio fallido.
StopTransactionOnEVSideDisconnectbooleanLectura y escrituraSi 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.
StopTransactionOnInvalidIdbooleanLectura y escrituraSi el cargador detiene la transacción cuando el backend rechaza el idTag.
StopTxnAlignedDataCSLLectura y escrituraMagnitudes alineadas con el reloj que se añaden al transactionData de StopTransaction.
StopTxnAlignedDataMaxLengthOpcional en la especificaciónintegerLecturaNúmero máximo de magnitudes en StopTxnAlignedData.
StopTxnSampledDataCSLLectura y escrituraMagnitudes 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ónintegerLecturaNúmero máximo de magnitudes en StopTxnSampledData.
SupportedFeatureProfilesCSLLecturaPerfiles 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ónintegerLecturaNúmero máximo de elementos en SupportedFeatureProfiles.
TransactionMessageAttemptsintegerLectura y escrituraCuántas veces reintenta el cargador enviar un mensaje de transacción que el backend no confirmó.
TransactionMessageRetryIntervalintegerLectura y escrituraEspera base entre esos reintentos. El cargador la multiplica por el número de intento.
UnlockConnectorOnEVSideDisconnectbooleanLectura y escrituraSi el cable se desbloquea en el cargador cuando se desconecta en el lado del coche.
WebSocketPingIntervalOpcional en la especificaciónintegerLectura y escrituraIntervalo 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
LocalAuthListEnabledbooleanLectura y escrituraSi se usa la lista de autorización local.
LocalAuthListMaxLengthintegerLecturaCuántas entradas contiene la lista de autorización local.
SendLocalListMaxLengthintegerLecturaCuántas entradas caben en un solo mensaje SendLocalList.Una lista mayor tiene que enviarse en varias actualizaciones diferenciales.
Reserva1
ReserveConnectorZeroSupportedOpcional en la especificaciónbooleanLecturaSi el cargador acepta una reserva en el conector 0, es decir, en cualquier conector.
Carga inteligente5
ChargeProfileMaxStackLevelintegerLecturaNivel de pila más alto que acepta el cargador en un perfil de carga. Los niveles más altos prevalecen.
ChargingScheduleAllowedChargingRateUnitCSLLecturaQué 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.
ChargingScheduleMaxPeriodsintegerLecturaNúmero máximo de periodos en una programación de carga.
ConnectorSwitch3to1PhaseSupportedOpcional en la especificaciónbooleanLecturaSi 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.
MaxChargingProfilesInstalledintegerLecturaCuántos perfiles de carga pueden estar instalados a la vez.

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.

MagnitudUnidadHabitual enQué le aporta
Energy.Active.Import.RegisterWhCA y CCEnergí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.RegisterWhCon V2GEnergía acumulada devuelta, en instalaciones bidireccionales.
Energy.Active.Import.IntervalWhCA y CCEnergía importada desde la muestra anterior, en lugar de un total acumulado.
Energy.Reactive.Import.RegistervarhSegún el contadorEnergía reactiva acumulada importada.
Power.Active.ImportWCA y CCPotencia activa instantánea. Lo que se representa para ver una curva de carga, y a lo que reacciona la gestión de carga.
Power.OfferedWCA y CCPotencia 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.ImportvarSegún el contadorPotencia reactiva instantánea.
Power.FactorcocienteSegún el contadorCociente entre la potencia activa y la aparente.
Current.ImportACA y CCCorriente consumida. Suele notificarse por fase, así que esta sola magnitud puede convertirse en tres valores por muestra.
Current.OfferedACA y CCLímite de corriente que el cargador indica al coche. La lectura directa de si se aplicó su perfil de carga inteligente.
Current.ExportACon V2GCorriente devuelta, en instalaciones bidireccionales.
VoltageVCA y CCTensión de alimentación, por fase en cargadores trifásicos. Útil para detectar una fase caída o una conexión débil.
FrequencyHzSegún el contadorFrecuencia de la red. Tenga en cuenta que la especificación no le asigna campo de unidad.
TemperatureCelsiusSegún el cargadorTemperatura 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 CAEstado 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.
RPMrpmPoco habitualVelocidad del ventilador, en cargadores que la notifican.

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

  1. ¿Qué es OCPP?

    Blog | 3 min de lectura

  2. ¿Qué es un backoffice OCPP?

    Blog | 2 min de lectura

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.

La referencia en texto plano

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.