RpcApi

The RpcApi module provides a JSON-RPC API for external applications. The main focus is to provide data for displaying the charging parameters and setting charging parameters during charging.

Handwritten Documentation

Version Information

Version history of the module:

Version

Description

1.0.0

Initial version of the RpcApi module

Introduction

The RPC API provides a standardized interface for external applications to interact with an EVerest-based ChargePoint. It is designed as a lightweight and transport-independent communication layer that enables monitoring, control, and integration into higher-level energy management systems.

The API follows the JSON-RPC 2.0 standard and uses WebSocket as the default transport channel, offering a persistent and bidirectional connection between client and server. This ensures low latency, efficient message exchange, and clear request–response semantics.

Typical use cases include:

  • Integration of ChargePoints into energy or fleet management platforms

  • Building mobile or web applications for end-users

  • Monitoring charging sessions

  • Controlling operational parameters such as charging power, current, or connector states

  • Accessing structured error and status information for diagnostics

Key features:

  • Transport independence – designed to work over WebSocket today, extendable to other transports in the future

  • Request/response and notifications – methods for configuration and control, notifications for event-driven updates

  • Structured data model – standardized objects and enums for consistent integration

  • Scalable design – suitable for single-user tools as well as multi-user systems

In short, the RPC API serves as the communication bridge between the charging infrastructure and external applications, providing a reliable, extensible, and system-friendly interface for monitoring and control.

General

Feature Overview

Feature

Supported

WebSocket transport - no TLS

WebSocket transport - with TLS

Authentication / Permission handling

Scope configuration

Support for multiple EVSEs

Support for multiple connectors

EVSE information retrieval

EVSE status retrieval

Hardware capabilities retrieval

Meter data retrieval

Control of charging current (AC)

Control of charging power (DC)

Control of phase count (AC)

Connector enable/disable

Error monitoring (active errors)

Notifications for status/capabilities

DC charge parameters

DC charge status

Display parameters (ISO15118-20 data)

Authentication

(Currently not supported)

The API should optionally support a client authentication mechanism. This can be used to introduce permission management, which can be used to control which functions a client may access, and which functions it may not.

If authentication is required, each call, except the initial messages to exchange e.g. the used API version, is required to contain a valid authentication token. How this authentication token is created is not part of this specification and must be specified during client and server development.

Tools

The tools subdirectory contains a Python-based JSON-RPC GUI client. This client allows testing of the interface implementation and can serve as a reference example for developing your own client.

API Methods and Notifications

General

The JSON API is generated from the json_rpc_api.yaml specification. This YAML file serves as the primary reference for all available methods and notifications. It also defines which parameters are required and which are optional.

Hierarchy of methods & notifications
  • API – general methods, no effect on charge point

  • ChargePoint – affects the entire charging station

  • EVSE – relates to a specific EVSE (Electric Vehicle Supply Equipment)

Methods

This includes all calls that can be executed by the client. Please note that if authentication is active, a token must be included in the request except for API.Hello. Otherwise, the request will be rejected. The following chapter headings represent the method name of the JSON-RPC protocol. The response and requests objects shown in the following chapters map the “params” value in the JSON-RPC object. If “params” is marked as “{}” it means that no parameters are required and the “params” object can be omitted. An example JSON-RPC request without “params” is shown in the API.Hello request section and an example JSON-RPC request with “params” is shown in the EVSE.GetInfo request section.

Note

Configuring charging parameters (such as charging current limits) via the API interface cannot always be guaranteed, since these values may also be influenced by other sources within EVerest. For example, if EVerest has been configured with an upper limit of 12A, this value cannot be exceeded via the API interface. In this specific case, if a client attempts to configure 16A through the API, the applied value will still be limited to 12A. Therefore, it is important to always observe the configured values returned via the EVSE.StatusChanged notification.

In future versions, unsuccessful configuration attempts may also result in an error response instead of silently applying the nearest valid limit.

API.Hello

This method is used to perform an initial handshake with the server. It must be called by the client within 5 seconds after establishing a connection; otherwise, the server will automatically close the connection.

The response message contains basic information from the EVerest ChargePoint, such as the API version in use, to enable further communication. While the Hello call does not necessarily require a token, it may be called with one. If a token is provided, the server verifies it, and the reply includes information about the token’s validity as well as the associated user and permissions.

