Energy Management Systems
The Energy Management System (EMS) lives inside each GridConnection and decides what all the flexible assets do at every timestep. The interface is I_EnergyManagement.
There are three built-in implementations:
J_EnergyManagementDefault
The default EMS that delegates to external sub-managers, calls them in the following order each timestep:
- Heating (
I_HeatingManagement) — controls heat pumps and heating systems. - Charging (
I_ChargingManagement) — manages EV charging sessions. - Battery (
I_BatteryManagement) — operates stationary battery storage. - Backup Generator (
I_BackupGeneratorManagement) — runs backup generators if needed. - Curtailment (
I_CurtailManagement) — curtails production when required.
Custom EMS
You can implement your own EMS by implementing the I_EnergyManagement interface. The interface specifies:
manageFlexAssets(J_TimeVariables): The main scheduling method called each timestep.checkConfiguration(List<J_EAFlex>): Validates that the set of flex assets is compatible with this EMS.getInternalAssetManagements()/getSupportedExternalAssetManagements()/getActiveExternalAssetManagements(): Provide and track the allowed sub-managers.setExternalAssetManagement(...)/removeExternalAssetManagement(...): Add or remove sub-managers dynamically.
Each EMS has a certain incentive — for example maximizing self-consumption from solar panels or reducing peak import from the grid. Systems can also differ in their approach: some decide at every timestep what to do in that same timestep, while others make a schedule based on a forecast.