Electric Vehicle Supply Equipment (EVSE) Api
This bundle defines the OpenEMS interface contracts for EVSE integration. It does not implement device-specific hardware logic itself; instead, bundle authors implement EvseChargePoint and EvseElectricVehicle and controllers such as Evse.Controller.Single and Evse.Controller.Cluster orchestrate charging and phase switching.
Overview
io.openems.edge.evse.api provides the interface definitions for EVSE charge point and electric vehicle capabilities.
-
EvseChargePointdefines the actively managed charge point device and its charge control abilities. -
EvseElectricVehicledefines the connected vehicle profile and charging limits.
This API is consumed by EVSE controllers in io.openems.edge.controller.evse.
Integration with Controllers
The single-controller implementation Evse.Controller.Single binds exactly one EvseChargePoint and one EvseElectricVehicle.
-
Evse.Controller.SingleusesEvseChargePoint.getChargePointAbilities()andEvseElectricVehicle.getElectricVehicleAbilities()to read device capabilities. -
It merges these into
CombinedAbilitiesusingCombinedAbilities.createFrom(…). -
The merged
CombinedAbilitiescontains a unifiedapplySetPointability, ready-for-charging state, and the effectivephaseSwitchability.
Evse.Controller.Cluster then aggregates multiple Evse.Controller.Single instances and applies computed actions for each charge point.
-
The cluster controller obtains per-controller parameters via
ControllerEvseSingle.getParams(). -
It distributes power and phase-switch directives using
RunUtils.calculate(…)andRunUtils.handlePhaseSwitch(…). -
Only controllers whose combined abilities include a valid
phaseSwitchability can receive a phase-switch action.
Notes
-
EvseChargePointis anElectricityMeterand exposes the active power and ready-for-charging state. -
EvseElectricVehicleis intentionally lightweight and only exposes the EV abilities needed for charging control. -
The cluster controller orchestrates multiple single controllers, but the phase-switch decision remains per
ControllerEvseSingleinstance.