Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1) - OpenOCPP extracted (firmware OCPP 1.6J/2.0.1) - ShapeShifter library installed (pip install -e) - ShapeShifter specification extracted - EVerest extracted TODO updated with progress
This commit is contained in:
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 226 KiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 309 KiB |
896
tools/EVerest-main/modules/API/RpcApi/docs/index.rst
Normal file
896
tools/EVerest-main/modules/API/RpcApi/docs/index.rst
Normal file
@@ -0,0 +1,896 @@
|
||||
.. _everest_modules_handwritten_RpcApi:
|
||||
|
||||
.. *******************************************
|
||||
.. RpcApi
|
||||
.. *******************************************
|
||||
|
||||
Version Information
|
||||
===================
|
||||
Version history of the module:
|
||||
|
||||
.. list-table::
|
||||
:widths: 15 85
|
||||
:header-rows: 1
|
||||
|
||||
* - 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 :ref:`API.Hello request section <example-json-rpc-request-without-params>`
|
||||
and an example JSON-RPC request with "params" is shown in the :ref:`EVSE.GetInfo request section <example-json-rpc-request-with-params>`.
|
||||
|
||||
.. 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:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{}
|
||||
|
||||
.. _example-json-rpc-request-without-params:
|
||||
|
||||
**Example JSON RPC Request:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{"jsonrpc": "2.0", "method": "API.Hello", "id": 1}
|
||||
|
||||
**Response:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{}
|
||||
|
||||
**Response:**
|
||||
Returns an array of type “EVSEInfoObj” of all configured EVSE’s of the charge point.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{}
|
||||
|
||||
**Response:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"evse_index": "int"
|
||||
}
|
||||
|
||||
.. _example-json-rpc-request-with-params:
|
||||
|
||||
**Example JSON RPC Request:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{"jsonrpc": "2.0", "method": "EVSE.GetInfo", "id": 1, "params": {"evse_index": 1}}
|
||||
|
||||
|
||||
**Response:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"info": "$EVSEInfoObj",
|
||||
"error": "$ResponseErrorEnum"
|
||||
}
|
||||
|
||||
EVSE.GetStatus
|
||||
^^^^^^^^^^^^^^
|
||||
This method is used to obtain the current status of the EVSE.
|
||||
|
||||
**Request:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"evse_index": "int"
|
||||
}
|
||||
|
||||
**Response:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"evse_index": "int"
|
||||
}
|
||||
|
||||
**Response:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"evse_index": "int",
|
||||
"charging_allowed": "bool"
|
||||
}
|
||||
|
||||
**Response:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"error": "$ResponseErrorEnum"
|
||||
}
|
||||
|
||||
EVSE.GetMeterData
|
||||
^^^^^^^^^^^^^^^^^
|
||||
**Request:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"evse_index": "int"
|
||||
}
|
||||
|
||||
**Response:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"meter_data": "$MeterDataObj",
|
||||
"error": "$ResponseErrorEnum"
|
||||
}
|
||||
|
||||
EVSE.SetACChargingCurrent
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
This method is used to configure the AC charging current of an EVSE.
|
||||
|
||||
**Request:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"evse_index": "int",
|
||||
"max_current": "float"
|
||||
}
|
||||
|
||||
**Response:**
|
||||
Returns an error parameter to show if the configuration of the charging current was successful.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"error": "$ResponseErrorEnum"
|
||||
}
|
||||
|
||||
EVSE.SetACChargingPhaseCount
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
This method is used to configure the AC phase count of an EVSE.
|
||||
|
||||
**Request:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"evse_index": "int",
|
||||
"phase_count": "int"
|
||||
}
|
||||
|
||||
**Response:**
|
||||
Returns an error parameter to show if the configuration of the charging current was successful.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"error": "$ResponseErrorEnum"
|
||||
}
|
||||
|
||||
EVSE.SetDCChargingPower
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
This method is used to configure the DC charging power an EVSE.
|
||||
|
||||
**Request:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"evse_index": "int",
|
||||
"max_power": "float"
|
||||
}
|
||||
|
||||
**Response:**
|
||||
Returns an error parameter to show if the configuration was successful.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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:**
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"error": "$ResponseErrorEnum"
|
||||
}
|
||||
|
||||
Notifications
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Notifications are signaled by the server as soon as a property within the parameters has changed.
|
||||
|
||||
ChargePoint.ActiveErrorsChanged
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"active_errors": "[Array of $ErrorObj]"
|
||||
}
|
||||
|
||||
EVSE.HardwareCapabilitiesChanged
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"evse_index": "int",
|
||||
"hardware_capabilities": "$HardwareCapabilitiesObj"
|
||||
}
|
||||
|
||||
EVSE.StatusChanged
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"evse_index": "int",
|
||||
"evse_status": "$EVSEStatusObj"
|
||||
}
|
||||
|
||||
EVSE.MeterDataChanged
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"index": "int",
|
||||
"type": "ConnectorTypeEnum",
|
||||
"description": "string" // optional
|
||||
}
|
||||
|
||||
HardwareCapabilitiesObj
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
This object contains all hardware related limits of a charge point EVSE.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"evse_active_phase_count": "int"
|
||||
}
|
||||
|
||||
DCChargeStatusObj
|
||||
~~~~~~~~~~~~~~~~~
|
||||
Currently not supported.
|
||||
This object contains all DC related parameters during charging of a charge point EVSE.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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.
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"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.
|
||||
|
||||
.. image:: img/initialization.drawio.svg
|
||||
:alt: RPC Communication Flow
|
||||
:align: center
|
||||
:width: 80%
|
||||
|
||||
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.
|
||||
|
||||
.. image:: img/ac_session_handling.drawio.svg
|
||||
:alt: RPC Communication Flow
|
||||
:align: center
|
||||
:width: 80%
|
||||
Reference in New Issue
Block a user