EVerest API definition for EVSE board support 1.0.0

API for EVerest API clients implementing evse board support, AC RCD and connector lock.

  • #EVerest
  • #evse_board_support
  • #ac_rcd
  • #connector_lock

Servers

  • mqtt://localhost:1883/everest_api/1/evse_board_support/{module_id}mqttdefault

    default local MQTT

    object
    module_id
    required
    string

    The ID of the module as defined in the EVerest config file.

Operations

  • RECEIVE e2m/enable

    Direction: EVerest to Module

    Operation IDreceive_enable

    Available only on servers:

    Accepts the following message:

    Receive enable or disable for charging portreceive_enable

    Enables or disables the charging port. Typically disabled results in control pilot state F. It must not accept cars for new charging sessions if disabled.

    Message IDreceive_enable
    Payload
    boolean

    True: enabled. False: disabled.

    Examples

  • RECEIVE e2m/pwm_on

    Direction: EVerest to Module

    Operation IDreceive_pwm_on

    Available only on servers:

    Accepts the following message:

    Receive PWM duty cyclereceive_pwm_on

    Turns PWM on with duty cycle (in percent)

    Message IDreceive_pwm_on
    Payload
    number
    [ 0 .. 100 ]

    PWM duty cycle

    Examples

  • RECEIVE e2m/pwm_off

    Direction: EVerest to Module

    Operation IDreceive_pwm_off

    Available only on servers:

    Accepts the following message:

    Receive PWM switch offreceive_pwm_off

    Turn PWM off (constant high voltage)

    Message IDreceive_pwm_off

    Examples

  • RECEIVE e2m/pwm_F

    Direction: EVerest to Module

    Operation IDreceive_pwm_F

    Available only on servers:

    Accepts the following message:

    Receive PWM switch offreceive_pwm_F

    Turn PWM off with error F (constant negative voltage)

    Message IDreceive_pwm_F

    Examples

  • RECEIVE e2m/allow_power_on

    Direction: EVerest to Module

    Operation IDreceive_allow_power_on

    Available only on servers:

    Accepts the following message:

    Receive permission to switch relaise onreceive_allow_power_on

    Sets allow_power_on flag. If false, Relais must never be switched on.

    Message IDreceive_allow_power_on
    object

    Flag and context for switching power on/off. In some architectures e.g. DC power train needs to know whether it should switch on with limited current or full current on the output contactors.

    Examples

  • RECEIVE e2m/ac_switch_three_phases_while_charging

    Direction: EVerest to Module

    Operation IDreceive_ac_switch_three_phases_while_charging

    Available only on servers:

    Accepts the following message:

    Receive request switch between 3 phase und 1 phase modereceive_ac_switch_three_phases_while_charging

    Optional, in case of doubt do not implement. Report in hardware_capabilites if this command is supported. This command switches between one and three phase operation during an active charging session. Some cars can be permanently destroyed by that, so the bsp needs to implement a special sequence for the switching. The exact sequence can be defined by the BSP, but one example would be a C2->C1->B1->F->B1->B2->C2 or similar. Use with caution.

    Message IDreceive_ac_switch_three_phases_while_charging
    Payload
    string

    Number of active phases for AC charging

      Allowed values:
    • "ThreePhases"
    • "SinglePhase"

    Examples

  • RECEIVE e2m/evse_replug

    Direction: EVerest to Module

    Operation IDreceive_evse_replug

    Available only on servers:

    Accepts the following message:

    Receive request for virtual replug sequencereceive_evse_replug

    Optional, in case of doubt do not implement. Special command initiate a virtual replug sequence of adjustable duration without restarting session. Emits a EvseReplugStarted event if supported and started. BSP will take care to not emit other events such as CarPluggedIn/Out during that time. Once finished it will emit a EvseReplugFinished. This is mainly for testing purposes, don't implement for production use.

    Message IDreceive_evse_replug
    Payload
    integer
    >= 0

    Duration in milliseconds (ms)

    Examples

  • RECEIVE e2m/ac_overcurrent_limit

    Direction: EVerest to Module

    Operation IDreceive_ac_overcurrent_limit

    Available only on servers:

    Accepts the following message:

    Receive over current limitreceive_ac_overcurrent_limit

    Many chargers implement a fast over current shutdown directly in the hardware that triggers if the EV draws more current than the PWM allows. If the hardware does not have this functionality, just ignore this command. Do not use it to set the PWM duty cycle. Otherwise this command reports a value that should be used for the overcurrent detection. A margin needs to be added to avoid false triggers. Do not use the PWM duty cycle to infer the current limit in the BSP, as this will not work with HLC.

    Message IDreceive_ac_overcurrent_limit
    Payload
    number

    Electrical current in ampere (A)

    Examples

  • SEND m2e/event

    Direction: Module to EVerest

    Operation IDsend_event

    Available only on servers:

    Accepts the following message:

    Send ControlPilot eventsend_event

    Event from ControlPilot signal/out relais

    Message IDsend_event
    object

    Event stream from ControlPilot signal/relais.

    Examples

  • SEND m2e/ac_nr_of_phases

    Direction: Module to EVerest

    Operation IDsend_ac_nr_of_phases

    Available only on servers:

    Accepts the following message:

    Send phase countsend_ac_nr_of_phases

    Instantaneous phase count available to car

    Message IDsend_ac_nr_of_phases
    Payload
    integer
    [ 1 .. 3 ]

    Number of phases

    Examples

  • SEND m2e/capabilities

    Direction: Module to EVerest

    Operation IDsend_capabilities

    Available only on servers:

    Accepts the following message:

    Send hardware capabilitiessend_capabilities

    Hardware capabilities/limits. Initially EvseManager will call get_hw_capabilities once to fetch the limits and caches the limits internally. The BSP module does not have to publish this variable at all, then the initially fetched capabilities will be used. The BSP may publish this variable to update limits in case they change during runtime, e.g. if the maximum current changes because the hardware gets too hot.

    Message IDsend_capabilities
    object

    Hardware capabilities / limits

    Examples

  • SEND m2e/ac_pp_ampacity

    Operation IDsend_ac_pp_ampacity

    Available only on servers:

    Accepts the following message:

    Send AC pp ampacitysend_ac_pp_ampacity

    Current carrying capacity of the connected cable in ampere for AC charging with a socket. Publish whenever it changes. This has no meaning for DC or AC charging with a fixed attached cable, it does not need to be implemented and the returned value is not used in those cases.

    Message IDsend_ac_pp_ampacity
    object

    Current capability (ampacity) of the cable

    Examples

  • SEND m2e/request_stop_transaction

    Direction: Module to EVerest

    Operation IDsend_request_stop_transaction

    Available only on servers:

    Accepts the following message:

    Request stop chargingsend_ac_pp_ampacity

    Publish to stop the transaction gracefully (e.g. user pressed the stop button)

    Message IDsend_ac_pp_ampacity
    object

    Request for a stop transaction containing the reason and an optional id tag

    Examples

  • RECEIVE e2m/self_test

    Operation IDreceive_self_test

    Available only on servers:

    Accepts the following message:

    Receive signal for selftestreceive_self_test

    Executes a self test of the RCD. If it fails, an error of type Selftest should be raised.

    Message IDreceive_self_test

    Examples

  • REPLY e2m/reset

    Operation IDreceive_request_reset

    Available only on servers:

    Accepts the following message:

    Request to reset RCDreceive_request_reset

    Reply to provided topic.

    Message IDreceive_request_reset
    object

    Examples

    REPLY INFORMATION

    REPLY CHANNEL INFORMATION

    Reply will be directed to the address specified at this location: $message.header#/replyTo

    REPLY address information

    REPLY will be sent to the address provided in:$message.header#/replyTo
  • SEND

    Reply to request

    Operation IDsend_reply_reset

    Available only on servers:

    Accepts the following message:

    Reply to request for RCD resetsend_reply_reset

    Resets the RCD after a trigger. May not be supported by actual hardware.

    Message IDsend_reply_reset
    Payload
    boolean

    Success: true, failure: false

    Examples

  • SEND m2e/rcd_current

    Direction: Module to EVerest

    Operation IDsend_rcd_current

    Available only on servers:

    Accepts the following message:

    Send RCD currentsend_rcd_current

    Residual current in mA. Note that this does not trigger anything, it is merely for reporting.

    Message IDsend_rcd_current
    Payload
    number

    Electrical current in milliampere (mA)

    Examples

  • RECEIVE e2m/lock

    Operation IDreceive_lock

    Available only on servers:

    Accepts the following message:

    Receive signal to lockreceive_lock

    Lock connector lock

    Message IDreceive_lock

    Examples

  • RECEIVE e2m/unlock

    Operation IDreceive_unlock

    Available only on servers:

    Accepts the following message:

    Receive signal to unlockreceive_unlock

    Unlock connector lock. (e.g. normal unlaock or enforced by OCPP)

    Message IDreceive_unlock

    Examples

  • SEND m2e/raise_error

    Direction: Module to EVerest

    Operation IDsend_raise_error

    Available only on servers:

    Accepts the following message:

    Send raise errorsend_raise_error

    Signal to EVerest that an error happened.

    Message IDsend_raise_error
    object

    Errors for the evse_board_support interface. All error codes that begin with MREC needs to be implemented to fulfill the Minimum Required Error Codes defined by the ChargeX consortium: https://inl.gov/content/uploads/2023/07/ChargeX_MREC_Rev5_09.12.23.pdf

    Examples

  • SEND m2e/clear_error

    Operation IDsend_clear_error

    Available only on servers:

    Accepts the following message:

    Send clear errorsend_clear_error

    Signal to EVerest that a previously raised error is no longer active.

    Message IDsend_clear_error
    object

    Errors for the evse_board_support interface. All error codes that begin with MREC needs to be implemented to fulfill the Minimum Required Error Codes defined by the ChargeX consortium: https://inl.gov/content/uploads/2023/07/ChargeX_MREC_Rev5_09.12.23.pdf

    Examples

  • RECEIVE e2m/heartbeat

    Direction: EVerest to Module

    Operation IDreceive_heartbeat

    Available only on servers:

    Accepts the following message:

    Receive heartbeatreceive_heartbeat

    Heartbeat produced by EVerest as configured via cfg_heartbeat_interval_ms in the EVerest configuration

    Message IDreceive_heartbeat
    Payload
    integer

    64bit unsigned integer. The id of every heartbeat increases by 1 and overflows when the maximum representable value is reached

    Examples

  • SEND m2e/communication_check

    Operation IDsend_communication_check

    Available only on servers:

    Accepts the following message:

    Send communication checksend_communication_check

    Signal to EVerest that communication is good or check shall be stopped

    Message IDsend_communication_check
    Payload
    boolean

    Send 'true' at least every 'cfg_communication_check_to_s' seconds to signal module is alive. Send 'false' to stop communication check'

    Examples

