Dirk-Jan Faber (Victron Energy) avatar image
Dirk-Jan Faber (Victron Energy) posted

CLOSED - Dynamic ESS on Beta VRM - part 5 (use new topic please)

Update: 20-3-2024: This article has been closed, please use the article "Dynamic ESS on VRM" instead.

Update: 14-3-2024: Venus firmware 3.30~17 got released today, which fixes several bugs that where reported in the comments below:

  • Fix issue where battery was always charging at full speed if grid feed-in is set to not allowed for the installation. Now, as was already the case for all other systems, Dynamic ESS calculates the required charge rate to meet the target SOC at the end of the hour
  • Increase charge rate with 10% to better meet the target SOC. (much better to get there a little earlier rather than not at all)
  • Fix issue where PV is not used for loads when feed-in is disallowed and SOC target is 100%
  • Fix bug where in some case loads were powered from the grid when they could be powered from the battery.
  • And more Dynamic ESS improvements and bug fixes

Check for the full changelog.

Welcome to the fifth and possibly final update on the progress of Dynamic ESS on Beta VRM. We anticipate this to be the last update before transitioning from beta VRM to the official release.

All signs indicate that we got the final blocking issues out of the way.

The first being the potential of tripping fuses when there were too many high loads in the system (with the BMS being one of them). This has been resolved by adding peak shaving for ESS systems with an energy meter. This allows you to set an input current as well as an export current for systems having an energy meter. The limit is applied to the whole system. You can read more about this functionality in highlight 1 in the release notes of Venus firmware V3.30~11.

Another improvement in this version is to stop using the grid when the forecast does not match the consumption. This has been resolved by adding a strategy to each schedule, allowing the system to manage these discrepancies more effectively.

Additionally, this version also introduces support for different currencies.

To ensure thorough testing and validation, we will keep it in beta for a brief additional period. Please note that, for these solutions to be effective, it’s necessary to run the latest beta feed of the Venus firmware, currently version v3.30~11, installable via Settings -> Firmware -> Online updates -> Update feed -> Beta release, check for updates, and update.

After go-live, we will continue to improve the system. Some enhancements currently in progress are:

  • Maximizing battery charge by the end of the day to cover consumption until sunrise.
  • Periodically fully charge the battery to allow balancing
  • Adding support for varying service fees based on the time of day
  • Allowing users to enter a fixed schedule for grid-battery restrictions
  • Supporting fixed prices that change on the half-hour instead of the whole hour
  • Introducing (smart) support for high-consumption loads such as EV charging and heat pumps

In case you are unfamiliar with Dynamic ESS: Dynamic ESS is an algorithm that aims to minimise the costs made on the grid and battery. Please check the four previous posts on the subject for further information.

You can get started with it on beta-VRM via Settings → Dynamic ESS. For more information on how to set this up, you can check out the manual.

Note that Dynamic ESS applies mostly to countries in Europe that work with so-called “day ahead pricing”. For fixed priced contracts, the VRM version can also be used outside Europe.

For those unfamiliar with beta VRM, you can log in through this link. Additionally, a webinar on this subject was conducted on September 26th, and the recording is available on our YouTube tech channel: YouTube link.

As always, we appreciate your feedback. Feel free to let us know how to improve, and thank you for being part of the development journey. To streamline communication, older posts are closed for comments, and any new feedback can be provided in this post.

When reporting a possible issue, please also mention your VRM id.

ESSdynamic essbeta
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

john245 avatar image john245 commented ·

Not a question specific on DESS, but in my opinion the question is related to that.

Competitors are introducing battery systems that can trade on the energy imbalance market. Zonneplan is currently going to the market with this ( and Sessy is investigating the possibilities (

Is Victron Energy currently also investigation this business model for Victron System owners?

For example the Nexus generated Euro 20,41 on February 27th.

Update 05 March 2024:. Frank Energy will support trading on energy imbalance markets for a lot of Victron’s competitors. (


1 Like 1 ·
1709658197859.png (198.3 KiB)
kudos50 avatar image kudos50 john245 commented ·

Considering the size of part 4 you probably missed the reply from Dirk-Jan:

Dirk-Jan commented


No, afaik we are not investigating that business model. And if we were, I could and would not disclose it here.


It's an interesting topic for sure !

0 Likes 0 ·
john245 avatar image john245 kudos50 commented ·

@kudos50 I did not missed the answer, but did not want to add the update to the closed topic.

1 Like 1 ·
stefan-db avatar image stefan-db kudos50 commented ·

Anyhow the DESS can easy be adapted with adding the 'onbalans timing' ; in fact this extra you get is aprox the battery cost. Without this extra is charging on low tarif & discharging in high tarif mostly not profitable. I tested this already on historical data. But selling the left over after the night (morning price peak) & what you don't need till the morning in the evening peak is for sure profitable. This what in fact I expect from DESS.

0 Likes 0 ·
john245 avatar image john245 john245 commented ·

To add. At least one (1) company is investigating the use of Victron systems for the Imbalance market.

0 Likes 0 ·
kudos50 avatar image kudos50 john245 commented ·

For this moment it only seems to be a big thing in the Netherlands due to its rather strange policy for the energy market compared to the rest of Europe. Victron systems can be controlled in various ways so I guess if a BRP decides to support Victron, the game is on.

Question then is: does the average Victron user allow another party to almost fully control their system. Njah.... not DESS... another thread perhaps. And very very interesting to try and monetise our expensive batteries :-)

0 Likes 0 ·
john245 avatar image john245 kudos50 commented ·

I'm willing to let them use 50% of my battery capacity. For Euro 2000,- each year I'm in. Although I realize that the profits will decrease in the future due to the fact that more parties will see business in it. Let see what the future will bring.

2 Likes 2 ·
Kaj Lehtinen avatar image Kaj Lehtinen kudos50 commented ·

Its a big thing in Sweden aswell. Loads of companies started marketing batteries for imbalance market based on government incentives aimed at storing green energy which caused the cost to that government program to skyrocket & forcing a redefinition on when those tax incentives was eligible to be used.


0 Likes 0 ·
grua avatar image grua commented ·

Absolutely great! I'm particularly pleased that these two points are being implemented:

  • Maximizing battery charge by the end of the day to cover consumption until sunrise.
  • Periodically fully charge the battery to allow balancing

I will probably use DESS permanently as soon as these two, or at least the first of the two points, have actually been implemented! Thanks a lot!

I only notice two further things:

1. Grid set point is ignored when DESS is acitvated. However, I would always like to adjust slightly into the negative in order to avoid purchasing from the grid as much as possible:

I have tested values up to -150W: When DESS is deactivated, it is regulated to this value, but when DESS is activated, it is always regulated to setpoint 0W.

2. SOC-values are not shown correctly:

1 Like 1 ·
1709659177498.png (17.6 KiB)
1709659331944.png (12.4 KiB)
ojack avatar image ojack grua commented ·

But the two mentioned point are not implemented yet as I understood. They are on the list after DESS is live or not beta any more.

0 Likes 0 ·
grua avatar image grua ojack commented ·

correct, both not yet implemented, but in my opinion very important! For me, the first point "Maximizing battery charge by the end of the day to cover consumption until sunrise" in particular is an absolute must have for being able to use DESS.

0 Likes 0 ·
ojack avatar image ojack grua commented ·

Yes, for me too. I would want DESS to charge battery to 100% before selling to grid because it's every time better to use then to sell. Charging battery to maximum gives reserves for a unplanned bad day. We had an example on monday this week. Forecast was 45kWh and then the whole day thick dust so at the end Solar was only 4kWh.

1 Like 1 ·
simonyoungtree avatar image simonyoungtree commented ·

I still have some weird things in the ESS energy graphs on beta VRM:

fyi: In my settings I have disabled the possibility to charge the battery from the grid.

See the Grid to Battery (Orange) at 10-11h and 15-16h.:


Compare the to the graph below of the same time frame: nothing from the grid going to the battery:


I think the orange part in the DESS Energy graph should have been solar (DC solar in my case, which is forced by me by setting the inverter capacity to 0 - via Node-Red). I hope it is just a visual thing and not something messing-up the calculations

0 Likes 0 ·
1709654191816.png (18.4 KiB)
Dirk-Jan Faber (Victron Energy) avatar image Dirk-Jan Faber (Victron Energy) ♦♦ simonyoungtree commented ·

This does indeed look like a graphing issue. We are investigating this.

0 Likes 0 ·
simonyoungtree avatar image simonyoungtree Dirk-Jan Faber (Victron Energy) ♦♦ commented ·

Having the inverter set to 0 has nothing to do with it: between 8 and 9 I had the same issue at the time the inverter was not limited.

0 Likes 0 ·
1709800315443.png (13.0 KiB)
Dirk-Jan Faber (Victron Energy) avatar image Dirk-Jan Faber (Victron Energy) ♦♦ simonyoungtree commented ·

There is a known misleading assumption with the Energy graph: It assumes if there is more production than consumption, all consumption is met by production and the other way around: if there is more consumption than production, then all the production goes to consumption.This is quite an assumption but this is how DESS considers it internally, so that’s why the visuals reflect it that way. If we do not have that assumption, the energy graph would be even more complicated.

0 Likes 0 ·
simonyoungtree avatar image simonyoungtree Dirk-Jan Faber (Victron Energy) ♦♦ commented ·

A graph which isn't right is worthless.

Others present it like this: (Source: KC27 on Tweakers)


0 Likes 0 ·
1709823049628.png (21.3 KiB)
john245 avatar image john245 simonyoungtree commented ·

This chart is also not correct. "Verbruik" should be positive.

0 Likes 0 ·
daniel-feist avatar image daniel-feist commented ·

Great progress. Are there any details on how the alogrithm works within the hours slots to adjust to actual realtime PV and usage? Is it using a set-point? I did try looking in the documentaiton, but didn't see this described.

0 Likes 0 ·
Juha Tuomala avatar image Juha Tuomala commented ·

Do you plan to renew the Dynamic ESS promotion? It would be very welcome!


0 Likes 0 ·
img-9427.jpeg (373.6 KiB)
marceldb avatar image marceldb Juha Tuomala commented ·

The Multiplus prices have been decreased so much that the new price comes very close to the old promotion price.

1 Like 1 ·
grua avatar image grua marceldb commented ·

Correct, I currently only own one MP and am now buying two more due to the good prices!

0 Likes 0 ·
Juha Tuomala avatar image Juha Tuomala marceldb commented ·

Does this apply to Quattro as well? Put my handle into response, these notifications are broken by design.

0 Likes 0 ·
dirks-1 avatar image dirks-1 commented ·

Great progress! I'm really looking forward to the next release.

Do the enhancements also account a heater like MyPV ACthor? Of course it is just a high load for the system but the operation usecase is slightly different than a EV or heat pump.

My understanding for EV or heat pump is that they produce the high load when they need it and the ESS just need to deal with it and bring this load into account.

The MyPV heater just steps in when everything is already served as the last high load to use only PV sureplus when it would flow into the grid. But it can be improved to use it with higher efficiency. When the DESS decides to use the grid to charge the battery because of low grid costs it could also feed the MyPV heater with a settable ratio of load sharing. It could be possible, depending on the gas/oil price, that heating the water is cheaper with grid energy. The gas/oil price is always a static contract fee. So calculating it is not that difficult, i guess.

But could be also possible that selling to grid out of PV makes more sense instead of feeding the MyPV heater.

Connected via Modbus TCP, VenusOS has the possiblity to bring that into account. At the moment it is a very simple thing. Every energy what would sold to the grid is going to the MyPV device. But that could be improved with DESS a lot.

At the moment, always if DESS decides to feed the grid this load will be consumed by the MyPV device. I think this produces problems because it is then counted as internal load. So DESS is not able to sell to the grid (when the water temperature is lower as the target value of the MyPV device). I think this situation is not good for the DESS alogrithm, DESS expect to feed in but internal load happens. But if VenusOS would be aware of the device it can be included.

I'm using it in that way:

Also i really would like to see the MyPV device in VRM like an EV Charger.

0 Likes 0 ·
dirks-1 avatar image dirks-1 dirks-1 commented ·

@Dirk-Jan Faber (Victron Energy) any thoughts about this? I think for customers with Acthor in the system DESS will never work as expected when it does not take the device into account.

I also noticed if DESS decided to feed the grid in the morning (even when the SOC is quite low) then it will never charge the battery because of the internal load of the MyPV device what consume the energy planned to go to grid. Because of the internal load matching the PV sureplus the system thinks there is not enough energy to charge the battery. That is disturbing the algorithm a lot, i guess.

In my case there is a 9kW heater connected. So it is able to consume a lot.

I suggested to include a general heater device in dbus with that we could bring any heating device in consideration.

0 Likes 0 ·
Dirk-Jan Faber (Victron Energy) avatar image Dirk-Jan Faber (Victron Energy) ♦♦ dirks-1 commented ·

At the moment we don't do the prediction of heavy loads well enough. That is a known limitation, but there are plans on adding better support for those. But that will require some more patience.

1 Like 1 ·
dirks-1 avatar image dirks-1 Dirk-Jan Faber (Victron Energy) ♦♦ commented ·

Will you consider to have a special prediction for MyPV and simliar devices?

0 Likes 0 ·
Dirk-Jan Faber (Victron Energy) avatar image Dirk-Jan Faber (Victron Energy) ♦♦ dirks-1 commented ·

Yes, we will try to predict the usage of heavier loads.

0 Likes 0 ·
kudos50 avatar image kudos50 commented ·

After the beta11 update the system now seems to invert the hysteresis percentage back to grid right after it was charged ?

I have my min soc set to 45% and every single morning my DC PV starts charging the battery to 47% before the inverters kick-in to invert excess DC solar to grid. The 2% gained normally gets inverted at the highest price at the end of the day.

But this morning it seems to charge and invert a bit later. Is this related to the code changes for #2 ? At first glance this result seems highly inefficient due to chemical losses and battery costs.

<edit> it seems to have stopped discharging at 46% when the next schedule started and was set to 46%. will set inverter to 0 and see if forcing additional solar charge to battery will act the same at the end of a schedule.

0 Likes 0 ·
kudos50 avatar image kudos50 kudos50 commented ·

@Dirk-Jan Faber (Victron Energy) same thing happened again today but the impact was a lot less (9:58 so only 2mins of inverting ~4kW to grid).

System first tries to charge from low soc (45%) to low hysteresis (47%) but if that value is exceeded then it starts to invert back to grid before the next full hour.

I tried replicating this during the day but to no avail. When attempted you don't have the low soc scenario and behaviour is different.

1% or 2% incorrect inverting to grid like today and yesterday doesn't seem much but for users with larger batteries and reoccurrence on every sunny DC-PV morning gains in numbers easily.

0 Likes 0 ·
kudos50 avatar image kudos50 kudos50 commented ·

@Dirk-Jan Faber (Victron Energy) can you please confirm if this is expected behaviour and/or if changes for this are planned ? This morning the timing was a little different due to clouds but it again started DC-PV charging due to low-soc like the last 2 days and right after the low-soc has cleared it starts inverting from 47% back to 46%. Depending on the amount of time left in hour this is done with a lot of amps.

As prices are extremely low today the timing was horrible. It started feeding into grid at about 10:50 with ~50A from battery only to start a long DESS charging session at 11:00.

I guess people with AC-PC are not affected as the low-soc-mandatory-charge behaviour is DC-PV only. I have a mix.

0 Likes 0 ·
Dirk-Jan Faber (Victron Energy) avatar image Dirk-Jan Faber (Victron Energy) ♦♦ kudos50 commented ·
Sorry for not responding earlier. Can I get your vrm id so I can take a closer look?
0 Likes 0 ·
kudos50 avatar image kudos50 Dirk-Jan Faber (Victron Energy) ♦♦ commented ·


0 Likes 0 ·
kudos50 avatar image kudos50 Dirk-Jan Faber (Victron Energy) ♦♦ commented ·

@Dirk-Jan Faber (Victron Energy) installed latest beta yesterday. Behaviour still the same. It just finished charging DC-PV to get from 45% to 47% and now it's 10:50 and it starts dumping back to 46% immediately. Discharging power is depending on time remaining between reaching 47% and the next full hour. With the latest beta it's more aggressive as expected and inverted with 5kW+ for a while.

0 Likes 0 ·
Dirk-Jan Faber (Victron Energy) avatar image Dirk-Jan Faber (Victron Energy) ♦♦ kudos50 commented ·

The target at that moment was set to 46%. And while it was in idle state, the battery charged to over the target soc by 2% (which is more than the hysteresis), so the system woke up and dumped it back to 46.

For your site it seems to make sense to set the a restriction on battery to grid.

0 Likes 0 ·
kudos50 avatar image kudos50 Dirk-Jan Faber (Victron Energy) ♦♦ commented ·

@Dirk-Jan Faber (Victron Energy) I checked again yesterday but the low soc warning in ESS does not disappear until the soc is >47% (not >= 47%).

Since target soc for DESS is often adjusted to only 46% during that hour, it will also invert 48% to 46% back to grid. Give or take a bit that's 0,8kW on my system.

I have >4kWp facing east so DESS reaching low soc every day by design and ESS DC-PV preference to charge 2% during low-soc is likely to beat the hourly DESS target soc calculation far more often during summer.

0 Likes 0 ·
kudos50 avatar image kudos50 Dirk-Jan Faber (Victron Energy) ♦♦ commented ·

As a temporary solution this should work?

if( global.get('com.victronenergy.settings.Settings.CGwacs.BatteryLife.State') == 11 &&

global.get('victronenergy.battery._512.Soc') < (global.get('victronenergy.system._0.Control.ActiveSocLimit') + 3)) &&

global.get('victronenergy.settings.Settings.DynamicEss.Schedule._0.Restrictions') == 0) {

NewSched0Restrictions = 1;


Or on my system, if min soc is set to 45% and current soc < 48% than set sched0 battery to grid export restriction but only if current value is 0.

This should prevent the function from setting it again within the same hour. Suggestions ?

0 Likes 0 ·
kudos50 avatar image kudos50 kudos50 commented ·

Not following you. If not low soc hysteresis, what is causing the Multi's to not start inverting DC solar over 46% ? Please note that the low soc message does not go away under 47% which is why the term hysteresis came to mind in the first place.

DC PV continues to charge to 47% instead of DESS invert every day. And only at 47% the low soc message disappears until it's <45% again.

Also do not understand why I need to restrict battery to grid. Living in NL and consumption is way higher than PV yield (salderen) so selling it in the evening makes sense now that summer is coming.

0 Likes 0 ·
frantiseksobotka avatar image frantiseksobotka kudos50 commented ·

Hello, I have simmilar issue with the hysteresis.

At morning the rest of available batery capacity is discharge to grid which is perfect - it is done correctly at highest morning time slot. And there will be enough PV power over the day.

But at the moment when SOC dropes to minSOC limit, the error #1 comes and the system stops to use high PV power for the loads. It is used only for the charging.

All load are supplied by grid and as I wrote it is time of the highest morning price...

Few moments later when the battery is charge by ~2% it starts to discharge to grid and to cover loads from PV/baterry.

As the PV and discharge powers are high it can be repeated several times in hour every mornig.

This leads to useless grid import. Would it be better to use battery power to cover loads in such situation.

I am at latest beta version and the ESS is updated.

portal ID> 48e7da891f5b

Follows pictures from today morning as time shots:


0 Likes 0 ·
img-5206.png (355.2 KiB)
img-5208.png (358.7 KiB)
img-5211.png (360.5 KiB)
Dirk-Jan Faber (Victron Energy) avatar image Dirk-Jan Faber (Victron Energy) ♦♦ frantiseksobotka commented ·

It does look like it reached that target SOC (which was the same as the min SOC) a bit too early. What you might try to do is to switch on peak shaving, which will allow the system to take the energy from PV instead of from the grid.

We will also check if the system can be altered to be a bit more careful around the min SOC state.

0 Likes 0 ·
frantiseksobotka avatar image frantiseksobotka Dirk-Jan Faber (Victron Energy) ♦♦ commented ·

Thank for fast responce. You are right the peek shaving is on only above min SOC. I will try and report next morning.

1 Like 1 ·
frantiseksobotka avatar image frantiseksobotka Dirk-Jan Faber (Victron Energy) ♦♦ commented ·

Similar DESS behaves already now but far away from the min SOC...

PV used only for charging and grid used for loads, peak shaving alredy on. I tried to swith on/off DESS but no change.

In such conditions when is plan to use lot of power for export should be grid use only in case of inverter overload, or?


0 Likes 0 ·
img-5212.png (342.7 KiB)
img-5213.png (77.8 KiB)
dirks-1 avatar image dirks-1 commented ·

I just noticed when i charge my EV from the grid at the time my battery is charged from PV it will show the grid consumption as grid=>battery. But that 6.29kWh was going to EV from the grid. My wallbox is behind the AC Out and i have the ev charger in vrm via dbus-mqtt.


0 Likes 0 ·
1709729280724.png (27.7 KiB)
Dirk-Jan Faber (Victron Energy) avatar image Dirk-Jan Faber (Victron Energy) ♦♦ dirks-1 commented ·

This looks related to the graphing issue that simonyoungtree reported. We are investigating the cause.

0 Likes 0 ·
dirks-1 avatar image dirks-1 Dirk-Jan Faber (Victron Energy) ♦♦ commented ·

ok, i had DESS disabled at the moment if this is important information. Because it was not charging the battery. SOC was at 17% in the morning and i collected more than 40kWh today, i guess because of my issue with MyPV ACthor i described beyond at another post.

Additionall information: It was not 6.29kWh to EV as seen here. So there is not only a graph thing but also counting.


Wouldn't it be possible to include grid to evcs and pv to evcs and battery to evcs to energy graph and to the EVCS tab?

Another edit:

My OpenWB counted 6,31 kWh at this charging process. So the EVCS counted less but in the engery graph it is correct.


0 Likes 0 ·
1709740738599.png (13.2 KiB)
1709741665583.png (11.3 KiB)
ronaldt avatar image ronaldt commented ·

It seems that Target SOC still has high priority and is not flexible when circumstances change. There is more sun then expected and PV brings 6000+ Watt. But target soc is reached and excess is sold to the grid. But at this moment the grid price is low. So I rather have this excess in my battery (even better my car but my Victron EV charger on auto does not want to start, but that is another challenge).
I presume this is unwanted?


0 Likes 0 ·
Dirk-Jan Faber (Victron Energy) avatar image Dirk-Jan Faber (Victron Energy) ♦♦ ronaldt commented ·

I am unable to check it on your system, but am I right in assuming that you are running 0.1.14 with and imported the latest flow? I mean the one that looks like this:

0 Likes 0 ·
ronaldt avatar image ronaldt Dirk-Jan Faber (Victron Energy) ♦♦ commented ·

@Dirk-Jan Faber (Victron Energy) Thanks for the reply.

I was running on Auto (not node red). Installed 0.1.14 but missed the new flow. I have installed the new flow now and configured the node. Switched to node-red again and will check what happens in the next days when the sun starts shining.

System is: Dynamic ESS - c0619ab2e756 (NL) - Node-RED. Please have a look to see what happens.

0 Likes 0 ·
ronaldt avatar image ronaldt ronaldt commented ·

To better understand what the system decides I would like to understand the graph below. I think it is only showing the buy and sell price, and it is not taking into account the efficiency of the system (90%) and the cycle cost of the battery. The conclusion that you sell at the wrong moment because later you buy for a higher price can not be made solely on the basis of what this graph shows. Is this correct?


My system sells PV at 11:00 for € 0,212 and plans to buy at 22:00 for € 0,24.
But if I would store PV in the battery I have to take into account 10% loss and € 0,01 ct/Kwh cycle cost. And therefore it decides to sell at 11:00 ?????


0 Likes 0 ·
simonyoungtree avatar image simonyoungtree commented ·

DESS ignoring Active SOC limit (45%) set by Battery Life, causing charging from grid to battery the hour after.



From the DESS Energy graph, you can see the consumption (car charging) being fed from the battery and while doing so going through the bottom limit:


Whether it was smart to dump the battery at that time anyway, given the much higher prices a few hours later is questionable:


0 Likes 0 ·
1709798946656.png (25.2 KiB)
1709799189164.png (12.8 KiB)
1709799283993.png (9.3 KiB)
1709799502228.png (16.5 KiB)
Show more comments



dfaber contributed to this article