Victron ESS Question

My setup consists of 4900W of panels feeding a 150/85 Smartsolar MPPT and a 5kVa MPii with 2 x Pylontech US3000c’s and a Cerbo and an ET112. The critical loads is only for lights and IT equipment and runs at about 200 watts during the day and about 550 watts at night. Excess solar production is used to supply the non essential loads (in the absence of load shedding). There are 2 x 150 L conventional geysers that run on their own Geyserwise timers and heat during peak solar production time.

Generally, my load is matched to solar production, so I just use the “Keep batteries charged” mode. With load shedding, the batteries are used more and then charged during one of the load shedding intervals as there is minimal load to use the solar production. This is not about moving non essential loads to the essential side.

My question (in a non load shedding scenario): When the minimum SoC is reached (when using ESS settings), the MPPT charges up 3% SoC with whatever solar production is available and then goes back to using the solar for consumption. Is there a way to keep the SoC at whatever level (not in Keep batteries charged mode) and just use the solar production for consumption without cycling the battery and only charge the battery when there is excess solar production. Eg. if you set the minimum SoC to 50%, then it must discharge the batteries until 50% and only top up batteries when there is excess solar available.


Set a Scheduled Charge slot. Set the “Stop on SOC” value to 50%. Then set your ESS MinSoC to 50% as well.

Scheduled charging has a feature where it charges a battery to a specific SOC, but no more, because typically someone might use scheduled charging to charge a battery with cheap energy in the early hours of the morning, to use over the expensive breakfast slot, but not charge it so much that the MPPTs have nothing to do by 9AM when the sun is up.

But because, for whatever reason, people sometimes use scheduled charging during the day and still expect the solar power to be used, there is a feature in there that will keep the battery around the SOC you asked for until the scheduled slot ends. It does this by estimating the inverter efficiency (which is not constant) based on how close it is to the target SOC, and the effect is that the battery will generally float around 50% to 51%.

Of course this will cause long-term SOC drift, so ideally have a slot some time in the week to take it back up to 100%.

One possible downside to this: In scheduled charging the battery is never discharged, at least not hard. So it acts a bit like “Keep charged” except it doesn’t hard-charge above the SOC you selected (unless there is surplus PV). By applying such schedules only around the times you want it, you can get more or less what you want.

Thanks @plonkster for the detailed feedback.
Will give it a try and see how it goes.
Fortunately, in the 12 noon - 2.30pm load shedding slot, my batteries easily go from 35% SoC to 100% SoC with solar to spare on an average day.

Another question while we are at it.
Is there a way to setup a discharge schedule during the night to a specific (or multiple) SoC in VRM without going the Home Assistant route. Home Assistant will be my project for 2023.


Second person to ask that in about two weeks. You didn’t by any chance attend a certain weekend recently… :slight_smile:

At the moment, no. The design philosophy of an ESS system is that it always tries to keep your grid import as low as possible. The only time it is not doing that, is when the battery is too low. That means there are only two states (when using optimised at least) that the system can be in: Self-consumption, or Discharge Disabled.

What I hear very frequently now is people who want an “idle” state, where the minimum SOC was not reached, but the system is nevertheless not discharging because energy is being reserved for later. This breaks the design philosophy a little, but worse than that, it opens the door for support questions of the form “why doesn’t my system discharge the batteries!”, so of course whatever is implemented here needs to be as simple as possible. But it is on the table… for a distant future version… maybe.


Not sure I understand correctly, so correct me if not what you looking to achieve…
I set my ‘Min SOC unless grid fails’ to some low value, say 30%, so it does not interfere… I then use Scheduled Charges to create my desired SOC profile e.g.:
15:30 Charge to 80% and maintain for 2 hrs
(sets me up with full’ish battery in case of load shedding but
does not interfere too much with my PV production)
17:30 Charge to 100% and maintain for 04:30 hrs
(cell balancing and another 20% battery capacity in case of
grid fail and since after solar hrs no impact on my production)
22:00 No charge schedule
(I time the release of the battery to discharge so reaches 30%'ish
by time solar production kicks in next morning)

1 Like

Yes, that sounds like a plan.

The Sunsync has a table you fill in with each line being a time period. You set SOC levels for each period and I think that is a very easy way to manage the process.

Thanks @Langou. So, what you described was not exactly what I was intending to achieve.
My intentions were:

  1. Use all the solar production without throttling the MPPT because there was no load and the batteries were full.
  2. Discharge the batteries and keep them in that discharged state during sunlight hours (without charging / discharging the 3% in the min SoC charge of the ESS assistant). Basically, keeping the batteries at a low SoC and letting the solar production supply the load first and only charge batteries if there was excess production.
  3. Temporarily disabling the multi’s charger so that batteries are only charged by the MPPT.
  4. Charging the batteries during the “load shedding” time as the non-essential loads would be disconnected.

The above was all achievable with @Plonkster suggestion of scheduled charging slots. Essentially, what I have done is set a 24 hour scheduled charge instruction with a “Stop on SoC” limit of 30% so that the Multi does not charge the batteries at all unless the SoC drops below 30% due to load shedding. I can then play around with the ESS min state of charge depending on how low I want to take it / how much I expect to be able to recharge during the sunlight load shedding hours. (To discharge the battery, you need to toggle the scheduled charge off). In the afternoon, the ESS min SoC is set at 80% for the 2.5 hours of load shedding during the night and there is room for another ± 4 hours just in case the power is not restored when it is supposed to. The multi will not charge the batteries at night unless the SoC drops below 30%. If you want the multi to charge at any time, just toggle off the scheduled charge slot. Fortunately, I sit in front of a laptop for most of the day, so it is very easy to keep an eye VRM. Just as an aside, I did get caught out the other day when the batteries were sitting at 30% and Eskom did not load shed and there was no excess solar to charge the batteries, so the multi was used to charge the batteries from grid in the afternoon.

1 Like

If anyone has a screenshot, please send it to me.

Trying to find it…

1 Like

1 Like

This is a sad day…

Why? The entire scheduled charging setup already incorporates many features other makers had at the time (including Tesla). When you’re building something new, it has to be as good as (and preferably better) to what the competition has. So not sure why it is a sad day.

Tong in die kies…

1 Like

To be frank, I dislike the min SoC at time of day. It doesn’t seem to meet any need except a made up one. If you need to have 30% of your SoC available for loadshedding, then you only ever need to have a minimum SoC set to 50% (for 20% remaining).

The min SoC at time of day introduces unnecessary charging from the grid (presumably it would do that) just to get the batteries to 100% (if that is what you set it at). But why? It isn’t saving to more Rands and it isn’t making you more secure.

If you distrust loadshedding and think it might go on for 4 hours instead of 2 at a time, well then set your min SoC at what would get you through 4 hours.

Now, I do get that some people size their PV arrays for their essentials’ needs. Then feeding back to the non-essentials make the PV array insufficient to fully charge the batteries (which is needed for the essentials to be off-grid at night). The result being that your essentials isn’t fully off-grid. But who cares, you opted for ESS to begin with… A little bit like people think they will magically save more money or be more secured against loadshedding with these software settings… but unless I’m missing something, you really aren’t.

I also get the idea (that I implemented) that you don’t want to feed your batteries back to the non-essentials, or at least not more than say a certain amount of Watts. For example, when the sun isn’t shining, I don’t want to grind my batteries for 4000W because the oven etc. is on. I didn’t size their capacity for that and I don’t see how that would be good for them in the long run. I want to get as many years as possible from them (not necessarily as much kWhs, since my PV panels save me the real money). But if there’s no sun shining, I just need them to be at a SoC than gets me through loadshedding.

The issue is caused mostly by what I affectionately call the “small battery crowd”.

The battery is only large enough to survive one load-shedding slot (and maybe a bit more).

So if you have a slot at 8PM, and another one at 6AM (actual example from the previous week), you need to recharge the battery after the first one, but not after the second one (because the sun will pick up at 8AM).

Hence, the requirement for time-of-day dependent minsoc values.

Another thing I am concerned about is SOC drift. Batteries that are constantly operated around the “idle” point, without a full charge every week or so, suffer SOC drift. Especially those BMSes with less accurate current readings. Making a feature that encourages such use makes me a little worried. But we’re at the “ideas” phase. It will get there.

Edit: Now the one thing I am still chewing on, is why a scheduled charging slot that ends at 4AM (ish) isn’t sufficient. Simply create a charge slot that kicks in at sundown to keep the battery at a higher state of charge, and stops before sunrise. Instant recharge-to-some-higher-soc support.

Ah yes, so every now and then that charge will be unnecessary. However, often times it might be necessary because it could be a low PV day. I think it is too risky to not top it up back to min SoC as soon as you can. There is a reason you specified it to be your min SoC. Feels gimmicky…

In the winter, depending on the orientation of your panels, sunrise might be 2 hours away from any meaningful PV… ask me…

1 Like

As an ex member of the "affectionate small battery crowd”, having tried all the tricks I could, now that I’m not a member anymore, the flip side is to try and keep a 15kwh bank topped, ready for 7.5h a day LS with damn little sun for days on end.

So I said phukkit and went back to Keep Charged. Let whatever solar there is power the house.

And because I B&M (yes, I voted and I installed solar), the 7 users shall limit their usage at all times because it costs a damn LOT to keep the bank recharged at max amps (damn quick I must add) for at least 2 of the 3 LS daily events.

In ESS Optimized mode, once the min SOC is reached (and the ESS Low Soc bit is set), self consumption is disabled (disabling the inverter as well) and it gets enabled again after the SOC reaches at least 3% above the min SOC. Those are the observations from my system.
My question is whether it is possible to set this threshold to a different value (for example 5% or 8%) or this is hardcoded somewhere?