Page 1 of 1

Forced Discharge Time Shifting with Octopus Agile Outgoing

Posted: Tue Jul 27, 2021 1:21 pm
by nowty
Another fellow camelot member has been using a second Sofar ME3000SP in "Timed Mode" in order to make use of the high export prices between 4pm and 8pm over the summer months when their batteries are full almost everyday. They have given me permission to post it here as it might help others who want to time shift their export. There have been several units coming up on fleebay for as little as £350 as some installers seem to be persuading existing users to swap them for LUX units which might now have some sort of Octopus API integration. Maybe that is the way to go I don't know.

Its possible to do fancy things in passive mode with the ME3000SP but that takes extra hardware and programming skills. This just uses the existing work modes across two ME3000SP units.

So the trick is to have two units sharing the same battery, ensure the clocks on each unit are as close to each other as possible and not to use any CT clamps on the second unit which will be used as a dumb unit.

First unit is installed as a normal install with the CT clamps in place but run in "Time of Use" mode with the 4pm to 8pm slot (or other peak time period) set to charge at zero watts so for that time period it just says in standby mode. The rest of the time it operates as normal, therefore charging the battery with excess solar or supplying power to the house to minimise imports.

Second unit is run as a dumb unit with no cable clamps. If you use "Timed" mode, which is essentially designed as a test mode, you can set it to discharge between 4pm and 8pm (or other peak time period matching the first unit) to get the max export price rates.

Results, the screenshots below have been taken from their online Octopus account.

Octopus Outgoing Export Price Rates (the rates for last nights run were actually higher and especially for 5pm to 7pm)
Image


You can clearly see the additional time shifted peak between 5pm and 7.00pm
Image


Their import was practically nothing all day (note different scale)
Image

Re: Forced Discharge Time Shifting with Octopus Agile Outgoing

Posted: Tue Jul 27, 2021 2:41 pm
by dan_b
Impressive stuff.

Re: Forced Discharge Time Shifting with Octopus Agile Outgoing

Posted: Tue Sep 14, 2021 5:49 pm
by nowty
I doubt Octopus thought this was ever ever going to be a reality with their Agile price formulas. They put in two protections, first, that Agile Outgoing will never go negative and the second that Agile import will be capped at 35p. Bet they never, ever thought the outgoing price would be in the hundreds of pence day after day.

This afternoon someone on here has been charging their battery bank at 35p / kWh from the grid which you would think was crazy. But at 6pm they are going to unleash those batteries onto the grid to be paid up to a peak price of 220p / kWh. Tomorrows Agile Outgoing is peaking even higher at 240p / kWh. :o

Image

Re: Forced Discharge Time Shifting with Octopus Agile Outgoing

Posted: Tue Sep 14, 2021 6:05 pm
by Stinsy
I wish my next door neighbour was on Octopus outgoing. We could do a once-a-day battery swap to charge at 5p and discharge at 240p!

Re: Forced Discharge Time Shifting with Octopus Agile Outgoing

Posted: Tue Sep 14, 2021 6:19 pm
by greentangerine
It would be very easy to this in passive mode without needing another unit but I guess it's good to have a spare.

The Python to do it is below and in my project on github - just need to add a few lines to call that and later switch it back to auto.

def set_charge(self, charge=3000):
""" Set charge value."""
ret_status = True
message = write_passive_register(slave_id=self.slave_id,
address=self.CHARGE,
value=charge)
try:
response = rtu.send_message(message, self.serial_port)
except:
ret_status = False
response = 0
return ret_status, response

def set_auto(self):
""" Switch inverter to AUTO."""
ret_status = True
message = write_passive_register(slave_id=self.slave_id,
address=self.AUTO,
value=0)
try:
response = rtu.send_message(message, self.serial_port)
except:
ret_status = False
response = 0
return ret_status, response

Re: Forced Discharge Time Shifting with Octopus Agile Outgoing

Posted: Tue Sep 14, 2021 8:24 pm
by nowty
Stinsy wrote: Tue Sep 14, 2021 6:05 pm I wish my next door neighbour was on Octopus outgoing. We could do a once-a-day battery swap to charge at 5p and discharge at 240p!
Or even a neighbour AC interconnector if you are both on the same phase (almost certainly not legal). Or even if you were not you could have a communal battery and a DC interconnector.

The mind boggles. :twisted:

Re: Forced Discharge Time Shifting with Octopus Agile Outgoing

Posted: Wed Sep 15, 2021 12:36 pm
by nowty
Looks like the fellow Camelot member increased the discharge as the price increased. :twisted:

6.4 kWh import at 35p = 224p
3.7 kWh export at an approx average of 200p = 740p

I suspect today will be a re-run.

Image

Image

Re: Forced Discharge Time Shifting with Octopus Agile Outgoing

Posted: Sun Jan 02, 2022 1:06 pm
by Tinbum
greentangerine wrote: Tue Sep 14, 2021 6:19 pm It would be very easy to this in passive mode without needing another unit but I guess it's good to have a spare.

The Python to do it is below and in my project on github - just need to add a few lines to call that and later switch it back to auto.

def set_charge(self, charge=3000):
""" Set charge value."""
ret_status = True
message = write_passive_register(slave_id=self.slave_id,
address=self.CHARGE,
value=charge)
try:
response = rtu.send_message(message, self.serial_port)
except:
ret_status = False
response = 0
return ret_status, response

def set_auto(self):
""" Switch inverter to AUTO."""
ret_status = True
message = write_passive_register(slave_id=self.slave_id,
address=self.AUTO,
value=0)
try:
response = rtu.send_message(message, self.serial_port)
except:
ret_status = False
response = 0
return ret_status, response
I'm using your Github code with Node-RED and am new to Python but do a bit with Arduino's etc.

Is their a way to set the time on the ME3000 via Python and Node-RED?