OpenEMS supports several different charging stations. We are thinking of doing a rework of the EVCS handling within OpenEMS. We would like to introduce a GenericManagedEvcs component (inspired by the GenericEss component)
The Problem:
- different charge station implementations show different behaviour againts managing controllers.
- the
Evcs/ManagedEvcs
interface is overloaded and holds context that is only needed by some controller components. - Offloading functionality to abstract classes is not easy, because some chargers have to inherit from
AbstractModbusComponent
, others don’t (and there is no multiple inheritance in Java).
Solution Proposal:
We would like to introduce new parent generic components which implements new interfaces GenericManagedEvcs
and GenericEvcs
, new interfaces which are created by separating
-
ManagedEvcs
intoGenericManagedEvcs
andManagedEvcs
-
Evcs
intoGenericEvcs
andEvcs
The Generic Interfaces..
contain everything that is independent of the concrete charging station implementation. ManagedEvcs
and Evcs
contain only mandatory features.
Below is a architecture diagram of the current situation following a diagram of the proposed new situation:
Advantages:
- more similar behavior between different charging station models
- reproducability - if a usecase works with one charging station model, it is more likely that it will work with a different charging station model as well
- more easier implementation of a concrete charging station model
- no changes to the existing UI and controller components are needed
- better testability of the generic components
- independent from EVCS-API V2 ( PR #2047) and the Evcs power object
Disadvantages:
- not backwards compatible, needs reconfiguration of productive systems
Please feel free to comment this idea. I am interested in your opinion on that. Are there any showstoppers? Ideas for improvement?