Messages

  • #1Receive enable or disable for charging portreceive_enable

    Enables or disables the charging port. Typically disabled results in control pilot state F. It must not accept cars for new charging sessions if disabled.

    Message IDreceive_enable
    Payload
    boolean

    True: enabled. False: disabled.

  • #2Receive PWM duty cyclereceive_pwm_on

    Turns PWM on with duty cycle (in percent)

    Message IDreceive_pwm_on
    Payload
    number
    [ 0 .. 100 ]

    PWM duty cycle

  • #3Receive PWM switch offreceive_pwm_off

    Turn PWM off (constant high voltage)

    Message IDreceive_pwm_off
  • #4Receive PWM switch offreceive_pwm_F

    Turn PWM off with error F (constant negative voltage)

    Message IDreceive_pwm_F
  • #5Receive permission to switch relaise onreceive_allow_power_on

    Sets allow_power_on flag. If false, Relais must never be switched on.

    Message IDreceive_allow_power_on
    object

    Flag and context for switching power on/off. In some architectures e.g. DC power train needs to know whether it should switch on with limited current or full current on the output contactors.

  • #6Receive request switch between 3 phase und 1 phase modereceive_ac_switch_three_phases_while_charging

    Optional, in case of doubt do not implement. Report in hardware_capabilites if this command is supported. This command switches between one and three phase operation during an active charging session. Some cars can be permanently destroyed by that, so the bsp needs to implement a special sequence for the switching. The exact sequence can be defined by the BSP, but one example would be a C2->C1->B1->F->B1->B2->C2 or similar. Use with caution.

    Message IDreceive_ac_switch_three_phases_while_charging
    Payload
    string

    Number of active phases for AC charging

      Allowed values:
    • "ThreePhases"
    • "SinglePhase"
  • #7Receive request for virtual replug sequencereceive_evse_replug

    Optional, in case of doubt do not implement. Special command initiate a virtual replug sequence of adjustable duration without restarting session. Emits a EvseReplugStarted event if supported and started. BSP will take care to not emit other events such as CarPluggedIn/Out during that time. Once finished it will emit a EvseReplugFinished. This is mainly for testing purposes, don't implement for production use.

    Message IDreceive_evse_replug
    Payload
    integer
    >= 0

    Duration in milliseconds (ms)

  • #8Receive over current limitreceive_ac_overcurrent_limit

    Many chargers implement a fast over current shutdown directly in the hardware that triggers if the EV draws more current than the PWM allows. If the hardware does not have this functionality, just ignore this command. Do not use it to set the PWM duty cycle. Otherwise this command reports a value that should be used for the overcurrent detection. A margin needs to be added to avoid false triggers. Do not use the PWM duty cycle to infer the current limit in the BSP, as this will not work with HLC.

    Message IDreceive_ac_overcurrent_limit
    Payload
    number

    Electrical current in ampere (A)

  • #9Send ControlPilot eventsend_event

    Event from ControlPilot signal/out relais

    Message IDsend_event
    object

    Event stream from ControlPilot signal/relais.

  • #10Send phase countsend_ac_nr_of_phases

    Instantaneous phase count available to car

    Message IDsend_ac_nr_of_phases
    Payload
    integer
    [ 1 .. 3 ]

    Number of phases

  • #11Send hardware capabilitiessend_capabilities

    Hardware capabilities/limits. Initially EvseManager will call get_hw_capabilities once to fetch the limits and caches the limits internally. The BSP module does not have to publish this variable at all, then the initially fetched capabilities will be used. The BSP may publish this variable to update limits in case they change during runtime, e.g. if the maximum current changes because the hardware gets too hot.

    Message IDsend_capabilities
    object

    Hardware capabilities / limits

  • #12Send AC pp ampacitysend_ac_pp_ampacity

    Current carrying capacity of the connected cable in ampere for AC charging with a socket. Publish whenever it changes. This has no meaning for DC or AC charging with a fixed attached cable, it does not need to be implemented and the returned value is not used in those cases.

    Message IDsend_ac_pp_ampacity
    object

    Current capability (ampacity) of the cable

  • #13Request stop chargingsend_request_stop_transaction

    Publish to stop the transaction gracefully (e.g. user pressed the stop button)

    Message IDsend_request_stop_transaction
    object

    Request for a stop transaction containing the reason and an optional id tag

  • #14Receive signal for selftestreceive_self_test

    Executes a self test of the RCD. If it fails, an error of type Selftest should be raised.

    Message IDreceive_self_test
  • #15Request to reset RCDreceive_request_reset

    Reply to provided topic.

    Message IDreceive_request_reset
    object
  • #16Reply to request for RCD resetsend_reply_reset

    Resets the RCD after a trigger. May not be supported by actual hardware.

    Message IDsend_reply_reset
    Payload
    boolean

    Success: true, failure: false

  • #17Send RCD currentsend_rcd_current

    Residual current in mA. Note that this does not trigger anything, it is merely for reporting.

    Message IDsend_rcd_current
    Payload
    number

    Electrical current in milliampere (mA)

  • #18Receive signal to lockreceive_lock

    Lock connector lock

    Message IDreceive_lock
  • #19Receive signal to unlockreceive_unlock

    Unlock connector lock. (e.g. normal unlaock or enforced by OCPP)

    Message IDreceive_unlock
  • #20Send raise errorsend_raise_error

    Signal to EVerest that an error happened.

    Message IDsend_raise_error
    object

    Errors for the evse_board_support interface. All error codes that begin with MREC needs to be implemented to fulfill the Minimum Required Error Codes defined by the ChargeX consortium: https://inl.gov/content/uploads/2023/07/ChargeX_MREC_Rev5_09.12.23.pdf

  • #21Send clear errorsend_clear_error

    Signal to EVerest that a previously raised error is no longer active.

    Message IDsend_clear_error
    object

    Errors for the evse_board_support interface. All error codes that begin with MREC needs to be implemented to fulfill the Minimum Required Error Codes defined by the ChargeX consortium: https://inl.gov/content/uploads/2023/07/ChargeX_MREC_Rev5_09.12.23.pdf

  • #22Receive heartbeatreceive_heartbeat

    Heartbeat produced by EVerest as configured via cfg_heartbeat_interval_ms in the EVerest configuration

    Message IDreceive_heartbeat
    Payload
    integer

    64bit unsigned integer. The id of every heartbeat increases by 1 and overflows when the maximum representable value is reached

  • #23Send communication checksend_communication_check

    Signal to EVerest that communication is good or check shall be stopped

    Message IDsend_communication_check
    Payload
    boolean

    Send 'true' at least every 'cfg_communication_check_to_s' seconds to signal module is alive. Send 'false' to stop communication check'

