OFF-grid system to fully charge battery automatically with genset if solar cannot do it?

Hi,

I have a client off-grid system with standby generator which charges the battery at 25% to 40% when ever the SOC reaches that level SOC, in case of reaching low SOC close to dawn. I want to know if it’s possible to somehow program the system to use the genset to fully charge the batteries if a specific SOC has not been reached at a specific time during the day, so that the client can be assured he will start the night with a full battery with no noisy generator running.

For example:

A cloudy day, poor solar yield, and the battery only reaches 60% SOC at 17:00. The system is set to reach a target of 100% SOC at 17:00. The system must see this and start the genset and fully charge the batteries and then turn off the genset again.

I know with grid charging this is possible, but being and off-grid site only generator charging is available. A feature like this would be handy to prevent unnecessary noisy genset runs during the night.

Any help regarding this would be appreciated!

3-phase Multiplus-II, Cerbo-GX, 3x Freedom Won 40/32

Yes you can with Venus OS Large - you can implement such flow using Node Red. It’s a simple automation, like

  1. Check if time == specific time
  2. Check if SOC is at a certain level at this time
  3. Run gen if SOC < some %
  4. Stop as soon as SOC > 98%
1 Like

@KevinZA1988
Cerbo GX has a Generator Start/Stop function. See the manual. So does the Multiplus (Assistants), but they can’t tell the time.

I’m using the Solar Yield Forecast VRM node to calculate what’s coming instead off using the time.

So you can use this data to calculate approx battery SOC at the end of sunny day and decide if you need to start generator. You can do this all in Node Red

Yes, that’s how I do it. Not always acurate but it works.

var acThreshold = global.get('idlePowerConsumption');
var forecast = 0;
var toAdd = 0;
// acThreshold is the average AC Load.
// startSoC is the SoC I want to reach when the sun goes down the next day.
// minBattery is the minimum SoC
// at night, if necessary, I charge the battery from the grid until SoC is maxBattery.

for (let i = 24; i < 48; i++) {
    if (msg.payload.records.solar_yield_forecast[i][1] > acThreshold){
        toAdd = msg.payload.records.solar_yield_forecast[i][1]-acThreshold;
    }
    else{
        toAdd = 0;
    }
forecast += toAdd;
}

var maxBattery = Math.round(global.get('startSoC')-(100*forecast/1000)/global.get('batteryCapacity')+global.get('minBattery'));

if (maxBattery < global.get('minBattery')){
     flow.set('maxBattery',global.get('minBattery'));
}
else if (maxBattery > 100){
     flow.set('maxBattery',100);
}
else {
    flow.set('maxBattery', maxBattery);

}

(moved to modifications)

A couple ways to do this without NodeRed.

Set a daily periodic run (bottom of the Conditions page in Generator start/stop settings). The periodic run would start at say 1700 and be set to run until the batteries are full. Generator then shuts off and your normal SOC conditions are in force.

Or use “Quiet Hours” settings to create a configuration where there are two different minimum SOC settings depending on different periods of the day. One of the windows, say 1700 to 1900 would have a very high minimum SOC condition.