OCPI versus OCPP

Introduction

During development of smart charging services using charger data, it was observed that the OCPI protocol typically used between a sub-operator and the CPO does not facilitate the most convenient way to perform Smart Charging services.

Together with partners, Jedlix has developed two methods that can be leveraged by CPOs to exchange data with the Jedlix platform. These methods have been developed with OCPI and OCPP in mind, such that integration is enabled with limited development impact.

Both the OCPI (Open Charge Point Interface) and OCPP (Open Charge Point Protocol), play crucial roles but serve distinct purposes.

  • OCPP specializes in facilitating communication between an EV charging station and its central management system, allowing for detailed, real-time insights and control, essential for optimized smart charging.
  • In contrast, OCPI is vital for enabling communication between different EV charging networks and service providers, focusing on features like roaming and billing information exchange, but it typically lacks the comprehensive real-time monitoring provided by OCPP.

Supported methods for exchanging data

Jedlix, recognizing the significance of both protocols, and offers two distinct methods, each leveraging one of these protocols.

  • The first method, utilizing OCPP, enables the seamless forwarding of essential charging station data, focusing on real-time transfer of crucial information.
  • The second method, leveraging OCPI, is instrumental in registering and managing charging sessions.

Charger Identification

Currently, no open standard exists that prescribe how a CPO should onboard a charger on the Smart Charging Service Provider’s platform. However, the OCPP and OCPI standards do prescribe methods for identifying and EVSE or Charging Station that can be useful during these operations. This guide describes two options to identify EVSEs throughout CPO and eMSP systems.

Charger identification in OCPI

OCPI utilizes a different model, listed from the highest to the lowest level:

  • Location: Location is a group of one or more EVSEs that belong together geographically or spatially.
  • EVSE: EVSE is the part that controls the power supply to a single EV in a single session. An EVSE may provide multiple connectors but only one of these can be active at the same time.
  • Connector: Connector is a specific socket or cable available for the EV to make use of.