Schemas

  • ACPhaseMode
    string

    Number of active phases for AC charging

      Allowed values:
    • "ThreePhases"
    • "SinglePhase"
  • object

    Event stream from ControlPilot signal/relais.

  • Current
    number

    Electrical current in milliampere (mA)

  • Duration
    integer
    >= 0

    Duration in milliseconds (ms)

  • Enabled
    boolean

    True: enabled. False: disabled.

  • object

    Hardware capabilities / limits

  • OverCurrent
    number

    Electrical current in ampere (A)

  • PhaseCount
    integer
    [ 1 .. 3 ]

    Number of phases

  • object

    Flag and context for switching power on/off. In some architectures e.g. DC power train needs to know whether it should switch on with limited current or full current on the output contactors.

  • object

    Current capability (ampacity) of the cable

  • PWMDutyCycle
    number
    [ 0 .. 100 ]

    PWM duty cycle

  • Success
    boolean

    Success: true, failure: false

  • ErrorEnum
    string

    Type of error

    • DiodeFault: 'The CP diode in the EV is shorted.'
    • VentilationNotAvailable: 'EV requested state D but no ventilation is available.'
    • BrownOut: 'The hardware/MCU detected a brown out.'
    • EnergyManagement: 'Energy could not be delivered because an (external) energy management failed.'
    • PermanentFault: 'The EVSE is permanently broken and requires repair.'
    • MREC2GroundFailure: 'Ground fault circuit interrupter has been activated.'
    • MREC3HighTemperature: 'High temperature inside the EVSE is derating power delivery.'
    • MREC4OverCurrentFailure: 'Over current protection device has tripped.'
    • MREC5OverVoltage: 'Input voltage to the vehicle has risen above an acceptable level.'
    • MREC6UnderVoltage: 'Input voltage to the vehicle has dropped below an acceptable level.'
    • MREC8EmergencyStop: 'Emergency stop is pressed by the user (required if equipped).'
    • MREC10InvalidVehicleMode: 'The vehicle is in an invalid mode for charging (Reported by IEC stack)'
    • MREC14PilotFault: 'The control pilot voltage is out of range.'
    • MREC15PowerLoss: 'The EVSE is unable to supply any power due to mains failure'
    • MREC17EVSEContactorFault: "Contactors fail to open or close on EVSE's side. May also include welding related errors."
    • MREC18CableOverTempDerate: 'Temperature of charging cable or connector assembly is too high, resulting in reduced power operation.'
    • MREC19CableOverTempStop: 'Temperature of charging cable or connector assembly is too high, resulting in a stopped charging session.'
    • MREC20PartialInsertion: 'Cable latch is raised due to incomplete insertion into the vehicle charging port.'
    • MREC23ProximityFault: 'The proximity voltage is out of range.'
    • MREC24ConnectorVoltageHigh: 'The output voltage of EVSE is high before charging starts or after charging ends.'
    • MREC25BrokenLatch: 'The latch on the connector is broken.'
    • MREC26CutCable: 'The output cable has been severed from the EVSE.'
    • ConnectorLockCapNotCharged: 'The capacitor for connector lock motor failed to charge within expected time'
    • ConnectorLockUnexpectedOpen: 'The connector lock feedback returns open while it should be closed'
    • ConnectorLockUnexpectedClose: 'The connector lock feedback returns closed while it should be open'
    • ConnectorLockFailedLock: 'The connector lock failed to lock (feedback still returns open)'
    • ConnectorLockFailedUnlock: 'The connector lock failed to unlock (feedback still returns closed)'
    • MREC1ConnectorLockFailure: ' Failure to lock or unlock connector on the vehicle side as per MREC definition. How should that be implemented? We can only find out about locking on the EVSE side, so we will use this error to report EVSE side lock failures. It is probably a mistake in the MREC definition.'
    • Selftest: 'The Selftest failed, device permanently broken'
    • DC: 'RCD was triggered by a DC fault'
    • AC: 'RCD was triggered by an AC fault'
    • VendorError: 'Vendor specific error code. Will stop charging session.'
    • VendorWarning: 'Vendor specific error code. Charging may continue.'
      Allowed values:
    • "DiodeFault"
    • "VentilationNotAvailable"
    • "BrownOut"
    • "EnergyManagement"
    • "PermanentFault"
    • "MREC2GroundFailure"
    • "MREC3HighTemperature"
    • "MREC4OverCurrentFailure"
    • "MREC5OverVoltage"
    • "MREC6UnderVoltage"
    • "MREC8EmergencyStop"
    • "MREC10InvalidVehicleMode"
    • "MREC14PilotFault"
    • "MREC15PowerLoss"
    • "MREC17EVSEContactorFault"
    • "MREC18CableOverTempDerate"
    • "MREC19CableOverTempStop"
    • "MREC20PartialInsertion"
    • "MREC23ProximityFault"
    • "MREC24ConnectorVoltageHigh"
    • "MREC25BrokenLatch"
    • "MREC26CutCable"
    • "ConnectorLockCapNotCharged"
    • "ConnectorLockUnexpectedOpen"
    • "ConnectorLockUnexpectedClose"
    • "ConnectorLockFailedLock"
    • "ConnectorLockFailedUnlock"
    • "MREC1ConnectorLockFailure"
    • "Selftest"
    • "DC"
    • "AC"
    • "VendorError"
    • "VendorWarning"
  • object

    Errors for the evse_board_support interface. All error codes that begin with MREC needs to be implemented to fulfill the Minimum Required Error Codes defined by the ChargeX consortium: https://inl.gov/content/uploads/2023/07/ChargeX_MREC_Rev5_09.12.23.pdf

  • CommunicationCheck
    boolean

    Send 'true' at least every 'cfg_communication_check_to_s' seconds to signal module is alive. Send 'false' to stop communication check'

  • HeartBeatId
    integer

    64bit unsigned integer. The id of every heartbeat increases by 1 and overflows when the maximum representable value is reached