Chargestation Configuration (Private Beta)

Introduction

eDRV now supports configuring available chargestation settings directly via APIs. Here are some scenarios when you can use these APIs.

  • Changing allowed chargestation OCPP settings
  • Updating any vendor-specific configuration settings

❗️

CAUTION: Changing settings can severely affect your chargestation

Changing chargestation settings should only be attempted:

  • In consultation with your hardware vendor
  • After verifying how/if your hardware vendor implements changes in settings
  • By admins with an advanced understanding of OCPP settings

❗️

CAUTION: Changing multiple settings too fast can severely affect your chargestation

Chargestation firmware needs time to process each setting change. For r.g. some changes may require a hard reset from the chargestation before the next settings change can be applied.

Developers MUST verify each change has been successfully applied by the chargestation before sending the next change request.

DO NOT loop through a list of change settings. This is a surefire way to brick your chargestation.

🚧

Software Support Void Warning

eDRV APIs assume that your chargestation has been configured as per standard OCPP settings. By changing your chargestation's settings you may de-stabilize the way eDRV OCPP servers and APIs interact with your chargestation.

Please consult with eDRV before changing chargestation settings and request an online test session of the new settings (may incur testing costs) before rolling out your new settings across the network.

Webhooks based programming model

Chargestation configuration via eDRV APIs must be done in the following steps:

  1. Call the relevant v1.1 API for configurations
  2. Listen to Webhook Events
    Please check the List Of Webhook Events for more details.

Updating the Chargestation Configuration

Updating the configuration of a chargestation can be done by calling /v1.1/chargestations/{id}/configurations API endpoint with the proper body.

{
    "key": "BlinkRepeat",
    "value": "3"
}

After executing the above-mentioned API with the specified body, you can expect the following Webhook Events response. (Please check below for more details on event status)

{
  "_id": "62f4dee9f77e7773e4b4864f",
  "type": "update_configuration",
  "status": "requested",
  "chargestation": "62ceeefbaadaf1404ca1a6a0",
  "connector": "62ceeefbaadaf1404ca1a6a0",
  "data": { "key": "BlinkRepeat", "value": "3" },
  "response_data": {},
  "createdAt": "2022-08-11T10:50:17.849Z",
  "updatedAt":"2022-08-11T10:50:18.748Z",
}

❗️

Reserved Configuration Settings

There are certain configurations that can not be overwritten via APIs. These settings are essential to the functioning of eDRV APIs and associated services. If the configuration update is requested for a reserved configuration, the eDRV specified value will overwrite the value defined in the API body. The list of configurations with their desired values is listed at the bottom of this page.

Requesting a Chargestation's Configuration

Requesting the configuration of any physical chargestation can be done via calling the /v1.1/chargestations/{id}/configurations API endpoint.

The following example shows the webhook event response your system will receive when the chargestation is able to successfully execute the event. Check out the different webhook events associated with requesting the chargestation configuration here - Events.

