Earth Notes: 16WW Eddi PV DHW Diverter Export Margin Analysis (2022-08)
Updated 2024-02-22.Abstract
Keywords
UK, London, Kingston-upon-Thames, domestic, behind-the-meter, storage, heat, heat battery, solar, PV, diversion, eddi, grid, export, margin, modelling
Introduction
The author's home (16WW) is to the south-west of Greater London (UK), where he lives with his family (partner and two children). It was built in the late 1960s, and is of timber frame construction. Over many years efforts have been made to reduce the home's carbon footprint, such as by changing some habits (fewer hot baths), replacement (after repairs) with more appliances such as fridge/freezer, moving some consumption off-grid, internal wall insulation with aerogel, and loft insulation, installation of solar PV, etc. Also, improved self-consumption of the solar PV generation with storage, and reduction of local gas burn though replacement of a gas cooker with induction hob and fan oven, and lately solar PV diversion to a heat battery to cover a significant fraction of DHW (Domestic Hot Water) demand.
As of 2022-08, 16WW's energy system (see Figure 2): includes:
- ~5.2kWp of grid-tied PV, generating about twice our year-round electricity demand, excluding diversion for DHW
- Enphase grid-tied battery system ~1kW/5kWh, essentially autonomous
- Eddi solar PV diverter and Thermino 150 heat battery (~7kWh capacity)
Noting that:
- whenever there is any excess spillable energy (outside of winter) there is often lots of excess over the day
- the Thermino seems to benefit from being charged slowly
- diversion sometimes happens at times of grid stress, eg 4pm onwards, when it might be better to spill that energy to the grid
- (charging the Thermino is now separately temporarily paused when low grid frequency is detected; raising the margin will slightly reduce the pauses' delta)
it seemed that it might be possible to tune the Eddi's Export Margin setting to allow more spill to grid (especially valuable at peak-demand times) without significant loss of DHW capture from diversion. This helps minimise direct gas burn at 16WW, which if done right should reduce CO2 emissions overall, and avoid funding a war in Ukraine.
Using a larger/higher Export Margin may also help ensure that spill-to-grid is only curtailed when many other PV systems may also be spilling, again likely helpful for grid management.
Potential electricity-grid-friendly behaviours include:
- reducing overall consumption and imports, especially at peak demand times
- reducing all grid flows, both import and export, eg by self-consumption from behind-the-meter storage
- regulating/smoothing grid flows
- exporting/spilling to grid during demand peaks
- reducing export/spill to grid near solar noon when others will be spilling
- providing second-order support such as grid frequency response
A simple modelling exercise was undertaken to try to find an 'optimal' fixed value for the Export Margin. This was enabled by fine-grain data collected over the last few years by the Enphase battery system.
(The Eddi's Export Margin value can only be updated, manually, via a menu on the device, so dynamically-varying value via the API is not yet possible.)
It appears that a much higher margin can be used than was anticipated, which is good.
Method
This analysis uses a simple model of the PV and hot-water system including heat battery. The model is parameterised with nominal and observed values for maximum diversion power (W), mean daily DHW demand including storage and other losses (kWh/d), and heat battery storage capacity (kWh).
Input to the model is measured energy exported to the grid every 15 minutes (Wh) after all other activity (generation, consumption, Enphase battery) for three full calendar years after installation of the battery system and before installation of the Eddi and Thermino diversion system. The export data is from the Enphase system, and is 'meter grade', ie should be reasonably accurate. Overall its measurements do agree closely with the calibrated utility meters: import, export and generation. Over the three years 2019, 2020, 2021 this amounts to 105,216 data points. This exported/spilled energy is potentially available to divert into DHW.
(Background consumption in the home is typically between ~100W and ~200W during the day, when no kitchen wet or cooking appliances are heating.)
Although every year had some special features (see Sensitivities below), including for example coronavirus lockdown and record PV generation in 2020, use of several years' data provides confidence that they are representative.
The model is implemented in a little over 100 lines of Unix-style sh
shell scripts and awk
and very common utilities, and runs on Unix-like systems such as the author's MacBook Air (in ~14s) and Raspberry Pi (in ~43s):
Mac (~2013 MacBookAir6,2; OS 11.6.8; 1.7 GHz Dual-Core Intel Core i7):
% uname -a Darwin localhost 20.6.0 Darwin Kernel Version 20.6.0: Tue Jun 21 20:50:28 PDT 2022; root:xnu-7195.141.32~1/RELEASE_X86_64 x86_64
RPi (3B),
% uname -a Linux sencha 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l GNU/Linux
Minimal resources are required and identical results are generated on each.
Model data and code manifest and licences
- 'Working' copy of analysis script; may change over time.
- Input Enphase monthly 'net energy' reports for this analysis.
- Directory of artefacts for this analysis.
- README for directory of artefacts for this analysis.
- Frozen script version for this analysis.
- Snapshot XZ (LZMA) compressed catenation of all the 2019 2020 2021 Enphase data used in the model for this analysis.
- Default output of analysis run.
- HTML5 table-generating script from output of run; the result can be manually tweaked and copied into an HTML source document such as this one.
- Gnuplot code to generate Figure 1 and variants (images
daily-diversion-vs-export-margin-*
).
The Enphase data is published under a CC0 licence.
The code and other non-data artefacts in the manifest below may be treated as published under an Apache 2.0 licence.
The model outputs are published under a CC0 licence, and possibly need no licence at all as automatically generated from the other elements.
Note that very minor changes (eg a typo fix, addition of licence) have been made to OptExportMargin.20220817.sh since originally frozen. They do not affect the table of results.
(See additional manifest items in the Postscript.)
Model algorithm description
- For each modelled Export Margin value (0W, 50W, 100W ...), which will form a row/record in the results:
- For each 'season' (all year, Mar to Sep, Nov to Jan), which will form a pair of columns in the results:
- Enphase data from the relevant months are catenated in date order.
- Other than gaps because of the Enphase system being down, or daylight savings time changes, each recorded day contains 24*4 = 96 samples covering 15 minutes of home/system activity, including non-netted exports to grid in each sample, used in the model.
- The date of each record is used as-is, ie days are in local time for model purposes, so can be 23h or 25h on DST changes as above.
- Counts each 'season' run are kept of the total number of data samples/records, and of the number of those that contained some diversion to DHW (
divSamples
), and of the number of distinct days seen in the data. - An accumulator is kept of total
Wh
(watt.hours) diverted for the 'season'. - As each new day starts in the data a day's worth of DHW demand including losses (
DHWWhPERDAY
) is subtracted from the heat battery store, clamped to 0. Any DHW demand not met from the heat battery will instead be met on the fly from the gas combi and not counted here. (Also at the start of each day is when the day is incremented, and the first day seen increments the day count to 1.) - For each sample in the data, if the current export to the grid in watts (
exportW
) is greater than the modelled Export Margin (em
) and the heat battery is not full (less thanSTOREMAXWh
Wh stored), then the store is topped up appropriately limited to the smaller of either of those implied limits as necessary. (The top-up is also added to the whole-seasonWh
accumulator.) - At end of processing a 'season', the fraction of samples that resulted in some diversion, and the mean kWh per day diverted, are output.
- Enphase data from the relevant months are catenated in date order.
- For each 'season' (all year, Mar to Sep, Nov to Jan), which will form a pair of columns in the results:
Significant simplifications in implementation of this model:
- Daily DHW demand is assumed constant and even.
- Daily DHW demand is assumed to be entirely drawn just after midnight.
- No direct specific allowance is made for losses from storage over time.
The start of each Enphase month data file looks somewhat like:
Date/Time,Energy Produced (Wh),Energy Consumed (Wh),Exported to Grid (Wh),Imported from Grid (Wh),Stored in AC Batteries (Wh),Discharged from AC Batteries (Wh) 2021-12-01 00:00:00 +0000,0,22,0,26,4,0 2021-12-01 00:15:00 +0000,0,17,0,21,4,0
The core of the awk
model algorithm is reproduced below, lightly edited for clarity:
/^20/ { # Data record, starting with a date 20xx-xx-xx. date=substr($1,1,10); if(date != yesterday) { yesterday=date; ++days; storedWh -= DHWWhPERDAY; if(storedWh < 0) { storedWh = 0; } } ++samples; exportWh=$4 exportW=exportWh * 4; # 15 minute samples. if((exportW > em) && (storedWh < STOREMAXWh)) { ++divSamples; maxdivertableW = exportW - em; divertableW = maxdivertableW; # Limit maximum diversion power to element/Eddi capacity. if(divertableW > MAXDIVERTW) { divertableW = MAXDIVERTW; } # Limit by daily demand. headroomWh = STOREMAXWh - storedWh; divertableWh = divertableW / 4; # 15 minute samples. if(divertableWh > headroomWh) { divertableWh = headroomWh; } Wh += divertableWh; storedWh += divertableWh; } } END { printf("%.3f %.2f ", divSamples/samples, Wh/days/1000); }
Note that there is slight trickiness in that the Enphase data and some model parameters are in Wh (watt.hours), whereas other parameters are in W (watts). Conversions that know the sample interval (15 minutes) are necessary in a couple of places.
Model run output
A run of the script produces:
% sh img/analytic/Eddi-Export-Margin-202208/OptExportMargin.20220817.sh ## YEARSTOUSE 2019 2020 2021 ## MAXDIVERTW 3000 ## DHWWhPERDAY 4000 ## STOREMAXWh 7000 #margin-W year-divert-frac year-divert-daily-kWh MarToSep-divert-frac MarToSep-divert-daily-kWh NovToJan-divert-frac NovToJan-divert-daily-kWh 0 0.179 2.70 0.219 3.88 0.073 0.31 50 0.158 2.63 0.205 3.86 0.045 0.25 100 0.151 2.57 0.201 3.83 0.037 0.20 150 0.146 2.52 0.199 3.79 0.031 0.16 200 0.141 2.47 0.196 3.76 0.025 0.13 250 0.137 2.41 0.194 3.72 0.020 0.10 300 0.133 2.36 0.192 3.67 0.016 0.08 350 0.130 2.31 0.190 3.63 0.013 0.06 400 0.127 2.27 0.187 3.58 0.010 0.04 500 0.120 2.17 0.182 3.48 0.006 0.03 750 0.107 1.94 0.169 3.20 0.002 0.00 1000 0.093 1.67 0.150 2.80 0.000 0.00 1500 0.067 1.09 0.114 1.86 0.000 0.00 2000 0.043 0.52 0.073 0.88 0.000 0.00 3000 0.004 0.02 0.007 0.03 0.000 0.00 4000 0.000 0.00 0.000 0.00 0.000 0.00
This estimates mean energy diverted to DHW per day for different Export Margin values (0W, 50W, ... 4000W) and different slices of the year.
The values for this run assume 4kWh/d DHW use (and no losses) and about 7kWh of storage in the Thermino heat battery.
The input data is Enphase-measured export-to-grid values every 15 minutes for 2019, 2020 and 2021.
Reformatted, those results are in Table 1 below.
- Multiple different Export Margin values are examined. The Eddi can set them in increments of 50W. A minimum of 50W or 100W is needed (plus a Response Delay of 5s) for the Eddi and Enphase to work together well. The Export Margin is set through a menu on the device's screen.
- The input data is from the Enphase record of exports after all other activity (PV generation, in-home consumption, battery charge/discharge) for 2019, 2020, 2021 at 15-minute granularity.
- Multiple slices of the year are examined:
- The whole year (all twelve months).
- March to September inclusive (seven months) where the bulk of DHW demand is expected to be covered by diversion, and indeed ~3.8kWh/d out of ~4kWh/d gross demand is met this way. Eddi and pipework losses, and small gas consumption from tiny boiler firings while the Thermino temperature is being tested, and all ignored here.
- November to January inclusive (the months) where insolation is minimal and no significant diversion for DHW is expected.
- The "Time %" figure is what fraction of (15-minute) slots energy was being diverted for DHW for in this model: ~5h/day in the summer at the 100W margin in place at the start of 2022-08.
- The "Mean kWh/d" is the arithmetic mean diverted PV energy for DHW per day over the relevant slice of the year.
All Year | Mar to Sep (bulk) | Nov to Jan (worst) | ||||
---|---|---|---|---|---|---|
Export Margin | Time | Daily | Time | Daily | Time | Daily |
W | % | kWh/d | % | kWh/d | % | kWh/d |
0 | 17.9% | 2.7 | 21.9% | 3.9 | 7.3% | 0.3 |
50 | 15.8% | 2.6 | 20.5% | 3.9 | 4.5% | 0.2 |
100 | 15.1% | 2.6 | 20.1% | 3.8 | 3.7% | 0.2 |
150 | 14.6% | 2.5 | 19.9% | 3.8 | 3.1% | 0.2 |
200 | 14.1% | 2.5 | 19.6% | 3.8 | 2.5% | 0.1 |
250 | 13.7% | 2.4 | 19.4% | 3.7 | 2.0% | 0.1 |
300 | 13.3% | 2.4 | 19.2% | 3.7 | 1.6% | 0.1 |
350 | 13.0% | 2.3 | 19.0% | 3.6 | 1.3% | 0.1 |
400 | 12.7% | 2.3 | 18.7% | 3.6 | 1.0% | 0.0 |
500 | 12.0% | 2.2 | 18.2% | 3.5 | 0.6% | 0.0 |
750 | 10.7% | 1.9 | 16.9% | 3.2 | 0.2% | 0.0 |
1000 | 9.3% | 1.7 | 15.0% | 2.8 | 0.0% | 0.0 |
1500 | 6.7% | 1.1 | 11.4% | 1.9 | 0.0% | 0.0 |
2000 | 4.3% | 0.5 | 7.3% | 0.9 | 0.0% | 0.0 |
3000 | 0.4% | 0.0 | 0.7% | 0.0 | 0.0% | 0.0 |
4000 | 0.0% | 0.0 | 0.0% | 0.0 | 0.0% | 0.0 |
Discussion
16WW energy subsystems
Initial observations
The experience implied in the Mar-to-Sep columns of Table 1 accords fairly well with lived experience: virtually all of our DHW demand has been covered by diversion since the Thermino was installed 2022-03 up to time of writing (2022-08). The Export Margin has been set no higher than 100W during this time. (Some of the residual gas use of ~0.5kWh/d can be attributed to the combi firing up while the Intasol senses if the Thermino is hot enough to supply directly.)
Diverted energy drops to zero at an Export Margin of 4000W, because PV generation from the east- and west- facing system (minus in-home consumption) never exceeds that.
DHW demand (or rather electricity input, so including losses) was close to 4kWh/d for the first couple of full Thermino months, as it has been historically for some time based on gas demand, eg in summer. It then headed downwards as some family members were away some of the time, and as we headed into UK record-breaking temperatures in 2022-07 (~40°C).
At time of writing the Nov-to-Jan period has not been experienced with the Eddi/Thermino in place, but the current system design anticipates the model prediction of no useful diversion available. Over this period (indeed, outside Mar-to-Sep) the Thermino will be boosted by low-carbon-intensity electricity opportunistically, ie if/when available.
The model output suggests that a little over half (~2.7 of ~4.0 kWh/d) of year-round DHW demand could nominally be covered by diversion, at minimal/no Export Margin. That fraction stays over 50% until a margin of somewhere between 500W and 750W.
Looking at the 'All Year' outputs, if dropping 10% of DHW coverage from now to be nicer to the grid were reasonable, then that suggests increasing the Export Margin from the current 100W, yielding a mean ~2.6kWh/d, to somewhere between 400W and 500W for ~2.3kWh/d. That looks more like a drop of ~7% (3.8 to 3.5+ kWh/d) in the Mar-to-Sep figures. This would all be at a cost of more unwanted local gas burn, though the daily difference in each case is less than the current residual burn.
This suggests an initial target of a fixed 400W the Eddi's export margin, with more than half of year-round DHW demand met without local gas burn, and ~90% of Mar-to-Sep demand. In return the grid seems 4x more spill when diversion is happening, which is good for reducing demand elsewhere.
There would probably be value in modelling against fine-grained grid CO2 intensity to see if that suggests a different Export Margin. There may be a local minimum of overall CO2 emissions, rather than the monotonic trade-off against gas use as (unexpectedly) implied by these model results.
Expectations vs reality
- Expected:
divert-frac
values (ie time spent diverting) would rise with increasing margin, at least some of the time; in reality not, presumably because the margin is a relatively small fraction of the available power much of the time. - Expected: an Export Margin of ~200W would be acceptable ie without significant loss of diversion; in reality even 400W or 500W may be acceptable.
Generalisable
This analysis was intended to help optimise one specific installation, with detailed and lengthy historical data for the site already available.
However, the analysis might be reasonably generalised to take a typical 'weather tape' from PVGIS or similar, for a particular lat/lon, and combine it with a PV array kWp (peak output) and direction and slope, to make a plausible advanced settings guide, eg for myenergi's Eddi pages.
Sensitivities
Some potential unwanted sensitivities to details of the data are briefly examined here.
To 2020: lockdown and record PV
Sensitivity to lockdown and record PV generation in 2020 can be estimated by omitting it from the years of data used:
## YEARSTOUSE 2019 2021 ## MAXDIVERTW 3000 ## DHWWhPERDAY 4000 ## STOREMAXWh 7000 #margin-W year-divert-frac year-divert-daily-kWh MarToSep-divert-frac MarToSep-divert-daily-kWh NovToJan-divert-frac NovToJan-divert-daily-kWh 0 0.177 2.70 0.219 3.86 0.068 0.30 50 0.157 2.64 0.206 3.83 0.041 0.24 100 0.150 2.58 0.201 3.80 0.034 0.19 150 0.145 2.52 0.199 3.76 0.028 0.16 200 0.140 2.47 0.195 3.71 0.023 0.12 250 0.137 2.41 0.192 3.67 0.020 0.10 300 0.133 2.36 0.190 3.62 0.016 0.08 350 0.130 2.31 0.188 3.58 0.012 0.06 400 0.126 2.26 0.185 3.53 0.010 0.05 500 0.120 2.15 0.179 3.42 0.006 0.03 ...
Comparing with some key rows from the original/default run:
## YEARSTOUSE 2019 2020 2021 0 0.179 2.70 0.219 3.88 0.073 0.31 50 0.158 2.63 0.205 3.86 0.045 0.25 100 0.151 2.57 0.201 3.83 0.037 0.20 400 0.127 2.27 0.187 3.58 0.010 0.04 500 0.120 2.17 0.182 3.48 0.006 0.03
The results are very similar, ie typically within ~±1%. 400W or 500W as a new Export Margin would still see ~10% lost diversion vs 100W.
To 2021: Enphase battery storage expanded
Sensitivity to the installation of extra Enphase storage in 2021Q4 (quadrupling of W and Wh) can be checked by omitting 2020 or using just 2019. It should have little effect as late in the year when there is little divertable anyway.
## YEARSTOUSE 2019 2020 0 0.181 2.77 0.214 3.91 0.091 0.43 50 0.162 2.70 0.202 3.89 0.062 0.35 100 0.155 2.64 0.199 3.86 0.050 0.28 400 0.129 2.33 0.188 3.65 0.014 0.07 500 0.122 2.24 0.183 3.57 0.009 0.04
## YEARSTOUSE 2019 0 0.182 2.85 0.208 3.89 0.101 0.53 50 0.165 2.78 0.201 3.86 0.070 0.43 100 0.158 2.71 0.197 3.83 0.059 0.35 400 0.131 2.38 0.183 3.62 0.018 0.09 500 0.124 2.27 0.177 3.53 0.012 0.06
Interestingly both these slices have some significant result differences, in particular Nov-to-Jan nominal diversion is higher without 2021 either way. This may be from better self-consumption in Nov/Dev of 2021 with the expanded Enphase system, or just the higher vampire load of the new AC Battery units, leaving less to divert.
Loss of diversion going from 100W margin to ~400W is maybe a little higher, but still ~10% (though less diversion loss in Mar-to-Sep).
To storage capacity
In this model, the ability of the system to divert energy is strictly limited by the storage capacity, because all the DHW energy draw-off happens just after midnight, when the sun is not shining to replenish the store.
For example, running the model with STOREMAXWh at 1000 (Wh) results in:
## YEARSTOUSE 2019 2020 2021 ## MAXDIVERTW 3000 ## DHWWhPERDAY 4000 ## STOREMAXWh 1000 #margin-W year-divert-frac year-divert-daily-kWh MarToSep-divert-frac MarToSep-divert-daily-kWh NovToJan-divert-frac NovToJan-divert-daily-kWh 0 0.098 0.76 0.108 0.97 0.067 0.27 50 0.081 0.74 0.096 0.97 0.042 0.22 100 0.077 0.72 0.095 0.96 0.034 0.18 150 0.074 0.70 0.093 0.96 0.029 0.14 200 0.071 0.69 0.091 0.95 0.024 0.11 ...
With Mar-to-Sep (best) daily diverted kWh/d limited to just less than 1kWh.
It does not make sense to have STOREMAXWh less than DHWWhPERDAY with this model.
The advantage of a STOREMAXWh larger than DHWWhPERDAY is to allow for uneven/variable daily DHW demand (not relevant in this model) and uneven/variable PV generation to carry energy into dull days.
Pushing STOREMAXWh up to 100000Wh (100kWh, nearly a month's DHW demand) gives:
## YEARSTOUSE 2019 2020 2021 ## MAXDIVERTW 3000 ## DHWWhPERDAY 4000 ## STOREMAXWh 100000 #margin-W year-divert-frac year-divert-daily-kWh MarToSep-divert-frac MarToSep-divert-daily-kWh NovToJan-divert-frac NovToJan-divert-daily-kWh 0 0.189 2.99 0.228 4.13 0.073 0.31 50 0.168 2.94 0.214 4.13 0.045 0.25 100 0.161 2.88 0.211 4.12 0.037 0.20 150 0.157 2.83 0.210 4.11 0.031 0.16 200 0.152 2.78 0.208 4.10 0.025 0.13 ...
This pushes up annual diversion ~10%, and even pushes Mar-to-Sep diversion over the nominal 4kWh/d demand because it allows carrying energy forward from the end of the 'season'.
There's no change in the Nov-to-Jan slot because there simply is not much divertable energy to use within any one day, never mind carry forward.
Pushing STOREMAXWh up to a more moderate 10000Wh (10kWh, about 2.5 days' DHW demand) gives:
## YEARSTOUSE 2019 2020 2021 ## MAXDIVERTW 3000 ## DHWWhPERDAY 4000 ## STOREMAXWh 10000 #margin-W year-divert-frac year-divert-daily-kWh MarToSep-divert-frac MarToSep-divert-daily-kWh NovToJan-divert-frac NovToJan-divert-daily-kWh 0 0.180 2.73 0.221 3.93 0.073 0.31 50 0.159 2.67 0.207 3.91 0.045 0.25 100 0.152 2.61 0.203 3.89 0.037 0.20 150 0.148 2.56 0.202 3.86 0.031 0.16 200 0.143 2.51 0.199 3.83 0.025 0.13 ... 400 0.128 2.31 0.190 3.66 0.010 0.04 500 0.122 2.23 0.186 3.58 0.006 0.03 ...
That raises year-round diversion by ~1%, and Mar-to-Sep diversion at 100W by ~1.5%, at 500W by ~3%.
Some storage beyond a day's demand helps diversion a little, but is not magical.
To maximum diversion power
In this model's default parameters the MAXDIVERTW max diversion power is 3000W. This is approximate peak power actually observed, with a typical mains voltage of 245V. The nominal Thermino heating element rating is ~2800W at 230V (~20Ω).
Reducing element rating, and thus maximum diversion power, to a trickle at 100W gives:
## YEARSTOUSE 2019 2020 2021 ## MAXDIVERTW 100 ## DHWWhPERDAY 4000 ## STOREMAXWh 7000 #margin-W year-divert-frac year-divert-daily-kWh MarToSep-divert-frac MarToSep-divert-daily-kWh NovToJan-divert-frac NovToJan-divert-daily-kWh 0 0.304 0.66 0.433 0.97 0.073 0.11 50 0.273 0.62 0.402 0.93 0.045 0.09 100 0.260 0.60 0.386 0.90 0.037 0.07 150 0.248 0.57 0.374 0.86 0.031 0.06 200 0.237 0.55 0.360 0.84 0.025 0.0 ...
This greatly reduces the possible diversion to over only ~25% of demand Mar-to-Sep for example.
Reducing maximum diversion power to a more reasonable 1000W (1kW) gives:
## YEARSTOUSE 2019 2020 2021 ## MAXDIVERTW 1000 ## DHWWhPERDAY 4000 ## STOREMAXWh 7000 #margin-W year-divert-frac year-divert-daily-kWh MarToSep-divert-frac MarToSep-divert-daily-kWh NovToJan-divert-frac NovToJan-divert-daily-kWh 0 0.202 2.66 0.258 3.86 0.073 0.31 50 0.181 2.60 0.244 3.83 0.045 0.25 100 0.174 2.54 0.240 3.80 0.037 0.20 150 0.169 2.49 0.238 3.76 0.031 0.16 ...
This only slightly impacts diversion (<1%), but does push up diversion time fraction a little. This suggest that it may be worth capping diversion power with other Eddi facilities as that might further help the grid.
Raising maximum diversion power to a power-shower level of 10000W (10kW) gives:
## YEARSTOUSE 2019 2020 2021 ## MAXDIVERTW 10000 ## DHWWhPERDAY 4000 ## STOREMAXWh 7000 #margin-W year-divert-frac year-divert-daily-kWh MarToSep-divert-frac MarToSep-divert-daily-kWh NovToJan-divert-frac NovToJan-divert-daily-kWh 0 0.179 2.70 0.219 3.88 0.073 0.31 50 0.158 2.63 0.205 3.86 0.045 0.25 100 0.151 2.57 0.201 3.83 0.037 0.20 150 0.146 2.52 0.199 3.79 0.031 0.16 200 0.141 2.47 0.196 3.76 0.025 0.13 ...
This does not raise daily diversion, and indeed indicates that the existing 3kW element is rarely if ever running at maximum power.
To demand and losses
There is no heat meter fitted for 16WW DHW, so all estimates of DHW demand are actually taken from energy inputs, from gas or/and lately electricity.
If DHW demand reduces as it did during a very hot July to about 3kWh/d (including residual gas use, 2022-07) this gives:
## YEARSTOUSE 2019 2020 2021 ## MAXDIVERTW 3000 ## DHWWhPERDAY 3000 ## STOREMAXWh 7000 #margin-W year-divert-frac year-divert-daily-kWh MarToSep-divert-frac MarToSep-divert-daily-kWh NovToJan-divert-frac NovToJan-divert-daily-kWh 0 0.161 2.14 0.191 2.98 0.073 0.31 50 0.141 2.10 0.178 2.97 0.045 0.25 100 0.134 2.05 0.174 2.95 0.037 0.20 150 0.130 2.01 0.172 2.94 0.031 0.16 200 0.125 1.97 0.170 2.92 0.025 0.13 ...
As to be expected, diversion falls to (very nearly) cover the reduced demand Mar-to-Sep, and year round, though a slightly higher proportion of year-round DHW demand is now met (71% vs 68%).
If DHW demand is doubled (and storage in proportion), this gives:
## YEARSTOUSE 2019 2020 2021 ## MAXDIVERTW 3000 ## DHWWhPERDAY 8000 ## STOREMAXWh 14000 #margin-W year-divert-frac year-divert-daily-kWh MarToSep-divert-frac MarToSep-divert-daily-kWh NovToJan-divert-frac NovToJan-divert-daily-kWh 0 0.234 4.62 0.313 7.15 0.073 0.31 50 0.212 4.51 0.297 7.05 0.045 0.25 100 0.204 4.41 0.292 6.94 0.037 0.20 150 0.198 4.30 0.288 6.83 0.031 0.16 200 0.192 4.20 0.283 6.71 0.025 0.13 ...
In this case Mar-to-Sep demand coverage drops getting on for 10% (from ~97% to ~89% at a nominal 0W margin), but not catastrophically. This implies that there is quite a lot of headroom still in the system, and there is no obvious non-linear cliff-edge in behaviour looming.
Further Work
There are many dimensions in which this simple model could probably be improved. Whether such improvements are worth the extra complexity is hard to know. The current model may already be more complex than is worthwhile, eg eliminating the explicit storage component (and max diversion power) and instead simply limiting daily Wh as a previous version did, may be a better trade-off for little loss of accuracy.
It may be worthwhile modelling realistically-timed heat withdrawals from the battery; not all just after midnight as now.
It may be worthwhile modelling realistically-variable daily DHW use.
It may be worthwhile modelling storage losses explicitly.
There would probably be value in modelling against fine-grained grid CO2 intensity to see if that suggests a different Export Margin. There may be a local minimum of overall CO2 emissions, rather than a monotonic trade-off.
It would be useful to consider a system where the Export Margin can be adjusted in real-time. Maybe only a little or only in one direction, to ensure correct interoperation with other parts of the system. Should the margin be pushed up a little when the grid is 'red' (under stress) and/or as the heat battery nears/passes nominally full? Could this be improved with a solar PV nearcast to optimise results? If so, what should the base and deltas be?
2023-12-03: wish list
The useful residue of my TO-DO list:
- sonify diversion at different margins
- create Rust version of model
Effort Note
In a joking aside I told someone on a call that it took maybe an hour or three to write the first version of the model (once I realised that I had all the data I needed already), then about a day to debug it (mixing Wh and W was far too easy in one place), then about three days to write it up here to a decent standard. (And I will continue to tinker with the on-line version as needed...)
Then it took about 30 seconds to change the Eddi settings. Then a couple of days to observe the initial effect of the change.
Conclusions
All models are wrong, but some are useful.
Though this model is simple, it seems to reasonably match observations so far, and is generally plausible.
It seems possible to spill much more to grid while diverting, eg to help the grid when the Eddi happens to be diverting at high grid demand. As of writing the Export Margin is 100W. This model suggests that setting it to 400W will barely impact DHW support from diversion. 400W is higher than a lot of winter-time PV generation for 16WW!
As as result of this work the Eddi's Export Margin (and Export Threshold) will be raised to 400W by the end of and the system's behaviour observed. If DHW diversion seems to be curtailed too much then this may be reduced a little.
Postscript
2022-08-26: Observations
2022-08-29: Diversion by hour
A script carefully derived from the main one to preserve model behaviour computed mean diversion (W) each hour (UTC) with an 400W Export Margin:
% sh img/analytic/Eddi-Export-Margin-202208/OptExportMarginDiversionProfile.sh.20220829.sh
## YEARSTOUSE 2019 2020 2021
## MAXDIVERTW 3000
## DHWWhPERDAY 4000
## STOREMAXWh 7000
## MARGINW 400
#h 06 09 12
00 0 0 0
01 0 0 0
02 0 0 0
03 0 0 0
04 0 0 0
05 18 0 0
06 130 1 0
07 329 35 0
08 601 159 0
09 853 379 0
10 711 697 0
11 434 791 3
12 260 586 1
13 163 414 0
14 135 232 0
15 62 81 0
16 16 7 0
17 19 0 0
18 2 0 0
19 0 0 0
20 0 0 0
21 0 0 0
22 0 0 0
23 0 0 0
This output is captured and available in diversion-by-hour.txt
.
As validation, summing the 06 (June) column gives a daily mean diverted energy of ~3.7kWh, in line with (Mar-to-Sep) values computed previously.
% sh img/analytic/Eddi-Export-Margin-202208/OptExportMarginDiversionProfile.sh.20220829.sh | awk '! /^#/ {sum+=$2} END {print sum}' 3733
Re-running with with the previous Export Margin of 100W yields:
## YEARSTOUSE 2019 2020 2021 ## MAXDIVERTW 3000 ## DHWWhPERDAY 4000 ## STOREMAXWh 7000 ## MARGINW 100 #h 06 09 12 00 0 0 0 01 0 0 0 02 0 0 0 03 0 0 0 04 1 0 0 05 102 0 0 06 268 12 0 07 521 122 0 08 816 320 0 09 825 612 0 10 491 936 6 11 338 759 36 12 170 500 27 13 128 323 11 14 120 231 2 15 48 79 0 16 28 7 0 17 33 1 0 18 9 0 0 19 0 0 0 20 0 0 0 21 0 0 0 22 0 0 0 23 0 0 0
Plotting the above yields Figure 4 below.
The diversion peaks are pleasingly close to solar noon (closer and lower in the September shoulder month than at the 100W original Export Margin), requiring the grid to accept significantly less 16WW solar spill/export when other generators are likely to be spilling at their peak output.
2022-09-05: cowardice: 350W
Given the consistently higher (by more than 50W) export reading by the Enphase than the Eddi, (on an overcast day with poor generation and a half-full Thermino) the Export Margin (and Threshold) was lowered to 350W nominal, which is estimated to be just over 400W actual.
Additional manifest
Additional manifest items created for the postscript include:
- Diversion-by-hour analysis script at
OptExportMarginDiversionProfile.sh.20220829.sh
- Diversion-by-hour analysis results in:
diversion-by-hour.txt
. - Diversion-by-hour analysis gnuplot Gnuplot code to generate Figure 4 and variants (images
diversion-by-hour-*
).
Licensing is the same as described for other items in the manifest.
There is a 2022-09-03 dataset snapshot on GitHub also frozen as V1.0.0 and available via DOI (Count: 2)10.5281/zenodo.10252415
[hart-davis2022margin]. References