User Tools

Site Tools


drafts:dynamic_ess

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
drafts:dynamic_ess [2024-02-19 14:35] dfaberdrafts:dynamic_ess [2024-05-15 08:38] (current) – [Step 1: System] dfaber
Line 1: Line 1:
-====== What is Dynamic ESS? | Dynamic ESS Overview ======+====== Dynamic ESS - manual ====== 
 + 
 +===== What is Dynamic ESS? =====
  
 Dynamic ESS is an algorithm that aims to minimise the costs made on the grid and battery: Dynamic ESS is an algorithm that aims to minimise the costs made on the grid and battery:
Line 5: Line 7:
   * While taking grid limitations, battery specifications and day ahead energy prices into account,   * While taking grid limitations, battery specifications and day ahead energy prices into account,
   * When it can, it also considers the consumption and solar yield forecasts when scheduling.   * When it can, it also considers the consumption and solar yield forecasts when scheduling.
- 
-__NOTE: **Right now Dynamic ESS is still in beta and only available via the beta VRM.**__ 
  
 Also check these community posts for remarks and further troubleshooting: Also check these community posts for remarks and further troubleshooting:
-  - [[https://community.victronenergy.com/articles/232720/dynamic-ess-on-beta-vrm.html|Dynamic ESS on Beta VRM]]+  - [[https://community.victronenergy.com/articles/232720/dynamic-ess-on-beta-vrm.html|Dynamic ESS on Beta VRM - part 1]]
   - [[https://community.victronenergy.com/articles/236792/dynamic-ess-on-beta-vrm-part-2.html|Dynamic ESS on Beta VRM - part 2]]   - [[https://community.victronenergy.com/articles/236792/dynamic-ess-on-beta-vrm-part-2.html|Dynamic ESS on Beta VRM - part 2]]
   - [[https://community.victronenergy.com/articles/245772/dynamic-ess-on-beta-vrm-part-3.html|Dynamic ESS on Beta VRM - part 3]]   - [[https://community.victronenergy.com/articles/245772/dynamic-ess-on-beta-vrm-part-3.html|Dynamic ESS on Beta VRM - part 3]]
   - [[https://community.victronenergy.com/articles/256073/dynamic-ess-on-beta-vrm-part-4.html|Dynamic ESS on Beta VRM - part 4]]   - [[https://community.victronenergy.com/articles/256073/dynamic-ess-on-beta-vrm-part-4.html|Dynamic ESS on Beta VRM - part 4]]
 +  - [[https://community.victronenergy.com/articles/266992/dynamic-ess-on-beta-vrm-part-5.html|Dynamic ESS on Beta VRM - part 5]]
  
 ==== Can I use it? | Eligibility Criteria ==== ==== Can I use it? | Eligibility Criteria ====
Line 19: Line 20:
   * Be an ESS;   * Be an ESS;
   * Not use Generator connection outside of power outages;   * Not use Generator connection outside of power outages;
-  * Have a variable or dynamic energy contract +  * Run Venus OS v3.30 (or newer) 
-  * Have all loads behind the Victron system+ 
 +For best results: 
 +  * Have a variable or dynamic energy contract. 
 +  * Use a supported energy meter (especially if your system setup has heavy loads (EV charger, heat pumps) in front of the Victron system). See [[drafts:dynamic_ess#qwhy_does_the_system_exceed_the_configured_power|here]] for more information on this.
  
 Note: Note:
-  * //Only the dynamic energy contracts of the following countries are supported for day ahead prices: Austria, Belgium, Bulgaria, Croatia, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Italy, Latvia, Lithuania, Luxembourg, Montenegro, Netherlands, North Macedonia, Norway, Poland, Portugal, Romania, Serbia, Slovakia, Slovenia, Spain, Sweden, SwitzerlandUkraine.//+  * Only the dynamic energy contracts of the following countries are supported for day ahead prices: //Austria, Belgium, Bulgaria, Croatia, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Italy, Latvia, Lithuania, Luxembourg, Montenegro, Netherlands, North Macedonia, Norway, Poland, Portugal, Romania, Serbia, Slovakia, Slovenia, Spain, Sweden, Switzerland and Ukraine.//
   * If you have fixed prices (which may differ weekends/weekdays/daytime/nighttime), you can also use it outside these named countries.   * If you have fixed prices (which may differ weekends/weekdays/daytime/nighttime), you can also use it outside these named countries.
-  * **In case your system setup has heavy loads (EV charger, heat pumps) in front of the Victron system, there is a chance that the total load of the system exceeds what your main fuse can handle, causing it to break. See [[drafts:dynamic_ess#qwhy_does_the_system_exceed_the_configured_power|here]] for more information on this.** + 
-====== How can I get started? | Configuration ======+ 
 +===== How can I get started? | Configuration =====
  
 {{:drafts:dynamic-ess-settings.png?direct&200 |}} {{:drafts:dynamic-ess-settings.png?direct&200 |}}
Line 40: Line 45:
  
 Note that this is part is setting the capabilities, not actually setting limits for the system to use. See [[#qwhy_does_the_system_exceed_the_configured_power|here]] for info on setting limits for the system. Note that this is part is setting the capabilities, not actually setting limits for the system to use. See [[#qwhy_does_the_system_exceed_the_configured_power|here]] for info on setting limits for the system.
 +
 +Then you need to set the operating mode:
 +
 +  * Green mode: 
 +    * Only sell surplus solar back to the grid after consumption and battery charging
 +    * Energy in battery is reserved for consumption
 +    * Charge battery when prices are low
 +  * Trade mode:
 +    * Always sells surplus solar back to the grid
 +    * Energy in battery is used to trade
 +    * Charge battery when it is beneficial for trading
 +
 +You can always adjust this mode at a later stage, so pick the one that best suits your needs.
 ==== Step 2: Battery ==== ==== Step 2: Battery ====
  
Line 62: Line 80:
 === Dynamic prices === === Dynamic prices ===
  
-Each country and provider uses their own formula for pricing. As the system grows, we will have more and more pre-filled out formula's to select from, but you may need to fill out your own formula.+Each country and provider uses their own formula for pricing. As the system grows, we will have more and more pre-filled out formula's to select from, but you may need to adjust or fill out your own formula.
  
-The buy price formula and sell price formula (if you are allowed to sell back to the grid) looks typically something like: //(p+0.02+0.13)*1.21//. It this example it breaks down to:+Unfortunately getting the buy and sell formulas right isn't always straightforward. As all calculations, on when to buy and sell from the grid, are based on the formulas, getting it right is important. Most of the details of your formulas are located somewhere in the contract you signed with your provider. Quite often these contracts are not the most clear documents to read and dissect. 
 +We can give you some general rules and show you what other users have filled out as their formula. With these instructions, you should be able to approximate the actual price you are paying and receiving for your energy. 
 + 
 +Generalised over countries and providers a formula typically something like: //(p+0.02+0.13)*1.21//. It this example it breaks down to:
  
   * p - the dynamic price / kWh   * p - the dynamic price / kWh
   * € 0.02 - energy provider profit share   * € 0.02 - energy provider profit share
-  * € 0.13 - DSO working price + contributions/levy/taxes+  * € 0.13 - DSO working price + contributions/levy/transportation fees
   * 21% - tax   * 21% - tax
  
 The sell price formula looks often identical and in common cases looks something like (//p-0.02+0.13)*1.21//. So the energy provider profit share works the other way around. The sell price formula looks often identical and in common cases looks something like (//p-0.02+0.13)*1.21//. So the energy provider profit share works the other way around.
  
-With different providers, the formula will likely be differentSo this does require some research on how your pricing is build up. You can also get some ideas from [[https://github.com/victronenergy/dynamic-ess/issues/72|this issue]].+If the provider takes a 15 % percentage of the day ahead buy price and the taxes are 6%, the formula becomes: //( p * 1.15 ) * 1.06//. 
 +This is a bit weird, because in case of negative buy prices, the provider is going to pay you extra for all of the energy. Knowing providers, this is quite unlikely. So the more plausible formula becomes: 
 +//(p + abs(p * 0.15)) * 1.06//, which makes sure that the provider takes its share, even when the prices are negative. 
 +Also note that, if you don't use euro's, you can set the sites currency in the general settings for your site. 
 + 
 +You can also get some ideas from [[https://github.com/victronenergy/dynamic-ess/issues/72|this issue]].
  
 === Fixed prices === === Fixed prices ===
Line 82: Line 108:
 ==== Step 5: Confirmation ==== ==== Step 5: Confirmation ====
  
-In the final step you see the filled out values summarised. If you need adjustments, you can do so. Otherwise you can //submit// the form and Dynamic ESS.+In the final step you see the filled out values summarised. If you need to make adjustments, you can do so. Otherwise you can //submit// the form.
  
-You can now go to the Installation’s Dashboard and click the button shown below to open the Controls menu. Under the ESS section, you will find Dynamic ESS controls.+Now navigate to the installation’s Dashboard and click the button shown below to open the Controls menu. Under the ESS section, you will find Dynamic ESS controls.
  
 {{:drafts:controls-screen.png?nolink&600 |}} {{:drafts:controls-screen.png?nolink&600 |}}
  
 ==== What's next? | After configuration ==== ==== What's next? | After configuration ====
-As the configuration flow points out, you need to go to the //Installation Controls// -> //ESS settings// to turn Dynamic ESS on (Auto)After turning it on, you can set the Dynamic ESS SOC which determines the minimum SOC Dynamic ESS is allowed to each when it is operational.+As the configuration flow points out, you can navigate to the //Installation Controls// -> //ESS settings// to see the running state of Dynamic ESS. The switch is green when Dynamic ESS is on and red when it is switched off.
  
-{{ :drafts:dynamic-ess-controls.png?nolink&200 |}}+{{ :drafts:dess-control.png?direct&200 |}}
  
-The //Auto// mode is the usual mode in which Dynamic ESS should operate. The //Buy// and //Sell// modes are there you want to overrule the decision of the algorithm and fully charge or discharge the battery. +The //Auto// (green) mode is the usual mode in which Dynamic ESS should operate. If you want to disable Dynamic ESS, toggle the switch to //Off// (red).
-If you want to disable Dynamic ESS, set the mode to //Off//.+
  
-Note that there will be shown an extra mode called //Node-RED// if you run the Node-RED implementation of Dynamic ESS instead.+The state of Dynamic ESS will also show on the dashboard, just after the title. As a side note: If you run [[https://github.com/victronenergy/dynamic-ess|the Node-RED implementation of Dynamic ESS]], here it will show "Node-RED".
 ====== Operational ====== ====== Operational ======
 ==== Data Visualisations ==== ==== Data Visualisations ====
- 
-Note that there are still some issues with having the graphs show the data correctly.  
  
 Once operational, you can find Dynamic ESS visualisations that appear below the installation data charts on the //Dashboard// page. There you can find a graph showing the current forecast: Once operational, you can find Dynamic ESS visualisations that appear below the installation data charts on the //Dashboard// page. There you can find a graph showing the current forecast:
Line 111: Line 134:
  
 Below you first find a summary on the totals for the day and then there are three tabs which visualise: Below you first find a summary on the totals for the day and then there are three tabs which visualise:
-  * Earnings made as a result of Dynamic ESS usage;+  * Costs and earnings made as a result of Dynamic ESS usage;
   * Schedule of battery and grid usage;   * Schedule of battery and grid usage;
-  * All factors which are taken into account when scheduling (coming soon)+  * All energy factors which are taken into account when scheduling
  
 === Costs and earnings === === Costs and earnings ===
  
 This tab begins with a summary that compares the system using Dynamic ESS with the system using regular ESS. This tab begins with a summary that compares the system using Dynamic ESS with the system using regular ESS.
- 
  
 === Schedule === === Schedule ===
-{{ :drafts:energy-prices.png?nolink&800 |}}+ 
 +{{ :drafts:dess-buy-sell-prices.png?nolink&800 |}}
  
 The prices graph is available on both this tab and the //Energy// tab. It shows the buy and sell prices per hour. The prices graph is available on both this tab and the //Energy// tab. It shows the buy and sell prices per hour.
Line 133: Line 156:
 The prices and graph is the same one as on the //Schedule// tab. It shows the buy and sell prices per hour. The prices and graph is the same one as on the //Schedule// tab. It shows the buy and sell prices per hour.
  
-{{ :drafts:dess-energy.png?nolink&800 |}}+{{ :drafts:dess-energy-graph.png?nolink&800 |}}
  
 Then there is the energy graph, which summaries everything the system has done and is planning for. Then there is the energy graph, which summaries everything the system has done and is planning for.
Line 144: Line 167:
   * If the suboptimal scheduling is in the future plan, it is probably due to the configurations set by the user. For instance, battery costs being high leads to limited usage of the battery.   * If the suboptimal scheduling is in the future plan, it is probably due to the configurations set by the user. For instance, battery costs being high leads to limited usage of the battery.
   * If the suboptimal scheduling is in the past, then it is mostly due to the inaccuracies that come from consumption or solar yield forecasts. It is important to note forecasting will always come with its inaccuracies and even with these inaccuracies at distinct hours, Dynamic ESS minimizes costs compared to Default ESS mode in the longer run.   * If the suboptimal scheduling is in the past, then it is mostly due to the inaccuracies that come from consumption or solar yield forecasts. It is important to note forecasting will always come with its inaccuracies and even with these inaccuracies at distinct hours, Dynamic ESS minimizes costs compared to Default ESS mode in the longer run.
 +  * Make sure you have the formula's right. The system uses these to determine the price per hour and, if they are not correct, the system will make the wrong decisions.
  
 You might also want to read the chapter on [[#determining_the_target_soc|determining the target SOC]], to get some more idea on how the algorithm determines the optimal (dis)charging path.  You might also want to read the chapter on [[#determining_the_target_soc|determining the target SOC]], to get some more idea on how the algorithm determines the optimal (dis)charging path. 
Line 158: Line 182:
  
 In all cases, when the target SOC changes, it will calculate the charge current required to get there, and then distribute that over all the chargers, with the solar chargers getting priority. In all cases, when the target SOC changes, it will calculate the charge current required to get there, and then distribute that over all the chargers, with the solar chargers getting priority.
-If it needs more current to get there than solar provides, it will charge from the grid for the rest.+If it needs more current to get there than solar provides, it will charge from the grid for the rest, but only if the price of the grid is not too high.
 ===== Determining the target SOC ===== ===== Determining the target SOC =====
  
Line 204: Line 228:
 We are aware that the provider Octopus offers day ahead pricing, but as these are not offered via the ENTSO-E API, we are unable to process those. Eventually we will probably support these prices, but will take some time. We are aware that the provider Octopus offers day ahead pricing, but as these are not offered via the ENTSO-E API, we are unable to process those. Eventually we will probably support these prices, but will take some time.
  
-Also in the UK, (fixed) prices are known to change at the half hour instead of the whole hour (where our system works with). The work-a-round is to add the average price of in the overlapping hour. So if the price changes from 40 cents to 20 cents at 16.30, fill out a price of 30 cents from 16.00 - 17.00.+Also in the UK, (fixed) prices are known to change at the half hour instead of the whole hour (where our system works with). The work-a-round is to add the average price of in the overlapping hour. So if the price changes from 40 cents to 20 pence at 16.30, fill out a price of 30 pence from 16.00 - 17.00.
  
 Adding better support for this will eventually be done, but as this also affects graphs and the scheduling, it might take a while. Adding better support for this will eventually be done, but as this also affects graphs and the scheduling, it might take a while.
Line 214: Line 238:
 ==== Q: Why can't I find dynamic ESS on VRM? ==== ==== Q: Why can't I find dynamic ESS on VRM? ====
  
-Right now (early December) Dynamic ESS is still in beta and only available via the beta VRM site. We expect to have Dynamic ESS ready for the officially launch in first weeks of 2024, after which it will no longer be needed to use VRM beta.+Right now (early March) Dynamic ESS is still in beta and only available via the beta VRM site. We expect to have Dynamic ESS ready for the officially launch in March 2024, after which it will no longer be needed to use VRM beta.
  
 For those of you who aren’t familiar with beta VRM, you can log in through [[http://betavrm.victronenergy.com/|this link]] with your normal credentials. For those of you who aren’t familiar with beta VRM, you can log in through [[http://betavrm.victronenergy.com/|this link]] with your normal credentials.
Line 249: Line 273:
 limits of the system. These capacities are used by the system to make its calculations, so it used as an average power the system can do in an hour. limits of the system. These capacities are used by the system to make its calculations, so it used as an average power the system can do in an hour.
  
-If you want to limit the feed-in power to the system, you can do that. This is done via the //ESS -> Grid feed-in// menu on the consoleThe system will not exceed this limit.+If you need to limit the import configured power, you can configure import and export AC current limits via the //Settings -> ESS// menu in the GXThis is possible since the v3.30~10 release.
  
-{{ :drafts:limit-feed-in.png?nolink&400 |}}+{{:ess:system-ac-limits.png?400|}}
  
-On the other side of limiting power (what gets pulled from the grid) is more tricky. If you have all of your loads behind the Victron system, you can use the //AC input current limit//. If you don't have all of your loads behind the Victron system, there is currently no configurable option to limit the total input of all of your loads. Especially when you have high loads (EV charger, heat pumps) before your Victron system, **there is a chance of blowing your main fuse**. We are working on a way to account for the loads that will limit the power the system can take. But at the moment that is not available yet.+How does it work?
  
 +As you’d expect, it monitors the current and when needed engages to keep that within the configured limits:
 +  * to prevent overcurrent during export, system limits solar production and battery discharge.
 +  * to prevent overcurrent during import, system limits battery charging.
 +  * to prevent overcurrent during import because of loads, system will assist using battery power. (As long as battery permits of course).
 +  * In case SOC is dropped more than 5% below configured ESS minimum SOC, the battery will be recharged from the grid as soon as loads drop.
 +
 +Requirements and other details:
 +  - The feature is part of ESS; and applies to MultiPlus, Quattro, MultiPlus-II and so forth. The Multi RS will come with the same feature when we release Energy Meter and ESS support for that, but thats a different project and implementation.
 +  - NOTE: The function properly, the inverter/charges require an updated ESS Assistant, which you need VEConfigure for. The required version of the ESS Assistant is 018C.
 +  - About the existing "Limit system feed-in" option in the ESS menu, in watts: if you have both set, the lower of the two is followed for feeding in DC-coupled PV.
 +  - The GX does not limit PV-inverters in relation to the new export current limit. To illustrate: in case of major solar production, plus high tariff on selling energy to the utility, the new mechanism will limit feed in of power from the battery to 0. So, as long as the installed PV Inverter system is done such that it can’t by itself blow the fuse then its fine.
 +  - Works with all ESS supported energy meters.
  
 ==== Q: Does it also take into account changing provider fees during the day? ==== ==== Q: Does it also take into account changing provider fees during the day? ====
Line 272: Line 308:
 ==== Q: My country is not using the Euro, how do I switch currency? ==== ==== Q: My country is not using the Euro, how do I switch currency? ====
  
-At the moment that is not possible yetbut we are working on adding it to the general settings per site. +Under the //Settings -> General// part of your siteyou can set your currency.
 ==== Q: My providers changes price at the half hour instead of the full hour ==== ==== Q: My providers changes price at the half hour instead of the full hour ====
  
Line 297: Line 332:
 At the moment this is not possible. If we decide to add it, it will first be added to the [[https://flows.nodered.org/node/victron-dynamic-ess|Node-RED implementation]] first. At the moment this is not possible. If we decide to add it, it will first be added to the [[https://flows.nodered.org/node/victron-dynamic-ess|Node-RED implementation]] first.
  
-==== Q: Can you give an example with calculations? ==== 
-{{:drafts:dess-example-energy-prices.png?nolink&800|}} 
  
-Given a system at 15% SOC that has set the battery costs to 0.06 €/kWh, energy prices right now (11.00) set at € 0.29 and becoming € 0.40 this evening. Why would it feed into the grid already and not wait until the prices are higher? 
- 
-The battery cost is € 0.06 per kWh. This means that for a cycle of battery usage to be useful (financially beneficial) the price difference should be at least € 0.12 cents per kWh (€ 0.06 for charging, and € 0.06 for discharging). € 0.40 - € 0.29 is € 0.11 which is below that, hence Dynamic ESS does not want to use the battery for this task, instead it is offloading the excess to the grid. 
  
 ==== Q: I am getting the alarm "Dynamic ESS error code: No matching schedule available" ==== ==== Q: I am getting the alarm "Dynamic ESS error code: No matching schedule available" ====
 +The cases this alarm can be triggered are:
 +  * the system does not have a valid schedule for the current time frame
 +  * the system clock is off
 +
 In most cases your systems clock has drifted such that it cannot find a matching schedule. Usually the GX device will synchronize the time with a NTP server, but your network setup might refrain the GX device from reaching a time server. Please check your time setting / manually set it to the correct time. In most cases your systems clock has drifted such that it cannot find a matching schedule. Usually the GX device will synchronize the time with a NTP server, but your network setup might refrain the GX device from reaching a time server. Please check your time setting / manually set it to the correct time.
 +Users running Dynamic ESS on a Raspberry Pi will see this error more frequently because the Raspberry Pi does not have a realtime clock. Which means that it usually takes a while for these to get back on track with the correct time after a boot. The alarm should disappear once the time is correct again.
  
 This alarm can also occur when DESS automatically switches to ESS because the SOC is below the min SOC level. This alarm can also occur when DESS automatically switches to ESS because the SOC is below the min SOC level.
- 
 ==== Q: I am getting the alarm "Dynamic ESS error code: ESS functionality not available" ==== ==== Q: I am getting the alarm "Dynamic ESS error code: ESS functionality not available" ====
 This probably means that you once activated Dynamic ESS and are no longer using it. In order to fully disable it, you need to set the `com.victronenergy.settings`, path `/Settings/DynamicEss/Mode` to `0`. This probably means that you once activated Dynamic ESS and are no longer using it. In order to fully disable it, you need to set the `com.victronenergy.settings`, path `/Settings/DynamicEss/Mode` to `0`.
Line 325: Line 359:
  
 Decreasing the minimum SOC does not affect the performance of DESS negatively. However, when the minimum SOC is increased (above the current SOC), it might require the battery to be charged manually since Dynamic ESS is not designed to operate when current SOC is below the minimum. Decreasing the minimum SOC does not affect the performance of DESS negatively. However, when the minimum SOC is increased (above the current SOC), it might require the battery to be charged manually since Dynamic ESS is not designed to operate when current SOC is below the minimum.
 +
 +==== Q: The energy graph is showing incorrect data ====
 +
 +Sometimes the graph shows that energy was taken from the grid. When looking at the installation data graphs, it shows that the energy actually came from PV yield. This is caused by a known misleading assumption with the Energy graph: It assumes if there is more production than consumption, all consumption is met by production and the other way around: if there is more consumption than production, then all the production goes to consumption.
 +
 +This is quite an assumption but this is how DESS considers it internally, so that’s why the visuals reflect it that way. If we do not have that assumption, the energy graph would be even more complicated. If you want to know the exact source of the energy, you should look at the installation data graphs (grid, solar and consumption). 
 +
 +==== Q: I can't find the controls button on the dashboard ====
 +
 +You probably have //Realtime updates// switched off. You can switch it on via //Settings -> General -> Realtime updates//.
 +
 +Note that the dashboard should show: //Last updated:// **Realtime**
 +
 +==== Q: I get the error message "Dynamic ESS error code: Battery capacity unset" ====
 +
 +This error can happen when the Dynamic ESS system starts before we were able to communicate the battery capacity from VRM to the GX device. It will go away as soon as you restart Dynamic ESS or the GX device.
drafts/dynamic_ess.1708349753.txt.gz · Last modified: 2024-02-19 14:35 by dfaber

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki