OCPP

Referencia del controlador OCPP: el sistema central integrado, los certificados de los puntos de recarga, los tags de conector y la regla de nombres Meter/Status.

Ver como Markdown

El controlador OCPP convierte a Ganter Lab en el sistema central de los puntos de recarga de vehículos eléctricos que hablan el Open Charge Point Protocol. Como en LoRaWAN, el sentido está invertido: la estación no se conecta al cargador, es el punto de recarga el que se conecta a Ganter Lab por un WebSocket, se registra solo y empuja su telemetría hacia dentro.

El sistema central integrado arranca cuando el primer dispositivo OCPP habilitado se carga en el connector en ejecución, y se detiene cuando se quita o se deshabilita el último: sin ningún punto de recarga configurado, no hay nada escuchando en el puerto. Añadir uno lo trae de vuelta, sin reiniciar la aplicación. Cada dispositivo que se configura representa un punto de recarga, identificado por el id con el que se conecta.

El sistema central y los puertos

Qué Valor
Versiones del protocolo OCPP 1.6, 2.0, 2.0.1 y 2.1 (negociación de subprotocolo WebSocket; JSON)
Escucha Todas las interfaces, puerto TCP 19521, solo TLS
Dirección del punto de recarga wss://<station-address>:19521/<charge-point-id>
Identidad La última parte de la ruta del WebSocket es el id del punto de recarga

La escucha es siempre TLS; una escucha por HTTP sin cifrar se rechaza en todas partes salvo en loopback, que existe solo para las pruebas en proceso. Un punto de recarga se registra solo con su BootNotification (contestado con un intervalo de latido de 60 segundos), y toda tarjeta presentada para autorizar se acepta: Ganter Lab observa la recarga, no gestiona tarifas ni accesos.

Certificados

El lado servidor del apretón de manos TLS presenta el certificado OPC UA propio de la aplicación. Todo punto de recarga tiene que presentar un certificado de cliente:

  1. Tiene que construir una cadena válida en esta máquina Windows, sin errores de política TLS; una comprobación fallida rechaza la conexión y el diario técnico anota qué comprobación falló.
  2. Su nombre común de sujeto, o un nombre alternativo de sujeto DNS, tiene que nombrar el id del punto de recarga con el que se conecta. Un certificado que nombra un punto de recarga distinto del que va en la ruta de la conexión se rechaza.

Un apretón de manos sin certificado de cliente se descarta antes de que circule ningún dato.

Campos de conexión

Campo Qué es Formato Por defecto
Identificador El id del punto de recarga al que representa este dispositivo: el mismo id que el cargador pone al final de su URL de conexión y que lleva en su certificado. Texto libre, comparado sin distinguir mayúsculas de minúsculas. Vacío recae en el nombre saneado del dispositivo. vacío

No hay campos de host, de puerto ni de credenciales: los detalles de la conexión los tiene el cargador, y esta estación solo necesita saber a qué punto de recarga se refiere el dispositivo. Tampoco hay campos de intervalo de sondeo. OCPP funciona empujando (el punto de recarga envía mensajes MeterValues y StatusNotification con su propio calendario) y los tags se refrescan a partir de los últimos datos recibidos en un ciclo fijo de un segundo.

Un punto de recarga que todavía no se ha conectado, o un conector que todavía no ha informado, no tiene, por tanto, ninguna lectura, y no una lectura fallida. Sus tags se quedan vacíos, el dispositivo informa de que no se ha observado nada en lugar de irse sin conexión, y no se anota ningún fallo: ese es el estado normal de un punto de recarga que se acaba de configurar y aún no ha llegado.

Tags

Un tag OCPP lee un conector del punto de recarga (conector en el sentido de OCPP: una posición de enchufe, numerada a partir de 1). Existen dos clases de tag, que se distinguen por el sufijo del nombre del tag, que se valida:

El nombre del tag termina en Qué lee Tipo sensato
Meter El valor de medidor muestreado más reciente que informó el conector (MeterValues de OCPP). La unidad es la que envíe el cargador, típicamente Wh. El servidor conserva las últimas 10 muestras y el tag lee la más nueva. Un conector que nunca ha informado se lee como un valor vacío, no como cero. Float o Double
Status El texto de estado del conector de la última StatusNotification (por ejemplo Available, Charging, Faulted). String

Un nombre sin ninguno de los dos sufijos lo rechaza la validación: llame a los tags Connector1Meter y Connector1Status.

Campo Qué hace Valores Por defecto
Conector El número de conector del punto de recarga que lee este tag. 1 o más 1
Tipo de dato El tipo OPC UA con el que se expone el valor. Int32, Float, Double, String Float

Los tags OCPP son de solo lectura: el campo de acceso no ofrece ninguna opción con escritura, y una escritura se rechaza en vez de fingirse. Mandar sobre un punto de recarga es un comando propio, descrito a continuación, y no un valor escrito en un tag.

Comandos

A un punto de recarga se le manda además de leerlo. Cada dispositivo OCPP lleva los comandos de abajo como métodos sobre el dispositivo en el espacio de direcciones OPC UA propio de esta estación, así que cualquiera que pueda llamar a un método puede emitir uno: un cliente OPC UA, o una acción de Logic que lo llame.

Todos los comandos toman el id del punto de recarga como primer argumento, y devuelven como resultado la respuesta del propio punto de recarga.

Comando Más argumentos Qué hace
ChangeAvailability ConnectorId, Type (Operative o Inoperative) Pone un conector en servicio o lo retira.
ChangeConfiguration Key, Value Fija una clave de configuración en el punto de recarga (OCPP 1.6).
ClearCache ninguno Vacía la caché de autorización del punto de recarga.
GetConfiguration Key Lee una clave de configuración (OCPP 1.6).
RemoteStartTransaction IdTag Arranca una sesión de recarga para un token.
RemoteStopTransaction TransactionId Detiene una sesión en marcha.
GetTransactionStatus TransactionId Pregunta si una transacción sigue en marcha (OCPP 2.x).
Reset ninguno Reinicia el punto de recarga.
UnlockConnector ConnectorId Libera el cable de un conector.
SetChargingProfile ConnectorId, Limit, NumberOfPhases Fija un límite de potencia de recarga.
SetVariables ComponentName, VariableName, AttributeType, AttributeValue Fija una variable de un componente (OCPP 2.x).
GetVariables ComponentName, VariableName, AttributeType Lee una variable de un componente (OCPP 2.x).

AttributeType es uno de Actual, Target, MinSet, MaxSet.

Esperar la respuesta. Un comando no ha terminado cuando la estación lo ha enviado. La estación mantiene la llamada abierta hasta que el punto de recarga contesta a la orden exacta que se envió, emparejada por el identificador de correlación que viaja con ella, y solo entonces informa de éxito y devuelve la respuesta. Tres cosas lo terminan de otra manera, y cada una se informa como un fallo con su motivo:

  • El punto de recarga no está conectado, o su conexión no está abierta. No se envía nada.
  • El punto de recarga contesta con un error OCPP, por ejemplo un comando que no implementa. El código de error es el motivo.
  • Pasan 30 segundos sin ninguna respuesta. Un comando que nadie contestó es un fallo, nunca un éxito.

Un comando emitido para un punto de recarga que ningún dispositivo representa, o que no está conectado, se rechaza en el acto en lugar de encolarse.

Descubrimiento

Descubrir en el controlador OCPP lista los puntos de recarga conectados ahora mismo al sistema central, y leer los canales de un candidato propone un tag Meter y un tag Status por cada conector del que el punto de recarga haya informado hasta ese momento.

El primer punto de recarga se configura siempre a mano. Nada se puede conectar antes de que el sistema central escuche, y solo escucha una vez que existe aquí un dispositivo OCPP, así que una exploración de una instalación sin ningún punto de recarga configurado no encuentra nada y lo dice. Añada ese primer dispositivo con el id con el que se va a conectar el cargador; a partir de ahí, un cargador que se haya conectado se puede descubrir. El recorrido general del descubrimiento se describe en la página Connector.

El id se compara sin distinguir mayúsculas de minúsculas, en el certificado, en la ruta de la conexión y frente al dispositivo: un cargador que se conecta como cp-a con un certificado que nombra CP-A es el mismo punto de recarga que un dispositivo cuyo Identificador se lee CP-A.