Ocpp-1 6
Ocpp-1 6
6
Table of Contents
1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2. Terminology and Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3. Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4. References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1. Document structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2. Feature Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.3. General views of operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4. Local Authorization & Offline Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5. Transaction in relation to Energy Transfer Period . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.6. Transaction-related messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.7. Connector numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.8. ID Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.9. Parent idTag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.10. Reservations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.11. Vendor-specific data transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.12. Smart Charging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.13. Time zones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4. Operations Initiated by Charge Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1. Authorize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2. Boot Notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3. Data Transfer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.4. Diagnostics Status Notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.5. Firmware Status Notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.6. Heartbeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.7. Meter Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.8. Start Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.9. Status Notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.10. Stop Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5. Operations Initiated by Central System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.1. Cancel Reservation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.2. Change Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.3. Change Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.4. Clear Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.5. Clear Charging Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.6. Data Transfer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.7. Get Composite Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.8. Get Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.9. Get Diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.10. Get Local List Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.11. Remote Start Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.12. Remote Stop Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.13. Reserve Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.14. Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.15. Send Local List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.16. Set Charging Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.17. Trigger Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.18. Unlock Connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.19. Update Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6. Messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.1. Authorize.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.2. Authorize.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.3. BootNotification.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.4. BootNotification.conf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.5. CancelReservation.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.6. CancelReservation.conf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.7. ChangeAvailability.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.8. ChangeAvailability.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.9. ChangeConfiguration.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.10. ChangeConfiguration.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.11. ClearCache.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.12. ClearCache.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.13. ClearChargingProfile.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.14. ClearChargingProfile.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.15. DataTransfer.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.16. DataTransfer.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.17. DiagnosticsStatusNotification.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.18. DiagnosticsStatusNotification.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.19. FirmwareStatusNotification.req. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.20. FirmwareStatusNotification.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.21. GetCompositeSchedule.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.22. GetCompositeSchedule.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.23. GetConfiguration.req. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.24. GetConfiguration.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.25. GetDiagnostics.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.26. GetDiagnostics.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.27. GetLocalListVersion.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.28. GetLocalListVersion.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.29. Heartbeat.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.30. Heartbeat.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.31. MeterValues.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.32. MeterValues.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.33. RemoteStartTransaction.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.34. RemoteStartTransaction.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.35. RemoteStopTransaction.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.36. RemoteStopTransaction.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.37. ReserveNow.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.38. ReserveNow.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.39. Reset.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.40. Reset.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.41. SendLocalList.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.42. SendLocalList.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.43. SetChargingProfile.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.44. SetChargingProfile.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.45. StartTransaction.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.46. StartTransaction.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.47. StatusNotification.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.48. StatusNotification.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.49. StopTransaction.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.50. StopTransaction.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.51. TriggerMessage.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.52. TriggerMessage.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.53. UnlockConnector.req. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.54. UnlockConnector.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.55. UpdateFirmware.req . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.56. UpdateFirmware.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
7. Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.1. AuthorizationData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.2. AuthorizationStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.3. AvailabilityStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.4. AvailabilityType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.5. CancelReservationStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.6. ChargePointErrorCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7.7. ChargePointStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7.8. ChargingProfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.9. ChargingProfileKindType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.10. ChargingProfilePurposeType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.11. ChargingProfileStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.12. ChargingRateUnitType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.13. ChargingSchedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.14. ChargingSchedulePeriod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.15. CiString20Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.16. CiString25Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.17. CiString50Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.18. CiString255Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.19. CiString500Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.20. ClearCacheStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.21. ClearChargingProfileStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.22. ConfigurationStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.23. DataTransferStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.24. DiagnosticsStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.25. FirmwareStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.26. GetCompositeScheduleStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.27. IdTagInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.28. IdToken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.29. KeyValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.30. Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.31. Measurand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.32. MessageTrigger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.33. MeterValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.34. Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.35. ReadingContext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
7.36. Reason. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
7.37. RecurrencyKindType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.38. RegistrationStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.39. RemoteStartStopStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.40. ReservationStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.41. ResetStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.42. ResetType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.43. SampledValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.44. TriggerMessageStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.45. UnitOfMeasure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.46. UnlockStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.47. UpdateStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.48. UpdateType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.49. ValueFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
8. Firmware and Diagnostics File Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.1. Download Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.2. Upload Diagnostics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
9. Standard Configuration Key Names & Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.1. Core Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.2. Local Auth List Management Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
9.3. Reservation Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
9.4. Smart Charging Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Appendix A: New in OCPP 1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
A.1. Updated/New Messages:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Interface description between Charge Point and Central System
1
Copyright © 2010 – 2015 Open Charge Alliance. All rights reserved.
2
Version History
Brendan McMahon
ESB ecars
Lambert Muhlenberg
Alfen
Patrick Rademakers
IHomer
Sergiu Tcaciuc
smartlab
Klaas van Zuuren
ElaadNL
3
Version Date Author Description
CR-01
Authentication/author
ization lists
CR-06 Query
configuration
parameters
CR-07 Timestamp in
BootNotification
mandatory
CR-08 Response to
StartTransaction.req
with status other than
Accepted is not clearly
defined
4
Version Date Author Description
5
1. Scope
This document defines the protocol used between a Charge Point and Central System. If the protocol
requires a certain action or response from one side or the other, then this will be stated in this
document.
The specification does not define the communication technology. Any technology will do, as long as it
supports TCP/IP connectivity.
6
2. Terminology and Conventions
2.1. Conventions
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD
NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described
in [RFC2119]], subject to the following additional clarification clause:
The phrase “valid reasons in particular circumstances” relating to the usage of the terms “SHOULD”,
“SHOULD NOT”, “RECOMMENDED”, and “NOT RECOMMENDED” is to be taken to mean technically
valid reasons, such as the absence of necessary hardware to support a function from a charge point
design: for the purposes of this specification it specifically excludes decisions made on commercial, or
other non-technical grounds, such as cost of implementation, or likelihood of use.
All sections and appendixes, except “Scope” and “Terminology and Conventions”, are normative,
unless they are explicitly indicated to be informative.
2.2. Definitions
This section contains the terminology that is used throughout this document.
Central System Charge Point Management System: the central system that manages
Charge Points and has the information for authorizing users for using its
Charge Points.
Charge Point The Charge Point is the physical system where an electric vehicle can be
charged. A Charge Point has one or more connectors.
Charging Profile Generic Charging Profile, used for different types of Profiles. Contains
information about the Profile and holds the Charging Schedule. In future
versions of OCPP it might hold more than 1 Charging Schedule.
Charging Schedule Part of a Charging Profile. Defines a block of charging Power or Current
limits. Can contain a start time and length.
Charging Session Part of a transaction during which the EV is allowed to request energy
Composite Charging The charging schedule as calculated by the Charge Point. It is the result
Schedule of the calculation of all active schedules and possible local limits present
in the Charge Point. Also IEC 15118 limits might be taken into account.
7
Connector The term “Connector”, as used in this specification, refers to an
independently operated and managed electrical outlet on a Charge Point.
This usually corresponds to a single physical connector, but in some
cases a single outlet may have multiple physical socket types and/or
tethered cable/connector arrangements to facilitate different vehicle
types (e.g. four-wheeled EVs and electric scooters).
Control Pilot signal signal used by a Charge Point to inform EV of maximum Charging power
or current limit, as defined by [IEC61851-1].
Energy Transfer Period Time during which an EV chooses to take offered energy, or return it.
Multiple Energy Transfer Periods are possible during a Transaction.
Phase Rotation Defines the wiring order of the phases between the energy meter (or if
absent, the grid connection), and the Charge Point connector.
Transaction The part of the charging process that starts when all relevant
preconditions (e.g. authorization, plug inserted) are met, and ends at the
moment when the Charge Point irrevocably leaves this state.
String Case Sensitive String. Only printable ASCII allowed. All strings in
messages and enumerations are case sensitive, unless explicitly stated
otherwise.
2.3. Abbreviations
CSL Comma Separated List
EV Electrical Vehicle
8
IMSI International Mobile Subscription Identity
SC Smart Charging
2.4. References
[IEC61851-1] “IEC 61851-1 2010: Electric vehicle conductive charging system - Part 1: General
requirements” https://webstore.iec.ch/publication/6029
[RFC2119] “Key words for use in RFCs to Indicate Requirement Levels”. S. Bradner. March
1997. http://www.ietf.org/rfc/rfc2119.txt
9
3. Introduction
This is the specification for OCPP version 1.6.
OCPP is a standard open protocol for communication between Charge Points and a Central System and
is designed to accommodate any type of charging technique.
OCPP 1.6 introduces new features to accommodate the market: Smart Charging, OCPP using JSON over
Websockets, better diagnostics possibilities (Reason), more Charge Point Statuses and TriggerMessage.
OCPP 1.6 is based on OCPP 1.5, with some new features and a lot of textual improvements,
clarifications and fixes for all known ambiguities. Due to improvements and new features, OCPP 1.6 is
not backward compatible with OCPP 1.5.
Some basic concepts are explained in the sections below in this introductory chapter. The chapters:
Operations Initiated by Charge Point and Operations Initiated by Central System describe the
operations supported by the protocol. The exact messages and their parameters are detailed in the
chapter: Messages and data types are described in chapter: Types. Defined configuration keys are
described in the chapter: Standard Configuration Key Names & Values.
To support the different flavours, the OCPP standard is divided in multiple documents. The base
document (the one you are reading now) contains the technical protocol specification. The technical
protocol specification must be used with one of the transport protocol specifications. the OCPP SOAP
Specification contains the implementation specification needed to make a OCPP-S implementation. For
OCPP-J, the OCPP JSON Specification must be used.
For improved interoperabillity between the Central Systems and Charge Points, it is adviced to meet
the requirements stated in the OCPP 1.6 Compliance testing documentation.
In OCPP 1.6 features and associated messages are grouped in profiles. Depending on the required
functionality, implementers can choose to implement one or more of the following profiles.
10
Profile name Description
Local Auth List Management Features to manage the local authorization list in
Charge Points.
These profiles can be used by a customer to determine if a OCPP 1.6 product has the required
functionality for their business case. Compliance testing will test per profile if a product is compliant
with the OCPP 1.6 specification.
When the profiles Core, Firmware Management, Local Auth List Management and Reservation are
implemented, all functions originating from OCPP 1.5 [OCPP1.5] are covered.
The grouping of all messages in their profiles can be found in the table below.
Authorize X
BootNotificat X
ion
ChangeAvail X
ability
ChangeConfi X
guration
ClearCache X
DataTransfer X
11
Message Core Firmware Local Auth Reservation Smart Remote
Managemen List Charging Trigger
t Managemen
t
GetConfigura X
tion
Heartbeat X
MeterValues X
RemoteStart X
Transaction
RemoteStopT X
ransaction
Reset X
StartTransac X
tion
StatusNotific X
ation
StopTransact X
ion
UnlockConne X
ctor
GetDiagnosti X
cs
DiagnosticsSt X
atusNotificat
ion
FirmwareSta X
tusNotificati
on
UpdateFirm X
ware
GetLocalList X
Version
SendLocalLis X
t
CancelReserv X
ation
12
Message Core Firmware Local Auth Reservation Smart Remote
Managemen List Charging Trigger
t Managemen
t
ReserveNow X
ClearChargin X
gProfile
GetComposit X
eSchedule
SetChargingP X
rofile
TriggerMess X
age
The support for the specific charging profiles is reported by the SupportedFeatureProfiles configuration
key.
The following figures describe the general views of the operations between Charge Point and Central
System for two cases:
1. a Charge Point requesting authentication of a card and sending charge transaction status,
The arrow labels in the following figures indicate the PDUs exchanged during the invocations of the
operations. These PDUs are defined in detail in the Messages section.
13
Figure 1. Sequence Diagram: Example of starting and stopping a transaction
When a Charge Point needs to charge an electric vehicle, it needs to authenticate the user first before
the charging can be started. If the user is authorized the Charge Point informs the Central System that
it has started with charging.
When a user wishes to unplug the electric vehicle from the Charge Point, the Charge Point needs to
verify that the user is either the one that initiated the charging or that the user is in the same group
and thus allowed to terminate the charging. Once authorized, the Charge Point informs the Central
System that the charging has been stopped.
A Charge Point MUST NOT send an Authorize.req before stopping a transaction if the
NOTE
presented idTag is the same as the idTag presented to start the transaction.
14
Figure 2. Sequence Diagram: Example of a firmware update
When a Charge Point needs to be updated with new firmware, the Central System informs the Charge
Point of the time at which the Charge Point can start downloading the new firmware. The Charge Point
SHALL notify the Central System after each step as it downloads and installs the new firmware.
In the event of unavailability of the communications or even of the Central System, the Charge Point is
designed to operate stand-alone. In that situation, the Charge Point is said to be offline.
To improve the experience for users, a Charge Point MAY support local authorization of identifiers,
using an Authorization Cache and/or a Local Authorization List.
This allows (a) authorization of a user when offline, and (b) faster (apparent) authorization response
time when communication between Charge Point and Central System is slow.
The LocalAuthorizeOffline configuration key controls whether a Charge Point will authorize a user
when offline using the Authorization Cache and/or the Local Authorization List.
The LocalPreAuthorize configuration key controls whether a Charge Point will use the Authorization
Cache and/or the Local Authorization List to start a transaction without waiting for an authorization
response from the Central System.
A Charge Point MAY support the (automatic) authorization of any presented identifier when offline, to
avoid refusal of charging to bona-fide users that cannot be explicitly authorized by Local Authorization
List/Authorization Cache entries. This functionality is explained in more detail in Unknown Offline
Authorization.
15
3.4.1. Authorization Cache
A Charge Point MAY implement an Authorization Cache that autonomously maintains a record of
previously presented identifiers that have been successfully authorized by the Central System.
(Successfully meaning: a response received on a message containing an idTag)
• The Cache contains all the latest received identifiers (i.e. valid and NOT-valid).
• The Cache is updated using all received IdTagInfo (from Authorize.conf, StartTransaction.conf and
StopTransaction.conf)
• When the validity of a Cache entry expires, it SHALL be changed to expired in the Cache.
• If new identifier authorization data is received and the Authorization Cache is full, the Charge
Point SHALL remove any NOT-valid entries, and then, if necessary, the oldest valid entries to make
space for the new entry.
• Cache values SHOULD be stored in non-volatile memory, and SHOULD be persisted across reboots
and power outages.
• When an identifier is presented that is stored in the cache as NOT-valid, and the Charge Point is
online: an Authorize.req SHOULD be sent to the central System to check the current state of the
identifier.
Operation of the Authorization Cache, when present, is reported (and controlled, where possible) by
the AuthorizationCacheEnabled configuration key.
The Local Authorization List is a list of identifiers that can be synchronized with the Central System.
The list contains the authorization status of all (or a selection of) identifiers and the authorization
status/expiration date.
Identifiers in the Local Authorization list can be marked as valid, expired, (temporarily) blocked, or
blacklisted, corresponding to IdTagInfo status values Accepted/ConcurrentTx, Expired, Blocked, and
Invalid, respectively.
These values may be used to provide more fine grained information to users (e.g. by display message)
during local authorization.
The Local Authorization List SHOULD be maintained by the Charge Point in non-volatile memory, and
SHOULD be persisted across reboots and power outages.
A Charge Point that supports Local Authorization List SHOULD implement the configuration key:
LocalAuthListMaxLength This gives the Central System a way to known the the maximum possible
16
number of Local Authorization List elements in a Charge Point
The Charge Point indicates whether the Local Authorization List is supported by the presence or
absence of the LocalAuthListManagement element in the value of the SupportedFeatureProfiles
configuration key. Whether the Local Authorization List is enabled is reported and controlled by the
LocalAuthListEnabled configuration key.
The Central System can synchronize this list by either (1) sending a complete list of identifiers to
replace the Local Authorization List or (2) by sending a list of changes (add, update, delete) to apply to
the Local Authorization List. The operations to support this are Get Local List Version and Send Local
List.
The Charge Point SHALL NOT modify the contents of the Authorization List by any other means than
upon a the receipt of a SendLocalList PDU from the Central System.
Conflicts between the local authorization list and the validity reported in, for instance,
a StartTransaction.conf message might occur. When this happens the Charge Point
NOTE
SHALL inform the Central System by sending a StatusNotification with ConnectorId set
to 0, and ErrorCode set to 'LocalListConflict'.
The Authorization Cache and Local Authorization List are distinct logical data structures. Identifiers
known in the Local Authorization List SHALL NOT be added to the Authorization Cache.
Where both Authorization Cache and Local Authorization List are supported, a Charge Point SHALL
treat Local Authorization List entries as having priority over Authorization Cache entries for the same
identifiers.
17
3.4.4. Unknown Offline Authorization
When offline, a Charge Point MAY allow automatic authorization of any "unknown" identifiers that
cannot be explicitly authorized by Local Authorization List or Authorization Cache entries. Identifiers
that are present in a Local Authorization List that have a status other than “Accepted” (Invalid,
Blocked, Expired) MUST be rejected. Identifiers that were valid but are apparently expired due to
passage of time MUST also be rejected.
Operation of the Unknown Offline Authorization capability, when supported, is reported (and
controlled, where possible) by the AllowOfflineTxForUnknownId configuration key.
When connection the the Central Server is restored, the Charge Point SHALL send a Start Transaction
request for any transaction that was authorized offline, as required by transaction-related message
handling. When the authorization status in the StartTransaction.conf is not Accepted, and the
transaction is still ongoing, the Charge Point SHOULD:
• when StopTransactionOnInvalidId is set to true: stop the transaction normally as stated in Stop
Transaction. The Reason field in the Stop Transaction request should be set to DeAuthorized. If the
Charge Point has the possibility to lock the Charging Cable, it SHOULD keep the Charging Cable
locked until the owner presents his identifier.
• when StopTransactionOnInvalidId is set to false: only stop energy delivery to the vehicle.
In the case of an invalid identifier, an operator MAY choose to charge the EV with a
NOTE minimum amount of energy so the EV is able to drive away. This amount is controlled
by the optional configuration key: MaxEnergyOnInvalidId.
The Energy Transfer Period is a period of time during wich energy is transferred between the EV and
the EVSE. There MAY be multiple Energy Transfer Periods during a Transaction.
• an EVSE-initiated supense of transfer during which de EVSE does not offer energy transfer
• an EV-initiated suspense of transfer during which the EV remains electrically connected to the
EVSE
• an EV-initiated suspense of transfer during which the EV is not electrically connected to the EVSE.
A Central System MAY deduce the start and end of an Energy Transfer Period from the MeterValues
that are sent during the Transaction.
18
19
Figure 5. OCPP Charging Session and transaction definition
The Charge Point SHOULD deliver transaction-related messages to the Central System in chronological
order as soon as possible. Transaction-related messages are StartTransaction.req, StopTransaction.req
and periodic or clock-aligned MeterValues.req messages.
When offline, the Charge Point MUST queue any transaction-related messages that it would have sent
to the Central System if the Charge Point had been online.
In the event that a Charge Point has transaction-related messages queued to be sent to the Central
System, new messages that are not transaction-related MAY be delivered immediately without waiting
for the queue to be emptied. It is therefore allowed to send, for example, an Authorize request or a
Notifications request before the transaction-related message queue has been emptied, so that
customers are not kept waiting and urgent notifications are not delayed.
The delivery of new transaction-related messages SHALL wait until the queue has been emptied. This
is to ensure that transaction-related messages are always delivered in chronological order.
When the Central System receives a transaction-related message that was queued on the Charge Point
for some time, the Central System will not be aware that this is a historical message, other than by
inference given that the various timestamps are significantly in the past. It SHOULD process such a
message as any other.
It is permissible for the Charge Point to skip a transaction-related message if and only if the Central
System repeatedly reports a `failure to process the message'. Such a stipulation is necessary, because
otherwise the requirement to deliver every transaction-related message in chronological order would
entail that the Charge Point cannot deliver any transaction-related messages to the Central System
after a software bug causes the Central System not to acknowledge one of the Charge Point’s
transaction-related messages.
What kind of response, or failure to respond, constitutes a `failure to process the message' is defined
in the documents OCPP JSON Specification and OCPP SOAP Specification.
The number of times and the interval with which the Charge Point should retry such failed
transaction-related messages MAY be configured using the TransactionMessageAttempts and
TransactionMessageRetryInterval configuration keys.
When the Charge Point encounters a first failure to deliver a certain transaction-related message, it
SHOULD send this message again as long as it keeps resulting in a failure to process the message and it
has not yet encountered as many failures to process the message for this message as specified in its
20
TransactionMessageAttempts configuration key. Before every retransmission, it SHOULD wait as many
seconds as specified in its TransactionMessageRetryInterval key, multiplied by the number of preceding
transmissions of this same message.
As an example, consider a Charge Point that has the value "3" for the TransactionMessageAttempts
configuration key and the value "60" for the TransactionMessageRetryInterval configuration key. It
sends a StopTransaction message and detects a failure to process the message in the Central System.
The Charge Point SHALL wait for 60 seconds, and resend the message. In the case when there is a
second failure, the Charge Point SHALL wait for 120 seconds, before resending the message. If this
final attempt fails, the Charge Point SHOULD discard the message and continue with the next
transaction-related message, if there is any.
To enable Central System to be able to address all the connectors of a Charge Point, ConnectorIds MUST
always be numbered in the same way.
• ConnectorIds MUST never be higher than the total number of connectors of a Charge Point
• For operations intiated by the Central System, ConnectorId 0 is reserved for addressing the entire
Charge Point.
• For operations initiated by the Charge Point (when reporting), ConnectorId 0 is reserved for the
Charge Point main controller.
Example: A Charge Point with 3 connectors: All connectors MUST be numbered with the IDs: 1, 2 and 3.
It is advisable to number the connectors of a Charge Point in a logical way: from left to right, top to
bottom incrementing.
3.8. ID Tokens
This section is normative.
In most cases, IdToken data acquired via local token reader hardware is usually a (4 or 7 byte) UID
value of a physical RFID card, typically represented as 8/14 hexadecimal digit characters.
However, IdTokens sent to Charge Points by Central Systems for remotely initiated charging sessions
may commonly be (single use) virtual transaction authorization codes, or virtual RFID tokens that
deliberately use a non-standard UID format to avoid possible conflict with real UID values.
21
Also, IdToken data used as ParentIds may often use a shared central account identifier for the
ParentId, instead of a UID of the first/master RFID card of an account.
Therefore, message data elements of the IdToken class (including ParentId) MAY contain any data,
subject to the constraints of the data-type (CiString20Type), that is meaningful to a Central System (e.g.
for the purpose of identifying the initiator of charging activity), and Charge Points MUST NOT make
any presumptions as to the format or content of such data (e.g. by assuming that it is a UID-like value
that must be hex characters only and/or an even number of digits).
A Central System has the ability to treat a set of identity tokens as a “group”, thereby allowing any one
token in the group to start a transaction and for the same token, or another token in the same group, to
stop the transaction. This supports the common use-cases of families or businesses with multiple
drivers using one or more shared electric vehicles on a single recharging contract account.
Tokens (idTags) are grouped for authorization purposes by specifying a common group identifier in
the optional ParentId element in IdTagInfo: two idTags are considered to be in the same group if their
ParentId Tags match.
Even though the ParentId has the same nominal data type (IdToken) as an idTag, the
value of this element may not be in the common format of IdTokens and/or may not
NOTE represent an actual valid IdToken (e.g. it may be a common shared "account number"):
therefore, the ParentId value SHOULD NOT be used for comparison against a presented
Token value (unless it also occurs as an idTag value).
3.10. Reservations
This section is informative.
Reservation of a Charge Point is possible using the Reserve Now operation. This operation reserves the
Charge Point until a certain expiry time for a specific idTag. A parent idTag may be included in the
reservation to support ‘group’ reservations. It is possible to reserve a specific connector on a Charge
Point or to reserve any connector on a Charge Point. A reservation is released when the reserved idTag
is used on the reserved connector (when specified) or on any connector (when unspecified) or when
the expiry time is reached or when the reservation is explicitly canceled.
22
3.11. Vendor-specific data transfer
This section is informative.
The mechanism of vendor-specific data transfer allows for the exchange of data or messages not
standardized in OCPP . As such, it offers a framework within OCPP for experimental functionality that
may find its way into future OCPP versions. Experimenting can be done without creating new (possibly
incompatible) OCPP dialects. Secondly, it offers a possibility to implement additional functionality
agreed upon between specific Central System and Charge Point vendors.
The operation Vendor Specific Data MAY be initiated either by the Central System or by the Charge
Point.
Please use with extreme caution and only for optional functionality, since it will
impact your compatibility with other systems that do not make use of this
IMPORTANT option. We recommend mentioning the usage explicitly in your documentation
and/or communication. Please consider consulting the Open Charge Alliance
before turning to this option to add functionality.
With Smart Charging a Central System gains the ability to influence the charging power or current of a
specific EV, or the total allowed energy consumption on an entire Charge Point / a group of Charge
Points, for instance, based on a grid connection, energy availability on the gird or the wiring of a
building. Influencing the charge power or current is based on energy transfer limits at specific points
in time. Those limits are combined in a Charging Profile.
A charging profile consists of a charging schedule, which is basically a list of time intervals with their
maximum charge power or current, and some values to specify the time period and recurrence of the
schedule.
There are three different types of charging profiles, depending on their purpose:
• ChargePointMaxProfile
In load balancing scenarios, the Charge Point has one or more local charging profiles that limit the
power or current to be shared by all connectors of the Charge Point. The Central System SHALL
configure such a profile with ChargingProfilePurpose set to “ChargePointMaxProfile”.
ChargePointMaxProfile can only be set at Charge Point ConnectorId 0.
• TxDefaultProfile
23
Default schedules for new transactions MAY be used to impose charging policies. An example could be
a policy that prevents charging during the day. For schedules of this purpose, ChargingProfilePurpose
SHALL be set to TxDefaultProfile.
In the event a TxDefaultProfile for connector 0 is installed, and the Central System sends a new profile
with ConnectorId >0, the TxDefaultProfile SHALL be replaced only for that specific connector.
• TxProfile
If a transaction-specific profile with purpose TxProfile is present, it SHALL overrule the default
charging profile with purpose TxDefaultProfile for the duration of the current transaction only. After
the transaction is stopped, the profile SHOULD be deleted. If there is no transaction active on the
connector specified in a charging profile of type TxProfile, then the Charge Point SHALL discard it and
return an error status in SetChargingProfile.conf.
The final schedule constraints that apply to a transaction are determined by merging the profiles with
purposes ChargePointMaxProfile with the profile TxProfile or the TxDefaultProfile in case no profile of
purpose TxProfile is provided. TxProfile SHALL only be set at Charge Point ConnectorId >0.
It is allowed to stack charging profiles of the same charging profile purpose in order to describe
complex calendars. For example, one can define a charging profile of purpose TxDefaultProfile with a
duration and recurrence of one week that allows full power or current charging on weekdays from
23:00h to 06:00h and from 00:00h to 24:00h in weekends and reduced power or current charging at
other times. On top of that, one can define other TxDefaultProfiles that define exception to this rule, for
example for holidays.
Precedence of charging profiles is determined by the value of their StackLevel parameter. At any point
in time the prevailing charging profile SHALL be the charging profile with the highest stackLevel
among the profiles that are valid at that point in time, as determined by their validFrom and validTo
parameters.
To avoid conflicts, the existence of multiple Charging Profiles with the same stackLevel and Purposes
in a Charge Point is not allowed. Whenever a Charge Point receives a Charging Profile with a
stackLevel and Purpose that already exists in the Charge Point, the Charge Point SHALL replace the
existing profile.
In the case an updated charging profile (with the same stackLevel and purpose) is sent
with a validFrom DateTime in the future, the Charge Point SHALL replace the installed
NOTE
profile and SHALL revert to default behavior until validFrom is reached. It is
RECOMMENDED to provide a start time in the past to prevent gaps.
24
3.12.3. Combining charging profile purposes
The Composite Schedule that will guide the charging level is a combination of the prevailing Charging
Profiles of the different chargingProfilePurposes.
This Composite Schedule is calculated by taking the minimum value for each time interval. Note that
time intervals do not have to be of fixed length, nor do they have to be the same for every charging
profile purpose. This means that a resulting Composite Schedule MAY contain intervals of different
lengths.
At any point in time, the available power or current in the Composite Schedule, which is the result of
merging the schedules of charging profiles ChargePointMaxProfile and TxDefaultProfile (or TxProfile),
SHALL be less than or equal to lowest value of available power or current in any of the merged
schedules.
In the case the Charge Point is equipped with more than one Connector, the limit value of
ChargePointMaxProfile is the limit for all connectors combined. The combined energy flow of all
connectors SHALL NOT be greater then the limit set by ChargePointMaxProfile.
There may be many different uses for smart charging. The following three typical kinds of smart
charging will be used to illustrate the possible behavior of smart charging:
• Load balancing
There are more complex use cases possible in which two or more of the above use cases are combined
into one more complex system.
Load Balancing
The Load Balancing use case is about internal load balancing within the Charge Point, the Charge Point
controls the charging schedule per connector. The Charge Point is configured with a fixed limit, for
example the maximum current of the connection to the grid.
The optional charging schedule field minChargingRate may be used by the Charge Point to optimize the
power distribution between the connectors. The parameter informs the Charge Point that charging
below minChargingRate is inefficient, giving the possibility to select another balancing strategy.
25
Figure 6. Load balancing Smart Charging topology
With Central smart charging the constraints on the charging schedule, per transaction, are determined
by the Central System. The Central System uses these schedules to stay within limits imposed by any
external system. The Central System directly controls the limits on the connectors of the Charge Points.
Central smart charging assumes that charge limits are controlled by the Central System. The Central
System receives a capacity forecast from the grid operator (DSO) or another source in one form or
another and calculates charging schedules for some or all charging transactions, details of which are
out of scope of this specification.
The Central System imposes charging limits on connectors. In response to a StartTransaction.req PDU
The Central System may choose to set charging limits to the transaction using the TxProfile
Central Smart Charging can be done with a Control Pilot signal, albeit with some limitations, because
26
an EV cannot communicate its charging via the Control Pilot signal. In analogy to the Local Smart
Charging use case, a connector can execute a charging schedule by the Control Pilot signal. This is
illustrated in the Figure below:
• After authorization the connector will set a maximum current to use via the Control Pilot signal.
This limit is based on a (default) charging profile that the connector had previously received from
the Central System. The EV starts charging and a StartTransaction.req is sent to the Central System.
• While charging is in progress the connector will continuously adapt the maximum current or
power according to the charging profile. Optionally, at any point in time the Central System may
send a new charging profile for the connector that shall be used as a limit schedule for the EV.
The Local Smart Charging use case describes a use case in which smart charging enabled Charge Points
have charging limits controlled locally by a Local Controller, not the Central System. The use case for
local smart charging is about limiting the amount of power that can be used by a group of Charge
27
Points, to a certain maximum. A typical use would be a number of Charge Points in a parking garage
where the rating of the connection to the grid is less than the sum the ratings of the Charge Points.
Another application might be that the Local Controller receives information about the availability of
power from a DSO or a local smart grid node.
Local smart charging assumes the existence of a Local Controller to control a group of Charge Points.
The Local Controller is a logical component. It may be implemented either as a separate physical
component or as part of a ‘master’ Charge Point controlling a number of other Charge Points. The Local
Control implements the OCPP protocol and is a proxy for the group members' OCPP messages, and may
or may not have any connectors of its own.
In the case of local smart charging the Local Controller imposes charging limits on a Charge Point.
These limits may be changed dynamically during the charging process in order to keep the power
consumption of the group of Charge Points within the group limits. The group limits may be pre-
configured in the Local Controller or may have been configured by the Central System.
The optional charging schedule field minChargingRate may be used by the Local Controller to optimize
the power distribution between the connectors. The parameter informs the Local Controller that
charging below minChargingRate is inefficient, giving the possibility to select another balancing
strategy.
The following diagram illustrates the sequence of messages to set charging limits on Charge Points in a
Local Smart Charging group. These limits can either be pre-configured in the Local Controller in one
way or another, or they can be set by the Central System. The Local Controller contains the logic to
distribute this capacity among the connected connectors by adjusting their limits as needed.
28
Figure 10. Presetting Local Group Limits
The next diagram describe the sequence of messages for a typical case of Local Smart Charging. For
simplicity’s sake, this case only involves one connector.
29
Figure 11. Sequence Diagram: Local Smart Charging
• After authorization the connector will set a maximum current to use, via the Control Pilot signal.
This limit is based on a (default) charging profile that the connector had previously received from
the Local Controller. The EV starts charging and sends a StartTransaction.req.
• The StartTransaction.req is sent to the Central System via the Local Controller, so that also the Local
Controller knows a transaction has started. The Local Controller just passes on the messages
between Charge Point and Central System, so that the Central System can address all the Local
Smart Charging group members individually.
• While charging is in progress the connector will continuously adapt the maximum current
according to the charging profile.
Optionally, at any point in time the Local Controller may send a new charging profile to the
connector that shall be used as a limit schedule for the EV.
30
3.12.5. Discovery of Charge Point Capabilities
The smart charging options defined can be used in extensive ways. Because of the possible limitations
and differences in capabilities between Charge Points, the Central System needs to be able to discover
the Charge Point specific capabilities. This is ensured by the standardized configuration keys as
defined in this chapter. A Smart Charging enabled Charge Point SHALL implement, and support
reporting of, the following configuration keys through the GetConfiguration.req PDU
ChargeProfileMaxStackLevel
ChargingScheduleAllowedChargingRateUnit
ChargingScheduleMaxPeriods
MaxChargingProfilesInstalled
A full list of all standardized configuration keys can be found in chapter Standard Configuration Key
Names & Values.
If a Charge Point goes offline after having received a transaction-specific charging profile with purpose
TxProfile, then it SHALL continue to use this profile for the duration of the transaction.
If a Charge Point goes offline before a transaction is started or before a transaction-specific charging
profile with purpose TxProfile was received, then it SHALL use the charging profiles that are available.
Zero or more of the following charging profile purposes MAY have been previously received from the
Central System:
*ChargePointMaxProfile
*TxDefaultProfile
See section Combining Charging Profile Purposes for a description on how to combine charging
profiles with different purposes.
If a Charge Point goes offline, without having any charging profiles, then it SHALL execute a
transaction as if no constraints apply.
The following data structure describes a daily default profile that limits the power to 6 kW between
31
08:00h and 20:00h.
ChargingProfile
chargingProfileId 100
stackLevel 0
chargingProfilePurpose TxDefaultProfile
chargingProfileKind Recurring
recurrencyKind Daily
chargingSchedule (List of 1
ChargingSchedule
elements)
ChargingSchedule
startSchedule 2013-01-01T00:00Z
chargingRateUnit W
chargingSchedulePeriod (List of 3
ChargingSchedulePeriod
elements)
ChargingSchedulePeri
od
startPeriod 0 (=00:00)
limit 11000
numberPhases 3
limit 6000
numberPhases 3
limit 11000
numberPhases 3
The amount of phases used during charging is limited by the capabilities of: The
IMPORTANT Charge Point, EV and Cable between CP and EV. If any of these 3 is not capable of
3 phase charging, the EV will be charged using 1 phase only.
32
Switching the number of used phases during a schedule or charging session
should be done with care. Some EVs may not support this and changing the
IMPORTANT amount of phases may result in physical damage. With the configuration key:
ConnectorSwitch3to1PhaseSupported The Charge Point can tell if it supports
switching the amount of phases during a transaction.
On days on which DST goes into or out of effect, a special profile might be needed (e.g. for
TIP
relative profiles).
OCPP does not prescribe the use of a specific time zone for time values. However, it is strongly
recommended to use UTC for all time values to improve interoperability between Central Systems and
Charge Points.
33
4. Operations Initiated by Charge Point
4.1. Authorize
Before the owner of an electric vehicle can start or stop charging, the Charge Point has to authorize the
operation. The Charge Point SHALL only supply energy after authorization. When stopping a
Transaction, the Charge Point SHALL only send an Authorize.req when the identifier used for stopping
the transaction is different from the identifier that started the transaction.
Authorize.req SHOULD only be used for the authorization of an identifier for charging.
A Charge Point MAY authorize identifier locally without involving the Central System, as described in
Local Authorization List. If an idTag presented by the user is not present in the Local Authorization List
or Authorization Cache, then the Charge Point SHALL send an Authorize.req PDU to the Central System
to request authorization. If the idTag is present in the Local Authorization List or Authorization Cache,
then the Charge Point MAY send an Authorize.req PDU to the Central System.
Upon receipt of an Authorize.req PDU, the Central System SHALL respond with an Authorize.conf PDU.
This response PDU SHALL indicate whether or not the idTag is accepted by the Central System. If the
Central System accepts the idTag then the response PDU MAY include a parentIdTag and MUST include
an authorization status value indicating acceptance or a reason for rejection.
If Charge Point has implemented an Authorization Cache, then upon receipt of an Authorize.conf PDU
the Charge Point SHALL update the cache entry, if the idTag is not in the Local Authorization List, with
the IdTagInfo value from the response as described under Authorization Cache.
After start-up, a Charge Point SHALL send a request to the Central System with information about its
configuration (e.g. version, vendor, etc.). The Central System SHALL respond to indicate whether it will
34
accept the Charge Point.
The Charge Point SHALL send a BootNotification.req PDU each time it boots or reboots. Between the
physical power-on/reboot and the successful completion of a BootNotification, where Central System
returns Accepted or Pending, the Charge Point SHALL NOT send any other request to the Central
System. This includes cached messages that are still present in the Charge Point from before.
When the Central System responds with a BootNotification.conf with a status Accepted, the Charge
Point will adjust the heartbeat interval in accordance with the interval from the response PDU and it is
RECOMMENDED to synchronize its internal clock with the supplied Central System’s current time. If
the Central System returns something other than Accepted, the value of the interval field indicates the
minimum wait time before sending a next BootNotification request. If that interval value is zero, the
Charge Point chooses a waiting interval on its own, in a way that avoids flooding the Central System
with requests. A Charge Point SHOULD NOT send a BootNotification.req earlier, unless requested to do
so with a TriggerMessage.req.
If the Central System returns the status Rejected, the Charge Point SHALL NOT send any OCPP message
to the Central System until the aforementioned retry interval has expired. During this interval the
Charge Point may no longer be reachable from the Central System. It MAY for instance close its
communication channel or shut down its communication hardware. Also the Central System MAY close
the communication channel, for instance to free up system resources. While Rejected, the Charge Point
SHALL NOT respond to any Central System initiated message. the Central System SHOULD NOT initiate
any.
The Central System MAY also return a Pending registration status to indicate that it wants to retrieve or
set certain information on the Charge Point before the Central System will accept the Charge Point. If
the Central System returns the Pending status, the communication channel SHOULD NOT be closed by
either the Charge Point or the Central System. The Central System MAY send request messages to
retrieve information from the Charge Point or change its configuration. The Charge Point SHOULD
respond to these messages. The Charge Point SHALL NOT send request messages to the Central System
unless it has been instructed by the Central System to do so with a TriggerMessage.req request.
While in pending state, the following Central System initiated messages are not allowed:
RemoteStartTransaction.req and RemoteStopTransaction.req
While not yet accepted by the Central System, the Charge Point may allow locally-
authorized transactions if it is configured to do so, as described in Local Authorization
NOTE
& Offline Behavior. Parties who want to implement this behavior must realize that it is
uncertain if those transactions can ever be delivered to the Central System.
35
Figure 14. Sequence Diagram: Data Transfer
If a Charge Point needs to send information to the Central System for a function not supported by
OCPP, it SHALL use the DataTransfer.req PDU.
The vendorId in the request SHOULD be known to the Central System and uniquely identify the
vendor-specific implementation. The VendorId SHOULD be a value from the reversed DNS namespace,
where the top tiers of the name, when reversed, should correspond to the publicly registered primary
DNS name of the Vendor organisation.
Optionally, the messageId in the request PDU MAY be used to indicate a specific message or
implementation.
The length of data in both the request and response PDU is undefined and should be agreed upon by all
parties involved.
If the recipient of the request has no implementation for the specific vendorId it SHALL return a status
‘UnknownVendor’ and the data element SHALL not be present. In case of a messageId mismatch (if
used) the recipient SHALL return status ‘UnknownMessageId’. In all other cases the usage of status
‘Accepted’ or ‘Rejected’ and the data element is part of the vendor-specific agreement between the
parties involved.
Charge Point sends a notification to inform the Central System about the status of a diagnostics upload.
The Charge Point SHALL send a DiagnosticsStatusNotification.req PDU to inform the Central System
that the upload of diagnostics is busy or has finished successfully or failed. The Charge Point SHALL
only send the status Idle after receipt of a TriggerMessage for a Diagnostics Status Notification, when it
is not busy uploading diagnostics.
Upon receipt of a DiagnosticsStatusNotification.req PDU, the Central System SHALL respond with a
DiagnosticsStatusNotification.conf.
36
4.5. Firmware Status Notification
A Charge Point sends notifications to inform the Central System about the progress of the firmware
update. The Charge Point SHALL send a FirmwareStatusNotification.req PDU for informing the Central
System about the progress of the downloading and installation of a firmware update. The Charge Point
SHALL only send the status Idle after receipt of a TriggerMessage for a Firmware Status Notification,
when it is not busy downloading/installing firmware.
Upon receipt of a FirmwareStatusNotification.req PDU, the Central System SHALL respond with a
FirmwareStatusNotification.conf.
4.6. Heartbeat
To let the Central System know that a Charge Point is still connected, a Charge Point sends a heartbeat
after a configurable time interval.
The Charge Point SHALL send a Heartbeat.req PDU for ensuring that the Central System knows that a
Charge Point is still alive.
Upon receipt of a Heartbeat.req PDU, the Central System SHALL respond with a Heartbeat.conf. The
response PDU SHALL contain the current time of the Central System, which is RECOMMENDED to be
used by the Charge Point to synchronize its internal clock.
The Charge Point MAY skip sending a Heartbeat.req PDU when another PDU has been sent to the
Central System within the configured heartbeat interval. This implies that a Central System SHOULD
assume availability of a Charge Point whenever a PDU has been received, the same way as it would
have, when it received a Heartbeat.req PDU.
With JSON over WebSocket, sending heartbeats is not mandatory. However, for time
NOTE
synchronization it is advised to at least send one heartbeat per 24 hour.
37
4.7. Meter Values
A Charge Point MAY sample the energy meter or other sensor/transducer hardware to provide extra
information about its meter values. It is up to the Charge Point to decide when it will send meter
values. This can be configured using the ChangeConfiguration.req message to data acquisition
intervals and specify data to be acquired & reported.
The Charge Point SHALL send a MeterValues.req PDU for offloading meter values. The request PDU
SHALL contain for each sample:
1. The id of the Connector from which samples were taken. If the connectorId is 0, it is associated with
the entire Charge Point. If the connectorId is 0 and the Measurand is energy related, the sample
SHOULD be taken from the main energy meter.
2. The transactionId of the transaction to which these values are related, if applicable. If there is no
transaction in progress or if the values are taken from the main meter, then transaction id may be
omitted.
3. One or more meterValue elements, of type MeterValue, each representing a set of one or more
data values taken at a particular point in time.
Each MeterValue element contains a timestamp and a set of one or more individual sampledvalue
elements, all captured at the same point in time. Each sampledValue element contains a single value
datum. The nature of each sampledValue is determined by the optional measurand, context, location,
unit, phase, and format fields.
The optional measurand field specifies the type of value being measured/reported.
The optional context field specifies the reason/event triggering the reading.
The optional location field specifies where the measurement is taken (e.g. Inlet, Outlet).
The optional phase field specifies to which phase or phases of the electric installation the value applies.
The Charging Point SHALL report all phase number dependant values from the power meter (or grid
connection when absent) point of view.
38
Two measurands (Current.Offered and Power.Offered) are available that are strictly
NOTE speaking no measured values. They indicate the maximum amount of current/power
that is being offered to the EV and are intended for use in smart charging applications.
For individual connector phase rotation information, the Central System MAY query the
ConnectorPhaseRotation configuration key on the Charging Point via GetConfiguration. The Charge Point
SHALL report the phase rotation in respect to the grid connection. Possible values per connector are:
NotApplicable, Unknown, RST, RTS, SRT, STR, TRS and TSR. see section Standard Configuration Key
Names & Values for more information.
The EXPERIMENTAL optional format field specifies whether the data is represented in the normal
(default) form as a simple numeric value ("Raw"), or as “SignedData”, an opaque digitally signed
binary data block, represented as hex data. This experimental field may be deprecated and
subsequently removed in later versions, when a more mature solution alternative is provided.
To retain backward compatibility, the default values of all of the optional fields on a sampledValue
element are such that a value without any additional fields will be interpreted, as a register reading of
active import energy in Wh (Watt-hour) units.
Upon receipt of a MeterValues.req PDU, the Central System SHALL respond with a MeterValues.conf.
It is likely that The Central System applies sanity checks to the data contained in a MeterValues.req it
received. The outcome of such sanity checks SHOULD NOT ever cause the Central System to not
respond with a MeterValues.conf. Failing to respond with a MeterValues.conf will only cause the
Charge Point to try the same message again as specified in Error responses to transaction-related
messages.
The Charge Point SHALL send a StartTransaction.req PDU to the Central System to inform about a
transaction that has been started. If this transaction ends a reservation (see Reserve Now operation),
then the StartTransaction.req MUST contain the reservationId.
Upon receipt of a StartTransaction.req PDU, the Central System SHOULD respond with a
StartTransaction.conf PDU. This response PDU MUST include a transaction id and an authorization
status value.
39
The Central System MUST verify validity of the identifier in the StartTransaction.req PDU, because the
identifier might have been authorized locally by the Charge Point using outdated information. The
identifier, for instance, may have been blocked since it was added to the Charge Point’s Authorization
Cache.
If Charge Point has implemented an Authorization Cache, then upon receipt of a StartTransaction.conf
PDU the Charge Point SHALL update the cache entry, if the idTag is not in the Local Authorization List,
with the IdTagInfo value from the response as described under Authorization Cache.
It is likely that The Central System applies sanity checks to the data contained in a StartTransaction.req
it received. The outcome of such sanity checks SHOULD NOT ever cause the Central System to not
respond with a StartTransaction.conf. Failing to respond with a StartTransaction.conf will only cause
the Charge Point to try the same message again as specified in Error responses to transaction-related
messages.
A Charge Point sends a notification to the Central System to inform the Central System about a status
change or an error within the Charge Point. The following table depicts changes from a previous status
(left column) to a new status (upper row) upon which a Charge Point MAY send a StatusNotification.req
PDU to the Central System.
EVSE is used in Status Notification instead of Socket or Charge Point for future
NOTE
compatibility.
40
The following table describes which status transitions are possible:
1 2 3 4 5 6 7 8 9
Avail Prepa Charg Suspe Suspe Finish Reser Unav Fault
able ring ing nded nded ing ved ailabl ed
EV EVSE e
A Available A2 A3 A4 A5 A7 A8 A9
B Preparing B1 B3 B4 B5 B9
C Charging C1 C4 C5 C6 C8 C9
D SuspendedEV D1 D3 D5 D6 D8 D9
E SuspendedEV E1 E3 E4 E6 E8 E9
SE
F Finishing F1 F2 F8 F9
G Reserved G1 G2 G8 G9
H Unavailable H1 H2 H3 H4 H5 H9
I Faulted I1 I2 I3 I4 I5 I6 I7 I8
The table above is only applicable to ConnectorId > 0. For ConnectorId 0, only a limited
NOTE
set is applicable, namely: Available, Unavailable and Faulted.
The next table describes events that may lead to a status change:
Not possible
41
B1 Intended usage is ended (e.g. plug removed, bay
no longer occupied, second presentation of idTag,
time out on expected user action)
42
D9 A fault is detected that prevents further charging
operations
43
H3 Connector is set Available and no user action is
required to start charging
A Charge Point Connector MAY have any of the 9 statuses as shown in the table
above. For ConnectorId 0, only a limited set is applicable, namely: Available,
IMPORTANT
Unavailable and Faulted. The status of ConnectorId 0 has no direct connection to
the status of the individual Connectors (>0).
As the status Occupied has been split into five new statuses (Preparing, Charging, SuspendedEV,
SuspendedEVSE and Finishing), more StatusNotification.req PDUs will be sent from Charge Point to the
Central System. For instance, when a transaction is started, the Connector status would successively
change from Preparing to Charging with a short SuspendedEV and/or SuspendedEVSE inbetween,
possibly within a couple of seconds.
To limit the number of transitions, the Charge Point MAY omit sending a StatusNotification.req if it was
active for less time than defined in the optional configuration key MinimumStatusDuration. This way, a
Charge Point MAY choose not to send certain StatusNotification.req PDUs.
A Charge Point manufacturer MAY have implemented a minimal status duration for
certain status transitions separate of the MinimumStatusDuration setting. The time set in
NOTE
MinimumStatusDuration will be added to this default delay. Setting MinimumStatusDuration
to zero SHALL NOT override the default manufacturer’s minimal status duration.
44
The Charge Point MAY send a StatusNotification.req PDU to inform the Central System of fault
conditions. When the 'status' field is not Faulted, the condition should be considered a warning since
charging operations are still possible.
When a Charge Point connects to a Central System after having been offline, it updates the Central
System about its status according to the following rules:
1. The Charge Point SHOULD send a StatusNotification.req PDU with its current status if the status
changed while the Charge Point was offline.
2. The Charge Point MAY send a StatusNotification.req PDU to report an error that occurred while the
Charge Point was offline.
3. The Charge Point SHOULD NOT send StatusNotification.req PDUs for historical status change events
that happened while the Charge Point was offline and that do not inform the Central System of
Charge Point errors or the Charge Point’s current status.
4. The StatusNotification.req messages MUST be sent in the order in which the events that they
describe occurred.
Upon receipt of a StatusNotification.req PDU, the Central System SHALL respond with a
StatusNotification.conf PDU.
45
Figure 21. Sequence Diagram: Stop Transaction
When a transaction is stopped, the Charge Point SHALL send a StopTransaction.req PDU, notifying to
the Central System that the transaction has stopped.
A StopTransaction.req PDU MAY contain an optional TransactionData element to provide more details
about transaction usage. The optional TransactionData element is a container for any number of
MeterValues, using the same data structure as the meterValue elements of the MeterValues.req PDU
(See section MeterValues)
Upon receipt of a StopTransaction.req PDU, the Central System SHALL respond with a
StopTransaction.conf PDU.
The Central System cannot prevent a transaction from stopping. It MAY only inform the
Charge Point it has received the StopTransaction.req and MAY send information about
NOTE
the idTag used to stop the transaction. This information SHOULD be used to update the
Authorization Cache, if implemented.
The idTag in the request PDU MAY be omitted when the Charge Point itself needs to stop the
transaction. For instance, when the Charge Point is requested to reset.
If a transaction is ended in a normal way (e.g. EV-driver presented his identification to stop the
transaction), the Reason element MAY be omitted and the Reason SHOULD be assumed 'Local'. If the
transaction is not ended normally, the Reason SHOULD be set to a correct value. As part of the normal
transaction termination, the Charge Point SHALL unlock the cable (if not permanently attached).
The Charge Point MAY unlock the cable (if not permanently attached) when the cable is disconnected
at the EV. If supported, this functionality is reported and controlled by the configuration key
UnlockConnectorOnEVSideDisconnect.
The Charge Point MAY stop a running transaction when the cable is disconnected at the EV. If
supported, this functionality is reported and controlled by the configuration key
StopTransactionOnEVSideDisconnect.
If StopTransactionOnEVSideDisconnect is set to false, the transaction SHALL not be stopped when the
cable is disconnected from the EV. If the EV is reconnected, energy transfer is allowed again. In this
case there is no mechanism to prevent other EVs from charging and disconnecting during that same
ongoing transaction. With UnlockConnectorOnEVSideDisconnect set to false, the Connector SHALL remain
locked at the Charge Point until the user presents the identifier.
46
By setting StopTransactionOnEVSideDisconnect to true, the transaction SHALL be stopped when the cable
is disconnected from the EV. If the EV is reconnected, energy transfer is not allowed until the
transaction is stopped and a new transaction is started. If UnlockConnectorOnEVSideDisconnect is set to
true, also the Connector on the Charge Point will be unlocked.
It is likely that The Central System applies sanity checks to the data contained in a StopTransaction.req
it received. The outcome of such sanity checks SHOULD NOT ever cause the Central System to not
respond with a StopTransaction.conf. Failing to respond with a StopTransaction.conf will only cause
the Charge Point to try the same message again as specified in Error responses to transaction-related
messages.
If Charge Point has implemented an Authorization Cache, then upon receipt of a StopTransaction.conf
PDU the Charge Point SHALL update the cache entry, if the idTag is not in the Local Authorization List,
with the IdTagInfo value from the response as described under Authorization Cache.
47
5. Operations Initiated by Central System
5.1. Cancel Reservation
To cancel a reservation the Central System SHALL send an CancelReservation.req PDU to the Charge
Point.
If the Charge Point has a reservation matching the reservationId in the request PDU, it SHALL return
status ‘Accepted’. Otherwise it SHALL return ‘Rejected’.
Central System can request a Charge Point to change its availability. A Charge Point is considered
available (“operative”) when it is charging or ready for charging. A Charge Point is considered
unavailable when it does not allow any charging. The Central System SHALL send a
ChangeAvailability.req PDU for requesting a Charge Point to change its availability. The Central System
can change the availability to available or unavailable.
Upon receipt of a ChangeAvailability.req PDU, the Charge Point SHALL respond with a
ChangeAvailability.conf PDU. The response PDU SHALL indicate whether the Charge Point is able to
change to the requested availability or not. When a transaction is in progress Charge Point SHALL
respond with availability status 'Scheduled' to indicate that it is scheduled to occur after the
transaction has finished.
In the event that Central System requests Charge Point to change to a status it is already in, Charge
Point SHALL respond with availability status ‘Accepted’.
When an availability change requested with a ChangeAvailability.req PDU has happened, the Charge
Point SHALL inform Central System of its new availability status with a StatusNotification.req as
described there.
48
In the case the ChangeAvailability.req contains ConnectorId = 0, the status change
NOTE
applies to the Charge Point and all Connectors.
NOTE Persistent states: for example: Connector set to Unavailable shall persist a reboot.
Central System can request a Charge Point to change configuration parameters. To achieve this, Central
System SHALL send a ChangeConfiguration.req. This request contains a key-value pair, where "key" is
the name of the configuration setting to change and "value" contains the new setting for the
configuration setting.
If a key value is defined as a CSL, it MAY be accompanied with a [KeyName]MaxLength key, indicating the
max length of the CSL in items. If this key is not set, a safe value of 1 (one) item SHOULD be assumed.
Central System can request a Charge Point to clear its Authorization Cache. The Central System SHALL
send a ClearCache.req PDU for clearing the Charge Point’s Authorization Cache.
Upon receipt of a ClearCache.req PDU, the Charge Point SHALL respond with a ClearCache.conf PDU.
The response PDU SHALL indicate whether the Charge Point was able to clear its Authorization Cache.
49
5.5. Clear Charging Profile
If the Central System wishes to clear some or all of the charging profiles that were previously sent the
Charge Point, it SHALL use the ClearChargingProfile.req PDU.
The Charge Point SHALL respond with a ClearChargingProfile.conf PDU specifying whether it was able
to process the request.
If the Central System needs to send information to a Charge Point for a function not supported by
OCPP, it SHALL use the DataTransfer.req PDU.
Behaviour of this operation is identical to the Data Transfer operation initiated by the Charge Point.
See Data Transfer for details.
The Central System MAY request the Charge Point to report the Composite Charging Schedule by
sending a GetCompositeSchedule.req PDU. The reported schedule, in the GetCompositeSchedule.conf
PDU, is the result of the calculation of all active schedules and possible local limits present in the
Charge Point. Also IEC 15118 limits might be taken into account.
50
Upon receipt of a GetCompositeSchedule.req, the Charge Point SHALL calculate the scheduled time
intervals up to the Duration is met and send them to the central system.
If the ConnectorId in the request is set to '0', the Charge Point SHALL report the total expected energy
flow of the Charge Point for the requested time period.
Please note that the charging schedule sent by the charge point is only indicative for
that point in time. this schedule might change over time due to external causes (for
NOTE
instance, local balancing based on grid connection capacity is active and one Connector
becomes available).
If the Charge Point is not able to report the requested schedule, for instance if the connectorId is
unknown, it SHALL respond with a status Rejected.
To retrieve the value of configuration settings, the Central System SHALL send a GetConfiguration.req
PDU to the Charge Point.
If the list of keys in the request PDU is empty or missing (it is optional), the Charge Point SHALL return
a list of all configuration settings in GetConfiguration.conf. Otherwise Charge Point SHALL return a list
of recognized keys and their corresponding values and read-only state. Unrecognized keys SHALL be
placed in the response PDU as part of the optional unknown key list element of GetConfiguration.conf.
The number of configuration keys requested in a single PDU MAY be limited by the Charge Point. This
maximum can be retrieved by reading the configuration key GetConfigurationMaxKeys.
Central System can request a Charge Point for diagnostic information. The Central System SHALL send
51
a GetDiagnostics.req PDU for getting diagnostic information of a Charge Point with a location where
the Charge Point MUST upload its diagnostic data to and optionally a begin and end time for the
requested diagnostic information.
Upon receipt of a GetDiagnostics.req PDU, and if diagnostics information is available then Charge Point
SHALL respond with a GetDiagnostics.conf PDU stating the name of the file containing the diagnostic
information that will be uploaded. Charge Point SHALL upload a single file. Format of the diagnostics
file is not prescribed. If no diagnostics file is available, then GetDiagnostics.conf SHALL NOT contain a
file name.
In order to support synchronisation of the Local Authorization List, Central System can request a
Charge Point for the version number of the Local Authorization List. The Central System SHALL send a
GetLocalListVersion.req PDU to request this value.
52
AuthorizeRemoteTxRequests configuration key in the Charge Point.
• If the value of AuthorizeRemoteTxRequests is true, the Charge Point SHALL behave as if in response
to a local action at the Charge Point to start a transaction with the idTag given in the
RemoteStartTransaction.req message. This means that the Charge Point will first try to authorize
the idTag, using the Local Authorization List, Authorization Cache and/or an Authorize.req request.
A transaction will only be started after authorization was obtained.
• If the value of AuthorizeRemoteTxRequests is false, the Charge Point SHALL immediately try to start a
transaction for the idTag given in the RemoteStartTransaction.req message. Note that after the
transaction has been started, the Charge Point will send a StartTransaction request to the Central
System, and the Central System will check the authorization status of the idTag when processing
this StartTransaction request.
The following typical use cases are the reason for Remote Start Transaction:
• Enable a CPO operator to help an EV driver that has problems starting a transaction.
• Enable mobile apps to control charging transactions via the Central System.
• Enable the use of SMS to control charging transactions via the Central System.
The RemoteStartTransaction.req SHALL contain an identifier (idTag), which Charge Point SHALL use, if
it is able to start a transaction, to send a StartTransaction.req to Central System. The transaction is
started in the same way as described in StartTransaction. The RemoteStartTransaction.req MAY
contain a connector id if the transaction is to be started on a specific connector. When no connector id
is provided, the Charge Point is in control of the connector selection. A Charge Point MAY reject a
RemoteStartTransaction.req without a connector id.
The Central System MAY include a ChargingProfile in the RemoteStartTransaction request. The purpose
of this ChargingProfile SHALL be set to TxProfile. If accepted, the Charge Point SHALL use this
ChargingProfile for the transaction.
53
RemoteStopTransaction.req to Charge Point with the identifier of the transaction. Charge Point SHALL
reply with RemoteStopTransaction.conf to indicate whether it is indeed able to stop the transaction.
This remote request to stop a transaction is equal to a local action to stop a transaction. Therefore, the
transaction SHALL be stopped, The Charge Point SHALL send a StopTransaction.req and, if applicable,
unlock the connector.
The following two main use cases are the reason for Remote Stop Transaction:
• Enable a CPO operator to help an EV driver that has problems stopping a transaction.
• Enable mobile apps to control charging transactions via the Central System.
A Central System can issue a ReserveNow.req to a Charge Point to reserve a connector for use by a
specific idTag.
To request a reservation the Central System SHALL send a ReserveNow.req PDU to a Charge Point. The
Central System MAY specify a connector to be reserved. Upon receipt of a ReserveNow.req PDU, the
Charge Point SHALL respond with a ReserveNow.conf PDU.
If the reservationId in the request matches a reservation in the Charge Point, then the Charge Point
SHALL replace that reservation with the new reservation in the request.
If the reservationId does not match any reservation in the Charge Point, then the Charge Point SHALL
return the status value ‘Accepted’ if it succeeds in reserving a connector. The Charge Point SHALL
return ‘Occupied’ if the Charge Point or the specified connector are occupied. The Charge Point SHALL
also return ‘Occupied’ when the Charge Point or connector has been reserved for the same or another
idTag. The Charge Point SHALL return ‘Faulted’ if the Charge Point or the connector are in the Faulted
state. The Charge Point SHALL return ‘Unavailable’ if the Charge Point or connector are in the
Unavailable state. The Charge Point SHALL return ‘Rejected’ if it is configured not to accept
reservations.
If the Charge Point accepts the reservation request, then it SHALL refuse charging for all incoming
idTags on the reserved connector, except when the incoming idTag or the parent idTag match the idTag
or parent idTag of the reservation.
54
When the configuration key: ReserveConnectorZeroSupported is set to true the Charge Point supports
reservations on connector 0. If the connectorId in the reservation request is 0, then the Charge Point
SHALL NOT reserve a specific connector, but SHALL make sure that at any time during the validity of
the reservation, one connector remains available for the reserved idTag. If the configuration key:
ReserveConnectorZeroSupported is not set or set to false, the Charge Point SHALL return ‘Rejected’
If the parent idTag in the reservation has a value (it is optional), then in order to determine the parent
idTag that is associated with an incoming idTag, the Charge Point MAY look it up in its Local
Authorization List or Authorization Cache. If it is not found in the Local Authorization List or
Authorization Cache, then the Charge Point SHALL send an Authorize.req for the incoming idTag to the
Central System. The Authorize.conf response contains the parent-id.
A reservation SHALL be terminated on the Charge Point when either (1) a transaction is started for the
reserved idTag or parent idTag and on the reserved connector or any connector when the reserved
connectorId is 0, or (2) when the time specified in expiryDate is reached, or (3) when the Charge Point
or connector are set to Faulted or Unavailable.
If a transaction for the reserved idTag is started, then Charge Point SHALL send the reservationId in
the StartTransaction.req PDU (see Start Transaction) to notify the Central System that the reservation is
terminated.
When a reservation expires, the Charge Point SHALL terminate the reservation and make the
connector available. The Charge Point SHALL send a status notification to notify the Central System
that the reserved connector is now available.
If Charge Point has implemented an Authorization Cache, then upon receipt of a ReserveNow.conf PDU
the Charge Point SHALL update the cache entry, if the idTag is not in the Local Authorization List, with
the IdTagInfo value from the response as described under Authorization Cache.
5.14. Reset
The Central System SHALL send a Reset.req PDU for requesting a Charge Point to reset itself. The
55
Central System can request a hard or a soft reset. Upon receipt of a Reset.req PDU, the Charge Point
SHALL respond with a Reset.conf PDU. The response PDU SHALL include whether the Charge Point is
will attempt to reset itself.
At receipt of a soft reset, the Charge Point SHALL return to a state that behaves as just having been
booted. If any transaction is in progress it SHALL be terminated normally, before the reset, as in Stop
Transaction.
At receipt of a hard reset the Charge Point SHALL attempt to terminate any transaction in progress
normally as in StopTransaction and then perform a reboot.
NOTE Persistent states: for example: Connector set to Unavailable shall persist.
Central System can send a Local Authorization List that a Charge Point can use for authorization of
idTags. The list MAY be either a full list to replace the current list in the Charge Point or it MAY be a
differential list with updates to be applied to the current list in the Charge Point.
The Central System SHALL send a SendLocalList.req PDU to send the list to a Charge Point. The
SendLocalList.req PDU SHALL contain the type of update (full or differential) and the version number
that the Charge Point MUST associate with the local authorization list after it has been updated.
Upon receipt of a SendLocalList.req PDU, the Charge Point SHALL respond with a SendLocalList.conf
PDU. The response PDU SHALL indicate whether the Charge Point has accepted the update of the local
authorization list. If the status is Failed or VersionMismatch and the updateType was Differential, then
Central System SHOULD retry sending the full local authorization list with updateType Full.
56
Figure 37. Sequence Diagram: Set Charging Profile
A Central System can send a SetChargingProfile.req to a Charge Point, to set a charging profile, in the
following situations:
• At the start of a transaction to set the charging profile for the transaction;
• Outside the context of a transaction as a separate message to set a charging profile to a local
controller, Charge Point, or a default charging profile to a connector.
If the Central System receives a StartTransaction.req the Central System SHALL respond with a
StartTransaction.conf. If there is a need for a charging profile, The Central System MAY choose to send
a SetChargingProfile.req to the Charge Point.
57
If the Central System includes a ChargingProfile, the ChargingProfilePurpose MUST be set to TxProfile.
The Charge Point SHOULD add the TransactionId to the received profile once the
NOTE
transaction is reported to the central system.
The Central System MAY send a charging profile to a Charge Point to update the charging profile for
that transaction. The Central System SHALL use the SetChargingProfile.req PDU for that purpose. If a
charging profile with the same chargingProfileId, or the same combination of stackLevel /
ChargingProfilePurpose, exists on the Charge Point, the new charging profile SHALL replace the
existing charging profile, otherwise it SHALL be added. The Charge Point SHALL then re-evaluate its
collection of charge profiles to determine which charging profile will become active. In order to ensure
that the updated charging profile applies only to the current transaction, the chargingProfilePurpose of
the ChargingProfile MUST be set to TxProfile. (See section: Charging Profile Purposes)
The Central System MAY send charging profiles to a Charge Point that are to be used as default
charging profiles. The Central System SHALL use the SetChargingProfile.req PDU for that purpose.
Such charging profiles MAY be sent at any time. If a charging profile with the same chargingProfileId,
or the same combination of stackLevel / ChargingProfilePurpose, exists on the Charge Point, the new
charging profile SHALL replace the existing charging profile, otherwise it SHALL be added. The
Charge Point SHALL then re-evaluate its collection of charge profiles to determine which charging
profile will become active.
It is not possible to set a ChargingProfile with purpose set to TxProfile without presence
NOTE
of an active transaction, or in advance of a transaction.
58
5.17. Trigger Message
During normal operation, the Charge Point informs the Central System of its state and any relevant
occurrences. If there is nothing to report the Charge Point will send at least a heartBeat at a predefined
interval. Under normal circumstances this is just fine, but what if the Central System has (whatever)
reason to doubt the last known state? What can a Central System do if a firmware update is in progress
and the last status notification it received about it was much longer ago than could reasonably be
expected? The same can be asked for the progress of a diagnostics request. The problem in these
situations is not that the information needed isn’t covered by existing messages, the problem is strictly
a timing issue. The Charge Point has the information, but has no way of knowing that the Central
System would like an update.
The TriggerMessage.req makes it possible for the Central System, to request the Charge Point, to send
Charge Point-initiated messages. In the request the Central System indicates which message it wishes to
receive. For every such requested message the Central System MAY optionally indicate to which
connector this request applies. The requested message is leading: if the specified connectorId is not
relevant to the message, it should be ignored. In such cases the requested message should still be sent.
Inversely, if the connectorId is relevant but absent, this should be interpreted as “for all allowed
connectorId values”. For example, a request for a statusNotification for connectorId 0 is a request for
the status of the Charge Point. A request for a statusNotification without connectorId is a request for
multiple statusNotifications: the notification for the Charge Point itself and a notification for each of its
connectors.
The Charge Point SHALL first send the TriggerMessage response, before sending the requested
message. In the TriggerMessage.conf the Charge Point SHALL indicate whether it will send it or not, by
returning ACCEPTED or REJECTED. It is up to the Charge Point if it accepts or rejects the request to
send. If the requested message is unknown or not implemented the Charge Point SHALL return
NOT_IMPLEMENTED.
Messages that the Charge Point marks as accepted SHOULD be sent. The situation could occur that,
59
between accepting the request and actually sending the requested message, that same message gets
sent because of normal operations. In such cases the message just sent MAY be considered as
complying with the request.
The TriggerMessage mechanism is not intended to retrieve historic data. The messages it triggers
should only give current information. A MeterValues message triggered in this way for instance
SHOULD return the most recent measurements for all measurands configured in configuration key
MeterValuesSampledData. StartTransaction and StopTransaction have been left out of this mechanism
because they are not state related, but by their nature describe a transition.
Central System can request a Charge Point to unlock a connector. To do so, the Charge Point SHALL
send an UnlockConnector.req PDU.
The purpose of this message: Help EV drivers that have problems unplugging their cable from the
Charge Point in case of malfunction of the Connector cable retention. When a EV driver calls the CPO
help-desk, an operator could manually trigger the sending of an UnlockConnector.req to the Charge
Point, forcing a new attempt to unlock the connector. Hopefully this time the connector unlocks and
the EV driver can unplug the cable and drive away.
The UnlockConnector.req SHOULD NOT be used to remotely stop a running transaction, use the
Remote Stop Transaction instead.
Upon receipt of an UnlockConnector.req PDU, the Charge Point SHALL respond with a
UnlockConnector.conf PDU. The response PDU SHALL indicate whether the Charge Point was able to
unlock its connector.
If there was a transaction in progress on the specific connector, then Charge Point SHALL finish the
transaction first as described in Stop Transaction.
60
Figure 41. Sequence Diagram: Update Firmware
Central System can notify a Charge Point that it needs to update its firmware. The Central System
SHALL send an UpdateFirmware.req PDU to instruct the Charge Point to install new firmware. The
PDU SHALL contain a date and time after which the Charge Point is allowed to retrieve the new
firmware and the location from which the firmware can be downloaded.
Upon receipt of an UpdateFirmware.req PDU, the Charge Point SHALL respond with a
UpdateFirmware.conf PDU. The Charge Point SHOULD start retrieving the firmware as soon as possible
after retrieve-date.
61
6. Messages
6.1. Authorize.req
This contains the field definition of the Authorize.req PDU sent by the Charge Point to the Central
System. See also Authorize
6.2. Authorize.conf
This contains the field definition of the Authorize.conf PDU sent by the Central System to the Charge
Point in response to a Authorize.req PDU. See also Authorize
6.3. BootNotification.req
This contains the field definition of the BootNotification.req PDU sent by the Charge Point to the
Central System. See also Boot Notification
62
Field Name Field Type Card. Description
6.4. BootNotification.conf
This contains the field definition of the BootNotification.conf PDU sent by the Central System to the
Charge Point in response to a BootNotification.req PDU. See also Boot Notification
63
Field Name Field Type Card. Description
6.5. CancelReservation.req
This contains the field definition of the CancelReservation.req PDU sent by the Central System to the
Charge Point. See also Cancel Reservation
6.6. CancelReservation.conf
This contains the field definition of the CancelReservation.conf PDU sent by the Charge Point to the
Central System in response to a CancelReservation.req PDU. See also Cancel Reservation
64
6.7. ChangeAvailability.req
This contains the field definition of the ChangeAvailability.req PDU sent by the Central System to the
Charge Point. See also Change Availability
6.8. ChangeAvailability.conf
This contains the field definition of the ChangeAvailability.conf PDU return by Charge Point to Central
System. See also Change Availability
6.9. ChangeConfiguration.req
This contains the field definition of the ChangeConfiguration.req PDU sent by Central System to Charge
Point. It is RECOMMENDED that the content and meaning of the 'key' and 'value' fields is agreed upon
between Charge Point and Central System. See also Change Configuration
65
Field Name Field Type Card. Description
6.10. ChangeConfiguration.conf
This contains the field definition of the ChangeConfiguration.conf PDU returned from Charge Point to
Central System. See also Change Configuration
6.11. ClearCache.req
This contains the field definition of the ClearCache.req PDU sent by the Central System to the Charge
Point. See also Clear Cache
6.12. ClearCache.conf
This contains the field definition of the ClearCache.conf PDU sent by the Charge Point to the Central
System in response to a ClearCache.req PDU. See also Clear Cache
66
6.13. ClearChargingProfile.req
This contains the field definition of the ClearChargingProfile.req PDU sent by the Central System to the
Charge Point.
The Central System can use this message to clear (remove) either a specific charging profile (denoted
by id) or a selection of charging profiles that match with the values of the optional connectorId,
stackLevel and chargingProfilePurpose fields. See also Clear Charging Profile
6.14. ClearChargingProfile.conf
This contains the field definition of the ClearChargingProfile.conf PDU sent by the Charge Point to the
Central System in response to a ClearChargingProfile.req PDU. See also Clear Charging Profile
67
Field Name Field Type Card. Description
6.15. DataTransfer.req
This contains the field definition of the DataTransfer.req PDU sent either by the Central System to the
Charge Point or vice versa. See also Data Transfer
6.16. DataTransfer.conf
This contains the field definition of the DataTransfer.conf PDU sent by the Charge Point to the Central
System or vice versa in response to a DataTransfer.req PDU. See also Data Transfer
6.17. DiagnosticsStatusNotification.req
This contains the field definition of the DiagnosticsStatusNotification.req PDU sent by the Charge Point
to the Central System. See also Diagnostics Status Notification
68
Field Name Field Type Card. Description
6.18. DiagnosticsStatusNotification.conf
This contains the field definition of the DiagnosticsStatusNotification.conf PDU sent by the Central
System to the Charge Point in response to a DiagnosticsStatusNotification.req PDU. See also Diagnostics
Status Notification
6.19. FirmwareStatusNotification.req
This contains the field definition of the FirmwareStatusNotifitacion.req PDU sent by the Charge Point
to the Central System. See also Firmware Status Notification
6.20. FirmwareStatusNotification.conf
This contains the field definition of the FirmwareStatusNotification.conf PDU sent by the Central
System to the Charge Point in response to a FirmwareStatusNotification.req PDU. See also Firmware
Status Notification
6.21. GetCompositeSchedule.req
This contains the field definition of the GetCompositeSchedule.req PDU sent by the Central System to
the Charge Point. See also Get Composite Schedule
69
Field Name Field Type Card. Description
6.22. GetCompositeSchedule.conf
This contains the field definition of the GetCompositeSchedule.conf PDU sent by the Charge Point to the
Central System in response to a GetCompositeSchedule.req PDU. See also Get Composite Schedule
70
6.23. GetConfiguration.req
This contains the field definition of the GetConfiguration.req PDU sent by the the Central System to the
Charge Point. See also Get Configuration
6.24. GetConfiguration.conf
This contains the field definition of the GetConfiguration.conf PDU sent by Charge Point the to the
Central System in response to a GetConfiguration.req. See also Get Configuration
6.25. GetDiagnostics.req
This contains the field definition of the GetDiagnostics.req PDU sent by the Central System to the
Charge Point. See also Get Diagnostics
71
Field Name Field Type Card. Description
6.26. GetDiagnostics.conf
This contains the field definition of the GetDiagnostics.conf PDU sent by the Charge Point to the Central
System in response to a GetDiagnostics.req PDU. See also Get Diagnostics
6.27. GetLocalListVersion.req
This contains the field definition of the GetLocalListVersion.req PDU sent by the Central System to the
Charge Point. See also Get Local List Version
72
6.28. GetLocalListVersion.conf
This contains the field definition of the GetLocalListVersion.conf PDU sent by the Charge Point to
Central System in response to a GetLocalListVersion.req PDU. See also Get Local List Version
6.29. Heartbeat.req
This contains the field definition of the Heartbeat.req PDU sent by the Charge Point to the Central
System. See also Heartbeat
6.30. Heartbeat.conf
This contains the field definition of the Heartbeat.conf PDU sent by the Central System to the Charge
Point in response to a Heartbeat.req PDU. See also Heartbeat
6.31. MeterValues.req
This contains the field definition of the MeterValues.req PDU sent by the Charge Point to the Central
System. See also Meter Values
73
Field Name Field Type Card. Description
6.32. MeterValues.conf
This contains the field definition of the MeterValues.conf PDU sent by the Central System to the Charge
Point in response to a MeterValues.req PDU. See also Meter Values
6.33. RemoteStartTransaction.req
This contains the field definitions of the RemoteStartTransaction.req PDU sent to Charge Point by
Central System. See also Remote Start Transaction
6.34. RemoteStartTransaction.conf
This contains the field definitions of the RemoteStartTransaction.conf PDU sent from Charge Point to
Central System. See also Remote Start Transaction
74
Field Name Field Type Card. Description
6.35. RemoteStopTransaction.req
This contains the field definitions of the RemoteStopTransaction.req PDU sent to Charge Point by
Central System. See also Remote Stop Transaction
6.36. RemoteStopTransaction.conf
This contains the field definitions of the RemoteStopTransaction.conf PDU sent from Charge Point to
Central System. See also Remote Stop Transaction
6.37. ReserveNow.req
This contains the field definition of the ReserveNow.req PDU sent by the Central System to the Charge
Point. See also Reserve Now
75
Field Name Field Type Card. Description
6.38. ReserveNow.conf
This contains the field definition of the ReserveNow.conf PDU sent by the Charge Point to the Central
System in response to a ReserveNow.req PDU. See also Reserve Now
6.39. Reset.req
This contains the field definition of the Reset.req PDU sent by the Central System to the Charge Point.
See also Reset
6.40. Reset.conf
This contains the field definition of the Reset.conf PDU sent by the Charge Point to the Central System
in response to a Reset.req PDU. See also Reset
76
Field Name Field Type Card. Description
6.41. SendLocalList.req
This contains the field definition of the SendLocalList.req PDU sent by the Central System to the Charge
Point.
If no (empty) localAuthorizationList is given and the updateType is Full, all identifications are removed
from the list. Requesting a Differential update without (empty) localAuthorizationList will have no
effect on the list. All idTags in the localAuthorizationList MUST be unique, no duplicate values are
allowed. See also Send Local List
77
6.42. SendLocalList.conf
This contains the field definition of the SendLocalList.conf PDU sent by the Charge Point to the Central
System in response to a SendLocalList.req PDU. See also Send Local List
6.43. SetChargingProfile.req
This contains the field definition of the SetChargingProfile.req PDU sent by the Central System to the
Charge Point.
The Central System uses this message to send charging profiles to a Charge Point. See also Set Charging
Profile
6.44. SetChargingProfile.conf
This contains the field definition of the SetChargingProfile.conf PDU sent by the Charge Point to the
Central System in response to a SetChargingProfile.req PDU. See also Set Charging Profile
78
Field Name Field Type Card. Description
6.45. StartTransaction.req
This section contains the field definition of the StartTransaction.req PDU sent by the Charge Point to
the Central System. See also Start Transaction
79
6.46. StartTransaction.conf
This contains the field definition of the StartTransaction.conf PDU sent by the Central System to the
Charge Point in response to a StartTransaction.req PDU. See also Start Transaction
6.47. StatusNotification.req
This contains the field definition of the StatusNotification.req PDU sent by the Charge Point to the
Central System. See also Status Notification
80
Field Name Field Type Card. Description
6.48. StatusNotification.conf
This contains the field definition of the StatusNotification.conf PDU sent by the Central System to the
Charge Point in response to an StatusNotification.req PDU. See also Status Notification
6.49. StopTransaction.req
This contains the field definition of the StopTransaction.req PDU sent by the Charge Point to the
Central System. See also Stop Transaction
81
Field Name Field Type Card. Description
6.50. StopTransaction.conf
This contains the field definition of the StopTransaction.conf PDU sent by the Central System to the
Charge Point in response to a StopTransaction.req PDU. See also Stop Transaction
6.51. TriggerMessage.req
This contains the field definition of the TriggerMessage.req PDU sent by the Central System to the
Charge Point. See also Trigger Message
82
6.52. TriggerMessage.conf
This contains the field definition of the TriggerMessage.conf PDU sent by the Charge Point to the
Central System in response to a TriggerMessage.req PDU. See also Trigger Message
6.53. UnlockConnector.req
This contains the field definition of the UnlockConnector.req PDU sent by the Central System to the
Charge Point. See also Unlock Connector
6.54. UnlockConnector.conf
This contains the field definition of the UnlockConnector.conf PDU sent by the Charge Point to the
Central System in response to an UnlockConnector.req PDU. See also Unlock Connector
6.55. UpdateFirmware.req
This contains the field definition of the UpdateFirmware.req PDU sent by the Central System to the
Charge Point. See also Update Firmware
83
Field Name Field Type Card. Description
6.56. UpdateFirmware.conf
This contains the field definition of the UpdateFirmware.conf PDU sent by the Charge Point to the
Central System in response to a UpdateFirmware.req PDU. See also Update Firmware
84
7. Types
7.1. AuthorizationData
Class
7.2. AuthorizationStatus
Enumeration
Value Description
85
Value Description
7.3. AvailabilityStatus
Enumeration
Value Description
7.4. AvailabilityType
Enumeration
Value Description
7.5. CancelReservationStatus
Enumeration
Status in CancelReservation.conf.
Value Description
86
7.6. ChargePointErrorCode
Enumeration
Value Description
7.7. ChargePointStatus
Enumeration
87
Status reported in StatusNotification.req. A status can be reported for the Charge Point main controller
(connectorId = 0) or for a specific connector. Status for the Charge Point main controller is a subset of
the enumeration: Available, Unavailable or Faulted.
Status Condition
88
Status Condition
7.8. ChargingProfile
Class
A ChargingProfile consists of a ChargingSchedule, describing the amount of power or current that can
be delivered per time interval.
89
Field Name Field Type Card. Description
90
Field Name Field Type Card. Description
7.9. ChargingProfileKindType
Enumeration
Value Description
7.10. ChargingProfilePurposeType
Enumeration
Value Description
91
7.11. ChargingProfileStatus
Enumeration
Value Description
7.12. ChargingRateUnitType
Enumeration
Value Description
W Watts (power).
A Amperes (current).
7.13. ChargingSchedule
Class
92
Field Name Field Type Card. Description
7.14. ChargingSchedulePeriod
Class
93
Field Name Field Type Card. Description
7.15. CiString20Type
Class
7.16. CiString25Type
Class
7.17. CiString50Type
Class
94
7.18. CiString255Type
Class
7.19. CiString500Type
Class
7.20. ClearCacheStatus
Enumeration
Value Description
7.21. ClearChargingProfileStatus
Enumeration
Value Description
95
7.22. ConfigurationStatus
Enumeration
Status in ChangeConfiguration.conf.
Value Description
7.23. DataTransferStatus
Enumeration
Status in DataTransfer.conf.
Value Description
7.24. DiagnosticsStatus
Enumeration
Status in DiagnosticsStatusNotification.req.
96
Value Description
7.25. FirmwareStatus
Enumeration
Value Description
7.26. GetCompositeScheduleStatus
Enumeration
Value Description
97
Value Description
7.27. IdTagInfo
Class
Contains status information about an identifier. It is returned in Authorize, Start Transaction and Stop
Transaction responses.
7.28. IdToken
Class
Contains the identifier to use for authorization. It is a case insensitive string. In future releases this
may become a complex type to support multiple forms of identifiers.
7.29. KeyValue
Class
98
Name Field Type Card. Description
7.30. Location
Enumeration
Value Description
EV Measurement taken by EV
7.31. Measurand
Enumeration
Allowable values of the optional "measurand" field of a Value element, as used in MeterValues.req and
StopTransaction.req messages. Default value of "measurand" is always "Energy.Active.Import.Register"
Value Description
99
Value Description
7.32. MessageTrigger
Enumeration
Value Description
100
Value Description
7.33. MeterValue
Class
Collection of one or more sampled values in MeterValues.req. All sampled values in a MeterValue are
sampled at the same point in time.
7.34. Phase
Enumeration
Phase as used in SampledValue. Phase specifies how a measured value is to be interpreted. Please note
that not all values of Phase are applicable to all Measurands.
Value Description
L1 Measured on L1
L2 Measured on L2
L3 Measured on L3
N Measured on Neutral
101
7.35. ReadingContext
Enumeration
Value Description
7.36. Reason
Enumeration
Value Description
102
Value Description
7.37. RecurrencyKindType
Enumeration
Value Description
7.38. RegistrationStatus
Enumeration
Value Description
7.39. RemoteStartStopStatus
Enumeration
103
The result of a RemoteStartTransaction.req or RemoteStopTransaction.req request.
Value Description
7.40. ReservationStatus
Enumeration
Status in ReserveNow.conf.
Value Description
7.41. ResetStatus
Enumeration
Result of Reset.req.
Value Description
7.42. ResetType
Enumeration
104
Value Description
7.43. SampledValue
Class
Single sampled value in MeterValues. Each value can be accompanied by optional fields.
105
Field Name Field Type Card. Description
7.44. TriggerMessageStatus
Enumeration
Status in TriggerMessage.conf.
Value Description
7.45. UnitOfMeasure
Enumeration
Allowable values of the optional "unit" field of a Value element, as used in MeterValues.req and
StopTransaction.req messages. Default value of "unit" is always "Wh".
106
Value Description
W Watts (power).
kW kilowatts (power).
A Amperes (current).
Percent Percentage.
7.46. UnlockStatus
Enumeration
Value Description
7.47. UpdateStatus
Enumeration
107
Value Description
7.48. UpdateType
Enumeration
Value Description
7.49. ValueFormat
Enumeration
Value Description
108
8. Firmware and Diagnostics File Transfer
This section is normative.
It is recommended that the firmware is downloaded via FTP or FTPS. FTP(S) is better optimized for
large binary data than HTTP. Also FTP(S) has the ability to resume downloads. In case a download is
interrupted, the Charge Point can resume downloading after the part it already has downloaded. The
FTP URL is of format: ftp://user:password@host:port/path in which the parts user:password@,
:password or :port may be excluded.
To ensure that the correct firmware is downloaded, it is RECOMMENDED that the firmware is also
digitally signed.
It is recommended that the diagnostics file is downloaded via FTP or FTPS. FTP(S) is better optimized
for large binary data than HTTP. Also FTP(S) has the ability to resume uploads. In case an upload is
interrupted, the Charge Point can resume uploading after the part it already has uploaded. The FTP
URL is of format: ftp://user:password@host:port/path in which the parts user:password@, :password or
:port may be excluded.
109
9. Standard Configuration Key Names &
Values
Below follows a list of all configuration keys with a role standardized in this specification. The list is
separated by Feature Profiles. A required configuration key mentioned under a particular profile only
has to be supported by the Charge Point if it supports that profile.
For optional Configuration Keys with a boolean type, the following rules apply for the configuration
key in the response to a GetConfiguration.req without a list of keys:
• If the key is present, the Charge Point provides the functionality that is configured by the key, and it
can be enabled or disabled by setting the value for the key.
• If the key is not present, the Charge Point does not provide the functionality that can be configured
by the key.
The "Accessibility" property shows if the value for a certain configuration key is read-only ("R") or
read-write ("RW"). In case the key is read-only, the Central System can read the value for the key using
GetConfiguration, but not write it. In case the the accessibility is read-write, the Central System can
also write the value for the key using ChangeConfiguration.
Required/optional optional
Accessibility RW
Type boolean
Description If this key exists, the Charge Point supports Unknown Offline Authorization.
If this key reports a value of true, Unknown Offline Authorization is
enabled.
9.1.2. AuthorizationCacheEnabled
Required/optional optional
Accessibility RW
Type boolean
Description If this key exists, the Charge Point supports an Authorization Cache. If this
key reports a value of true, the Authorization Cache is enabled.
110
9.1.3. AuthorizeRemoteTxRequests
Required/optional required
Type boolean
9.1.4. BlinkRepeat
Required/optional optional
Accessibility RW
Type int
Unit times
9.1.5. ClockAlignedDataInterval
Required/optional required
Accessibility RW
Type int
Unit seconds
Description Size (in seconds) of the clock-aligned data interval. This is the size (in
seconds) of the set of evenly spaced aggregation intervals per day, starting
at 00:00:00 (midnight). For example, a value of 900 (15 minutes) indicates
that every day should be broken into 96 15-minute intervals.
When clock aligned data is being transmitted, the interval in question is
identified by the start time and (optional) duration interval value,
represented according to the ISO8601 standard. All "per-period" data (e.g.
energy readings) should be accumulated (for "flow" type measurands such
as energy), or averaged (for other values) across the entire interval (or
partial interval, at the beginning or end of a charging session), and
transmitted (if so enabled) at the end of each interval, bearing the interval
start time timestamp.
A value of "0" (numeric zero), by convention, is to be interpreted to mean
that no clock-aligned data should be transmitted.
111
9.1.6. ConnectionTimeOut
Required/optional required
Accessibility RW
Type int
Unit seconds
9.1.7. GetConfigurationMaxKeys
Required/optional required
Accessibility R
Type int
9.1.8. HeartbeatInterval
Required/optional required
Accessibility RW
Type int
Unit seconds
Description Interval of inactivity (no OCPP exchanges) with central system after which
the Charge Point should send a Heartbeat.req PDU
9.1.9. LightIntensity
Required/optional optional
Accessibility RW
Type int
Unit %
112
9.1.10. LocalAuthorizeOffline
Required/optional required
Accessibility RW
Type boolean
Description whether the Charge Point, when offline, will start a transaction for locally-
authorized identifiers.
9.1.11. LocalPreAuthorize
Required/optional required
Accessibility RW
Type boolean
Description whether the Charge Point, when online, will start a transaction for locally-
authorized identifiers without waiting for or requesting an Authorize.conf
from the Central System
9.1.12. MaxEnergyOnInvalidId
Required/optional optional
Accessibility RW
Type integer
Unit Wh
9.1.13. MeterValuesAlignedData
Required/optional required
Accessibility RW
Type CSL
9.1.14. MeterValuesAlignedDataMaxLength
Required/optional optional
113
Accessibility R
9.1.15. MeterValuesSampledData
Required/optional required
Accessibility RW
Type CSL
9.1.16. MeterValuesSampledDataMaxLength
Required/optional optional
Accessibility R
9.1.17. MeterValueSampleInterval
Required/optional required
Accessibility RW
Type int
Unit seconds
9.1.18. MinimumStatusDuration
Required/optional optional
Accessibility RW
Type int
114
Unit seconds
Description The minimum duration that a Charge Point or Connector status is stable
before a StatusNotification.req PDU is sent to the Central System.
9.1.19. NumberOfConnectors
Required/optional required
Accessibility R
Type int
9.1.20. ResetRetries
Required/optional required
Accessibility RW
Type int
Unit times
9.1.21. ConnectorPhaseRotation
Required/optional required
Accessibility RW
Type CSL
115
Description The phase rotation per connector in respect to the connector’s energy meter
(or if absent, the grid connection). Possible values per connector are:
NotApplicable (for Single phase or DC Charge Points)
Unknown (not (yet) known)
RST (Standard Reference Phasing)
RTS (Reversed Reference Phasing)
SRT (Reversed 240 degree rotation)
STR (Standard 120 degree rotation)
TRS (Standard 240 degree rotation)
TSR (Reversed 120 degree rotation)
9.1.22. ConnectorPhaseRotationMaxLength
Required/optional optional
Accessibility R
9.1.23. StopTransactionOnEVSideDisconnect
Required/optional required
Accessibility RW
Type boolean
Description When set to true, the Charge Point SHALL administratively stop the
transaction when the cable is unplugged from the EV.
9.1.24. StopTransactionOnInvalidId
Required/optional required
Accessibility RW
Type boolean
Description whether the Charge Point will stop an ongoing transaction when it receives
a non- Accepted authorization status in a StartTransaction.conf for this
transaction
116
9.1.25. StopTxnAlignedData
Required/optional required
Accessibility RW
Type CSL
9.1.26. StopTxnAlignedDataMaxLength
Required/optional optional
Accessibility R
9.1.27. StopTxnSampledData
Required/optional required
Accessibility RW
Type CSL
9.1.28. StopTxnSampledDataMaxLength
Required/optional optional
Accessibility R
9.1.29. SupportedFeatureProfiles
Required/optional required
Accessibility R
Type CSL
117
Description A list of supported Feature Profiles. Possible profile identifiers: Core,
FirmwareManagement, LocalAuthListManagement, Reservation,
SmartCharging and RemoteTrigger.
9.1.30. SupportedFeatureProfilesMaxLength
Required/optional optional
Accessibility R
9.1.31. TransactionMessageAttempts
Required/optional required
Accessibility RW
Type int
Unit times
Description How often the Charge Point should try to submit a transaction-related
message when the Central System fails to process it.
9.1.32. TransactionMessageRetryInterval
Required/optional required
Accessibility RW
Type int
Unit seconds
Description How long the Charge Point should wait before resubmitting a transaction-
related message that the Central System failed to process.
9.1.33. UnlockConnectorOnEVSideDisconnect
Required/optional required
Accessibility RW
Type boolean
Description When set to true, the Charge Point SHALL unlock the cable on Charge Point
side when the cable is unplugged at the EV.
118
9.1.34. WebSocketPingInterval
Required/optional optional
Accessibility RW
Type int
Unit seconds
Required/optional required
Accessibility RW
Type boolean
9.2.2. LocalAuthListMaxLength
Required/optional required
Accessibility R
Type int
9.2.3. SendLocalListMaxLength
Required/optional required
Accessibility R
Type int
119
9.3. Reservation Profile
9.3.1. ReserveConnectorZeroSupported
Required/optional optional
Accessibility R
Type boolean
Description If this configuration key is present and set to true: Charge Point support
reservations on connector 0.
Required/optional required
Accessibility R
Type int
Description Max StackLevel of a ChargingProfile. The number defined also indicates the
max allowed number of installed charging schedules per Charging Profile
Purposes.
9.4.2. ChargingScheduleAllowedChargingRateUnit
Required/optional required
Accessibility R
Type CSL
9.4.3. ChargingScheduleMaxPeriods
Required/optional required
Accessibility R
Type int
120
9.4.4. ConnectorSwitch3to1PhaseSupported
Required/optional optional
Accessibility R
Type bool
Description If defined and true, this Charge Point support switching from 3 to 1 phase
during a charging session.
9.4.5. MaxChargingProfilesInstalled
Required/optional required
Accessibility R
Type int
121
Appendix A: New in OCPP 1.6
The following changes are made in OCPP 1.6 compared to OCPP 1.5 [OCPP1.5]:
• A binding to JSON over WebSocket as a transport protocol is added, reducing data usage and
enabling OCPP communication through NAT routers, see: OCPP JSON Specification
• Extra statuses are added to the ChargePointStatus enumeration, giving the CPO and ultimately end-
users more information about the current status of a Charge Point
• Structure of MeterValues.req is changed to eliminate use of XML Attributes, this is needed for
support of JSON (no attribute support in JSON).
• Extra values are added to the Measurand enumeration, giving Charge Point manufacturers the
possibility to send new information to a Central System, such as the State of Charge of an EV
• The TriggerMessage message is added, giving the Central System the possibility to request
information from the Charge Point
• More and clearer configuration keys are added, making it clearer to the CPO how to configure the
different business cases in a Charge Point
• The messages and configuration keys are split into profiles, making it easier to implement OCPP
gradually or only in part
• Known ambiguities are removed (e.g. when to use UnlockConnector.req, how to respond to
RemoteStart/Stop, Connector numbering)
• BootNotification.conf
◦ heartbeatInterval to interval, interval now also used for other purposes than heartbeat, need to
fix in spec
• ChargePointErrorCode
• ChargePointStatus
◦ Replaced enum value Occupied with the more detailed values: Preparing, Charging,
122
SuspendedEVSE, SuspendedEV and Finishing
• ChargingRateUnitType
◦ New
• ConfigurationStatus
• ClearChargingProfile.req
◦ New
• ClearChargingProfile.conf
◦ New
• DiagnosticsStatus
• FirmwareStatus
• GetCompositeSchedule.req
◦ New
• GetCompositeSchedule.conf
◦ New
• Location
• Measurand
• MeterValues.req
• ReadingContext
• RemoteStartTransaction.req
• SendLocalList.req
◦ removed hash
• SendLocalList.conf
◦ removed hash
123
• SetChargingProfile.req
◦ New
• SetChargingProfile.conf
◦ New
• StatusNotification.req
◦ Overhaul of states
• StopTransaction.req
• TriggerMessage.req
◦ New
• TriggerMessage.conf
◦ New
• UnlockConnector.conf
• UnitOfMeasure
124