In case authentication is required, the optional parameter permission_scopes can be used to indicate the permissions (e.g., read/write access) the client has when using the given token.

Note

The fields authenticated, permission_scopes and everest_version are currently not supported.

Request:

{}

Example JSON RPC Request:

{"jsonrpc": "2.0", "method": "API.Hello", "id": 1}

Response:

{
  "authentication_required": "bool",
  "authenticated": "bool", // optional, always false for now
  "permission_scopes": "PermissionScopes", // optional, not yet defined
  "api_version": "string",
  "everest_version": "string", // currently not supported
  "charger_info": "$ChargerInfoObj"
}
ChargePoint.GetEVSEInfos

This method is used to obtain general information about all configured EVSE’s of the charge point.

Request:

{}

Response: Returns an array of type “EVSEInfoObj” of all configured EVSE’s of the charge point.

{
  "infos": "[Array of $EVSEInfoObj]",
  "error": "$ResponseErrorEnum"
}
ChargePoint.GetActiveErrors

This method returns a structured list of all currently active error conditions of the charger. It is intended for diagnostic purposes and remote monitoring.

Request:

{}

Response:

{
  "active_errors": "[Array of $ErrorObj]", // Empty array if no errors
  "error": "$ResponseErrorEnum"
}
EVSE.GetInfo

This method is used to obtain general information about an EVSE.

Request:

{
  "evse_index": "int"
}

Example JSON RPC Request:

{"jsonrpc": "2.0", "method": "EVSE.GetInfo", "id": 1, "params": {"evse_index": 1}}

Response:

{
  "info": "$EVSEInfoObj",
  "error": "$ResponseErrorEnum"
}
EVSE.GetStatus

This method is used to obtain the current status of the EVSE.

Request:

{
  "evse_index": "int"
}

Response:

{
  "status": "$EVSEStatusObj",
  "error": "$ResponseErrorEnum"
}
EVSE.GetHardwareCapabilities

This method is used to obtain hardware capabilities of the EVSE. Please note that the hardware capabilities can be updated via notification EVSE.HardwareCapabilitiesChanged by the EVSE.

Request:

{
  "evse_index": "int"
}

Response:

{
  "hardware_capabilities": "$HardwareCapabilitiesObj",
  "error": "$ResponseErrorEnum"
}
EVSE.SetChargingAllowed

This method is used to explicitly allow charging on an EVSE or to remove the release. Regardless of the authorisation status of the EV, this method can be used to delay a charging process or to initiate a charging pause on EVSE’s side.

Request:

{
  "evse_index": "int",
  "charging_allowed": "bool"
}

Response:

{
  "error": "$ResponseErrorEnum"
}
EVSE.GetMeterData

Request:

{
  "evse_index": "int"
}

Response:

{
  "meter_data": "$MeterDataObj",
  "error": "$ResponseErrorEnum"
}
EVSE.SetACChargingCurrent

This method is used to configure the AC charging current of an EVSE.

Request:

{
  "evse_index": "int",
  "max_current": "float"
}

Response: Returns an error parameter to show if the configuration of the charging current was successful.

{
  "error": "$ResponseErrorEnum"
}
EVSE.SetACChargingPhaseCount

This method is used to configure the AC phase count of an EVSE.

Request:

{
  "evse_index": "int",
  "phase_count": "int"
}

Response: Returns an error parameter to show if the configuration of the charging current was successful.

{
  "error": "$ResponseErrorEnum"
}
EVSE.SetDCChargingPower

This method is used to configure the DC charging power an EVSE.

Request:

{
  "evse_index": "int",
  "max_power": "float"
}

Response: Returns an error parameter to show if the configuration was successful.

{
  "error": "$ResponseErrorEnum"
}
EVSE.EnableConnector

Method to enable or disable a connector on the EVSE. connector_index is a positive integer identifying the connector that should be enabled. If the connector_index is 0 the whole EVSE is enabled.

Request:

{
  "evse_index": "int",
  "connector_index": "int",
  "enable": "bool",
  "priority": "int"
}

Response:

Returns an error parameter to show if the configuration of the charging current was successful.

{
  "error": "$ResponseErrorEnum"
}
Notifications

Notifications are signaled by the server as soon as a property within the parameters has changed.