{
        "_id": "62f4dc12db6f0d72867a5817",
        "type": "chargestation.get_configuration",
        "status": "completed",
        "chargestation": "62ceeefbaadaf1404ca1a6a0",
        "data": [],
        "response_data": {
            "ClockAlignedDataInterval": {
                "key": "ClockAlignedDataInterval",
                "readonly": false,
                "value": "0"
            },
            "MeterValuesAlignedData": {
                "key": "MeterValuesAlignedData",
                "readonly": false,
                "value": ""
            },
            "StopTxnAlignedData": {
                "key": "StopTxnAlignedData",
                "readonly": false,
                "value": ""
            },
            "AllowOfflineTxForUnknownId": {
                "key": "AllowOfflineTxForUnknownId",
                "readonly": false,
                "value": "False"
            },
            "AuthorizeRemoteTxRequests": {
                "key": "AuthorizeRemoteTxRequests",
                "readonly": false,
                "value": "False"
            },
            "LocalAuthorizeOffline": {
                "key": "LocalAuthorizeOffline",
                "readonly": false,
                "value": "True"
            },
            "LocalPreAuthorize": {
                "key": "LocalPreAuthorize",
                "readonly": false,
                "value": "False"
            },
            "AuthorizationCacheEnabled": {
                "key": "AuthorizationCacheEnabled",
                "readonly": false,
                "value": "True"
            },
            "SupportedFileTransferProtocols": {
                "key": "SupportedFileTransferProtocols",
                "readonly": true,
                "value": "FTP"
            },
            "HeartbeatInterval": {
                "key": "HeartbeatInterval",
                "readonly": false,
                "value": "900"
            },
            "TransactionMessageAttempts": {
                "key": "TransactionMessageAttempts",
                "readonly": false,
                "value": "0"
            },
            "TransactionMessageRetryInterval": {
                "key": "TransactionMessageRetryInterval",
                "readonly": false,
                "value": "60"
            },
            "UnlockConnectorOnEVSideDisconnect": {
                "key": "UnlockConnectorOnEVSideDisconnect",
                "readonly": false,
                "value": "True"
            },
            "WebSocketPingInterval": {
                "key": "WebSocketPingInterval",
                "readonly": false,
                "value": "120"
            },
            "ResetRetries": {
                "key": "ResetRetries",
                "readonly": false,
                "value": "0"
            },
            "LocalAuthListEnabled": {
                "key": "LocalAuthListEnabled",
                "readonly": false,
                "value": "True"
            },
            "ReserveConnectorZeroSupported": {
                "key": "ReserveConnectorZeroSupported",
                "readonly": true,
                "value": "True"
            },
            "StopTxnSampledData": {
                "key": "StopTxnSampledData",
                "readonly": false,
                "value": ""
            },
            "MeterValuesSampledData": {
                "key": "MeterValuesSampledData",
                "readonly": false,
                "value": ""
            },
            "MeterValueSampleInterval": {
                "key": "MeterValueSampleInterval",
                "readonly": false,
                "value": "30"
            },
            "RegisterMeterValuesIncludePhases": {
                "key": "RegisterMeterValuesIncludePhases",
                "readonly": false,
                "value": "False"
            },
            "SecurityProfile": {
                "key": "SecurityProfile",
                "readonly": false,
                "value": "0"
            },
            "ChargeProfileMaxStackLevel": {
                "key": "ChargeProfileMaxStackLevel",
                "readonly": true,
                "value": "15"
            },
            "ConnectorSwitch3to1PhaseSupported": {
                "key": "ConnectorSwitch3to1PhaseSupported",
                "readonly": true,
                "value": "False"
            },
            "ConnectionTimeOut": {
                "key": "ConnectionTimeOut",
                "readonly": false,
                "value": "285"
            },
            "StopTransactionOnEVSideDisconnect": {
                "key": "StopTransactionOnEVSideDisconnect",
                "readonly": false,
                "value": "True"
            },
            "MaxEnergyOnInvalidId": {
                "key": "MaxEnergyOnInvalidId",
                "readonly": false,
                "value": "0"
            },
            "StopTransactionOnInvalidId": {
                "key": "StopTransactionOnInvalidId",
                "readonly": false,
                "value": "False"
            },
            "ConnectorPhaseRotation": {
                "key": "ConnectorPhaseRotation",
                "readonly": false,
                "value": "0.RST"
            },
            "ConnectorPhaseRotationMaxLength": {
                "key": "ConnectorPhaseRotationMaxLength",
                "readonly": true,
                "value": "0"
            },
            "GetConfigurationMaxKeys": {
                "key": "GetConfigurationMaxKeys",
                "readonly": true,
                "value": "35"
            },
            "LightIntensity": {
                "key": "LightIntensity",
                "readonly": false,
                "value": "100"
            },
            "MeterValuesAlignedDataMaxLength": {
                "key": "MeterValuesAlignedDataMaxLength",
                "readonly": true,
                "value": "9"
            },
            "MeterValuesSampledDataMaxLength": {
                "key": "MeterValuesSampledDataMaxLength",
                "readonly": true,
                "value": "9"
            },
            "NumberOfConnectors": {
                "key": "NumberOfConnectors",
                "readonly": true,
                "value": "1"
            },
            "StopTxnAlignedDataMaxLength": {
                "key": "StopTxnAlignedDataMaxLength",
                "readonly": true,
                "value": "0"
            },
            "StopTxnSampledDataMaxLength": {
                "key": "StopTxnSampledDataMaxLength",
                "readonly": true,
                "value": "0"
            },
            "SupportedFeatureProfiles": {
                "key": "SupportedFeatureProfiles",
                "readonly": true,
                "value": "Core,FirmwareManagement,Reservation,LocalAuthListManagement,RemoteTrigger,SmartCharging"
            },
            "SupportedFeatureProfilesMaxLength": {
                "key": "SupportedFeatureProfilesMaxLength",
                "readonly": true,
                "value": "6"
            },
            "LocalAuthListMaxLength": {
                "key": "LocalAuthListMaxLength",
                "readonly": true,
                "value": "424"
            },
            "SendLocalListMaxLength": {
                "key": "SendLocalListMaxLength",
                "readonly": true,
                "value": "46"
            },
            "ChargingScheduleAllowedChargingRateUnit": {
                "key": "ChargingScheduleAllowedChargingRateUnit",
                "readonly": true,
                "value": "Current"
            },
            "ChargingScheduleMaxPeriods": {
                "key": "ChargingScheduleMaxPeriods",
                "readonly": true,
                "value": "100"
            },
            "MaxChargingProfilesInstalled": {
                "key": "MaxChargingProfilesInstalled",
                "readonly": true,
                "value": "45"
            },
            "HeartBeatSendAllways": {
                "key": "HeartBeatSendAllways",
                "readonly": false,
                "value": "False"
            },
            "CentralMeterValueTransmissionMode": {
                "key": "CentralMeterValueTransmissionMode",
                "readonly": false,
                "value": "during"
            },
            "CentralMeterValueAlignment": {
                "key": "CentralMeterValueAlignment",
                "readonly": false,
                "value": "clock"
            },
            "CentralMeterValueSampleInterval": {
                "key": "CentralMeterValueSampleInterval",
                "readonly": false,
                "value": "900"
            },
            "AutoDimLights": {
                "key": "AutoDimLights",
                "readonly": false,
                "value": "False"
            },
            "AbortConcurrentTx": {
                "key": "AbortConcurrentTx",
                "readonly": false,
                "value": "False"
            },
            "DisconnectAction": {
                "key": "DisconnectAction",
                "readonly": false,
                "value": "Unlock"
            },
            "WhiteListEnabled": {
                "key": "WhiteListEnabled",
                "readonly": false,
                "value": "True"
            },
            "DisconnectTimeout": {
                "key": "DisconnectTimeout",
                "readonly": false,
                "value": "10"
            },
            "SendStationStatus": {
                "key": "SendStationStatus",
                "readonly": false,
                "value": "True"
            },
            "ZE-ready": {
                "key": "ZE-ready",
                "readonly": false,
                "value": "False"
            },
            "Power Outage Recovery": {
                "key": "Power Outage Recovery",
                "readonly": false,
                "value": "Idle"
            },
            "ContactorProtect": {
                "key": "ContactorProtect",
                "readonly": false,
                "value": "60"
            },
            "TimeUnlockWhenNotCharging": {
                "key": "TimeUnlockWhenNotCharging",
                "readonly": false,
                "value": "0"
            },
            "Language": {
                "key": "Language",
                "readonly": false,
                "value": "en_GB"
            },
            "TimeZoneMinutes": {
                "key": "TimeZoneMinutes",
                "readonly": false,
                "value": "60"
            },
            "PlugAndChargeIdentifier": {
                "key": "PlugAndChargeIdentifier",
                "readonly": false,
                "value": ""
            },
            "AuthorizationMethod": {
                "key": "AuthorizationMethod",
                "readonly": false,
                "value": "RFID"
            },
            "ProtocolName": {
                "key": "ProtocolName",
                "readonly": true,
                "value": "ocpp/json"
            },
            "ProtocolVersion": {
                "key": "ProtocolVersion",
                "readonly": false,
                "value": "1.6"
            },
            "Network": {
                "key": "Network",
                "readonly": false,
                "value": "wireless"
            },
            "DNS-1": { "key": "DNS-1", "readonly": false, "value": "8.8.8.8" },
            "DNS-2": { "key": "DNS-2", "readonly": false, "value": "8.8.4.4" },
            "Temperature": {
                "key": "Temperature",
                "readonly": true,
                "value": "43.6"
            },
            "TemperatureLow": {
                "key": "TemperatureLow",
                "readonly": false,
                "value": "-25.0"
            },
            "TemperatureHigh": {
                "key": "TemperatureHigh",
                "readonly": false,
                "value": "80.0"
            },
            "Station-MaxCurrent": {
                "key": "Station-MaxCurrent",
                "readonly": false,
                "value": "16.0"
            },
            "SmartMeter-MaxCurrent": {
                "key": "SmartMeter-MaxCurrent",
                "readonly": false,
                "value": "32.0"
            },
            "Chameleon-MinCurrent": {
                "key": "Chameleon-MinCurrent",
                "readonly": false,
                "value": "14.0"
            },
            "RJ11-Mode": {
                "key": "RJ11-Mode",
                "readonly": false,
                "value": "DSMR P1"
            },
            "ALB-ProtocolSelection": {
                "key": "ALB-ProtocolSelection",
                "readonly": false,
                "value": "None"
            },
            "SmartMeterIncludesCharger": {
                "key": "SmartMeterIncludesCharger",
                "readonly": true,
                "value": "True"
            },
            "Active-LoadBalancing": {
                "key": "Active-LoadBalancing",
                "readonly": true,
                "value": "Off"
            },
            "Static-LoadBalancing": {
                "key": "Static-LoadBalancing",
                "readonly": true,
                "value": "Off"
            },
            "Phase-Connected": {
                "key": "Phase-Connected",
                "readonly": false,
                "value": "L1L2L3"
            },
            "StatusNotificationMode": {
                "key": "StatusNotificationMode",
                "readonly": false,
                "value": "Normal"
            },
            "Disable105Percent": {
                "key": "Disable105Percent",
                "readonly": false,
                "value": "False"
            },
            "Connector1-Type": {
                "key": "Connector1-Type",
                "readonly": true,
                "value": "Type 2 socket"
            },
            "Connector1-PhasesConnected": {
                "key": "Connector1-PhasesConnected",
                "readonly": true,
                "value": "L1L2L3"
            },
            "Connector1-InputPhases": {
                "key": "Connector1-InputPhases",
                "readonly": true,
                "value": "0"
            },
            "Connector1-OutputPhases": {
                "key": "Connector1-OutputPhases",
                "readonly": true,
                "value": "0"
            },
            "Connector1-MaxCurrent": {
                "key": "Connector1-MaxCurrent",
                "readonly": false,
                "value": "16.0"
            },
            "Connector1-ActualPower": {
                "key": "Connector1-ActualPower",
                "readonly": true,
                "value": "0.00"
            },
            "UnlockedFeatures": {
                "key": "UnlockedFeatures",
                "readonly": true,
                "value": "RFID-reader,Pers.display"
            },
            "SCN-IsEnabled": {
                "key": "SCN-IsEnabled",
                "readonly": true,
                "value": "False"
            },
            "MaxTxMeterValueRandomisationTime": {
                "key": "MaxTxMeterValueRandomisationTime",
                "readonly": false,
                "value": "60"
            },
            "Cover lock enabled": {
                "key": "Cover lock enabled",
                "readonly": false,
                "value": "True"
            },
            "StrictPEMeasurementEnabled": {
                "key": "StrictPEMeasurementEnabled",
                "readonly": false,
                "value": "False"
            },
            "EnablePhaseSwitching": {
                "key": "EnablePhaseSwitching",
                "readonly": false,
                "value": "False"
            },
            "LED Heart Beat Mode": {
                "key": "LED Heart Beat Mode",
                "readonly": false,
                "value": "Off"
            },
            "LED Heart Beat Intensity": {
                "key": "LED Heart Beat Intensity",
                "readonly": false,
                "value": "100"
            },
            "MasterKey-isEnabled": {
                "key": "MasterKey-isEnabled",
                "readonly": false,
                "value": "False"
            },
            "MasterKey-Id": {
                "key": "MasterKey-Id",
                "readonly": false,
                "value": ""
            },
            "6mADetectResponse": {
                "key": "6mADetectResponse",
                "readonly": false,
                "value": "Smart"
            },
            "ProxyAddressAndPort": {
                "key": "ProxyAddressAndPort",
                "readonly": false,
                "value": ""
            },
            "ProxyUsername": {
                "key": "ProxyUsername",
                "readonly": false,
                "value": ""
            },
            "ProxyEnable": {
                "key": "ProxyEnable",
                "readonly": false,
                "value": "False"
            },
            "Pricing-Currency": {
                "key": "Pricing-Currency",
                "readonly": false,
                "value": "EUR"
            },
            "Pricing-StartPrice": {
                "key": "Pricing-StartPrice",
                "readonly": false,
                "value": "0.000000"
            },
            "Pricing-EnergyPrice": {
                "key": "Pricing-EnergyPrice",
                "readonly": false,
                "value": "0.000000"
            },
            "Pricing-MinutePrice": {
                "key": "Pricing-MinutePrice",
                "readonly": false,
                "value": "0.000000"
            },
            "Pricing-ShowDisclaimer": {
                "key": "Pricing-ShowDisclaimer",
                "readonly": false,
                "value": "True"
            },
            "MaxImbalanceCurrent": {
                "key": "MaxImbalanceCurrent",
                "readonly": false,
                "value": "0.000000"
            }
        },
        "createdAt": "2022-08-11T10:38:10.921Z",
        "updatedAt": "2022-08-11T10:38:18.918Z"
}

