OCPP 1.4

  • Reverted external dependency that has issues with high message throughput


  • Changed control pulse behaviour to work better with firmware offline detection
  • Chargers can swap endpoints without a full reboot of the OCPP service
  • Hidden "OCPPEndpoint" setting allowing operators to override the default charger OCPP endpoint for a given device.
  • New configuration flag to never cache Energy.Active.Import.Register and only send this on new value
  • "OverrideSchedule" available as a data transfer message to send OverrideSchedule commands to charger. This overrides a stored schedule for the current charging session.
  • SuspendedEVSE should is sent with ReasonForNoCurrent sent as VendorErrorCode in StatusNotification message
  • Added additional checks when updating settings to prevent errors when updating
  • Allow configuration of client certificate for WSS connections (needs testing with specific integrations)
  • Expose RSSI values through readonly configuration keys
  • Fixes a missing state transition to SuspendedEVSE when charger recovers from Offline and is paused
  • Fixes heartbeats from devices in state Offline if device is still receiving observations (eg. connection to CSMS is bad, or observations are old)
  • Fixes more conditions of devices being slow to come back online after going offline
  • Fixes removal of devices from service causing a service restart in some cases
  • Fixes some devices unable to recover from a lengthy CSMS connectivity issue

List of SuspendedEVSE ErrorCodes as of 1.4.4 release

    public enum ReasonForNoCurrent
        OK = 0, // charger is allocated current
        MaxCircuitCurrentTooLow = 1,
        MaxDynamicCircuitCurrentTooLow = 2,
        MaxDynamicOfflineFallbackCircuitCurrentTooLow = 3,
        CircuitFuseTooLow = 4,
        WaitingInQueue = 5,
        WaitingInFully = 6, // charged queue (charger assumes one of: EV uses delayed charging, EV charging complete)
        IllegalGridType = 7,
        PrimaryUnitHasNotReceivedCurrentRequestFromSecondaryUnit = 8,
        SecondaryUnitNotRequestingCurrent = 50, // no car connected...
        MaxChargerCurrentTooLow = 51,
        MaxDynamicChargerCurrentTooLow = 52,
        ChargerDisabled = 53,
        PendingScheduledCharging = 54,
        PendingAuthorization = 55,
        ChargerInErrorState = 56,
        Undefined = 100,


The list of error codes is likely to be expanded in the near future with new values related to communication with the Equalizer. This these values should be made available in the general API / Partner documentation

  • Extends the grace limit for no observations before a device goes offline

  • Fixes an issue where pulses are failing to keep a device alive

  • Adds emulator soft start to avoid overloading back ends on startup

  • Adds configurable grace period to extend CSMS Authorize responses with very short expiry times
  • Adds Masterloop connection metadata for command tracing

  • Fixes an issue where devices could get stuck resetting at the end of every transaction


  • Adds recovery of offline transactions that start after the charger telemetry buffer is full (requires FW≥217)
  • Changes behaviour if EV is disconnected while charger is offline. Timestamp for transaction stop set to timestamp of last observation received instead of now to prevent overbilling for bay occupancy
  • Expanded message queues to prevent message loss on very active periods in charger (typically when responding to server call)
  • Fixes an event flow that could leave the charger in Suspended EVSE
  • Fixes an issue where a charge point could bounce from Available to Finishing if it had transitioned to Available before getting confirmation that the transaction was stopped
  • Fixes bad handling of "ConcurrentTx" authorization status when processing authorization responses
  • Fixes ChangeAvailability going to state Available when set to Operational and car is connected
  • Fixes continuous sending of empty MeterValues artificially extending timeout until offline is detected in some CSMS systems
  • Fixes corrupt persistent transaction data preventing service restart
  • Fixes excessive OpMode polling for chargers stuck in Suspended EVSE
  • Fixes RemoteStart never timing out and authorizing chargers after long time periods if connection to charger is unstable
  • Fixes state transition on Reset command happening before transaction is stopped
  • Fixes badly formatted messages from CSMS causing service restart
  • Negative integers are no longer accepted in ChangeConfiguration calls where they would not make sense
  • ReservationId field removed from StartTransaction
  • Whitespace is trimmed from the start and end of all tokens received in RemoteStartTransaction calls


  • Support for Current.Offered measurand
  • Support for enabling fully synchronous central system communication as described in OCPP 1.6J (Disabled by default, but required by some central systems)
  • Tear down WebSocket connection to central system when charge point goes offline
  • Additional error handling if database is unavailable when device list is updated
  • Configurable clear of old MeterValues after send to central system
  • Disables observation metric collection for Offline chargers
  • Fixes handling of UnlockConnector calls
  • Fixes ChangeConfiguration not always updating settings in Easee.Cloud
  • Fixes GetConfiguration not passing OCPP-1.6J schema validation
  • Fixes RFID tag comparison being case sensitive when stopping transactions locally
  • Fixes StopTransaction sending incorrect reasons
  • Fixes a case where MeterValues could be sent before transaction is started in central system
  • Fixes a crash when triggering a MeterValue message outside of a transaction
  • Fixes a number of issues with setting charging profiles
  • Fixes incorrect @readonly labeling of configuration keys in GetConfiguration calls
  • Fixes incorrect current and voltage reports for single phase chargers in MeterValue packages
  • Fixes missing configuration keys in GetConfiguration calls
  • Improved feedback on Reset command. Charge point goes to state unavailable until it receives a reboot reason.
  • MeterValueSampleInterval set to 0 disables MeterValues messages
  • Reboot reasons from charger trigger chargers to go to state Booting and doing a soft state sync in OCPP
  • Stop transaction flow changed. Charger goes to SuspendedEVSE after deauthorization, pending final meter reading. After final meter reading StopTransaction and state transition to Finishing should happen with identical timestamps.

  • Fixes corrupt persistent transaction data preventing service restart
  • Whitespace is trimmed from the start and end of all tokens received in RemoteStartTransaction calls


  • Fixes an issue where Energy.Active.Import.Register is only sent once an hour


  • Support for selected features from the Smart Charging feature profile
  • OCPP configuration extension for limiting charger output current