DESS in Green-Mode sometimes shows 3 unexpected behaviours:
- Charging, when there is enough solar available later the day (I1)
- Discharging to grid, even if the battery is not fully charged (I2)
- Not charging/discharging, but idling and sending solar-overhead to the grid, even if the battery is not fully charged (I3)
I’ve therefore designed a (let’s call it) hack to address Issue I2 and I3. For I1, I understand that occassional charge from grid is the easiest way to handle a soc-schedule throughout the day, so I didn’t mess with that.
I’ve now been running this changes for about 2 weeks now, and it seems like the system behaves as I would expect it, beside the unchanged I1 happening very rarely.
DISCLAIMER:
Applying this hack requires the modification of victrons original file. The changes outlined bellow have been created and tested with a certain version as outlined. Any older / newer versions may need different changes. Keep in mind that a system up- or downgrade will always undo these changes as well.
APPLYING THIS CHANGES HAPPENS 100% ON YOUR OWN RISK
So, what does this hack do?
The original DESS-delegate basically makes decisions based on the data VRM computed and send to the gx-device as a schedule.
The gx device now performs one out of 4 “reactions” possible to the schedule:
- If the VRM-Strategy is set to SELFCONSUME, DESS just behaves like a regular ESS. (R1)
- If the VRM-Strategy is set to TARGETSOC, there are 3 options available:
- The current soc is BELLOW the hourly schedule → charging battery (not necessarily from grid) is required (R2)
- The current soc is EQUAL to the hourly schedule → battery goes idle, excess PV is feed-in instead (R3)
- The current soc is ABOVE the hourly schedule → battery is discharged to grid (R4)
R1 and R2 are totally fine - but R3 is somewhat mew, and R4 is “&%$!ยง&”
So, i’ve modified the part of code responsible for R3 and R4 and after all, the actual strategy will be overridden by the following behaviour:
1.)
VRM-Strategy: SELFCONSUME
Conditions: Any
Final-Strategy: SCHEDULED_SELFCONSUME
Means: The system will behave like in regular ESS Mode, as desired by the vrm schedule.
No changes
2.)
VRM-Strategy: TARGETSOC
Conditions: SOC < TARGETSOC
Final-Strategy: SCHEDULED_CHARGE
Means: VRM has scheduled a battery charge for this window. We just pass that on to the regular DESS-Delegate, allowing it to do, whatever it needs to do, to reach target-soc.
No changes
3.)
VRM-Strategy: TARGETSOC
Conditions: SOC >= TARGETSOC and pvpower > consumption
Final-Strategy: OVERRIDE_SELFCONSUME_ACCEPT_CHARGE
Means: Usually the system would now go into idle, feeding in excess PV or even discharge the battery to grid. This is not desired, so we enter SELFCONSUME with the idea to absorb the excess pv power as well. Doing so may bring the actual soc above the target-soc and ahead of plan.
4.)
VRM-Strategy: TARGETSOC
Conditions: SOC > TARGETSOC and pvpower <= consumption
Final-Strategy: OVERRIDE_SELFCONSUME_ACCEPT_DISCHARGE
Means: We have more SOC than the schedule expected. Thus, we will stay in selfconsume mode and compensate PV-shortages from the battery. We are ahead of plan.
5.)
VRM-Strategy: TARGETSOC
Conditions: SOC == TARGETSOC and pvpower <= consumption
Final-Strategy: OVERRIDE_IDLE_MAINTAIN_TARGET_SOC
Means: SOC level is exactly as expected by the schedule, but we have a pv-shortage. Thus, we are entering battery idle mode with the target to maintain the SOC-level to stay on schedule.
Usually this happens, when VRM is scheduling multiple consecutive hours of the same target-soc with the idea to consume from grid instead due to cheap prices.
So, we just follow that idea.
Installation:
Note the changes are only suitable for Green-Mode as battery discharge (to grid) is completely suppressed.
See this post for installation:
That’s it.
As Victron is still working on DESS, this file is subject to changes after a system upgrade.
So, when you upgrade your system, only apply code-changes that are designed for the exact version.
cheers,
dognose