Feature Request - Setting for a "floor" grid price below which charge battery to 100%

Can I suggest a feature for DESS, a setting in the VRM for a “floor” grid price below which the system aggressively charges the battery to 100%

if price < floor then charge battery to 100%

This would work the same as the current options of either switching to “Keep Batteries Charged” mode or setting minimum SOC to 100%.

I live in northern Britain and don’t have solar, so rely on Octopus Agile to offer cheap or free charging when the sun shines or the wind blows. I’m sure a lot of people at these latitudes will be seeing minimal returns from domestic solar at this time of year so I don’t think my situation is unique. In the past week grid prices have varied from 99p / kWh to just below zero.

My definition of a “low price” will of course be different from someone with a big solar array in a sunny place who always wants to leave space for free over cheap. For me if the price falls below about 5 pence I want to aggressively charge the battery, I’m not worried that it might be a couple of pence cheaper later on, I’m worried I’ll run out of charge later when it costs me 10 or 20 times as much.

Another use case for this is that I have a hot water cylinder that heats with gas or electricity. Gas costs around 6 pence / kWh so is the default option. When electricity prices approach zero I want to switch over which I have tried to achieve by wiring the hot water into AC2 on the Multiplus. Then I’ve set the AC2 relay assistants to turn on when SOC reaches 99% and off when it falls below 95%. Currently I can only push the battery to that level manually using either of the settings mentioned above. I know I could write some Node Red code to do all this but I don’t want to move away from DESS because it is close to perfect for me.

Of course I’d be grateful for any advice on how I can achieve my goals with the current system, Thanks.

5 Likes

I thought about your suggestion of fully charging the battery at a defined low price some time ago. However, this would only make sense if the stored energy was only used when the price had risen so much that the conversion losses and costs for the storage were exceeded. In effect, this means that the DESS would have to remember the price and only release it again when the price had risen accordingly. This would require a completely new logic for the DESS. Simply defining a price at which charging is always carried out is not enough.

Thanks Sarowe but I’m afraid I don’t understand that. Is this a trading issue? I operate in green mode and don’t sell to the grid, I just want to store as much as I can when prices are cheap.
Obviously naively, I thought that this could be achieved at the point the half hour grid price was imported without any modification to the underlying logic, simply a check against the floor price, if lower switch to “keep battery charged” mode and if not revert to the default.
It did occur to me that this might be a VRM issue rather than DESS but as far as I know only DESS imports the half hourly price points.
I understand it’s complex and can’t be all things to all people, thanks for your work on the system and fast response.

Another problem for systems with PV would be that the battery would be fully charged and there would be too little capacity for the even cheaper PV electricity during PV production. As I said, I had a similar idea to you some time ago and initially thought it was very nice.

Perhaps I expressed myself incorrectly. I work in green mode myself and do not feed in. Assuming that the DESS would calculate for the coming time interval, it would have to reach a Soc of 70% to cover all times with more expensive prices, namely prices that are higher than the purchase price + conversion losses + battery costs. But now the system charges to 100% Soc using our new function. After every full hour or half hour, the system now checks the situation. Wow, the system says I have more energy available and can cover a few more times. And now it can happen that the system uses the energy when the price has only risen slightly and it would actually make sense to draw directly from the grid without conversion losses and battery costs. I hope I have expressed myself clearly enough.

@aussiecymraeg I have a Sonoff Smart WiFi switch that connects to a contactor (relay) that switches on my immersion heater (other brands are available). The switch is programmable via an app. These devices are located local to the consumer unit. When prices are going to be very low I program this to switch the immersion on - usually whilst I am asleep.

It would be good if a relay in the inverter/charger could be actuated when the price goes below a user defined set point. This could then be used to activate the contactor directly, which would achieve the second part of what you have requested.

I also programme these devices to turn on electric heaters, especially when the price goes negative.

I have an automation in HomeAssistant that sets minimum SoC based on price thresholds in order to tweak DESS behavior.

I.e. at very high prices min SoC will be 10%, otherwise 25%.

And at very low prices it will be 75%.

And at medium price, it will gradually raise min SoC to 50% while preventing charge from grid. This is done by setting min SoC = current SoC whenever SoC changes. This way it will charge from PV and preserve the energy until 50% is reached.

But all of this only makes sense in winter where I cannot get more than 20% of charge from PV.

DESS sometimes behaves strangely. Quite often the DESS discharges the battery against the guidelines as if trying to reduce the SOC to some known target value without any economic benefit. Trade moden w/o batterylife. I have limited the power of the inverter to avoid too aggressive sales.



Hi @HansDampf, this sounds the perfect solution for me, I will do some searching but if you could provide and more information or links on how you implemented this it would be great.

1 Like

But I think that some hard limits on charging would be good to have, for example

  • below snt/kWh always charge the battery soc
  • no discharge if < snt/kWh

In Finland there are times when there is no sun so it would be good to have a mode for load transfer only for cheap electricity. Often DESS does not charge the battery full enough because it cannot predict the consumption. For example, in Finland people take saunas depending on the weather so a setting to limit the prediction of consumption peaks could be useful.

  • maximum predicted consumption > kW

Edit: And did you know that the Nordic countries are about to move to a 15-minute exchange electricity price?

You need to integrade MP2 into HomeAssistant with MQTT. It’s not so easy, because you need to periodically trigger the MP2 to keep sending data.

Here is an example how I’m reading the SoC and setting min SoC:

- sensor:
  - unique_id: mp2_soc
    name: "Batterie SoC"
    state_topic: "venus/N/xxxxxMY_SECRET_IDxxxxx/battery/512/Soc"
    value_template: "{{ value_json.value }}"
    state_class: measurement
    unit_of_measurement: "%"
    device_class: "battery"
    device: 
       name: "mp2"
       identifiers: "mp2"
  - name: "Min SoC"
    unique_id: "mp2_min_soc"
    state_topic: "venus/N/xxxxxMY_SECRET_IDxxxxx/settings/0/Settings/CGwacs/BatteryLife/MinimumSocLimit"
    command_topic: "venus/W/xxxxxMY_SECRET_IDxxxxx/settings/0/Settings/CGwacs/BatteryLife/MinimumSocLimit"
    command_template: '{"value": {{ value }} }'
    value_template: '{{ (value_json.value) | round(0) }}'
    mode: "box"
    unit_of_measurement: "%"
    device:
       name: "mp2"
       identifiers: "mp2"
    icon: mdi:percent
    min: 5
    max: 100
    step: 1

There are many guides on the www, e.g. HomeAssistant + Victron.md · GitHub

Also HomeAssistant community forums are helpful.

And you need electricity prices of course. I have Tibber and there already exists an integration for HomeAssistant.