ChargePoint.ActiveErrorsChanged
{
  "active_errors": "[Array of $ErrorObj]"
}
EVSE.HardwareCapabilitiesChanged
{
  "evse_index": "int",
  "hardware_capabilities": "$HardwareCapabilitiesObj"
}
EVSE.StatusChanged
{
  "evse_index": "int",
  "evse_status": "$EVSEStatusObj"
}
EVSE.MeterDataChanged
{
  "evse_index": "int",
  "meter_data": "$MeterDataObj"
}

Enums

ResponseErrorEnum

Enumeration to differentiate between the various error cases that can occur after a method request.

"NoError",
"ErrorInvalidParameter",
"ErrorOutOfRange",
"ErrorValuesNotApplied",
"ErrorInvalidEVSEIndex",
"ErrorInvalidConnectorId",
"ErrorNoDataAvailable",
"ErrorUnknownError"
EnergyTransferModeEnum

Enumeration to differentiate between the various energy transfer modes

"AC_single_phase_core",
"AC_two_phase",
"AC_three_phase_core",
"DC_core",
"DC_extended",
"DC_combo_core",
"DC_unique",
"DC",
"AC_BPT",
"AC_BPT_DER",
"AC_DER",
"DC_BPT",
"DC_ACDP",
"DC_ACDP_BPT",
"WPT"
ChargeProtocolEnum
"Unknown",
"IEC61851",
"DIN70121",
"ISO15118",
"ISO15118_20"
EVSEStateEnum
"Unplugged",
"Disabled",
"Preparing",
"Reserved",
"AuthRequired",
"Charging",
"ChargingPausedEV",
"ChargingPausedEVSE",
"Finished",
"SwitchingPhases"
ConnectorTypeEnum
"cCCS1",
"cCCS2",
"cG105",
"cTesla",
"cType1",
"cType2",
"s309_1P_16A",
"s309_1P_32A",
"s309_3P_16A",
"s309_3P_32A",
"sBS1361",
"sCEE_7_7",
"sType2",
"sType3",
"Other1PhMax16A",
"Other1PhOver16A",
"Other3Ph",
"Pan",
"wInductive",
"wResonant",
"Undetermined",
"Unknown"
EVSEErrorEnum

EVSEErrorEnum can be used to show more details of an EVSE error for example in a service tool application for the technician. The enum naming is identical to EVerest error handler semantic.

Example (excerpt):

"NoError",
"power_supply_DC/HardwareFault",
"power_supply_DC/OverTemperature",
"power_supply_DC/UnderTemperature",
"power_supply_DC/UnderVoltageAC",
"power_supply_DC/OverVoltageAC",
"power_supply_DC/UnderVoltageDC",
"power_supply_DC/OverVoltageDC",
"power_supply_DC/OverCurrentAC",
"power_supply_DC/OverCurrentDC",
"power_supply_DC/VendorError",
"power_supply_DC/VendorWarning",
"evse_board_support/MREC2GroundFailure",
"evse_board_support/MREC3HighTemperature",
"evse_board_support/MREC4OverCurrentFailure",
"evse_board_support/MREC5OverVoltage",
"evse_board_support/MREC6UnderVoltage",
"evse_board_support/MREC8EmergencyStop",
"evse_board_support/MREC10InvalidVehicleMode",
"evse_board_support/MREC14PilotFault",
"evse_board_support/MREC15PowerLoss",
"evse_board_support/MREC17EVSEContactorFault",
"evse_board_support/MREC18CableOverTempDerate",
"evse_board_support/MREC19CableOverTempStop",
"evse_board_support/MREC20PartialInsertion",
"evse_board_support/MREC23ProximityFault",
"evse_board_support/MREC24ConnectorVoltageHigh",
"evse_board_support/MREC25BrokenLatch",
"evse_board_support/MREC26CutCable",
...

JSON Objects

EVSEInfoObj

This object contains static information about a EVSE of a charge point. This parameter is derived from the EvseManager identifier from the EVerest configuration. The “index” parameter is essential to perform EVSE specific method calls. The “id” parameter is the EVSE ID. The EVSE ID is a globally unique identifier defined in ISO 15118 to represent a specific EVSE. The “supported_energy_transfer_modes” must be used to distinguish between DC and AC charging. Depending on this, the optional parameters of object “EVSEStatusObj” are configured. In addition, it is possible to determine whether BPT is supported.

{
  "index": "int",
  "id": "string",
  "description": "string", // optional
  "available_connectors": "[ConnectorInfoObj]",
  "supported_energy_transfer_modes": "[EnergyTransferModeEnum]"
}
EVSEStatusObj

