POS Integrations
Topics in this document:
- Introduction
- Configuration
- Session Control from POS Provider to Tridens EV Charge for POS
- Tridens EV Charge for POS Reporting Session Progress to POS Provider
Introduction
POS provider uses Tridens EV Charge for POS as a gateway to the chargers of CPOs by OCPI/OICP. POS provider communicates with Tridens EV Charge for POS, which forwards the requests to OCPI/OICP CPO’s charger for the session control and receives responses and notifications for the related actions.
Diagram 1-1: POS Communication Topology
Notes:
POS providers can be added to Tridens EV Charge for POS environment, by providing roaming configuration.
POS provider’s charging sessions are stored in Tridens EV Charge for POS as away of charging infrastructure network, without a known customer/driver reference.
When the POS charging session is utilized on related CPO’s charging infrastructure who is part of Tridens EV Charge for CPO, such sessions appear as of home charging infrastructure network for that CPO.
Sessions are part of reporting in Tridens EV Charge for CPOs.
Required Upgrades:
Session analytics rely on session’s rated events in Monetization, meaning that non-customer sessions are not part of the analytics. Add analytics inserting for all session types.Configuration
Tridens configures the environment for POS integrations and applies the new POS provider. Further configuration depends on the selected roaming protocol, whether it is OCPI or OICP.
OCPI
Configure environment of POS provider in Tridens EV Charge for POS (configured by POS provider).
a. Configure Operator’s Roaming Profile of OCPI, representing POS provider’s settings.
b. Configure Operator’s Roaming Platform of OCPI, representing the CPO client.
c. Generate platform’s registration token to use for credentials exchange by the CPO client.
Configure environment of CPO client (configured by CPO client).
a. Use POS provider’s registration token (of Roaming Platform).
b. Initialize credentials exchange.
Diagram 1-2: OCPI Communication Sequence
OICP
Configure environment of POS provider in Tridens EV Charge for POS to communicate with the roaming hub (configured by POS provider).
a. Onboard POS provider as mobility provider in OICP hub.
b. Configure Operator’s Roaming Profile of OICP, representing the POS provider settings to the OICP hub.
c. Configure Operator’s Roaming Platform as a roaming hub, which contains CPOs.
d. Enable POS provider in Tridens EV Charge for POS to communicate with the roaming hub in scope of mutual certificate authentication (configured by POS provider and roaming hub provider).
POS provider on Tridens EV Charge for POS generates a private/public key pair and certificate signing request (CSR).
POS provider handles the public key and CSR to the roaming hub provider manager.
Roaming hub manager signs the CSR by roaming hub’s trusted certificate authority, resulting in a signed trusted certificate of POS provider.
Roaming hub manager handles the signed trusted certificate to the POS provider.
Roaming hub trusts and identifies the communication with such signed certificate, as it was signed by its trusted certificate authority.
Assign certificate to the the hub Roaming Platform. The certificate will be used for the outgoing communication to the hub.
e. Enable the roaming hub to communicate with Tridens EV Charge for POS in scope of mutual certificate authentication (configured by roaming hub provider and POS provider).
Roaming hub manager generates a private/public key pair and CSR.
Roaming hub manager handles the public key and CSR to the POS manager of Tridens EV Charge for POS.
POS provider signs the CSR by the POS’s trusted certificate authority, resulting in a signed trusted certificate of a hub.
POS provider handles the signed trusted certificate to the roaming hub manager.
POS provider trusts and identifies the communication with such signed certificate, as it was signed by its trusted certificate authority.
Configure environment of CPO to communicate with the roaming hub (configured by CPO client).
a. Onboard CPO provider as the charging infrastructure operator on the hub.
b. Configure the CPO environment for the communication with the hub.
c. Enable CPO to communicate with the roaming hub in scope of mutual certificate authentication (configured by CPO and roaming hub provider).
d. Enable the roaming hub to communicate with the CPO in scope of mutual certificate authentication (configured by roaming hub provider and CPO).
Diagram 1-3: OICP Communication Sequence
Session Control from POS Provider to Tridens EV Charge for POS
Operations by which the POS Provider can request EV Charge to start and stop the charging session on the charging infrastructure.
Resulting and intermediate charging session actions are forwarded back to the POS Provider by API, as configured and specified in section Tridens EV Charge Reporting Session Progress to POS Provider.
Request Identifiers Disambiguation
Identifier | Description |
---|---|
Roaming Platform Identifier | POS provider’s roaming platform identifier in Tridens EV Charge.Configured by Tridens. |
Roaming Partner Identifier | CPO provider’s roaming identifier in scope of Roaming Platform.Configured by Tridens. |
Roaming Partner’s Connector Identifier | CPO provider’s charging infrastructure’s composite identifier, consisting of OCPI’s {location-id}.{evse-id}.{connector-id} . Composite identifier is generated by OCPI CPO platform you are integrating with. In scope of CPO’s in Tridens EV Charge, it reflects {area-id}.{charger-id}.{connector-id} , so it can be determined in that way as well.POS provider can determine the Area, Charger, Connector structure, by requesting the API and using id/code attributes to construct the identifier. To obtain this, follow API guidelines of Read Charging Infrastructure of Roaming CPO. |
Table: Request identifiers
Read Charging Infrastructure of Roaming CPO
API request:
REQUEST:
GET {{app-url}}/api/v1/roaming-platforms/{{roaming-platform-id}}/infrastructure?page=1&count=10
Below is the API response containing paginated list of Areas with nested Charging Stations, Chargers and Connectors
RESPONSE:
200 OK
{
"objects": [
{
"id": 1,
"updated_at": 1706191213213,
"name": "Maribor Centre 1",
"code": "1",
"address": "Majstrova ulica 1",
"city": "Maribor",
"zip": "2000",
"state": "",
"latitude": 46.563335838136645,
"longitude": 15.65036250526935,
"roaming_info": {
"operator_name": "ev-charging-cpo-18",
"owner_name": "ev-charging-cpo-18"
},
"charging_stations": [
{
"chargers": [
{
"id": 1,
"updated_at": 1706175772613,
"name": "1",
"code": "1",
"latitude": 46.563335838136645,
"longitude": 15.65036250526935,
"connectors": [
{
"id": 1,
"updated_at": 1706175772613,
"name": "1",
"code": "1",
"type": "c_type_2",
"amperage_limit": 32,
"wattage_limit": 7000,
"voltage_limit": 230,
"power_factor": 1.0,
"roaming_platform": {
"id": 1
},
"operational_status": "inoperative"
}
],
"status": "unavailable",
"electric_current_type": "AC_three_phase",
"location": {
"latitude": 46.563335838136645,
"longitude": 15.65036250526935
},
"reservable": false,
"roaming_platform": {
"id": 1
},
"operational_status": "inoperative"
}
]
},
{
"chargers": [
{
"id": 2,
"updated_at": 1706175772615,
"name": "2",
"code": "2",
"latitude": 46.563335838136645,
"longitude": 15.65036250526935,
"connectors": [
{
"id": 2,
"updated_at": 1706175772615,
"name": "2",
"code": "2",
"type": "c_type_2",
"amperage_limit": 32,
"wattage_limit": 7000,
"voltage_limit": 230,
"power_factor": 1.0,
"roaming_platform": {
"id": 1
},
"operational_status": "inoperative"
}
],
"status": "unavailable",
"electric_current_type": "AC_three_phase",
"location": {
"latitude": 46.563335838136645,
"longitude": 15.65036250526935
},
"reservable": false,
"roaming_platform": {
"id": 1
},
"operational_status": "inoperative"
}
]
},
{
"chargers": [
{
"id": 4,
"updated_at": 1706191091843,
"name": "4",
"code": "4",
"latitude": 46.563335838136645,
"longitude": 15.65036250526935,
"connectors": [
{
"id": 4,
"updated_at": 1706191091843,
"name": "4",
"code": "4",
"type": "c_type_2",
"amperage_limit": 32,
"wattage_limit": 7000,
"voltage_limit": 230,
"power_factor": 1.0,
"roaming_platform": {
"id": 1
},
"operational_status": "inoperative"
}
],
"status": "unavailable",
"electric_current_type": "AC_three_phase",
"location": {
"latitude": 46.563335838136645,
"longitude": 15.65036250526935
},
"reservable": false,
"roaming_platform": {
"id": 1
},
"operational_status": "inoperative"
}
]
},
{
"chargers": [
{
"id": 3,
"updated_at": 1706191213213,
"name": "3",
"code": "3",
"latitude": 46.563335838136645,
"longitude": 15.65036250526935,
"connectors": [
{
"id": 3,
"updated_at": 1706191213213,
"name": "3",
"code": "3",
"type": "c_type_2",
"amperage_limit": 32,
"wattage_limit": 7000,
"voltage_limit": 230,
"power_factor": 1.0,
"roaming_platform": {
"id": 1
},
"operational_status": "inoperative"
}
],
"status": "available",
"electric_current_type": "AC_three_phase",
"location": {
"latitude": 46.563335838136645,
"longitude": 15.65036250526935
},
"reservable": false,
"roaming_platform": {
"id": 1
},
"operational_status": "operative"
}
]
}
],
"roaming_platform": {
"id": 1
},
"roaming_partner_identifier": "USA02"
},
{
"id": 2,
"updated_at": 1706175755237,
"name": "Maribor Centre 1",
"code": "2",
"address": "Majstrova ulica 1",
"city": "Maribor",
"zip": "2000",
"state": "",
"latitude": 46.563335838136645,
"longitude": 15.65036250526935,
"roaming_info": {
"operator_name": "ev-charging-cpo-18",
"owner_name": "ev-charging-cpo-18"
},
"roaming_platform": {
"id": 1
},
"roaming_partner_identifier": "USA02"
}
],
"total_num": 2
}
Request Charging Session to Start
REQUEST:
POST {{app-url}}/api/v1/sessions/start
{
"roaming_platform": {
"id": 10
},
"roaming_partner_identifier": "USA02",
"roaming_partner_connector_identifier": "1.1.1"
}
For authentication and authorization details, refer to the Tridens EV Charge API Reference.
RESPONSE:
200 OK
{
"id": 1,
"created_at": 1714579200000,
"updated_at": 1714579200000,
"duration": 0,
"session_identifier": "9a8003cd-f558-4d89-b9a0-cb5645200db8",
"service_identifier": "1602594999373",
"charger": {
"id": 1,
"name": "Charger 2",
"code": "CHARGER_2",
"address": "Zagrebška cesta 22",
"city": "Maribor",
"zip": "2000",
"postal_code": "2000",
"country": "Slovenia",
"latitude": 46.5337976,
"longitude": 15.655928,
"charging_station": {
"id": 1
},
"status": "available",
"electric_current_type": "DC",
"location": {
"latitude": 46.5337976,
"longitude": 15.655928
},
"operational_status": "operative"
},
"connector": {
"id": 1,
"name": "Connector 2",
"code": "CONNECTOR_1",
"index": 1,
"status": "available",
"type": "s_type_2",
"amperage_limit": 30,
"wattage_limit": 7000,
"voltage_limit": 230,
"power_factor": 1.0,
"operational_status": "operative"
},
"used_amount": 0,
"status": "ready",
"total_energy": 0,
"reservation_time": 0,
"charge_time": 0,
"park_time": 0,
"fault_time": 0,
"state_of_charge": 0,
"last_voltage": 0,
"last_current": 0,
"last_power": 0,
"roaming_platform": {
"id": 10
}
}
Request Charging Session to Stop
REQUEST:
POST {{app-url}}/api/v1/sessions/{session-id}/stop
API Reference:
For authentication and authorization details, refer to the Tridens EV Charge API Reference.
RESPONSE:
200 OK
{
"id": 1,
"created_at": 1714579200000,
"updated_at": 1714579500000,
"duration": 300,
"session_identifier": "9a8003cd-f558-4d89-b9a0-cb5645200db8",
"service_identifier": "1602594999373",
"charger": {
"id": 1,
"name": "Charger 2",
"code": "CHARGER_2",
"address": "Zagrebška cesta 22",
"city": "Maribor",
"zip": "2000",
"postal_code": "2000",
"country": "Slovenia",
"latitude": 46.5337976,
"longitude": 15.655928,
"charging_station": {
"id": 1
},
"status": "available",
"electric_current_type": "DC",
"location": {
"latitude": 46.5337976,
"longitude": 15.655928
},
"operational_status": "operative"
},
"connector": {
"id": 1,
"name": "Connector 2",
"code": "CONNECTOR_1",
"index": 1,
"status": "available",
"type": "s_type_2",
"amperage_limit": 30,
"wattage_limit": 7000,
"voltage_limit": 230,
"power_factor": 1,
"operational_status": "operative"
},
"used_amount": 1.54,
"status": "in_progress",
"total_energy": 0.58,
"reservation_time": 0,
"charge_time": 250,
"park_time": 50,
"fault_time": 0,
"state_of_charge": 78,
"last_voltage": 230,
"last_current": 30,
"last_power": 7000,
"custom_attributes": {
"currency": "EUR"
},
"roaming_platform": {
"id": 10
}
}
Tridens EV Charge for POS Reporting Session Progress to POS Provider
Configure Notification Rules for actions of charging session start, meter value reports and session stop. Provide a filter over Roaming Platform and assign publishing by REST call out. POS provider needs to provide API endpoints to which the reports will be published.
Notification Rule Configuration in System Operations of POS Provider Operator:
Add Notification Rule and determine name.
Assign Publisher of URL action.
a. Assign headers which are attached to the URL request. Here you can specify the access token.
b. Assign URL to which the call will be executed. Select Base type and enter URL.
Select Charging Sessions scope of notification. Create a Notification Rule for scopes of:
a. Session started
b. Meter values reported
c. Session ended
Add filter to limit notifications for this specific Site’s Operator.
a. Select logical operator of Equal to (==), with value of
contents.session.roaming_platform.id
Set notification rule as enabled.
Below is an example of how to configure notification rule:
REQUEST:
POST {{app-url}}/api/v1/notification-rules
{
"name": "Charging Session Updated",
"scope": "evc_sessions",
"action": "meter_values_reported",
"status": "active",
"publishers": [
{
"type": "callout_url",
"retry": 3,
"headers": {
"Authorization": "5b627e78-8611-4fd2-b22e-183c991648df"
},
"receivers": [
{
"type": "base",
"value": "https://01hkyspdc6frmcm6as52rpbvvq00-2cfa352340bab6a82fca.requestinspector.com"
}
]
}
],
"filters": [
{
"attribute": "contents.session.roaming_platform.id",
"value": "87",
"operator": "eq"
}
]
}
Notification content:
{
"content": {
"id": 1,
"created_at": 1714579200000,
"updated_at": 1714579500000,
"duration": 300,
"session_identifier": "9a8003cd-f558-4d89-b9a0-cb5645200db8",
"service_identifier": "1602594999373",
"charger": {
"id": 1,
"name": "Charger 2",
"code": "CHARGER_2",
"address": "Zagrebška cesta 22",
"city": "Maribor",
"zip": "2000",
"postal_code": "2000",
"country": "Slovenia",
"latitude": 46.5337976,
"longitude": 15.655928,
"charging_station": {
"id": 1
},
"status": "available",
"electric_current_type": "DC",
"location": {
"latitude": 46.5337976,
"longitude": 15.655928
},
"operational_status": "operative"
},
"connector": {
"id": 1,
"name": "Connector 2",
"code": "CONNECTOR_1",
"index": 1,
"status": "available",
"type": "s_type_2",
"amperage_limit": 30,
"wattage_limit": 7000,
"voltage_limit": 230,
"power_factor": 1,
"operational_status": "operative"
},
"used_amount": 1.54,
"status": "closed",
"total_energy": 0.58,
"reservation_time": 0,
"charge_time": 250,
"park_time": 50,
"fault_time": 0,
"state_of_charge": 78,
"last_voltage": 230,
"last_current": 30,
"last_power": 7000,
"custom_attributes": {
"currency": "EUR"
},
"roaming_platform": {
"id": 10
}
}
}