OCPI Charging topology. Source: [https://ocpi-protocol.org](https://ocpi-protocol.org/)

OCPI Charging topology. Source: https://ocpi-protocol.org

Location object

The Location Object details the properties of the location where a group of related EVSEs are installed. In OCPI, every EVSE is distinguished by a uid, serving as a unique identifier within the CPOs platform and any suboperator platforms. This attribute is permanent and is not subject to any alterations, modifications, or renaming. Given that OCPI interactions involve numerous entities, the uid is a more reliable identifier compared to the evse_id. This is because the evse_id can be re-utilized by several CPOs and can be eliminated from an EVSE object if its status is marked as REMOVED. A typical OCPI location message and the EVSE Object attributes are illustrated in the provided example.

  • Location Example JSON

    {
      "country_code": "BE",
      "party_id": "BEC",
      "id": "LOC1",
      "publish": true,
      "name": "Gent Zuid",
      "address": "F.Rooseveltlaan 3A",
      "city": "Gent",
      "postal_code": "9000",
      "country": "BEL",
      "coordinates": {
        "latitude": "51.047599",
        "longitude": "3.729944"
      },
      "parking_type": "ON_STREET",
      "evses": [{
        "uid": "3256",
        "evse_id": "BE*BEC*E041503001",
        "status": "AVAILABLE",
        "capabilities": ["RESERVABLE"],
        "connectors": [{
          "id": "1",
          "standard": "IEC_62196_T2",
          "format": "CABLE",
          "power_type": "AC_3_PHASE",
          "max_voltage": 220,
          "max_amperage": 16,
          "tariff_ids": ["11"],
          "last_updated": "2015-03-16T10:10:02Z"
        }, {
          "id": "2",
          "standard": "IEC_62196_T2",
          "format": "SOCKET",
          "power_type": "AC_3_PHASE",
          "max_voltage": 220,
          "max_amperage": 16,
          "tariff_ids": ["13"],
          "last_updated": "2015-03-18T08:12:01Z"
        }],
        "physical_reference": "1",
        "floor_level": "-1",
        "last_updated": "2015-06-28T08:12:01Z"
      }, {
        "uid": "3257",
        "evse_id": "BE*BEC*E041503002",
        "status": "RESERVED",
        "capabilities": ["RESERVABLE"],
        "connectors": [{
          "id": "1",
          "standard": "IEC_62196_T2",
          "format": "SOCKET",
          "power_type": "AC_3_PHASE",
          "max_voltage": 220,
          "max_amperage": 16,
          "tariff_ids": ["12"],
          "last_updated": "2015-06-29T20:39:09Z"
        }],
        "physical_reference": "2",
        "floor_level": "-2",
        "last_updated": "2015-06-29T20:39:09Z"
      }],
      "operator": {
        "name": "BeCharged"
      },
      "time_zone": "Europe/Brussels",
      "last_updated": "2015-06-29T20:39:09Z"
    }
    
  • EVSE Attributes

    PropertyTypeCardinalityDescription
    uidCiString(36)1Uniquely identifies the EVSE within the CPOs platform (and suboperator platforms). This field can never be changed, modified, or renamed. This is the 'technical' identification of the EVSE, not to be used as 'human readable' identification, use the field evse_id for that.
    evse_idCiString(48)?Compliant with the specification for EVSE ID from "eMI3 standard version V1.0" "Part 2: business objects." Optional because if an evse_id is to be re-used in the real world, the evse_id can be removed from an EVSE object if the status is set to REMOVED.
    statusStatus1Indicates the current status of the EVSE.
    status_scheduleStatusSchedule*Indicates a planned status update of the EVSE.
    capabilitiesCapability*List of functionalities that the EVSE is capable of.
    connectorsConnector+List of available connectors on the EVSE.
    floor_levelstring(4)?Level on which the Charge Point is located (in garage buildings) in the locally displayed numbering scheme.
    coordinatesGeoLocation?Coordinates of the EVSE.
    physical_referencestring(16)?A number/string printed on the outside of the EVSE for visual identification.
    directionsDisplayText*Multi-language human-readable directions when more detailed information on how to reach the EVSE from the Location is required.
    parking_restrictionsParkingRestriction*The restrictions that apply to the parking spot.
    imagesImage*Links to images related to the EVSE such as photos or logos.
    last_updatedDateTime1Timestamp when this EVSE or one of its Connectors was last updated (or created).

Charger identification in OCPP

OCPP 2.0 and subsequent versions use the following model:

  • Charging Station: The Charging Station is the physical system where EVs can be charged. A Charging Station has one or more EVSEs.
  • EVSE: An EVSE is considered as an independently operated and managed part of the Charging Station that can deliver energy to one EV at a time. Each can have one or more Connectors.
  • Connector: Connector is a specific socket or cable available for the EV to make use of.
OCPP Charging topology

OCPP Charging topology

Charging station object

The models differ on the highest level, the equivalent of a Location in OCPI is the Charging Station in OCPP. OCPP does not define a standard format of a Charging Location. Jedlix proposes the following format. A Charging Station is identified by a uid. Each Charging Station can contain multiple EVSEs. These are identified by integers within the the Charging Station (1,2,etc…) and are not unique identifiers. Therefore a specific EVSE can be distinguished by the combination of the Charging Station uid and evse_id.

  • Charging Station Example JSON

    {
      "charging_station": {
        "uid": "5f69ad2c0ed5ca86d449cc93",
        "evses": [{
          "evse_id": 1,
          "capabilities": ["CHARGING_PROFILE_CAPABLE"],
          "connectors": [{
            "id": "1",
            "power_type": "AC_3_PHASE",
            "max_voltage": 220,
            "max_amperage": 16
          }]
        }, {
          "evse_id": 2,
          "capabilities": ["CHARGING_PROFILE_CAPABLE"],
          "connectors": [{
            "id": "1",
            "power_type": "AC_3_PHASE",
            "max_voltage": 220,
            "max_amperage": 16
          }, {
            "id": "2",
            "power_type": "AC_1_PHASE",
            "max_voltage": 220,
            "max_amperage": 16
          }]
        }]
      }
    }
    
  • EVSE Attributes

    Field NameField TypeCardinalityDescription
    idinteger1..1Required. EVSE Identifier. This contains a number (> 0) designating an EVSE of the Charging Station.
    connectorIdinteger0..1Optional. An id to designate a specific connector (on an EVSE) by connector index number.

Mapping of Charger Data to a Charger

We have now learned that chargers can be identified in multiple ways, such as:

  • In a 2-tier model (OCPI);
    • through the evse_id, the charger hardware identification (eMI3 standard), or;
    • throughevse_uid, the unique identifier in the CPO platform.
  • In a 3-tier model (OCPP);
    • though the combination of the chargingStation_uid and evse_id, combining the unique identifier in the CPO platform with the integer to identify the specific EVSE.

At Jedlix, we prefer using the unique identifier to distinguish EVSEs in the CPO platform. This is because the evse_id can be reused and removed by the CPO, making it less suitable for cross-referencing between the CPO and SCSP platform.

Ultimately, this will be used as the unique identifier in the CPO platform to map the incoming charger data and send control signals.