📘

Chargestation Configuration Object

The response will have standard OCPP-supported configurations as well as many vendor-specific configurations.

Please note that you can only configure keys for which the readonly property is set to false.

The list of configurations you receive in the webhook response is implemented by the chargestation manufacturer and eDRV can only request to fetch or change a particular configuration but does not guarantee that the configuration update will always get successfully executed by the chargestation.

If you see a setting that is not getting applied by the chargestation, please contact your manufacturer. Unfortunately, vendors will often claim to support a setting in theory while in practice it is not implemented in a particular version of firmware.

Chargestation Webhook Event Status

The status of event response can be one of the following.

  • requested
    The event has been sent to the chargestation
  • completed
    The event has been executed by the chargestation and the chargestation has sent a
  • failed
    The event has been not been executed by the chargestation.

All of the above status changes are reported via webhooks. Please check the List Of Webhook Events for more details.

Reserved Chargestation Configurations

The following chargestation settings are not allowed to be changed via the eDRV APIs:

  • AllowOfflineTxForUnknownId - false
  • AuthorizationCacheEnabled - false
  • AuthorizeRemoteTxRequests - false
  • ClockAlignedDataInterval - 0
  • ConnectionTimeOut - 300
  • HeartbeatInterval - 900
  • LocalAuthorizeOffline - true
  • MeterValuesSampledData - 'Voltage', 'Power.Active.Import', 'Energy.Active.Import.Register', 'Energy.Active.Import.Interval', 'Current.Import'
  • MeterValueSampleInterval - 30
  • MinimumStatusDuration - 5
  • StopTransactionOnEVSideDisconnect - true
  • StopTxnSampledData - 'Voltage', 'Power.Active.Import', 'Energy.Active.Import.Register', 'Energy.Active.Import.Interval', 'Current.Import'
  • TransactionMessageAttempts - 3
  • TransactionMessageRetryInterval - 30
  • UnlockConnectorOnEVSideDisconnect - true
  • WebSocketPingInterval - 10