Skip to content

Commit b8ddb8e

Browse files
venu-sagarsfeilmeiermichaelgrill
authored
Time of Use Tariff controller: refactor + charge from grid (OpenEMS#2238)
This new implementation replaces the previous controller called TimeOfUseTariffDischarge. **BREAKING CHANGE:** Be aware, that this PR introduces a new Factory-ID `Controller.Ess.Time-Of-Use-Tariff'` for the Controller. Old configurations will have to be updated manually! - Added Jsonrpc request handler to show future data in UI. - Modified Awattar provider implementation to handle querying for a price every hour instead of once a day. - Added appropriate channels for better debugging. - Added suitable test cases. README: = ESS Time-of-Use Tariff This Controller optimizes the performance of an energy storage system (ESS) in conjunction with a Time-Of-Use (ToU) Tariff provider. The primary aim of the controller is to optimize the economic utilization of energy stored within the battery, primarily for self-consumption. To achieve this goal, the controller employs a rolling approach, where it continuously fetches predictions from the prediction service. It takes into account the current state of the battery's capacity, recalculates its operations, and generates a detailed schedule for the Energy Storage System (ESS) for the upcoming 24-hour period, in 15-minute intervals. This iterative and dynamic approach ensures that the ESS operates efficiently by staying synchronized with real-time forecasts and the evolving state of the battery, thereby maximizing cost-effectiveness and self-consumption of stored energy. == Schedule Calculation Modes The schedule calculation process varies depending on the local market conditions. To accommodate this variability, two distinct modes have been introduced to facilitate flexible operation: CHARGE_CONSUMPTION:: This mode is well-suited for markets that permit charging the battery from the grid. In this mode, the controller utilizes production and consumption forecasts along with day-ahead electricity prices to calculate the optimal time periods for charging the battery from the grid. This approach ensures efficient utilization of resources while taking advantage of cost-effective grid charging opportunities. DELAY_DISCHARGE:: This mode is tailored for markets where grid charging is restricted or discouraged. In such scenarios, optimal time periods are determined based on forecasts and day-ahead pricing information. The controller then schedules the Energy Storage System (ESS) to limit or delay discharging during these specific periods. This strategic approach aims to optimize economic performance by avoiding costly grid interactions when grid charging is not feasible or economical. These two operation modes provide the necessary flexibility to adapt to varying market conditions, allowing for efficient energy management and cost savings based on the specific requirements of your local energy market. --------- Co-authored-by: Stefan Feilmeier <[email protected]> Co-authored-by: Michael Grill <[email protected]>
1 parent 8119632 commit b8ddb8e

File tree

35 files changed

+2005
-1449
lines changed

35 files changed

+2005
-1449
lines changed

io.openems.edge.application/EdgeApp.bndrun

+2-2
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
bnd.identity;id='io.openems.edge.controller.ess.reactivepowervoltagecharacteristic',\
8484
bnd.identity;id='io.openems.edge.controller.ess.selltogridlimit',\
8585
bnd.identity;id='io.openems.edge.controller.ess.standby',\
86-
bnd.identity;id='io.openems.edge.controller.ess.timeofusetariff.discharge',\
86+
bnd.identity;id='io.openems.edge.controller.ess.timeofusetariff',\
8787
bnd.identity;id='io.openems.edge.controller.evcs',\
8888
bnd.identity;id='io.openems.edge.controller.evcs.fixactivepower',\
8989
bnd.identity;id='io.openems.edge.controller.generic.jsonlogic',\
@@ -239,7 +239,7 @@
239239
io.openems.edge.controller.ess.reactivepowervoltagecharacteristic;version=snapshot,\
240240
io.openems.edge.controller.ess.selltogridlimit;version=snapshot,\
241241
io.openems.edge.controller.ess.standby;version=snapshot,\
242-
io.openems.edge.controller.ess.timeofusetariff.discharge;version=snapshot,\
242+
io.openems.edge.controller.ess.timeofusetariff;version=snapshot,\
243243
io.openems.edge.controller.evcs;version=snapshot,\
244244
io.openems.edge.controller.evcs.fixactivepower;version=snapshot,\
245245
io.openems.edge.controller.generic.jsonlogic;version=snapshot,\

io.openems.edge.controller.ess.timeofusetariff.discharge/readme.adoc

-23
This file was deleted.

io.openems.edge.controller.ess.timeofusetariff.discharge/src/io/openems/edge/controller/ess/timeofusetariff/discharge/BoundarySpace.java

-125
This file was deleted.

0 commit comments

Comments
 (0)