Proposal: New GenericManagedEvcsImpl and Interface

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 into GenericManagedEvcs and ManagedEvcs
  • Evcs into GenericEvcs and Evcs

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?

1 Like