This object contains all information about the current status of a charge point EVSE. These parameters change dynamically, depending on the current EVSE state, which is indicated by the “state” parameter. The parameters “ac_charge_param” and “ac_charge_status” are only configured in a AC charging session and parameters “dc_charge_param” and “dc_charge_status” are only configured in a DC charging session. These parameters mainly contain parameters that are transmitted in an HLC session. The connector info (e.g. to identify if it is a DC or AC charger) is part of object “EVSEInfoObj“. The “active_connector_index” information can also be used by GUI applications to display the active connector correctly.

{
  "charged_energy_wh": "float",
  "discharged_energy_wh": "float",
  "charging_duration_s": "int",
  "charging_allowed": "bool",
  "available": "bool",
  "active_connector_index": "int",
  "error_present": "bool",
  "charge_protocol": "$ChargeProtocolEnum",
  "ac_charge_param": "$ACChargeParametersObj", // optional, only if AC supported
  "dc_charge_param": "$DCChargeParametersObj", // optional, only if DC supported
  "ac_charge_status": "$ACChargeStatusObj", // optional, only if AC supported
  "dc_charge_status": "$DCChargeStatusObj", // optional, only if DC supported
  "display_parameters": "$DisplayParametersObj",
  "state": "$EVSEStateEnum"
}
ConnectorInfoObj

This object contains static information about a connector of an EVSE. This parameter is derived from the from the EVerest configuration. The “index” parameter is essential to perform connector specific method calls. The “type” must be used to distinguish between DC and AC charging. Depending on this, the optional parameters of object “EVSEStatusObj” are configured.

{
  "index": "int",
  "type": "ConnectorTypeEnum",
  "description": "string" // optional
}
HardwareCapabilitiesObj

This object contains all hardware related limits of a charge point EVSE.

{
  "max_current_A_export": "float",
  "max_current_A_import": "float",
  "max_phase_count_export": "int",
  "max_phase_count_import": "int",
  "min_current_A_export": "float",
  "min_current_A_import": "float",
  "min_phase_count_export": "int",
  "min_phase_count_import": "int",
  "phase_switch_during_charging": "bool"
}
MeterDataObj

This object contains the following meter data of a charge point EVSE:

timestamp: Timestamp of measurement, represented as RFC3339 string energy_Wh_import: Imported energy in Wh (from grid) meter_id: A (user defined) meter if (e.g. id printed on the case) serial_number: Serial number of the meter phase_seq_error: AC only: true for 3 phase rotation error (ccw) energy_Wh_export: Exported energy in Wh (to grid) power_W: Instantaneous power in Watt. Negative values are exported, positive values imported Energy. voltage_V: Voltage in Volts current_A: Current in Ampere frequency_Hz: Grid frequency in Hertz

{
  "current_A": {"L1": "float","L2": "float","L3": "float","N": "float"},
  "energy_Wh_import": {"L1": "float","L2": "float","L3": "float","total": "float"},
  "energy_Wh_export": {"L1": "float","L2": "float","L3": "float","total": "float"}, // optional
  "frequency_Hz": {"L1": "float","L2": "float","L3": "float"}, // optional
  "meter_id": "string",
  "serial_number": "string", // optional
  "phase_seq_error": "bool", // optional
  "power_W": {"L1": "float","L2": "float","L3": "float","total": "float"},  // optional
  "timestamp": "string",
  "voltage_V": {"L1": "float","L2": "float","L3": "float"}  // optional
}
ACChargeParametersObj

This object contains all AC related parameters of a charge point EVSE. Parameters like “evse_maximum_discharge_power” are only transmitted if a BPT (bidirectional power transfer) session is active. Currently only “evse_max_current” and “evse_max_phase_count“ are supported.

{
  "evse_nominal_voltage": "float",
  "evse_max_current": "float",
  "evse_max_phase_count": "int",
  "evse_maximum_charge_power": "float",
  "evse_minimum_charge_power": "float",
  "evse_nominal_frequency": "float",
  "evse_maximum_discharge_power": "float",
  "evse_minimum_discharge_power": "float"
}
DCChargeParametersObj

Currently not supported.

This object contains all DC related parameters of a charge point EVSE. Parameters like “evse_maximum_discharge_power” are only transmitted if a BPT (bidirectional power transfer) session is active.

{
  "evse_maximum_charge_current": "float",
  "evse_maximum_charge_power": "float",
  "evse_maximum_voltage": "float",
  "evse_minimum_charge_current": "float",
  "evse_minimum_charge_power": "float",
  "evse_minimum_voltage": "float",
  "evse_energy_to_be_delivered": "float",
  "evse_maximum_discharge_current": "float",
  "evse_maximum_discharge_power": "float",
  "evse_minimum_discharge_current": "float",
  "evse_minimum_discharge_power": "float"
}
ACChargeStatusObj

This object contains all DC related parameters of a charge point EVSE. Parameters like “evse_maximum_discharge_power” are only transmitted if a BPT (bidirectional power transfer) session is active. Currently only “evse_max_current” and “evse_max_phase_count“ are supported.

{
  "evse_active_phase_count": "int"
}
DCChargeStatusObj

Currently not supported. This object contains all DC related parameters during charging of a charge point EVSE.

{
  "evse_present_current": "float",
  "evse_present_voltage": "float",
  "evse_power_limit_achieved": "bool",
  "evse_current_limit_achieved": "bool",
  "evse_voltage_limit_achieved": "bool"
}
DisplayParametersObj

Currently not supported.

This object contains additional information which can be displayed in a GUI. These parameters are for display purposes only and must not, under any circumstances, influence the EVSE behavior. Most of the parameters are only transmitted in an ISO15118-20 charging session.

{
  "start_soc": "int",
  "present_soc": "int",
  "minimum_soc": "int",
  "target_soc": "int",
  "maximum_soc": "int",
  "remaining_time_to_minimum_soc": "int",
  "remaining_time_to_target_soc": "int",
  "remaining_time_to_maximum_soc": "int",
  "charging_complete": "bool",
  "battery_energy_capacity": "float",
  "inlet_hot": "bool"
}
ChargerInfoObj

This object contains well-known general charger information, e.g. vendor and model name, firmware version etc.

{
  "vendor": "string",
  "model": "string",
  "serial": "string",
  "friendly_name": "string",
  "manufacturer": "string",
  "manufacturer_url": "string",
  "model_url": "string",
  "model_no": "string",
  "revision": "string",
  "board_revision": "string",
  "firmware_version": "string"
}
ErrorObj

The ErrorObj structure represents a detailed description of an charger error. It includes the error type, origin, severity, and timestamp, along with optional context like EVSE or connector index. Each error is uniquely identified by a UUID and may include a vendor-specific ID and custom message.

{
  "type": "string",
  "sub_type": "string",
  "message": "string",
  "description": "string",
  "origin": {
     "module_id": "string",
     "implementation_id": "string",
     "evse_index": "int", // optional
     "connector_index": "int" // optional
  },
  "vendor_id": "string",
  "severity": "SeverityEnum",
  "timestamp": "string",
  "uuid": "string"
}

What can a simple sequence look like?

The sequence diagram below is a simple sequence diagram based on the defined WebSocket methods and notifications. The diagram is simplified for better visualization and therefore only shows the relevant parameters within the objects.

Initialization

The first diagram illustrates how a client establishes a connection to the server and how the server initializes a single EVSE. After that, the client application is prepared to process incoming notifications of the API, for example caused by plugging in an EV.

RPC Communication Flow
Session handling

The second sequence diagram shows the notifications that are triggered as soon as an EV is plugged in and recognized by the EVSE. It also shows how the client can actively adjust the charging current of a running session.

RPC Communication Flow

Auto-Generated Reference

Module Configuration

websocket_enabled: boolean <optional>
default: True
Enable the websocket server.
websocket_port: integer <optional>
default: 8080
Port for the websocket server to listen on.
websocket_interface: string <optional>
default: “lo”
Network interface/device for the websocket server to listen on, e.g. ‘lo’ or ‘eth1’. Listen on all interfaces if “all”.
websocket_tls_enabled: boolean <optional>
default: False
Enable TLS for the websocket server. Currently not implemented.
authentication_required: boolean <optional>
default: False
Require authentication for API requests. Currently not implemented.
max_decimal_places_other: integer <optional>
default: 2
Maximum number of decimal places for all floating point values. Ignored if value is 0.

Requirements

evse_manager: evse_manager 1..128
evse_energy_sink: external_energy_limits 0..128
charger_information: charger_information 0..1

Metadata

Authors

chargebyte GmbH

License