Functional Block: H
Types Reference: Shared types referenced below are defined in OCPP-2.0.1-DataTypes.md.
Types used only within this block are documented inline below.Deep-dive: For conceptual explanations, composite schedule calculation, worked examples, and implementation guidance, see the Smart Charging Deep-Dive.
#Messages
- SetChargingProfile (CSMS → CS)
- GetChargingProfiles (CSMS → CS)
- ClearChargingProfile (CSMS → CS)
- ReportChargingProfiles (CS → CSMS)
- GetCompositeSchedule (CSMS → CS)
- ClearedChargingLimit (CS → CSMS)
- NotifyChargingLimit (CS → CSMS)
- NotifyEVChargingSchedule (CS → CSMS)
- NotifyEVChargingNeeds (CS → CSMS)
#SetChargingProfile
Direction: CSMS → CS
#SetChargingProfileRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingProfile |
ChargingProfileType | Yes | ||
evseId |
integer | Yes | For TxDefaultProfile an evseId=0 applies the profile to each individual evse. For ChargingStationMaxProfile and ChargingStationExternalConstraints an evseId=0 contains an overal limit for the whole Charging Station. | |
customData |
CustomDataType | No |
Example SetChargingProfileRequest
{
"chargingProfile": {
"id": 0,
"stackLevel": 0,
"chargingProfilePurpose": "ChargingStationExternalConstraints",
"chargingProfileKind": "Absolute",
"chargingSchedule": [
"{...}"
]
},
"evseId": 0
}
#SetChargingProfileResponse
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
ChargingProfileStatusEnumType | Yes | ||
statusInfo |
StatusInfoType | No | ||
customData |
CustomDataType | No |
#GetChargingProfiles
Direction: CSMS → CS
#GetChargingProfilesRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingProfile |
ChargingProfileCriterionType | Yes | ||
requestId |
integer | Yes | Reference identification that is to be used by the Charging Station in the ReportChargingProfilesRequest when provided. | |
evseId |
integer | No | For which EVSE installed charging profiles SHALL be reported. If 0, only charging profiles installed on the Charging Station itself (the grid connection) SHALL be reported. If omitted, all installed charging profiles SHALL be reported. | |
customData |
CustomDataType | No |
Example GetChargingProfilesRequest
{
"chargingProfile": {},
"requestId": 0
}
#GetChargingProfilesResponse
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
GetChargingProfileStatusEnumType | Yes | ||
statusInfo |
StatusInfoType | No | ||
customData |
CustomDataType | No |
#ClearChargingProfile
Direction: CSMS → CS
#ClearChargingProfileRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingProfileCriteria |
ClearChargingProfileType | No | ||
chargingProfileId |
integer | No | The Id of the charging profile to clear. | |
customData |
CustomDataType | No |
#ClearChargingProfileResponse
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
ClearChargingProfileStatusEnumType | Yes | ||
statusInfo |
StatusInfoType | No | ||
customData |
CustomDataType | No |
#ReportChargingProfiles
Direction: CS → CSMS
#ReportChargingProfilesRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingLimitSource |
ChargingLimitSourceEnumType | Yes | ||
chargingProfile |
ChargingProfileType[] | Yes | minItems: 1 | |
evseId |
integer | Yes | The evse to which the charging profile applies. If evseId = 0, the message contains an overall limit for the Charging Station. | |
requestId |
integer | Yes | Id used to match the GetChargingProfilesRequest message with the resulting ReportChargingProfilesRequest messages. When the CSMS provided a requestId in the GetChargingProfilesRequest, this field SHALL contain the same value. | |
tbc |
boolean | No | To Be Continued. Default value when omitted: false. false indicates that there are no further messages as part of this report. Default: False |
|
customData |
CustomDataType | No |
Example ReportChargingProfilesRequest
{
"chargingLimitSource": "EMS",
"chargingProfile": [
{
"id": 0,
"stackLevel": 0,
"chargingProfilePurpose": "ChargingStationExternalConstraints",
"chargingProfileKind": "Absolute",
"chargingSchedule": [
"{...}"
]
}
],
"evseId": 0,
"requestId": 0
}
#ReportChargingProfilesResponse
No required fields. An empty {} is a valid response.
#GetCompositeSchedule
Direction: CSMS → CS
#GetCompositeScheduleRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
duration |
integer | Yes | Length of the requested schedule in seconds. | |
evseId |
integer | Yes | The ID of the EVSE for which the schedule is requested. When evseid=0, the Charging Station will calculate the expected consumption for the grid connection. | |
chargingRateUnit |
ChargingRateUnitEnumType | No | ||
customData |
CustomDataType | No |
Example GetCompositeScheduleRequest
{
"duration": 0,
"evseId": 0
}
#GetCompositeScheduleResponse
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
GenericStatusEnumType | Yes | ||
schedule |
CompositeScheduleType | No | ||
statusInfo |
StatusInfoType | No | ||
customData |
CustomDataType | No |
#ClearedChargingLimit
Direction: CS → CSMS
#ClearedChargingLimitRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingLimitSource |
ChargingLimitSourceEnumType | Yes | ||
evseId |
integer | No | EVSE Identifier. | |
customData |
CustomDataType | No |
Example ClearedChargingLimitRequest
{
"chargingLimitSource": "EMS"
}
#ClearedChargingLimitResponse
No required fields. An empty {} is a valid response.
#NotifyChargingLimit
Direction: CS → CSMS
#NotifyChargingLimitRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingLimit |
ChargingLimitType | Yes | ||
chargingSchedule |
ChargingScheduleType[] | No | minItems: 1 | |
evseId |
integer | No | The charging schedule contained in this notification applies to an EVSE. evseId must be > 0. | |
customData |
CustomDataType | No |
Example NotifyChargingLimitRequest
{
"chargingLimit": {
"chargingLimitSource": "EMS"
}
}
#NotifyChargingLimitResponse
No required fields. An empty {} is a valid response.
#NotifyEVChargingSchedule
Direction: CS → CSMS
#NotifyEVChargingScheduleRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingSchedule |
ChargingScheduleType | Yes | ||
evseId |
integer | Yes | The charging schedule contained in this notification applies to an EVSE. EvseId must be > 0. | |
timeBase |
string (date-time) | Yes | Periods contained in the charging profile are relative to this point in time. | |
customData |
CustomDataType | No |
Example NotifyEVChargingScheduleRequest
{
"chargingSchedule": {
"id": 0,
"chargingRateUnit": "W",
"chargingSchedulePeriod": [
"{...}"
]
},
"evseId": 0,
"timeBase": "2024-01-15T10:30:00Z"
}
#NotifyEVChargingScheduleResponse
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
GenericStatusEnumType | Yes | ||
statusInfo |
StatusInfoType | No | ||
customData |
CustomDataType | No |
#NotifyEVChargingNeeds
Direction: CS → CSMS
#NotifyEVChargingNeedsRequest
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingNeeds |
ChargingNeedsType | Yes | ||
evseId |
integer | Yes | Defines the EVSE and connector to which the EV is connected. EvseId may not be 0. | |
maxScheduleTuples |
integer | No | Contains the maximum schedule tuples the car supports per schedule. | |
customData |
CustomDataType | No |
Example NotifyEVChargingNeedsRequest
{
"chargingNeeds": {
"requestedEnergyTransfer": "DC"
},
"evseId": 0
}
#NotifyEVChargingNeedsResponse
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
status |
NotifyEVChargingNeedsStatusEnumType | Yes | ||
statusInfo |
StatusInfoType | No | ||
customData |
CustomDataType | No |
#Local Types
Types used only within this block's messages.
#ChargingProfileStatusEnumType
Returns whether the Charging Station has been able to process the message successfully. This does not guarantee the schedule will be followed to the letter. There might be other constraints the Charging Station may need to take into account.
| Value |
|---|
Accepted |
Rejected |
Used in: SetChargingProfile
#ClearChargingProfileStatusEnumType
Indicates if the Charging Station was able to execute the request.
| Value |
|---|
Accepted |
Unknown |
Used in: ClearChargingProfile
#EnergyTransferModeEnumType
Mode of energy transfer requested by the EV.
| Value |
|---|
DC |
AC_single_phase |
AC_two_phase |
AC_three_phase |
Used in: NotifyEVChargingNeeds
#GetChargingProfileStatusEnumType
This indicates whether the Charging Station is able to process this request and will send ReportChargingProfilesRequest messages.
| Value |
|---|
Accepted |
NoProfiles |
Used in: GetChargingProfiles
#NotifyEVChargingNeedsStatusEnumType
Returns whether the CSMS has been able to process the message successfully. It does not imply that the evChargingNeeds can be met with the current charging profile.
| Value |
|---|
Accepted |
Rejected |
Processing |
Used in: NotifyEVChargingNeeds
#ACChargingParametersType
EV AC charging parameters.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
energyAmount |
integer | Yes | Amount of energy requested (in Wh). This includes energy required for preconditioning. | |
evMaxCurrent |
integer | Yes | Maximum current (amps) supported by the electric vehicle (per phase). Includes cable capacity. | |
evMaxVoltage |
integer | Yes | Maximum voltage supported by the electric vehicle | |
evMinCurrent |
integer | Yes | Minimum current (amps) supported by the electric vehicle (per phase). | |
customData |
CustomDataType | No |
Used in: NotifyEVChargingNeeds
#ChargingLimitType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingLimitSource |
ChargingLimitSourceEnumType | Yes | ||
isGridCritical |
boolean | No | Indicates whether the charging limit is critical for the grid. | |
customData |
CustomDataType | No |
Used in: NotifyChargingLimit
#ChargingNeedsType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
requestedEnergyTransfer |
EnergyTransferModeEnumType | Yes | ||
acChargingParameters |
ACChargingParametersType | No | ||
dcChargingParameters |
DCChargingParametersType | No | ||
departureTime |
string (date-time) | No | Estimated departure time of the EV. | |
customData |
CustomDataType | No |
Used in: NotifyEVChargingNeeds
#ChargingProfileCriterionType
A ChargingProfile consists of ChargingSchedule, describing the amount of power or current that can be delivered per time interval.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingLimitSource |
ChargingLimitSourceEnumType[] | No | minItems: 1, maxItems: 4 | For which charging limit sources, charging profiles SHALL be reported. If omitted, the Charging Station SHALL not filter on chargingLimitSource. |
chargingProfileId |
integer[] | No | minItems: 1 | List of all the chargingProfileIds requested. Any ChargingProfile that matches one of these profiles will be reported. If omitted, the Charging Station SHALL not filter on chargingProfileId. This field SHALL NOT contain more ids than set in ChargingProfileEntries.maxLimit |
chargingProfilePurpose |
ChargingProfilePurposeEnumType | No | ||
stackLevel |
integer | No | Value determining level in hierarchy stack of profiles. Higher values have precedence over lower values. Lowest level is 0. | |
customData |
CustomDataType | No |
Used in: GetChargingProfiles
#ClearChargingProfileType
A ChargingProfile consists of a ChargingSchedule, describing the amount of power or current that can be delivered per time interval.
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingProfilePurpose |
ChargingProfilePurposeEnumType | No | ||
evseId |
integer | No | Specifies the id of the EVSE for which to clear charging profiles. An evseId of zero (0) specifies the charging profile for the overall Charging Station. Absence of this parameter means the clearing applies to all charging profiles that match the other criteria in the request. | |
stackLevel |
integer | No | Specifies the stackLevel for which charging profiles will be cleared, if they meet the other criteria in the request. | |
customData |
CustomDataType | No |
Used in: ClearChargingProfile
#CompositeScheduleType
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
chargingRateUnit |
ChargingRateUnitEnumType | Yes | ||
chargingSchedulePeriod |
ChargingSchedulePeriodType[] | Yes | minItems: 1 | |
duration |
integer | Yes | Duration of the schedule in seconds. | |
evseId |
integer | Yes | The ID of the EVSE for which the schedule is requested. When evseid=0, the Charging Station calculated the expected consumption for the grid connection. | |
scheduleStart |
string (date-time) | Yes | Date and time at which the schedule becomes active. All time measurements within the schedule are relative to this timestamp. | |
customData |
CustomDataType | No |
Used in: GetCompositeSchedule
#DCChargingParametersType
EV DC charging parameters
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
evMaxCurrent |
integer | Yes | Maximum current (amps) supported by the electric vehicle. Includes cable capacity. | |
evMaxVoltage |
integer | Yes | Maximum voltage supported by the electric vehicle | |
bulkSoC |
integer | No | min: 0.0, max: 100.0 | Percentage of SoC at which the EV considers a fast charging process to end. (possible values: 0 - 100) |
energyAmount |
integer | No | Amount of energy requested (in Wh). This inludes energy required for preconditioning. | |
evEnergyCapacity |
integer | No | Capacity of the electric vehicle battery (in Wh) | |
evMaxPower |
integer | No | Maximum power (in W) supported by the electric vehicle. Required for DC charging. | |
fullSoC |
integer | No | min: 0.0, max: 100.0 | Percentage of SoC at which the EV considers the battery fully charged. (possible values: 0 - 100) |
stateOfCharge |
integer | No | min: 0.0, max: 100.0 | Energy available in the battery (in percent of the battery capacity) |
customData |
CustomDataType | No |
Used in: NotifyEVChargingNeeds