Earth Notes: On Solar DHW, Sunamp, PV Divert

Updated 2024-04-25.
Green solar hot water. #solar #DHW #PV
If I were applying for government funding I'd call this a cross-vector hybrid time-shifting storage-based DHW carbon-reduction scheme. Which means that I shift some load from the gas grid to the electricity system to make domestic hot water, while cutting CO2 emissions.

Product: Sunamp Thermino 150 ePV

Sunamp Thermino 150 ePV 20220318 installation
Sunamp Thermino ~150l-equivalent (142l) heat battery electrically charged
  • Brand:
  • Energy consumption: EU efficiency category: C
  • Colour: white
  • Weight: 136kg
  • Height: 640mm
  • Width: 365mm
  • Depth: 575mm
Review summary
  • Sunamp Thermino 150 ePV
  • Our Thermino has been in place over six months to October 2022, and has worked quietly and flawlessly, and enabled us to almost stop using any gas over the summer for our hot water.

    Now moving into winter, it is being used to capture low-carbon electricity when the grid is windy, again displacing gas.

    When our combi was not working for 10 days, the Thermino provided all our hot water instead!

    Note that the energy rating seems to have been A+, but after the rescaling was C as on the UK and EU ratings stickers delivered with the unit.

  • Pros:
    • essentially silent
    • fit and forget
    • stores heat for more than a day's hot water
    • much more compact and efficient shape than a conventional hot water tank
    • holds heat for several days
    • gets at most slightly warm to the touch
    • needs no active management by the rest of the household
  • Cons:
    • heavy when installing; cannot be moved 'empty' like a conventional hot water tank
    • would be good to have published official APIs and integrations, eg serial or MODBUS, even if just for monitoring and managing state of charge (SoC)
  • Rating: 4.5/5
  • Published:
  • Updated:

Summary Questions and Answers

Why install a Sunamp UniQ/Thermino heat battery?

To try to reduce our carbon footprint, reduce flows of energy from (and to) the grid, and understand how different forms of storage play together. Basically we get to burn less stuff and stay comfortable.

Will a heat battery save lots of money?

No. I expect it to be roughly a wash on our bills in summer. Every gas unit that we don't pay to import will be balanced by about one electricity unit that we won't get paid to export. In winter, charging the thermal battery from the electricity grid will be significantly more expensive than using gas.

What are some other names for heat battery?

Thermal battery, thermal store, thermal energy storage, heat store, hot water tank. A hot water bottle is a (portable) heat battery!

Will this cover all hot water use?

Nearly. I hope to fairly aggressively charge at night in the winter when grid intensity is lower than direct use of gas (which should get easier over time), and so get almost all our (~1MWh/y) DHW use without the combi firing up.

(As of 2020 this was a "no". This was intended to cover DHW for about 75% of the year, not by coincidence when electricity grid carbon intensity is low, lower than burning gas directly. (This aims to shift ~800kWh of ~3200kWh per year of demand away from gas.) The upshot is that in winter our combi will still be providing our space and water heating, but should otherwise get to slumber...)

What is the energy density of the UniQ/Thermino?

The UniQ 9 unit is 365mm x 575mm x 815mm = 0.171m^2 = 171l, and stores 10.5kWh (see UniQ Heat Batteries Reference Manual 2018-07-19 V2.3). Note that approximately 1l of diesel holds the same nominal energy, but this excludes oxidiser and the machinery to extract that energy; energy can only be extracted from this diesel not stored as new diesel made from my PV electricity, so diesel has a nasty one-way carbon cost. (See some other energy density calculations.)

2019-09-27: What, and Why Now?

In this article I describe the process of selecting and installing a (Sunamp UniQ/Thermino) heat battery to take some load off the gas grid for domestic hot water (DHW) while trimming CO2. The aim is not simply to shift that load to the electricity grid. Instead this should reduce outflows from our PV generation otherwise spilled to grid.

This makes sense now that the typical electricity grid intensity in CO2/kWh is similar to or below that from burning gas in our boiler. Also, the Sunamp UniQ is considerably more compact than a hot water tank, and leaks much less heat too. If we can keep much of that DHW energy in the house everyone's a winner.

This heat battery has to play nicely with our other behind-the-meter Enphase AC Battery, and the off-grid storage.

Our boiler is a Potterton Performa 24 gas combi and does not accept pre-heated water. (Though must be good to ~25C since I've measured that at the kitchen cold tap.) Thus I would prefer a CombiSol type arrangement for auto fallback to combi for DHW so that we can never run out of hot water. I would like the option to tweak control settings to allow it to become a stand-alone top-up-at-night job if we do ditch the gas entirely.

I'd also like options to add extra control/override and monitoring, since the data and experience writeup is the primary reason that I'm doing this.

I estimated that PV diversion could cover most of our DHW needs (~4kWh per day) most of the year. That works better with storage of a more than a single day's demand. The storage can then carry heat into a less sunny day from time to time. (That implies at least a UniQ 6 with a bit over 6kWh of storage.) I'd expect us to be automatically almost entirely using gas for DHW Nov/Dec/Jan.

2019-09-28: Basics and Nice-to-Haves?

What are the basics needed?

  • Must not cause any import from electricity grid (unless otherwise overridden).
  • Must not hamper DHW delivery (eg annoy my family) even mid-winter. Ideally should improve flow rate and temperature stability while using UniQ.
  • Must not uglify the kitchen!
  • Must play nicely with the Enphase AC Battery.
  • Must fit into the slightly cramped space and non-vanilla (two generation feeds) system that we have.
  • Must allow the combi to be tested easily for servicing, eg isolate UniQ and allow combi to heat DHW directly from mains.

What would be nice to have, eg for better UX and grid integration?

  • A 'boost' button to manually allow us to top up enough for a bath, ASAP.
  • Indicator of how full the store is.
  • Indicator of input and/or supplied energy to UniQ.
  • Ability to control/monitor remotely from RPi to gather stats such as DHW kWh and to try out more complex control strategies.
  • Ability to adjust 'spill' margin and delay before diversion starts.
  • Ability to adapt control to supply more DHW so eg ensures at least half full with wee-hours top-up from grid, maybe done slowly to reduce grid I2R (I2R) losses.
  • Ability to adapt control to supply all DHW if combi dies, so eg forced on when store nearly empty (maybe slowly at first to reduce grid I2R losses).
  • Autonomously stop diverting when grid frequency drops to/near operational -0.2Hz limit, after a few seconds at most to be useful, to help avoid load shedding and other grid issues.
  • Ability to work alongside a possible future additional UniQ-based solution for central heating (CH) radiators charged at night.
  • 2020-01-26: Ability to monitor various water flows, eg to see how much DHW from UniQ and how much from combi. Would help with estimating when top-up useful too, and actual energy efficiency.


  • It is not a goal to save money.

Some or all of the "nice-to-haves" are out of scope for an initial install. Avoiding making them hard later, if possible, is a goal.

2019-10-10: Space for the UniQ

kitchen boiler cupboard UniQ destination under combi

I took some bad photos with a tape measure in shot to establish the approximate depth (~60cm), height (~100cm), width (~55cm) available under the combi where the UniQ might live. It will mean giving up some valuable goods storage space (our house is small).

I don't yet have a design sketch. I did find some exciting reports of problems with UniQ 'e' models that won't recharge until either 50% or 90% depleted. Sunamp describes the reports as overblown. I am not troubled by them.

I can take a firmware update after install if need be. For my purposes it's not critical, it just reduces the utility of the store if it does not capture all that it could.

2019-10-19: No Design Sketch Yet

I'm still struggling to get any design sketches even though I have spoken to two installers and offered money up-front for the design itself.

2019-12-02: Design Sketch Ahoy!

James Ingram has very kindly produced some initial thoughts for me to digest. Possibly his friends Thermal Battery Solutions could help too.

One element of his suggestion to me is the following outline kit of parts and labour estimate:

System Estimate
ItemCost including VAT (£)
UniQ 6 with element 2100
CombiSol 240
Hydroflow 160
Eddi* 400
Sundries 100
Materials 3000
Labour (2 men, 1 day) 500
Total 3500

He also outlines some positives and negatives for the UniQ scheme:

  • Negatives:
    • High price relative to alternative: a similar main pressure cylinder setup would be cheaper (though fiddler to fit)
    • Weight: UniQ 6 is 105kg, hence the need for 2 men
  • Positives:
    • Space saving
    • Low heat loss
    • New tech early adoption

James lists further ideas in his email (lightly edited), which I am working through the first part of here:

Sunamp UniQ 6 with electrical element.
Width 365 [mm]
Depth 575 [mm]
Height 605 [mm] (footprint does not change with model so upgrade to larger unit just requires additional height, that said if you've only 1m the 9 would be a squeeze at 815 [mm] as you'll need some room for pipework under combi)
Hot water cylinder equivalent 142l (volume at 40 deg C 185l) about 2.5 good baths or running your kitchen tap for very approximately 12 minutes (see
Max flow rate 15 l/min
The UniQ controller is now situated in the unit itself (tech guide is out of date and lacking in a few ways).
There's now a power light and I think there may be a 'full' light, I'd need to check.
Minimum input pressure 1.5 bar but you should have that for your gas combi anyway. Might be worth checking at times of high demand, 6-8pm, also flow rate at that time.
That'll fit into your available space with additional plumbing, and should supply your DHW needs when fully charged (depending on usage, do you have data your DHW usage?)

In response to this I've said:

1) I don't think that we've ever had problems with water pressure or flow rate, not that I'd object to the bath filling a bit faster! Anything specific that I should check?

2) DHW usage is about 3 or 4kWh per day in gas demand, which I have going back some time, down to hourly resolution. We now only use gas for DHW and radiators.

Eg here's a typical month (DHW gas usage by day) before the heating went on:

And here's quite a high demand day (over 6kWh):

James replied:

1. It's probably fine as I mentioned the combi will have a similar minimum requirement. You could do an approximate cold flow rate at cold kitchen tap using a jug and time or flow rate gauge.

2. I was thinking in terms of litres as another way of looking at it but as we know the UniQ 6 stores 7kWh of heat that shows it's suitable for your demand in terms of kWh plus giving potential dull PV day overlap.

Continuing to work through James' huge email, see below 2019-12-15...

Comments and opinions from others very welcome, as I work through this.

2019-12-08: Eddi Diverter API

The Myenergi Eddi looks like a good candidate for solar PV diversion that understands playing nice with a battery.

A few days ago I popped a query into Myenergi's enquiry form:

Is it possible to extract data from the Eddi automatically over (say) Bluetooth or WiFi or USB, as I already do with an Enphase AC Battery and various other devices, for logging and analysis?

After some discussion, today I received a nice email thus:

Although we don't have an officially supported API at the moment, we do have an API which is in Beta and which a number of our users have managed to reverse engineer to very good effect.

Have a look on our forum at

And this thread in particular which will give you a good introduction to what they are up to

In the future we do plan to publish and officially support the API.

I have asked some more questions:

1a) If I buy a unit before your API goes "official", eg by Feb, will I nonetheless be able to tap into the device to get data, and is that likely to stop working eg when you go official?

1b) Is it possible to upgrade the unit in situ to your official API (I'm assuming that I can talk directly to the unit, not via your servers) later?

2) Is the hub or any other equipment required to use this (proto) API?

The Myenergi forum is interesting, but from reading I see that comms would not be local as things stand:

Ah, I see from further reading that the API is to your central servers. I'd vastly prefer something local for a number of reasons, including connection and service reliability, and never imposing an unreasonable load on your servers.

I am able to locally poll my Enphase unit even when the Enphase central servers are unwell, and I don't feel bad about polling every few minutes.

Happily Myenergi responded at 8am (on the 9th)!

  • You can access the data now using the (unsupported) API.
  • The only significant change that we envisage before supporting the API will be to require that user have a key which we will issue when they register
  • The API will continue to be developed with new API calls
  • Yes – you need the myenergi Hub
  • At the moment all calls are routed via the myenergi server. To provide local access directly to the hub requires additional hardware and firmware development
  • You are OK polling our servers every few minutes

2019-12-15: Design Sketch Continued

I'm continuing to work my way through James' email, see 2019-12-02 above...

Sunamp recommend a quality limescale inhibitor as a must and advise using a Hydroflow h38 (see

Do you have a water softener or anything similar already?

We'd also need to fit a small expansion vessel/shock arrestor in the system.

So no, we don't have a water softener (our water is not hard).

According to the Thames Water tool for our postcode, we are in area "KINGSTON SOUTH" and our water is in fact hard at 257ppm of Calcium carbonate (CaCO3).

The HS38 seems a little 'magical' to me. It seems unlikely that anything using 1W and on the outside of a decent copper pipe can do anything meaningful to what is in that pipe, and I'm not seeing linked reports on the product page that would make me change my mind!

under combi 20191215 under combi 20191215


A photo of the cupboard space below the boiler would be useful.

James continues:

Linking it up to your combi boiler is straightforward via a solar-combi diverter valve. This will enable the gas combi to cut in once the store is depleted.

[There are a] couple of diverter valves available on the market. These pretty much fulfil all the functions in that basic schematic I sent you.

  • Grant CombiSOL
  • Intasol Combi

The Intasol outputs 28c to the boiler and I'm not sure if that's adjustable, output is 35-55. The Combisol is 24c – 49c so perfect (that 49 will more than likely be adjustable). It's also cheaper.

There's potential to make up these valves from basic parts to keep cost down but the all in solution seems convenient.

new consumer unit going in during 2010 PV system upgrade

Then he says:

On the electrical side, without much research on the other PV dump options it pretty much looks like the Eddi will do a lot of what you're after (at a price).

I've got an iboost+, it's pretty basic and has a noisy fan, it's 2 output, does what I want but looks very basic compared to the Eddi functionality.

That'll give you export only dump, boost, timed boost, input level control, a 2nd dump circuit and quite a bit more, also looks upgradable perhaps for future grid input/output activity.

All you need is a spare way on your consumer unit, for a new circuit to feed the Eddi and UniQ, worst case scenario we could use the combi boiler spur supply as long as it doesn't overload that circuit.

What distance is it to your CU?

It is ~8m from the CU (there are two spare ways) to the boiler location, around the outside walls of the kitchen.

As James points out:

Only a short run then (and potentially easy if behind kitchen cabinets?). It would be good to put it on its own 16A MCB or RCBO.


The Eddi could potentially go anywhere along [a new] radial run.

As to my possible expansion to cover space heat in future:

Expanding it to do your heating at some point.

It's possible but depends a lot on your load, it would be pricey unless the heat batteries drop significantly in cost over time.

A mix of several larger UniQ units and a small electric boiler would probably be the way to do it. An ASHP using a UniQ unit as a buffer might well be more energy and cost efficient.

2020-01-03: Avoiding Scale Build-up

I did not think that our water was hard, though it seems that I was wrong. We do have the odd scale mark (eg in the bath tub), and our boiler was very different after its heat-exchanger was descaled once!

Given my uneasiness about the HS38, I asked on BuildHub if anyone knew of anything to support its functionality, or for alternatives.

For salt-based softeners, Harvey and TwinTec were recommended. The Harvey is of the order of £900 to buy, it adds sodium to the water so probably best not used for drinking or cooking, requires regular replacement of salt blocks, and takes up a significant fraction of the space of a UniQ. Costs may be partially recovered in increased heating efficiency for hot water, and in the dishwasher and washing machine if downstream. Soft water may gradually undo any scale already laid down. The Harvey does not require electricity.

An alternative suggested is the Combimate which is a phosphate doser, so does not soften, but stops more scale being laid down. At ~£170 and small and with a single annual maintenance step, this seems more in line with my available budget and space. Again, I would not route water to the kitchen cold tap via it. This does add polyphosphates to the water, which, like the salt of (say) a Harvey, has an environmental cost and probably makes waste-water treatment harder.

2020-01-05: DHW After The Combi

Ruminating on what we might do to replace the combi entirely, considering only DHW for the moment, and excluding the possibility of ASHP for the moment (cost, planning and logistics complications)...

I found an instantaneous water heater buying guide which suggests a number of power ranges to support different DHW uses. (It notes that these depend on incoming water not being very cold.) The article's scale ranges from 3.7kW to supply a hand basin, through 5.5kW for a kitchen sink, up to 11kWh to supply a bath. Our current combi is notionally 24kW, and a bath can be run at reasonable lick.

The ~3kW (2.8kW at 230V AC) element in an empty UniQ running as a surrogate instant water heater is clearly going to struggle to do a good job even for the kitchen sink. And running a bath from that would be miserable. So the aim would clearly be to anticipate demand and (eg) top up overnight on low-carbon electricity in the winter months (or otherwise) when diverted PV won't cut it. The 3kW of the Sunamp will not strain our electricity supply. 11kW might, especially if other big users are running at the time such as the oven or kettle or dishwasher.

Looking at this as a fallback, for example the 9.5kW Powerstream Eco Instant Hot Water Heater costs under £120 2020-01-05 (RRP apparently ~£290) and is 160mm x 370mm x 84mm (H,L,D). (Manufacturer's page says A single Powerstream will supply 1 or 2 hand wash basins, or a basin and shower, when installed with the optional RM1 manual mixer accessory. They are not suitable for kitchen sink use, other than for hand washing purposes, and should never be fitted to supply a bath and the manual state The unit MUST NOT be fitted to any type of THERMOSTATIC mixer valve or tap.) Something of that ilk is potentially a cheap backup to provide at least a decent hot shower with no storage losses, if storage runs empty. A device like this may also accept a hot feed direct from the Sunamp, simplifying the plumbing considerably.

Maybe better, at 11kW, though still not claiming to be enough for more than a shower with ~3l/min flow at a lift of 30°C that we might want in winter, Strom SEIH11KTS1 Electrical Touch Water Heater Instant Water Heater 11kW is ~£250 on 2020-01-05, size 385 x 260 x 88mm. This one still not suitable for pre-heated water or thermostatic mixer valves.

Aquahot responded to my enquiry to suggest a model that will accept pre-heated water Maximum inlet temperature of 70°C is suitable for use with pre-heated water from solar heating systems: Zip CEX-U Undersink Instantaneous Water Heater 6.6 - 8.8kW £320 2020-01-06 294 x 177 x 108mm (H x W x D), though again not suitable for thermostatic mixer valves downstream. In this case it would not matter as the UniQ output could be routed directly through with no TMV required. Any UniQ-warmed water that was in the unit would however cool to room temperature, so this is an extra source of loss.

Also worth considering is the Stiebel Eltron DHC-E 8/10 instant water heater, see a thread on BuildHub.

No additional instant heat may be required in any case, given low losses from a UniQ 6 of 700Wh/d, ie max ~250kWh/y, or ~25% of total DHW demand, or roughly £50/y currently. In any case, with some extra feedback from the UniQ, eg the <50% full sensor, it may be possible to do without the combi with the simplest version something like:

  1. Divert spare PV generation until full. (Basic functionality.)
  2. Top up for up to ~1h in the small hours to put up to ~3kWh in the store. This will force some imports even in summer, but ensure that some DHW is available every morning first thing. No enhanced UniQ feedback required; doable with Eddi programming. Better: extend top-up time in winter and/or top up otherwise until 50% full, thus no top-up at all if low use and/or diversion sufficient.
  3. Manual 1h boost at any time. (Can be done from Eddi front panel.)
  4. Top up when <50% full outside 4--7pm peak. (Would need UniQ status output.)
  5. Top up when <50% full entirely locally forced by UniQ controller. (Would need UniQ control and an extra DPDT relay, but nice and simple.)
  6. Top up (slowly — 1kW max?) when near empty, at any time, if combi removed (or grid intensity low), to always have some 'instant' DHW. (Would need UniQ status output.)

Without extra UniQ feedback to force a top-up when in danger of running out, or UniQ local ability to force direct top-up at <50%, the overall system would be considerably less pleasant than the current combi 'always available' behaviour. (Auto top-up at <50% would allow a full bath to be run on demand, with recovery time of somewhere over an hour, which would be fine for 16WW; this would limit PV diversion to ~3.5kWh/d, ie the 'top' 50%.)

(When diverting PV, the system could dynamically — and smoothly! — adjust the amount spilled to grid before diversion. From (say) 50W minimum near noon when the grid may be full of spilled PV, or when all is good and the UniQ is empty to avoid fighting the Enphase AC Battery, up to (say) 500W when the tank is nearly full and/or grid carbon intensity is high to help out the grid when short of RE.)

It seems as if it would be useful to run several parallel mains cables from the CU/diverter to the UniQ in one go to save extra work later:

  • 240V 16A+ cable for UniQ control (plus possible local top-up supply, plus space-heat circulation pump, etc) if existing boiler supply is not suitable.
  • 240V 16A+ cable for diverted power to UniQ 6 for DHW.
  • 240V 16A+ cable for future diverted power to separate UniQ for space heat.
  • 240V lower-power cable primarily for signalling between DHW UniQ and diverter, eg a "getting empty" feedback to force diverter 'boost'.

2020-01-20: Schematic courtesy of Sunamp

Unvented cylinder and Combi pre feed with solar Schematic 002 p2 SA
Schematic for diverter, UniQ and gas combi boiler in correct configuration for 16WW. (Extract from Sunamp PDF, with permission.)

2020-01-26: Likely Formula

I am now reasonably convinced that a solution to do the core opportunistic DHW diversion from PV can work and should be based on the formula:

Eddi + UniQ6 + CombiSol = ~75% of DHW from PV

2020-02-03: Simple Gas Space Heat Replacement

A thought experiment, once the DHW is souped up not to need combi fallback, so I could rip out the combi and disconnect from the gas mains:

  1. The council is determined to pull our place down in a few years, for redevelopment.
  2. We have already greatly reduced gas consumption, from ~9MWh/y (2007) to more like 3.5MWh/y (for a family of four now) of which ~1MWh/y is DHW by my estimates.
  3. Thus there is ~2.5MWh/y of space heat demand over winter.
  4. It would likely be a tremendous pain getting an ASHP installed for reasons, including planning. I'd like to do a heat pump if I sensibly could for many reasons.
  5. Highest mean recent gas demand was 28kWh/d over Jan 2017 with a HDD (12C base) of 248, the highest over several years. Probably 24kWh/d was space-heat.
  6. I want to stop burning stuff, eg gas. I'd like to be grid friendly, eg move demand away from peak.

Why should I not replace the combi gas boiler with a 3kW Willis heater (or possibly two in parallel, one set to a much lower temperature, mainly to help with eg morning start) and circulation pump, guaranteed NOT to run 4pm to 7pm (would probably be enabled 6am to 4pm and 7pm to 10pm ish, called on demand by individual Radbots) and switch to Octopus Agile or similar? Carbon intensity probably up a bit in the short term, OpEx costs probably similar to Ecotricity (eg matching SVT locally, no gas needed any more), CapEx costs very low. System complexity fairly low. Uses more electricity than strictly necessary, which is a clear downside. But upfront (embedded) carbon of ASHP might not be recoverable before house is pulled down anyway.

The rough mean GB grid CO2 intensity for December and January full months was ~220gCO2e/kWh. A little above the notional 190gCO2e/kWh for burning gas. But my official gas boiler efficiency (SEDBUK) is only ~80%, so probably very comparable if I were to put together the Willis system well.

(2020-02-05: an interesting Twitter thread on GB electric heat, EVs, demand diversity, and how the grid will cope.)

(2020-02-07: in response to my considering an electric space-heat system with/out storage and with/out HP, it seems that current pricing rewards just avoiding 4--7pm rather than soaking up the wee hours. We're not rewarding ToU #exergy and #storage yet? a tweet from Greg Jackson Octopus founder: ... sadly the way the energy system works makes "sensible" structure uneconomic. There's currently no "discount" to us for using empty distribution network at night. Solving this would be HUGE.)

2020-02-09: Dear #EnergyTwitter, for the last ~5 years of the life of this house would it be better to keep the current ~80% efficient gas combi for ~2.5MWh/y of space heat, or switch to low-CapEx direct resistance, assuming a heat-pump with CoP ~3 is not reasonably do-able?

Return Willis MVP

2020-05-21: rather than completely replacing the combi, it seems to me that I could put upstream of it, ie in the radiator return pipe, a Willis heater (~£40) set to a slightly higher temperature than the combi's radiator flow temperature. Not so high as to risk damaging the combi. This should then prevent the combi from ever firing if the Willis is on and supplying enough heating power. This gets the benefit of the existing combi's pump, and an immediate automatic fall-back to gas if needed.

The Willis would only be allowed to be on when electricity intensity was lower than gas intensity, and outside of peak electricity demand times, and when there's actual demand being called by Radbots. Maybe the boiler would fire briefly before Willis-warmed water would get to it. Maybe I could even generate a separate advanced call for heat to the Willis so that that effect would be minimised.

This could be cheap and simple enough to do alongside the DHW work, and give me an option to shade over from gas at least in part, whenever good from a carbon point of view.

The Willis could be supplied from the second heating element output on the Eddi, which could also limit power if other big electrical loads are running, such as cooking. This could then all be enabled/disabled remotely from my RPi for the carbon-intensity and grid-peak logic, and even the Radbot heat call. That should also allow tracking of the space heat kWh covered by the Willis.

Taking a sample of plausible heating hours in December 2019 (6am--10pm, excluding grid peak 4pm--7pm) with grid intensity under 190g/kWh, suggests that maybe 10% of all hours (~18% of heating hours) would have worked:

% gzip -d < data/FUELINST/log/201912.log.gz | awk '$1 ~ /T((0[6789])|(1[0123459])|(2[01]))/ && ($2 < 190)' | wc -l
% gzip -d < data/FUELINST/log/201912.log.gz | wc -l

Sample of first eligible slots in 2019-12:

2019-12-06T06:00Z 184
2019-12-07T06:10Z 171
2019-12-07T06:20Z 172
2019-12-07T06:30Z 174
2019-12-07T06:40Z 179
2019-12-07T06:50Z 180
2019-12-07T06:55Z 182
2019-12-07T19:40Z 187
2019-12-07T19:50Z 185
2019-12-07T20:00Z 182

(GBF thread.)

2020-03-31: On Hold

Given the coronavirus lockdown this project is on hold for now as 'non-essential'. It may not happen for a year unless the lockdown is as short as 3 months, in order to be able to catch some of this summer.

The vote for regeneration of the local estate was 512:190 in favour, so this house will almost certainly have been pulled down within a decade. That means any sort of heat-pump is unlikely to be financially viable — or a lifetime carbon saving — as a replacement for the combi.

2020-05-03: Year-round Top-up Thought

In order to minimise DHW carbon footprint through the year while allowing fallback to the combi when the UniQ becomes empty, I could force an electric top-up to the store whenever:

  • grid carbon intensity is significantly less than burning gas directly,
  • the UniQ is (say) less than half full,
  • the grid is not around peak demand (eg 4pm--7pm or 'red'),
  • house demand is not currently high (eg from cooking).

That 'half-full' threshold could be cranked down if lots of PV generation is anticipated soon, so as to leave space for it, or cranked up when little PV spill is expected such as in mid-winter.

If this causes some net imports in summer this will still have saved carbon.

This could attempt a slow top-up (eg 1kW) most of the time, and crank up towards max (3kW) as the UniQ empties, to reduce the need to revert to gas, while keeping grid load low and slow when possible.

If tuned right this should mean that the combi almost never needs to run, particularly as the grid gets greener.

This may not be the best use of green grid energy until we have too much of it (eg regular negative pricing or similar). The algorithm could change to top-up whenever pricing is zero or negative instead, to help absorb excess.

2020-09-18: No Green Voucher For You!

It seems that none of this work is likely to be eligible (at least as primary measures) for the government's £5000 Green Homes Grant voucher scheme.

2021-03-21: DC Dump?

I'm sure that there's something like 500Wh to 1kWh per day in the sunniest six months going unused in the off-grid system from the ~550Wp of large wall-mounted panels.

Perhaps, when the off-grid battery is full, or for any other reason they are being allowed to float to Voc (open circuit) ~37V by the solar controller, that could be tapped.

If the raw output from the panels were to be fed to a nominal 240V 3kWh heating element (~19Ω) it would draw ~70W or ~2A. For 12 hours that would be ~800Wh.

Something as simple as the low voltage dropout that I currently use for my NiMH battery charger, but adapted to trigger just above the maximum power point (Vmpp) of the panels (~28V), could do the trick.

That could then be (say) fed to a UniQ3 upstream of the main UniQ6.

But considering the likely energy available, maybe a well-insulated Willis heater either side of the UniQ6 would work.

Maybe even more simple, would be to power something like a Nikou Car Kettle- Portable 750ml 24V Travel Car Truck Kettle Water Heater (~£26 ex-VAT as of writing) with Auto cut off power when water is boiling or Atyhao 12V / 24V 420ml Car Electric Kettle Travel Tea Mug Water Heating Cup Bottle Holder Vacuum Flasks Thermoses (~£21 including VAT) to keep water hot for tea and coffee off-grid.

I could experiment by monitoring how often such a raw ~28V dump triggered, and how much power it drew. I could add a voltage monitor for the raw PV DC, analogue to an ADC, or capture it via the Morningstar controller.

2021-07-11: Brain Dump

Still not installed. Still planning to get on with it.

Given the observations in Do people with PV panels consume more electricity?, especially the point about energy stores getting full before noon, I might do all of these before (say) 11:00Z and/or when grid intensity is high:

  • Widen the spill to grid (say) from 50W to 250W before diverting.
  • Set a maximum level over which the store should not fill.
  • Set a maximum power at which the store can fill.

All of those help with grid management and making best use of PV generation from a grid point of view. All can be gradual rather than binary. High intensity can be 'red' and/or when over the 190g/kWh for burning gas.

I note that @Zapaman says:

Before the entire Sunamp(s) setup it was ~4.5kWh/d gas. Last summer with Sunamp iPV but no ASHP it was ~1.65kWh/d gas. So yes consistent with a fairly poor boiler efficiency I would estimate.

This was, from other figures, replacing gas kWh with electricity kWh roughly one for one.

2021-09-16: Waste Water Heat Recovery

This month I have replaced my off-grid battery storage and a second grid-coupled Enphase AC battery.

Having gotten those out of the way, I'd like to restart the planning for the UniQ installation.

I may wish to try putting the phosphate dosing device in first, to separate out that complexity and effort and experience.

I am on a webinar today hosted by the SEA (Sustainable Energy Association) presenting results for WWHR (Waste Water Heat Recovery), particularly considering how this interacts with heat pumps.

So maybe I should include WWHR on the existing boiler feed right ASAP to recover heat from shower use (ie when the boiler will be drawing water while hot water is flowing away).

Quote from the session: We tend to shower at about 41°C and get uncomfortable below that.

Things to consider for viability for WWHR:

  • Estimated fraction/kWh DHW for showers for us, possibly recoverable
  • The likely remaining lifetime of 16WW as a building
  • How easy it may be able to get to the bath/shower waste to install
  • How easy it may be able to get to the bath/shower waste to install
  • Capital/install costs of WWHR

We are not a two-long-showers-per-person-per-day household! It seems that between us we maybe only take ~5 showers per week. (Some of us prefer baths for example.) A suggested figure of 2.5kWh/shower (pulled up from the Intarwebs) would imply ~650kWh/year on showers; not all would be recoverable. Note however that avoided gas consumption with the UniQ in pure diversion, assuming ~4kWh/d DHW covered for 6 months of the year is ~720kWh, so WWHR should not be written off prematurely. WWHR should be effective all year and may possibly be more effective in winter with a higher differential temperature between waste water and incoming mains helping heat exchange.

Note that sust-it suggests lower energy per shower, with mid-table and a shower per day coming to ~550kWh/year.

For reference the Showersave Vertical System (QB1-21 / QB1-21C / QB1-21D) seems to retail at somewhere around £500 excluding VAT. Claimed around 60% efficient, assumed to mean 60% heat recovery.

2021-09-18: Carbon Diversion

I just did a quick and dirty check to see when grid intensity has been lower this year than gas per kWh, ie when it would make carbon sense to divert PV generation to a heat store via immersion rather than let it spill to grid and reduce emissions elsewhere.

Picking out samples from 10:00Z to 19:59Z (when we might have some sun), and GB grid intensity <190gCO2e/kWh from the start of 2021 gives:

% cat data/FUELINST/log/live/2021*.log | awk '$1 ~ /T1/ && ($2 < 190)' | head
2021-01-16T10:10Z 162
2021-01-16T10:15Z 165
2021-01-16T10:25Z 169
2021-01-16T10:35Z 172
2021-01-16T10:45Z 173
2021-01-16T10:55Z 177
2021-01-16T11:05Z 178
2021-01-16T11:15Z 177
2021-01-16T11:25Z 174
2021-01-16T11:35Z 174
% cat data/FUELINST/log/live/2021*.log | awk '$1 ~ /T1/ && ($2 < 190)' | tail
2021-08-13T17:55Z 179
2021-08-13T18:05Z 179
2021-08-13T18:15Z 180
2021-08-13T18:25Z 181
2021-08-13T18:40Z 185
2021-08-13T18:45Z 186
2021-08-13T18:55Z 187
2021-08-13T19:05Z 189
2021-08-13T19:15Z 188
2021-08-16T10:05Z 189

So not since mid-August at all given the UK's long wind drought!

If I'm happy to pre-charge the heat store from the grid when intensity is low, things are marginally better!

% cat data/FUELINST/log/live/2021*.log | awk '$1 ~ /T[^1]/ && ($2 < 190)' | tail
2021-08-31T03:45Z 185
2021-08-31T03:50Z 185
2021-08-31T04:00Z 184
2021-08-31T04:00Z 184
2021-08-31T04:05Z 184
2021-08-31T04:10Z 183
2021-08-31T04:15Z 184
2021-08-31T04:20Z 185
2021-08-31T04:25Z 187
2021-08-31T04:35Z 189


% cat data/FUELINST/log/live/2021*.log | wc -l
% cat data/FUELINST/log/live/2021*.log | awk '$1 ~ /T[^1]/ && ($2 < 190)' | wc -l
% cat data/FUELINST/log/live/2021*.log | awk '$1 ~ /T[1]/ && ($2 < 190)' | wc -l

2021-09-27: Progress

Some progress!

Following recommendations from PeopleWhoKnow (I'll save their blushes) I put together a list of a few recommended installers. Thank you both!

I'm on the waiting list to be considered by one installer from a few days ago. Another one called me this evening and is happy in principle to do it. He may visit informally for a pint and a discussion soon.

2021-09-29: Estimate

More progress! I have an estimate in today, along with some practical ideas. Not a million miles from the Before Times estimate...

2021-10-04: Combimate

I'm going to order and have installed ASAP a phosphate dosing (not softening) Combimate. We can get an idea of any pros or cons independent of the rest of the works.

It took many attempts to get exactly one of the right thing in the basket! Someone really needs to fix this UX for a 2-SKU site... Combimate Limescale Prevention Device and Combiphos Starter Pack, 15mm (COM1), £146.00 + £29.20 VAT (£175.20 total before delivery). (Delivery charges are mentioned in very small faint type...) I finally gave up with the on-line system and phoned. There's an extra £10+VAT for delivery.

I am told that a Combimate is made up to order and should be with me next week.

2021-10-11: arrival and fitting

20211011 Combimate during installation under kitchen sink

Combimate has been delivered: neither huge nor heavy!

Our favourite sensible builder has arrived to fit it ! I have paused the dishwasher mid-cycle while the fun happens, and indeed it has been powered down and moved out of the way...

Note that everything except the kitchen (cold) tap is being routed via the Combimate. So the kitchen tap remains direct from the mains, as it is where almost all our drinking/eating water is drawn.

Fitting all the pipework in the confined space under the sink took hours, about 4.5h in total! We also have a belt-and-braces pair of in-line cut-off values and a bypass valve, so we can take the Combimate out of line if we decide that we don't like it for any reason.

Meantime we can keep an eye out for our water behaving less 'hard'.

To-do: the dividing tray was left in place (as if for single-appliance use). That will need to be removed and the full 800g of Combiphos loaded...

2021-10-13: Visit

I had a visit today from a possible installer. We worked through the scheme and checked a few measurements, and have not found any huge barriers yet. This chap can't do the Part P electricals, so I may try to get those done in advance.

My visitor very kindly did a water hardness test at the kitchen tap (bypassing the Combimate) which suggested 220ppm Calcium carbonate (CaCO3). At the bathroom tap (via the Combimate) it was maybe showing 220ppm. Though I don't know if anything that the Combimate does should make a difference to this test. (The test involved titrating 10cm^3 of tap water with a drop at a time from a reagent bottle, at first pink, then going blue when enough is added, 20ppm per reagent drop.) Thames Water's on-line tool suggested 257ppm, so this is in broad agreement.

I may be seeing some signs of Combimate changes, eg soap lathering better in the bathroom. But nothing dramatic.

2021-10-17: Control Thoughts

I continue to ruminate on how best to manage the heat battery.

External variables that I may wish to watch include:

  1. Time-of-day (eg for peak demand times ~4pm to 7pm weekdays).
  2. Grid carbon intensity (current/forecast).
  3. Weather/insolation forecast.
  4. Mains water temperature (from monthly data) to estimate lift energy needed.
  5. Current SoC (State of Charge) of other energy stores (Enphase, maybe off-grid) to more effectively prioritise.

Control parameters that I may wish to set for the Eddi to manage in real-time, or slower via my control software (with a suggested range):

  1. Maximum power delivered to UniQ ([0,3000]W).
  2. Maximum SoC of the UniQ to allow further UniQ charging, slow via software ([0-100]%).
  3. Maximum total power drawn by house to allow UniQ charging ([0,4000]W).
  4. Minimum spill to grid power to allow UniQ charging ([50,500]W).

For example, in the 4pm to 7pm peak demand slot, max UniQ SoC or max power to UniQ could be clamped to 0. (And possibly also the max power drawn by the house, for good measure.)

Being slightly more clever it may make sense to actually boost UniQ max SoC just before the peak-time window, though maybe keep the whole-house power low, to encourage topping-up when grid demand and wholesale cost are often reduced. That helps avoid the grid having to ramp generation steeply. The Enphase Envoy-S on firmware D5.0.34 will not try discharge to support loads for ~4h before 4pm (with a peak time tariff set from 4pm to 7pm), so preloading the UniQ from grid then would not steal Enphase charge.

The initial intent is to set the system up 'vanilla' to heat the UniQ when a default (~50W?) spill is exceeded, up to the maximum 3kW UniQ load if the spill/excess would allow it, without watching any of these external variables.

After tweaking parameters for managing diversion so as to minimise carbon, but still relying on the combi as a fallback, the next step may be to start partly topping up from the grid when intensity is (much) lower than direct gas burn, eg in the wee hours. That will be expensive, with each gas kWh being replaced by an electricity kWh costing ~5x more. It would be good to prevent the Enphase discharging at these times, but that is not yet possible. An alternative workaround might be to charge the UniQ at maximum rate (3kW) to minimise the fraction drawn from the Enphase. Another might be to only pre-charge the Enphase overnight when the Enphase batteries are already empty.

The last stage in this madness could be to manage the UniQ so that the combi is never called on, ie the UniQ is kept full enough to cover reasonable demand. The no-combi version of the peak-time lock-out above might be:

  1. Maximum power delivered to UniQ: 1000W to only allow slow top-up and low demand from grid or reduced spill to grid.
  2. Maximum SoC of the UniQ to allow further UniQ charging, slow via software: 25% to be enough for washing up or a quick shower but not a full bath.
  3. Maximum total power drawn by house to allow UniQ charging: 2000W to basically cut out UniQ charging if there are other big loads such as cooking to limit grid load.
  4. Minimum spill to grid power to allow UniQ charging: 150W to dynamically default to spilling more to grid to reduce grid intensity.

2021-11-26: Thermino

Now that the Thermino is on the horizon (same price and physical size, greater storage capacity), I'll likely be going for one of those rather than a UniQ.

The Thermino PV 150 seems to be the equivalent of the UniQ 6, but I might be able to squeeze in the new intermediate size 180 instead.

2021-12-13: Yet More Thinking

I treat burning gas for heat as 190g/kWh, though it is likely higher for us.

Taking December so far there has been plenty of electricity below that (27%), and enough well below that (~11% below 150gCO2/kWh) to cover any storage losses. The latter is enough to capture ~4kWh (half the Sunamp capacity and a day's average use) at ~2kW. That would reduce I^2R losses, and is well below the maximum that the 3kW element allows.

(I'd like to have the Eddi stop importing to top-up at somewhere below 3kW to save some I^2R, but enough above or below 2kW to allow the top-up load to be distinguished from (say) the dishwasher.)

% cat data/FUELINST/log/live/202112??.log | awk '$2<190' | wc -l
% cat data/FUELINST/log/live/202112??.log | awk '$2<150' | wc -l
% cat data/FUELINST/log/live/202112??.log | wc -l
% cat data/FUELINST/log/live/202112??.log | tail
2021-12-13T16:45Z 278
2021-12-13T16:55Z 278
2021-12-13T17:15Z 279
2021-12-13T17:25Z 279
2021-12-13T17:55Z 278
2021-12-13T18:15Z 285
2021-12-13T19:35Z 293
2021-12-13T20:00Z 296
2021-12-13T20:25Z 301
2021-12-13T20:35Z 301

Most of it is in the wee hours.

So a simple carbon-saving top-up-from-grid algorithm (mainly for winter) might work, ie when all the following are true:

  • if the time is between approx 0:00 and 06:00 (or grid demand is in the bottom quartile?)
  • if the tank is less than half full
  • if the live current grid intensity is available and below 150gCO2/kWh
  • if the Enphase AC-coupled battery is empty (to avoid stealing/churning energy from it, and also as an indication of poor solar generation yesterday and thus likely today)
  • if there is a poor solar forecast for today

2022-01-06T16:00Z: an oddity: the grid has just gone relatively 'green' now, which is unusual for entering the 4pm to 7pm peak-demand period.

For the record: Effective grid carbon intensity for a domestic user is currently 190gCO2/kWh including transmission and distribution losses of 7%.

As of the evening of 2022-01-17 I note that there are a decent fraction of the wee hours this month that have had low enough grid carbon intensity to bank:

% cat data/FUELINST/log/live/202201??.log | awk '/^2022-01-..T0[0-6]/ && $2 < 150' | wc -l
% cat data/FUELINST/log/live/202201??.log | awk '/^2022-01-..T0[0-6]/ && $2 < 950' | wc -l

Note here that I am looking at the first 7 hours of each day, to 06:59, UTC.

But there are many days in a row with no such low-carbon overnight spots, eg none after the 9th up until today the 17th, so 8 days out of 17, under 50%:

% cat data/FUELINST/log/live/202201??.log | awk '/^2022-01-..T0[0-6]/ && $2 < 150 {print substr($1, 1, 10)}' | uniq -c
     42 2022-01-01
     43 2022-01-02
     43 2022-01-03
     43 2022-01-04
     41 2022-01-05
     43 2022-01-07
     35 2022-01-08
     42 2022-01-09

Assuming that storage losses would be outweighed by our gas boiler inefficiency allows us more gas-free days, 12 out of 17:

% cat data/FUELINST/log/live/202201??.log | awk '/^2022-01-..T0[0-6]/ && $2 < 190 {print substr($1, 1, 10)}' | uniq -c
     42 2022-01-01
     43 2022-01-02
     43 2022-01-03
     43 2022-01-04
     41 2022-01-05
     11 2022-01-06
     43 2022-01-07
     43 2022-01-08
     42 2022-01-09
     18 2022-01-11
     42 2022-01-16
     13 2022-01-17

Allowing the battery to fill (to 100% rather than 50%) when the following day is (predicted to be) low sun and high carbon might gain a couple more days, ie get about 14 out of 17 or 80% days' DHW without gas, and reduced CO2.

2022-01-02: The Year It Gets Done

After years of delay, it's all going to happen this year, sure thing!

To maximise the chances of this happening smoothly, I'm simplifying things a little.

Here is a summary of where things are:

  • A Combimate has already been installed to deal with hard water.
  • David S, who knows his Sunamp stuff, has informally agreed to do the Thermino installation and plumbing round our combi.
  • Dave M will project manage, including organising electrical works.
  • Sunamp is putting together a Thermino 150 (or 180 if available) ePV, with data port available for additional monitoring.
  • Sunamp can provide other elements such as expansion vessel, NRVs if required, Myenergi Eddi + Hub, from stock, possibly to all arrive on the same pallet.
  • The TMV that can slowly bleed heat from the Thermino into the combi if not hot enough to send directly to the taps, can be a CombiSol or Intasol (555CSD1 combi solar diverter) I believe.
  • The basic system schematic is as above.
  • The Sunamp unit will need to be installed under the combi within the cupboard unit, preferably retaining some of the shelving.
  • The Sunamp will need to be installed so that the %-full indicator lights are visible easily, eg by opening the cupboard door.
  • The Sunamp will need a local control supply (~3A max?) (and I may want to install an extra Raspberry Pi to talk to the Sunamp); it may be possible to use the existing fan/boiler spur, else a new supply cable will need to be brought round from the consumer unit.
  • An Eddi and Hub will need to be installed near the consumer unit and wired for power.
  • The Hub needs physical Ethernet to the Internet router at all times, and connects to the Eddi through wireless (not WiFi).
  • The Hub could be deployed in the cupboard next to the router, so no wires need be routed through walls for it.
  • A cat 6 Ethernet (or RS423 serial cable) will need to be brought from the existing Raspberry Pi / Internet router to near the Sunamp unit.
  • A 4kW-capable cable will need to be brought round from the Eddi output 1 to drive the immersion heater in the Sunamp unit.
  • It may make sense to bring a second 4kW-capable cable from Eddi output 2 to the boiler cupboard to allow future expansion.
  • It has to be possible to safely isolate the Sunamp so that the combi can be tested independently eg for DHW delivery on demand even when the Sunamp unit is charged and able to supply DHW directly. This should also allow the Sunamp unit to be removed if necessary, while allowing heating and DHW to be provided from the combi.
  • All these works (Sunamp, cabling, etc) should not be visible in the kitchen unless looked for, eg by opening appropriate cupboard doors.


Physical dimensions of some key items:

Sunamp Thermino 150 ePV
h x d x l: 640mm x 365mm x 575mm, weight 139kg; 180 would be slightly taller and heavier; manual [PDF]
Myenergi Eddi
220 x 205 x 87mm (excluding wall bracket), weight 4.3kg (excluding wall bracket); note antenna at top
Myenergi Hub
100 x 100 x 38mm, the packed weight of the Hub (including ancillaries) is 200g as packed

Eddi to Sunamp electrical wiring

eddi wiring
Simplified partial wiring diagram (excerpt from Myenergi Eddi manual: thank you):
  1. Eddi
  2. Mains supply (230V AC from B16 circuit breaker in CU)
  3. Sunamp heat battery
  4. Sunamp heating element (actual rating 2.8kW at 230V)
  5. Isolator (20A double pole)
  • The Sunamp needs its own 3A supply (via 2-pole isolator) from local boiler spur, or brought round from CU.
  • Cable from Eddi to Sunamp heating element should be rated for 16A continuous. This is in the long cable run around the kitchen external walls.
  • Cable (also to be 16A continuous rated) from the second Eddi output is not to be used yet, but may be fed to a second Sunamp unit's heating element in future.
  • The cat 6 Ethernet cable should probably be alongside the 2x Eddi cables to the boiler cupboard for the majority of the route.

2022-01-26: Eddi and Hub

I'm kicking off the next step today by ordering the Eddi and Hub (courtesy of Sunamp) so that we can get all the electricals done up-front long before the Thermino arrives. (£325 + £70 + £20 P&P.)

This may also let me start setting up access from an RPi to the Eddi via the Hub early...

Arrived the following morning: tinkering ahoy!

I've done some unboxing and the equipment seems well made. There is a small piece of paper or similar slightly intruding onto the top-right of the Eddi display, which I shall ask Myenergi about. (I have sent an email to support.)

I'm doing the very first step of setting up the Hub, ie connecting it to my router and power and updating the Hub's firmware. Then I'm turning it off again until I'm ready to set up the Eddi with it.

That went almost according to the instructions (my server light was continuous white during the update process rather than flashing). My server light ended up solid blue (green was the alternative) when everything had settled down, before and after the update.

I have found my account on the forum.

I'm setting up an account to get at my dashboard to be able to have my RPi talk to the Eddi (via the Hub and the Myenergi servers probably). (I don't like registration demanding to know my energy supplier...)

I see this, which means I'm not going to be able to get further yet:

Before you can register a hub (e.g. your home or office), you will need the myenergi hub device to be connected to your router and paired with the 'master' zappi or eddi device.

Also, amongst other things, I'm being asked for a "Registration Code". I have no idea what that is.

2022-01-31: Myenergi support says that I get the registration code from the Eddi once I have paired it with the Hub. Also that no smartphone app is needed since everything can be done via the Web account. Hurrah!

2022-01-29: Randomised Exponential Backoff

Having a bunch of overnight heat-pump / heat-battery / EV start up on precise half-hour blocks to match tariffs is potentially quite an issue for the whole grid and the DNOs.

Newer EV smart chargers apparently randomise start times up to 15 minutes, but that is not enough to manage local capacity.

Dynamically responding to overload with a robust algorithm such as randomised exponential backoff should help. Maybe detecting voltage sag is part of the answer.

Maybe my system can be part of the solution by keeping power draw modest, and by applying a backoff if problems such as sag are seen.

Unless the sag response can be automatically taken care of by the Eddi in real-time, the best I'm likely to be able to reasonably do is observe and react every few minutes.

I'm going to snag the Enphase and mains voltage readings to make this possible. I'll have to know what 'normal' is.

I'll also capture Enphase battery state of charge.

2022-01-30: Initial Control Setup

This computes what percentage full the heat battery should be topped-up to from the grid (if not already that full), based on local hour of day, grid intensity, and a few other factors. (Local grid sag is a reason not to dump, for example, though I don't expect it round here as major redevelopment is starting, and I don't suddenly expect an influx of EV chargers while that happens.)

This requires another component to look at target that this generates, the Thermino state, and then if appropriate force the Eddi to dump energy into the Thermino. This could run anywhere that can see both values.

Though top-up is currently only expected to happen when diversion is not, eg in the wee hours of the morning, it is technically possible if the grid is full of low-carbon 'leccy during the day to override the divert and import from the grid on top of absorbing PV generation.

Heat battery control and DHW control parameters and logs and script.

Insufficiently clamp

I will fit the supplied Eddi current clamp to monitor grid import/export.

Although I intend to use the Eddi's export margin (and possibly export threshold) and response delay parameters to help the Eddi diversion play nicely with the Enphase AC Batteries, it seems that really I should have a second clamp monitoring flow to and from the Enphase and use the "Avoid Drain" mode. Maybe I'll need to buy and retrofit CT2 later.

And we're off...

Here's the first night's log, with a storm raging over the north of the UK...

2022-01-30T22:21Z MT 0 GI 108 IT 100
2022-01-30T22:31Z MT 0 GI 102 IT 100
2022-01-30T22:41Z MT 0 GI 100 IT 100
2022-01-30T22:51Z MT 25 GI 97 IT 100
2022-01-30T23:01Z MT 0 GI 101 IT 100
2022-01-30T23:11Z MT 1 GI 96 IT 100
2022-01-30T23:21Z MT 13 GI 94 IT 100
2022-01-30T23:31Z MT 25 GI 93 IT 100
2022-01-30T23:41Z MT 25 GI 93 IT 100
2022-01-30T23:51Z MT 25 GI 92 IT 100
2022-01-31T00:01Z MT 0 GI 91 IT 100
2022-01-31T00:11Z MT 1 GI 90 IT 100
2022-01-31T00:21Z MT 2 GI 87 IT 100
2022-01-31T00:31Z MT 25 GI 86 IT 100
2022-01-31T00:41Z MT 25 GI 89 IT 100
2022-01-31T00:51Z MT 25 GI 92 IT 100
2022-01-31T01:01Z MT 26 GI 93 IT 150
2022-01-31T01:11Z MT 27 GI 97 IT 150
2022-01-31T01:21Z MT 38 GI 97 IT 150
2022-01-31T01:31Z MT 50 GI 95 IT 150
2022-01-31T01:41Z MT 50 GI 90 IT 150
2022-01-31T01:51Z MT 50 GI 88 IT 150
2022-01-31T02:01Z MT 50 GI 90 IT 150
2022-01-31T02:11Z MT 50 GI 91 IT 150
2022-01-31T02:21Z MT 50 GI 90 IT 150
2022-01-31T02:31Z MT 50 GI 90 IT 150
2022-01-31T02:41Z MT 50 GI 90 IT 150
2022-01-31T02:51Z MT 50 GI 89 IT 150
2022-01-31T03:01Z MT 50 GI 91 IT 150
2022-01-31T03:11Z MT 50 GI 90 IT 150
2022-01-31T03:21Z MT 50 GI 90 IT 150
2022-01-31T03:31Z MT 50 GI 89 IT 150
2022-01-31T03:41Z MT 50 GI 88 IT 150
2022-01-31T03:51Z MT 50 GI 88 IT 150
2022-01-31T04:01Z MT 50 GI 87 IT 150
2022-01-31T04:11Z MT 50 GI 78 IT 150
2022-01-31T04:21Z MT 50 GI 81 IT 150
2022-01-31T04:31Z MT 50 GI 81 IT 150
2022-01-31T04:41Z MT 50 GI 82 IT 150
2022-01-31T04:51Z MT 50 GI 87 IT 150
2022-01-31T05:01Z MT 50 GI 92 IT 150
2022-01-31T05:11Z MT 50 GI 93 IT 150
2022-01-31T05:21Z MT 50 GI 98 IT 150
2022-01-31T05:31Z MT 0 GI 103 IT 101
2022-01-31T05:41Z MT 50 GI 108 IT 149
2022-01-31T05:51Z MT 0 GI 111 IT 101
2022-01-31T06:01Z MT 0 GI 113 IT 100
2022-01-31T06:11Z MT 0 GI 118 IT 100
2022-01-31T06:21Z MT 0 GI 129 IT 100
2022-01-31T06:31Z MT 0 GI 136 IT 99
2022-01-31T06:41Z MT 0 GI 147 IT 51
2022-01-31T06:51Z MT 0 GI 157 IT 99
2022-01-31T07:01Z MT 0 GI 159 IT 50
2022-01-31T07:11Z MT 0 GI 159 IT 50

There is some smoothed (dithered) ramp up and down visible.

Also a glitch/'feature' just after midnight because the Enphase battery stats are not available yet for that day: I may want to let it use the end of the previous day's instead for at least the first half hour or so.

An initial tweak has been to have the fade in / fade out happen over the first/last 20 minutes of each hour (rather than 30 minutes). This can only provide a fairly coarse level of dither and randomisation. There is benefit in the lower-level Eddi driver also randomising at transitions.

Probably I should try soon to get some traction on the Myenergi API. Eg see MyEnergi-App-Api set boost times.

20220205 heatbatterytarget

Heat target % max fill from grid, vs actual grid intensity and top-up limit threshold, for 2022-02-05 [gnuplot].

2022-02-04: Order Placed

The Thermino 150 ePV order has gone in today: hurrah!

2022-02-05: Hub Step 2 and On

I'm pushing along the Myenergi setup a little further.

I've switched on the Hub again (green Power light, blue Server light). I'm now following the instructions to download new Eddi firmware to the Hub. (Press and hold the Download button until power goes amber then Server white, then a minute or two later the Server light is back to blue.)

Eddi opened

I am opening up the Eddi for follow support's instructions to remove the sliver of paper top-right:

You can open the front of an Eddi up pretty easy to be fair, the two screws undo them and pull the face-off, then you can remove it.

Ah, I see, the sliver of paper is an arrow at the corner of a transparent peel-off plastic film screen protector! Now removed!

I cautiously provided temporary mains power to the Eddi with the main switch on 'bypass' (II). The (blue) heater 1 LED lit up, the screen was off.

I moved the main switch to 'on' (I) and the screen came alive, backlit. After a while the backlight went out. The screen shows "Waiting for Surplus". The (green) power LED is on.

When the switch is moved to the 'off' (O) position everything goes off.

Ah, now the next hitch, and a question back to support...

Where should I find the antenna for the top of the eddi?

I have found the little package with current clamp and screws, but no antenna.

I see it listed under "Box Contents" in the manual, and I think I know what it should look like, and I have looked through all the packaging several times, but I'm being an idiot. Do you have an image of what it should look like or where it should be within the main box?

Hub step 3 - pairing

I have looked on the Eddi what it already believes itself to be paired with, which is nothing (other than itself!) as expected.

I have noted the Eddi "Settings..." -> "Advanced..." -> "Linked Devices..." -> "Channel..." value.

I have selected "Settings..." -> "Advanced..." -> "Linked Devices..." -> "Pairing Mode..."

I have pressed and released the "Pair" button on the Hub. (Power light flashing red, etc.)

This failed the first time, probably due to not having the Eddi antenna fitted. So I moved them closer and retried. Now the hub serial number is shown on the Eddi screen. I pressed the Eddi tick button to accept the pairing.

The Hub instructions say:

If there are no red or green LEDs displayed on the Hub where it reads Zappi or Eddi, then scroll up to "Pairing Mode" on the Zappi/Eddi and press the Eddi tick button.

The Eddi says "SEARCHING FOR SLAVES" and the LED above "Eddi" on the Hub has lit up red ... and a little later has gone green. I think that the units are now paired.

Hub step 4 - new firmware for Eddi

I am expecting this to be flaky given the missing antenna.

I powered off the Eddi, then powered it on with the tick button held down, the selected the menu entry to download the latest firmware.

This may not work at all or may take much longer than the suggested 20 minutes.

I gave up once and moved elsewhere with the Hub not connected to the router (all LEDs white) and much closer to the Eddi.

It does not appear that the download even started. I'll put this off until another time. I have hit the "Run" option to get back into the main system (rather than power-cycle).

The Eddi is not bricked with the abortive firmware attempt. The date and time seem to have made their way into the Eddi.

I'm now going to retrieve the "Registration Code" which can be found on page 2 of the information menu of the Eddi in the hope that I can progress on-line registration.

Cannot see it there... I can see interesting stuff such as firmware V3.048.5 on page 1, and TX and RX packet counters going up...

Power-cycled the Hub and it this time came up with green lights for Power and Eddi only, not everything white as before.

Still not able to update the Eddi firmware...

With Hub connected to router and it and Eddi on and close, on Information... menu (2/4) a Hub Registration Code is now shown.

I tried to register the Hub on the Myenergi site, but (repeatedly) got an unhelpful Something went wrong. This was in my default Firefox browser (with NoScript).

I logged out, and logged in on a separate browser (Chrome). I created a new strongish password during this registration process. Now the Hub is shown as active.

I note that different things seem to be visible from Firefox and Chrome when logging in: the former is not showing the Eddi/Hub and is demanding that I verify myself somehow... Another log out and in and things seem better...

On the Hub the Server LED is now green, indicating successful registration.

Eddi settings

While pootling around I have set minimal parameters to work with the Thermino:

  • Grid Limit: 7A [which should be ~1700W typically]
  • Export Margin: 50W [lowest non-zero, next is 100W]
  • Response Delay: 5s
  • Boost -> Hot Cancel Delay: 30m [to avoid Sunamp cycling causing boost to drop out]
  • Time & Date -> Time Zone -> Auto DST: Off [stay in UTC/GMT for sanity]
  • Exp Threshold: 50W [set 2022-02-25 to match Export Margin, see below]

The oven and dishwasher seem to draw about 10--11A, so the Grid Limit could probably be bumped up a little while keeping a clear NILM signal from top-up.

The Eddi is now showing as "Active" in the online account (like the Hub).

Antenna found!

The antenna was hidden in the paper bag with the screws!

Small vampire

The base consumption of the Eddi seems to be ~3.3W, rising to ~3.9W when the screen backlight is on.

The Hub seems to use ~1.5W (maxing out at ~2.7W at times). Both measured with the Maplin N67HH. Thus ~100Wh per day between the Hub and Eddi.

Off (O) and bypass (II) seem to draw 0.0W (with no load connected). Good.

Myenergi API

Hurrah! I am now able to pull down a loggable line of Eddi stats in JSON with a simple script.

I can also force or cancel a timed one-off/manual boost with another script. It can take a while for commands to get through, and they can bunch up. I could probably safely send (say) every 10 minutes either an 11 minute boost or a cancel to stay continuously off or on. That crude mechanism would prevent any manual boost being set through the front panel though. Slightly more friendly might be to, when wanting to boost, only start one if not already running, and only try to cancel if one is already running that we had previously started (eg rbt is no longer than we would have set, and much shorter than the front-panel 1h boost time...

In the stats output sample below, the bsm value is 1 when this 'manual' boost is active.

{"eddi":[{"sno":XXXXXXXX,"dat":"05-02-2022","tim":"20:53:20","ectt1":"Internal Load","ectt2":"Grid","ectt3":"None","bsm":0,"bst":0,"cmt":254,"dst":1,"div":0,"frq":50.04,"fwv":"3200S3.048","pha":1,"pri":1,"sta":1,"tz":0,"vol":2439,"hpri":1,"hno":1,"ht1":"Tank 1","ht2":"Tank 2","r1a":0,"r2a":0,"rbc":0,"rbt":336,"tp1":127,"tp2":127}]}

Note: Yes, cg-jstatus will report in watts and jdayhour will report in units of 15 joules for some reason. Also:

  • "imp": Imported from grid
  • "exp": Exported to grid
  • "h1b": heater 1 boost
  • "h1d": heater 1 divert

2022-02-06: Eddi Logging

See the Myenergi API scripts and logs.

The basic Eddi JSON stats set is being captured at 10-minute intervals. That can be adjusted if necessary. The ability to ask the Myenergi servers for (eg) historic hourly stats by date means that a finer grain is likely not necessary for these particular samples.

Drop-out frequency 49.91Hz?

Looking at a sample of frequency data (the first ~1 million seconds/samples of 2021-12) suggests that the threshold for the bottom %1 of samples is ~49.854Hz, and the bottom 2% is ~49.868Hz, 10%/~49.91Hz.

To be grid friendly, and if sampling often enough (events will be short), maybe any boost/top-up should temporarily stop when the grid frequency is below or at ~49.86Hz. The Eddi reports to 2DP. The maximum run at/below 49.86Hz was 244s (~4 minutes). At/below 49.91Hz the maximum run was 912s/~15m.

This could be combined with a voltage sag response. Some randomisation before resuming boost/top-up would be sensible.

During such a frequency or voltage drop, rather than just stopping boost, the whole Eddi could 'stop' including any divert. One way or another that would make more energy available to (or reduce demand on) the grid.

It would be interesting to record if/when such demand responses happen.

Looking at the GB National Grid Frequency response services (especially Dynamic Moderation (DM) and Dynamic Regulation (DR)) suggests that if frequency drops below 49.8Hz (-0.2Hz) then the grid's own mechanisms are in trouble. But even below 49.9Hz (-0.1Hz) we could possibly help the big boys, albeit with their 1s/10s response times. ("Operational" limits are +/- 0.2Hz, statutory +/- 0.5Hz.)

On Twitter I suggested in particular that Dynamic Regulation be built in to the likes of Eddi.

2022-02-07: Hub Upgrade

I was directed by support to upgrade the firmware on my Hub (currently showing in the Web account as v3401S1.200). I must have messed up doing that when I thought I had before!

Upload still going (power light white, server light intermittently flashing white) !

After leaving it even longer without apparent completion, support advised me to restart the upgrade process, which I did.

The above white+white state is apparently a diagnostics mode. I tried holding down the download button longer this time (maybe 1s or 2s) and perhaps the upgrade has worked? On the Web the version is still shown as v3401S1.200, so maybe not. I've left the Hub powered up so that support can interrogate it tomorrow, if they wish...

2022-02-09: Hub Odd

I phoned support, and we went through the Hub upgrade process together live, but the Hub still did not upgrade. When the Eddi is installed we'll interrogate the Hub more via the Eddi. If I have got a dodgy firmware version (the LED patterns did not seem to exactly match any of the instructions) then I may get the Hub replaced. We'll see.

Anyhow, thanks to support for continuing to be support and clear and responsive!

2022-02-23: Electrics In

The electrics for the Eddi and Thermino went in today. Took two people from approx 8am to 2pm.

In particular the long run of cables from the Eddi in the hall, round two sides of the kitchen to the boiler cupboard, is as far as possible being kept completely out of sight.

myenergi eddi solar diverter on wall next to consumer unit, both without covers, next to Enphase Envoy
myenergi eddi solar diverter on wall next to consumer unit, with covers, next to Enphase Envoy
myenergi eddi solar diverter lit up running but nothing to divert to yet
Some photos from the Eddi installation (more).

12:43: miraculously I am entirely off grid including laptops and router (and nothing has died) while the sparkie is working on the consumer unit!

2pm: all done. I can talk to the Eddi via the API, and stats are being logged.

4pm: even though the grid current clamp appears to have been correctly oriented (on the live red tail from the DNO fuse pointing towards the consumer unit) I was seeing unlikely and then impossible grid export claims in the stats ("grd":-3031) so I flipped it to the black/neutral still pointing towards the consumer unit. That has the additional benefit of not fighting for space with the Enphase clamp. Grid flows are now more plausible positive imports ("grd":139) given that the sky is overcast and some heavy loads are on.

2022-02-25: Exp Threshold

20220225 heatBatTarget

Heat target % max fill from grid, vs actual grid intensity and top-up limit threshold, plus status, for 2022-02-25.

I started plotting the Eddi status yesterday. Long after exports stopped the Eddi continued to report "sta":5 ie status 5, which is saying that the heat store is up to temperature ie full. The two boost lights are lit up on the Eddi unit and the display confirms the "up to temperature" status.

More precisely it indicates that the heater in the store is not accepting power, which right now is because the Thermino is in my hallway, not connected up!

I was hoping that this status indication would be a useful crude (non-privacy damaging) measure of overall disposition. Other useful values should indicated diversion and boost.

In case it helps, though I had already set the Export Margin to 50W, I also set the Export Threshold to 50W. No immediate change seen.

Eventually in the evening I set a boost of zero minutes via the API, and the state immediately went to 1 (paused). The two blue lights on the Eddi now off also.

I think that this is a bug, or at least makes this value a lot less useful than it might be.

As a kludge/fix I've modified the logging script for the Eddi so that just after midnight (when creating a new log), if it sees "sta":5, to send a zero-length boost. That should reset the status to 1 if lingering for no good reason. (It may be wise to check that no boost is in progress with "bsm":0 also.)

2022-03-02: Export Margin 100W?

Looking at my Myenergi online account, it seems as if the Eddi is seeing transient export spikes of ~80W, typically just after a big import drops away. This may be the Enphase balancing inflow with a compensating outflow in the same time 'bucket' (or just taking a few moments to rein back).

This suggests that I should possibly push the export margin up to 100W to avoid false triggering (as maybe did happen today), though the response delay may be enough already.

The export values have just been updated to 100W:

  • Grid Limit: 7A
  • Export Margin: 100W
  • Response Delay: 5s
  • Boost -> Hot Cancel Delay: 30m
  • Time & Date -> Time Zone -> Auto DST: Off
  • Exp Threshold: 100W

I'm raising the notion of "significantly exporting" used elsewhere to 50W, ie half-way to this new threshold.

I really don't mind spilling a bit to grid before turning the rest into heat!

Note on differing readings between Eddi and Enphase... Just now at 9pm with our 3kWh kettle on, the Enphase battery empty (and no PV generation!), the Enphase reported 3123W import, the Eddi 3202W. There are other loads. (Another Eddi reading ten seconds before was 3214W.)

2022-03-04: Frequency

There definitely does not seem to be any point trying to respond to frequency at the 10-minute sampling rate used to set the max-topup-% value.

Of the Eddi (10-minute) samples logged so far there are none below 49.80Hz, ie everything is within operational range. About 6.5% at 49.8xHz, but basically no or very few adjacent samples.

% cat data/eddi/log/live/2022*.log | wc -l
% egrep '"frq":49.[0-8]' data/eddi/log/live/2022*.log | wc -l
% egrep '"frq":49.[0-7]' data/eddi/log/live/2022*.log | wc -l

2022-03-09: Thermino In

Sunamp Thermino ePC installation under gas combi in kitchen, start Sunamp Thermino ePC installation under gas combi in kitchen, in progress Sunamp Thermino ePC installation under gas combi in kitchen, complete

Yesterday at 8pm I turned the central heating off to save gas in the light of world events, and for climate, etc.


The Thermino is going in today.

The Thermino itself is being plumbed around my combi by David of Beautifully Green @Heatbatteries.

As ever our usual sensible builder, another David, is doing other physical works, as he did before (2022-02-23) when he organised the sparky too.

With the Thermino taking over some or all of DHW use as we move towards summer, gas use may drop to near zero.

Not that it's at all sunny so far by 9am!

Todays fun, fitting a PV @sunampltd Thermino onto a combi system with an Intasol valve and a @myenergiuk Eddi. Stop burning gas, but never run out of water. #environment #ClimateAction #oilandgas #carbonneutral
@heatbatteries 9:24 AM - Mar 9, 2022


We had some interesting issue that took out the house RCD when attempting to follow the wiring plan as above. Possibly a swapped L and N somewhere. So we're moving the H2 L to the input of the Eddi (so is off when the Eddi is powered off at the CU RCD breaker) and will use that as the Sunamp control live.


It's all just gone live a little after 4pm, and is diverting!

{"eddi":[{"sno":0,"dat":"09-03-2022","tim":"16:10:13","ectp1":627,"ectp2":-104,"ectt1":"Internal Load","ectt2":"Grid","ectt3":"None","bsm":0,"bst":0,"cmt":254,"dst":1,"div":627,"frq":49.98,"fwv":"3200S3.048","grd":-111,"pha":1,"pri":1,"sta":3,"tz":0,"vol":2446,"hpri":1,"hno":1,"ht1":"Tank 1","ht2":"Tank 2","r1a":0,"r2a":0,"rbc":0,"rbt":1051,"tp1":127,"tp2":127}]}

We put manual boost on to get some heat loaded up to test things, and the grid limit (~1.6kW) is being respected, with the rest from PV and Enphase.

"ectt1":"Internal Load","ectt2":"Grid","ectt3":"None","bsm":1,"bst":0,"cmt":254,
a":4,"tz":0,"vol":2446,"hpri":1,"hno":1,"ht1":"Tank 1","ht2":"Tank 2","r1a":0,"r

I'm boosting it to the brim as a sort of calibration from empty, though a little water has been drawn to test the system. (Don't look at the time of day that I'm doing this!)

By the time the Eddi was claiming 7.7kWh injected into the Thermino, turning on the kitchen tap at a moderate flow had the combi fire up, run for a bit, then shut down again, while the flow remained hot.

As of ~8pm, 8kWh has disappeared into the Thermino black hole!

Turning on the kitchen hot tap at a fairly slow rate, it ran hot after a while without the combi firing up at all. So, like when hypermiling in a car being easy on the accelerator, a bit of patience may be able to minimise/avoid any gas use.

When someone puts the kettle on (3kW) the Eddi stops boosting, as intended. Also good is that the Eddi ramps up the boost/diversion gently, over a minute or so.

As of 20:39Z and ~10.2kWh reported by the Eddi as sent to the Sunamp, diversion has stopped. The Thermino may be full, finally. (The Enphase is now empty.)

Screenshot 20220309 myenergi Device Usage with Thermino just filled following install
The myenergi Web display of Device Usage just after Thermino filled up to the brim!
Screenshot 20220309 Enphase Enlighten flat imports boosting Thermino via Eddi
Distinctive flat import chunk from the Eddi Grid Limit.

Today the first person was on site at ~8am for an hour or two, another from ~9am to 4pm, and the first back from ~4pm to ~6pm to complete.

See more images from the installation.

If the Eddi's grid flow sensing is to be believed, with everything in place minimum grid flow is ~90W, rising to ~150W when the fridge/freezer is running.

A few years, over 13 thousand words on this page alone, and much hard cash, to get to this point!

2022-03-10: It Moves

Hurrah, in a bright moment I caught the Eddi diverting a tiny amount!

{"eddi":[{"sno":0,"dat":"10-03-2022","tim":"09:20:03","ectp1":92,"ectp2":-88,"ectt1":"Internal Load","ectt2":"Grid","ectt3":"None","bsm":0,"bst":0,"cmt":254,"dst":1,"div":92,"frq":50.08,"fwv":"3200S3.048","grd":-121,"pha":1,"pri":1,"sta":3,"tz":0,"vol":2446,"hpri":1,"hno":1,"ht1":"Tank 1","ht2":"Tank 2","r1a":0,"r2a":0,"rbc":0,"rbt":8,"tp1":127,"tp2":127}]}

(I took the opportunity while standing in front of the Eddi to turn off "Auto DST" since I want it to stay on UTC, ie solar time.)

At about 2:30pm, after diversion of ~2kWh, the Thermino is full again. This is almost simultaneous with the Enphase, so all excess is now spilling to grid, which is good! (About another 2kWh were spilled after this.)

The Thermino provided hot water for my daughter's entire shower, and almost all of my son's bath, with the combi cutting in for the last couple of minutes. The front-panel LEDs now indicate 'empty'.

The Eddi seemingly also 'probed' the Thermino and came out of state 5 ("max temperature reached") back to 1 ("waiting for surplus"). I saw the Thermino yellow/immersion indicator light on just now even though there is no boosting or diversion, which I assume is a state probe by the Eddi.

If you whack a hot tap full on then usually the combi fires up for a bit while the Intasol works out if the Thermino output is hot enough to use directly. This wastes a bit of gas, and indeed the ~30s ignition-and-out cycle is likely especially inefficient, likely with some unburnt gas and the combi-heated water not even getting used. Turning the hot tap on more gently for maybe ~30s can eliminate that combi fire-up it seems, providing the Thermino is up to temperature. Some user training may be useful, given that the short bursts of water used for washing hands etc often do not even make it to the taps anyway!

Observation suggests that the 'wasted' gas is ~0.005--0.01m^3, ie maybe ~50--100Wh, each time.

Could something similar to a CombiSave help?

2022-03-17: Tidy Up

Some tidy-up happened today, including cosmetic stuff.

Also adjusted the Combimate for the full set of pellets, ie for 'whole house' dosing, rather than 'single appliance' as I had it.

Sunny day, with more than 4kWh diverted. Next couple of days should be similar. A dusting of orange Saharan sand will be reducing generation a little...

2022-03-18: Full Up?

A good sunny day! As of about 5pm the Eddi claimed to have diverted more than 8kWh to the Thermino, but did not hit full though diversion has at least paused for now. Generation today ~16kWh, ~1kWh exported.

The Enphase ACB and off-grid stores also are all but full.

Daily gas use is down to ~2kWh/d as of the end of today.

Also, I wired up a new FTDI to just TX and GND on the Thermino, and can see sensible telemetry output as one ASCII line every ~10s at 9600 baud 8n1. This will enable me to call for heat via an Eddi grid "boost" in the wee hours.

I had a nice fully-solar hot bath the next morning, making space to capture a bit more energy. But everything was full again shortly after noon!

2022-03-19: Recycled Pi

Today I'm rifling though my old Raspberry Pis looking for one to pair with the Thermino to monitor how full it is, and request a top-up if appropriate.

What I appear to have to hand are a couple of 2011-vintage Bs, one with a large memory card so possibly the first EOU RPi server, and a B+ V1.2 circa 2014 with an 8GB microSD.

The B+ would be my first choice, but it may be this one that I broke, so I need to test first!

In any case I would like to start with a bang-up-to-date "Lite" 32-bit version of Raspberry Pi OS (bullseye), and then configure and maintain it via Ansible. It's basically a glorified serial monitor and logger in this role, though I may also (for example) give it a DNS secondary.

It seems as if the 8GB microSD card with the B+ may be bust: I can't write an OS image to it successfully. So I stole the 16GB barely-used card from my phone... ... and just by looking at the LED activity I'd say this B+ is booting OK. (I have also repurposed an existing RPi case and power supply.)

The RPi is now (~5pm) minimally set up and plugged into the Thermino, so all subsequent work on it can be done remotely.

The Ethernet cable I had run round to the Thermino does not seem to be working, so for now I have the new RPi on WiFi. It set it up so that all its network activity (other than me SSHing in to admin it) is outgoing for now.

2022-03-20: Thermino Log

It's the equinox, and I have as of noon started logging regular samples of the Thermino's state. This will allow me to compute how 'full' it is, and therefore top up to (at most) the amount I calculate elsewhere.

I am ready to turn on the auto-boost-from-grid feature — I just need to uncomment a line of code — but I'll get through tomorrow's regular weekly supply meter readings to see how much gas we avoided purely by PV diversion.

2022-03-21: Diversion Story

So we have definitely used less gas, maybe as much as 90% less than usual, between turning the heating off early, and the Eddi/Thermino:

  • Over the last week we used 9.7kWh of gas (1.4/d).
  • Typical for March (eg last year) is 15kWh/d of gas.
  • Typical for mid-summer is ~4kWh/d of gas for (only) DHW.

That suggests ~(7 * (4 - 1.4)) = 18.2kWh gas saved, for DHW.

Over that same period (~6:15pm 14th to ~6:15pm 21st), the Eddi is reporting that it used and sent 32.9kWh to the Thermino. All of that, other that a tiny test, was diverted (ie no extra grid imports). That looks about consistent with extra consumption reported by the Enphase.

Well, that's a puzzler! Neither the Eddi nor the Thermino are glowing red, dissipating a couple of kWh per day between them! The Eddi claims ~97.5% conversion efficiency and the Thermino should leak less than 0.7kWh/d! Those losses might account for ~5kWh over the week. Also, the Thermino is full at the end of the period and may have started empty, which could account for up to ~8kWh. In total those get up to about 18+5+8 = ~31kWh. I haven't been totting up bath and shower and other DHW use; maybe the last 7 days have been unusually heavy?

More research is needed!

2022-03-28: Diversion Week

In the 7 days to ~6pm BST today, the Eddi diverted ~28kWh to the Thermino. (One sunny day the Thermino covered two showers and one bath!)

Over that week, we still used ~3.5kWh gas, or ~0.5kWh/d. Normal DHW use is ~4kWh/d, ie 7 or 8 times more. (Last March's daily consumption including space heat is ~15kWh/d.)

So a huge reduction in gas demand. And we could eliminate that residual use if we simply turn on the hot taps more slowly.

Here is an extract from the Eddi summary logs (note final line ~80kWh h1d+h1s via the Eddi this month, since installation):

#Eddi daily stats summary in kWh; definitely partial if h lt 24

2022-03-30: Warm Up

Today has not been very sunny (nor was yesterday) so there was relatively little in the Thermino and relatively little diverted to it today. So the Thermino is mostly empty (reported as 31%, but likely less).

Also, GB grid carbon intensity has been high for several days due to low wind. But tonight is forecast to be low-enough intensity that we could get an automatic wee-hours top-up. This will be the first time since the top-up code has been running.

So I gave the system a little test, manually overriding the top-up target to 51%, and letting the Thermino RPi pick that up and start a boost. It basically worked!

And then a tiny automatic boost happened in the wee hours...

Tuning is going to be needed to make this work!

tiny top up of a few minutes took place at 2022-03-31T00:42Z

With the heat battery about 1/3rd full and the target only just over, a tiny 50% (5-minute) boost happened just before 2am local time! Flaky Internet connectivity was not helping...

2022-04-04: Crude Frequency Response

I've just crudely put together a script to run every minute, and if diverting or boosting and mains frequency is <49.9Hz, stop the Eddi. If stopped and ≥49.9Hz then resume the Eddi.

In all its glory:

Massively inefficient, especially round-tripping the Internet for this, but I'll see if it triggers significantly in practice.

There is a little randomisation of resume time to help avoid potentially adding to frequency oscillations. Cleverer schemes are available.

I won't be saving the GB grid from blackouts with this, but I may help with frequency regulation just a nano-tad!

2022-04-07: Grid Stabilisation!

This first (line-per-record) Eddi frequency-response log from a day with the feature fully engaged and logging shows many responses.

Each line/record indicates a minute with mains frequency <49.9Hz where the Eddi either deferred importing, or allowed to spill to grid rather than diverted, a kilowatt or three.

2022-04-11: Losses x2

There are two clear sources of losses in the system. Neither is tragic.

Firstly, when a tap is turned on fast, about 50Wh--100Wh worth of gas is wasted firing up the combi before the Intasol works out that the combi is not needed. Maybe 0.5kWh/d wasted? This loss is largely independent of the Thermino, and now that it is measureable, it can probably be managed down with a bit of end-user training (which has already started). This may also be puffing out some unburnt methane...

Secondly, see below extract from two days' daily summary for which there was no DHW demand up to the point this output was captured. Each day the Thermino absorbed ~1.5kWh, getting internal temperatures up to just short of 80°C. That high, well above the phase change temperature, allows some bonus energy storage but also maximises thermal losses.

#Eddi daily stats summary in kWh; definitely partial if h lt 24

As of we seem to be using less 'accidental' DHW gas: At 16WW over 21 days from 2023-10-02 to 2023-10-23: gas consumption was 0.2kWh/d, electricity imports were 4.2kWh/d, electricity net imports were 3.0kWh/d.

It is possible that keeping the Thermino more aggressively 'full', and thus hotter, keeps the Intersol better primed to use the Thermino for DHW rather than firing up the gas boiler briefly.

2022-04-16: 13 Minutes' Daily

In the nine full days since frequency-support logging went live, my ad hoc stabilisation has delivered a little under 15 minutes' grid support per day on average. There has been no day without any support.

% wc -l data/eddi/log/live/2022*.freq*
   24 data/eddi/log/live/20220407.freqResp.log
    7 data/eddi/log/live/20220408.freqResp.log
   18 data/eddi/log/live/20220409.freqResp.log
   10 data/eddi/log/live/20220410.freqResp.log
    4 data/eddi/log/live/20220411.freqResp.log
    5 data/eddi/log/live/20220412.freqResp.log
   21 data/eddi/log/live/20220413.freqResp.log
   11 data/eddi/log/live/20220414.freqResp.log
   16 data/eddi/log/live/20220415.freqResp.log
  116 total

Below counts the 10 minute intervals in which the Eddi was active and able to provide such support (including when stopped, providing it). 195 total, ie ~1950 minutes, so ~6% as expected.

Note that this sampling under-reports boost / top-up activity because of timing.

% egrep -c '"sta":[346]' data/eddi/log/live/202204{07,08,09,10,11,12,13,14,15}.log

1950 minutes of Eddi activity over 9 days is ~15% duty cycle. It also shows the Eddi providing support for ~1% of all grid minutes.

Screenshot 20220420 flatish Eddi Export Margin exports with extra for grid low frequency response showing grid battery PV traces

Flatish exports (black, below the x-axis) coming up to solar noon on 2022-04-20 at RHS being held to eddi's Export Margin, but with extra exports when responding to low grid frequency by stopping diversion briefly.

2022-04-23: Low-Carb Top-Up

Screenshot 20220423T0630Z Enphase Enlighten view of 2kWh randomised am boost to 80pc from low carbon grid electricity

I added a new day-of-week override min-fill-by-dow.csv that requests a top up in the (early-morning) 'L' period to at least the specified percentage for given days of this week when all other conditions are met such as grid carbon intensity being low enough. In this case I had one active line 6,80 to top up to 80% on Saturday mornings.

Friday was a bit overcast, so the heat battery was not filled right up, and Saturday wee hours saw lots of low carbon grid wind available.

Elexon FUELINST data is flaky in the early hours which makes for less clear graphs. But I also randomise power going into the heat battery on ramp-up and when close to target — see the Enlighten and Myenergi screenshots. And for three minutes during this boost the system supported the grid by pausing the boost imports when grid frequency fell below 49.9Hz.

20220423 heatBatTarget

Heat battery getting early morning boost driven by day-of-week target.

This boost delivered ~2kWh top-up to the heat battery, about one third from the Enphase ACB, and the heat battery now has oodles of hot water for a low-carbon hot bath for me this morning!

(The Eddi stats indicate each 'on' pulse at ~2.7kW to the Thermino, of which ~1.8kW was imported, with a total of 1.8kWh boost delivered to the Thermino.)

Screenshot 20220423T0630Z Myenergy portal view of 2kWh randomised am boost to 80pc from low carbon grid electricity
Myenergi portal device usage view of the heat battery getting early morning boost.


Some data samples and images from this boost:

I have now adjusted the Saturday minimum percentage to 75%, as that will likely interact better with how I currently calculate how full the Thermino is.

2022-04-30: Off-grid Brew and Thermino TARDIS

May2022 bill graph savings

A sunny warm day.

As of 5pm I'm having a nice cup of coffee brewed with my off-grid kettle.

There has been ~9kWh of diversion from grid-tied PV to Thermino today which is more than its nominal capacity: I took a bath just before it filled!

The diversion stats this month up to about noon today: days=29.5, heat battery mean kWh/d=4.0 (divert/d=3.9, boost/d=0.1).

This month compared with April last year, gas consumption is down from 5.6kWh/d to 0.38kWh/d, with gross electricity consumption up from 5.6kWh/d to 9.5kWh/d, which initially suggests some direct kWh efficiency savings even with resistive heating.

Our May Ecotricity dual-fuel bill covering to 29th April shows a marked reduction in both electricity and gas per day, which will be due in part to the expanded Enphase and the Thermino.

2022-05-01: Running on Fumes

A dull overcast day. Only ~2.2kWh was diverted into the Thermino today.

In the afternoon/evening after no further diversion was available, some washing-up, a shower and then a bath took the Thermino to what I regard as empty (my %-full indicator is negative). But still only minimal gas was used.

2022-05-04: Adjusted Intensity Curve

Today I adjusted the static (by local time) intensity curve from:


That is, this attempts to better take account of the morning peak and the duration of the evening peak beyond the core 4pm--7pm. (Eg see Average UK household electricity demand against time of day for weekdays and weekends in mid-July and mid-January, as synthesised by the CREST Demand Model [2018].)

This is unlikely to make much practical difference (yet) as almost all top-up will happen in the unchanged 'L' section.

2022-05-16: Dull Brings Boost

Yesterday was a dull day which only allowed for ~300Wh diversion, and the Thermino did not fill.

Some washing-up and at least one bath or shower got the Thermino down to what I regard as 'negative' percent full territory, ie below 50°C. (This is about where the Intasol will have to bring the combi in.)

So this morning started with 1/8 days not full and Thermino in deficit, and a reasonably low-carbon grid, so boosted ~2.3kWh of which ~1.7kWh came from the grid, the rest from the Enphase. That boost nominally raised the Thermino from -5% to 15%.

2022-05-30: Slow is Good

Monitoring the Thermino state I'd say the typically slow top-up by diversion is better than a fast one, eg from boost. This is because heat seems better able to equilibrate between parts of the store with slow energy injection.

(Having said that, the following day, with sunshine after the rain (no bluebirds flying), I noted 3340W being diverted into the Thermino. Higher than the nominal 2800W, and higher than the ~2700W I limit boost to even with battery assistance...)

2022-07-28: Diversion and Storage Losses

A sampling of (diversion) energy input to the Thermino when there was no DHW demand over four days (with little/none the day before also) suggests a daily loss with the store kept filled to maximum of ~1.3kWh/day.

#Eddi daily stats summary in kWh; partial if h lt 24

Internal store temperatures are at maximum and so its losses will be too.

Topping up is determined by a mixture of PV availability and the internal relay/control hysteresis in the Thermino.

This 'lost' energy will include that in the Eddi on the way to the Thermino, plus by conduction through pipework, etc, etc. The Eddi measurement accuracy may also be lower than the Enphase and supply meters, which may add 'phantom' losses.

2022-08-08: Hot Cancel Delay

Re-reading Thermino documentation, I note that it says that the eddi "Hot Cancel Delay" should be 45 minutes. I have it at 30 currently, but I'll fix it now.

  • Grid Limit: 7A
  • Export Margin: 100W
  • Response Delay: 5s
  • Boost -> Hot Cancel Delay: 45m
  • Time & Date -> Time Zone -> Auto DST: Off
  • Exp Threshold: 100W

2022-08-16: Margin Meditation

Given that:

  • when there is excess spillable energy 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

then I think that there is a case for increasing the Export Margin (and Threshold) significantly, eg to 200W, to allow more spill to grid and spread out charging over more of the day.

I could model the optimal Export Margin (eg in 50W increments) month-by-month (and whole-year vs winter) vs pre-Eddi post-Enphase 15-minute exports to grid to find the trade-off between Export Margin and useful diversion available to the heat battery and exported energy during peak demand and even-ness of heat battery charge (charging over more hours would be better).

(See analysis!)

Export Margin tricks

Before our gas boiler gets a (well overdue) service, in order to allow the GasSafe engineer to test it thoroughly, the Thermino ought to be isolated or empty. Given that the isolation valves are probably tricker to get to than intended, what I may do instead is to bump the Export Margin to its maximum and disable any boost temporarily a couple of days in advance...

2022-08-24: Diversion and Storage Losses (cont)

Eddi-reported diversion for the 14 days that we were away has a mean of 1.02kWh/d. No DHW was used in that time, so this all indicates potential losses from the system.

The Thermino 150 manual indicates expected losses of ~0.67kWh/d.

The balance may well be losses and measurement error in the Eddi, pipe losses, and slightly elevated losses from being continuously (over) full, ie at higher-than-usual internal temperatures. This last effect may be ~25%.

As a counterpoint, the kitchen has been close to 24°C or higher for most of this period, which should slightly reduce losses compared to winter-time typical room temperature.

Background non-DHW electrical consumption was initially estimated over the same period to be ~1.6kWh/d. Eg the total was ~1.9kWh on the 20th and the Eddi claimed to divert ~0.28kWh that day.

From the 10th to the 23rd inclusive the Enphase claims 38.4kWh consumed:

% awk < ~/Downloads/1445397_net_energy_august_2022.csv -F, '/^2022-08-(10|11|12|13|14|15|16|17|18|19|20|21|22|23)/ {sum+=$3} END{print sum}'

The Eddi is claiming to have diverted ~14.4kWh in that time, ie leaving ~24.0kWh or ~1.7kWh/d for everything else in the house (fridge/freezer, some security lighting, clocks, Enphase/Eddi systems, etc) which is plausible.

(To slightly muddy the waters, the Thermino topped up another ~1.6kWh while we were travelling back on the 24th, pushing the mean to ~1.07kWh/d!)

This in any case probably bears some further investigation.

Margin call

I adjusted the Export Margin and Export Threshold on the Eddi both to 400W .

2022-08-26: Margin Mitigation

I adjusted the Export Margin and Export Threshold on the Eddi both to 400W .

Yesterday was not very sunny, but nor was much DHW used, so not a big test.

Today has been fairly bright, and I took a calibrated DHW draw-down (ie ~4kWh for a nice bath: science is tough).

As of the Thermino is full, and the Eddi has clearly been capping exports at ~400W (~470W according to the Enphase, plus there has been some frequency response).

20220826 Eddi 400W Export Margin Enphase screenshot
Enphase Enlighten screenshot on sunny day with decent DHW demand and PV generation (blue, above the line) and import/export (black), showing the Eddi limiting export (below the line) to ~470W until the Thermino is full just before 4pm BST. Diversion was spread over ~7h. Exports are sometimes less than the limit because of other in-home consumption such as washing and cooking, and the Enphase battery charging. The limit is a little above the nominal Export Margin, possibly because the Eddi is deliberately conservative — it may be worth reducing the programmed margin to bring reality closer to the modelled value.

So far that smells like success: more gentle regulation over a longer time (including through peak generation around solar noon) and the Thermino full so no loss of DHW! Hurrah!

2022-09-05: after observation that the eddi was allowing ~50W more spill than in the settings the Export Margin (and Threshold) were set to 350W so as to actually spill the target 400W!

2022-09-09: Combi Struggling

For a while now the pressure reported by the combi has been varying between 0 and 3 bar. When it gets low I gently top it up, but I suspect a failed expansion vessel.

I'm asking for advice on possibilities (somehow fix, replace with condensing combi, replace with electric combi, somehow install ASHP) on Twitter and BuildHub:

Our old gas combi may be on its way out. Our house is due to be bulldozed in 5Y, so ASHP upgrade extra punitive. We are already a low user (<3MWh DHW and space heat per year). Winter heat demand typically 3kW, peak ~6kW. Already have a heat battery installed (Thermino).

Other gas appliances long since gone. Electricity is single-phase. What would the learned mob here advise: a condensing gas combi, an electric combi, something else?

Obvs, I want to minimise carbon, including embedded/upfront carbon. I'm prepared to be a bit spendy to do that.

(See further discussion.)

2022-09-13: Autumnal

Today, a dull and rainy day, there has not been enough PV generation to top up the half-full Thermino at all, though the Enphase battery did fill.

The Thermino did not fill enough to automatically cut off (eddi state 5) most days in the last week or so.

Daily gas consumption over the last fortnight has been ~1.4kWh. We are moving rapidly out of the summer "free DHW from PV" phase!

2022-09-23: No Combi

Due to the combi behaving oddly ~8pm (19:00Z) after some fixes yesterday, I have turned it off entirely. I have flipped my controller script to make the heat battery the primary supply of DHW. This maintains enough stored to supply all reasonable DHW needs, though still tries to top up more when grid intensity is low, and less at peak demand times, and by diversion when that is available. The set-up will will use more electricity than in hybrid mode, even than mid-winter.

(2022-09-24: a sample of hot water temperature at the kitchen tap yielded 46°C. And all was good for my relaxing hot bath this morning and my daughter's shower an hour or so later, and my son's bath in the evening...)

heat battery top-up chart for 2022-09-24 and 2022-09-25 with the gas combi switched off

Running the heat battery and Eddi in no-combi / all-Thermino DHW mode for two days — no disasters yet!

As of 2022-09-25 the static (by local time) intensity curve is:


The adjustment is to trim the hours when (eg) there may not be enough DHW to run a full bath, but still avoiding peak grid hours as much as possible.

2022-09-28: two baths in a row this evening proved tough, but happened. My calculated 'percent-full' measure went a bit negative a couple of times! I will crank up the nominal minimum from 60% to 80% (with the 'R'/'H' value 67% of that), and the maximum from grid top-up (eg in the wee hours) from 90% to 95%.

I am pushing the Grid Limit up to 8A to allow faster recovery from grid. The full settings list is now:
  • Grid Limit: 8A
  • Export Margin: 350W
  • Response Delay: 5s
  • Boost -> Hot Cancel Delay: 45m
  • Time & Date -> Time Zone -> Auto DST: Off
  • Exp Threshold: 350W

There should now always be enough in the Thermino to run an OK bath. Recovery time to the next bath should be about an hour if the Enphase is not empty and/or the PV is generating. Up to about 1.5x that that otherwise.

Diversion should continue to be able to significantly 'overfill' the Thermino. There was ~2kWh of diversion today, and ~4kWh from the grid.

At 16WW over 10 days ending 2022-10-03: gas consumption was 0.0kWh/d, electricity imports were 2.2kWh/d, electricity net imports were 0.6kWh/d.

2022-10-04: boiler man came back this afternoon to take a look. The usual-suspect diverter valve was stuck. Working again for now but will do thorough service including heat exchanger (HX) descale or replacement with a second-hand descaled unit. DHW and space heat were tested for a while, so ~3kWh gas was used.

The heat battery system is being put back into secondary DHW mode!

20221004 heatBatTarget

Last moments of heat-battery control graph in primary DHW mode!

2022-10-15: Adjusted Thresholds

Rather than have the intensity thresholds linearly spaced, and on rather obvious rounded boundaries, I have adjusted them (as of ) to:


(They were 0, 50, 100, 150.)

The value/threshold for 'H' remains 0, to avoid top-up from grid at high demand times.

The threshold for 'L' remains well below the 190gCO2/kWh for gas, so should always represent a carbon saving even with storage losses, etc.

The clustering together near the upper end should allow top-ups when (as now) the grid is fairly green at around the 100gCO2/kWh level from decent wind generation and a little sunshine.

After letting in about 2kWh of boost before the 4pm peak "for science", I re-adjusted the thresholds again so that the default '-' threshold represents a ~2x carbon reduction over gas, allowing for some losses:


It may be desirable to continue to adjust the thresholds, eg as the grid greens.

20221016 heatBatTarget

Adjusted thresholds and low grid intensity made for a largely wind-heated bath on Sunday morning.

2022-10-17: Finer Timing

Screenshot 20221017 myenergi Device Usage with Thermino filling from grid overnight
Screenshot of myenergi "Device Usage" of Thermino topping up from grid overnight. Note the effect of the grid limit when the fridge/freezer is competing for power.
Screenshot 20221024 myenergi Device Usage with Thermino filling from grid in early hours Screenshot 20221030 myenergi Device Usage with Thermino filling from grid in early hours Screenshot 20221106 myenergi Device Usage with Thermino filling from grid in early hours

Until now I have been controlling the Thermino at 10-minute intervals. But that seems to cause quite a bit of overshoot and spiky top-up. So I have now switched to 5-minute chunks.

2022-10-20: I have also adjusted the mean energy impulse when not full tilt to be smaller (well under 50%) on average, since slow charging works well.

2022-10-24: the reduced partial-charge impulse seems to have helped somewhat. ~5.2kWh of heat was topped-up in the wee hours, initially at ~3kW with support from the Enphase, then at ~2kW from the grid only, then intermittently as the Thermino approached its target fill level. The Thermino started from fairly tepid/empty.

2022-10-30: overnight only loaded up ~3kWh from near empty as still spiky. Have changed weighting for different Thermino sensors to try to damp this. I will have to see if that makes a sustained improvement...

2022-11-06: having also made the grid-intensity measure less flaky overnight, and starting from a deep discharge (~25°C), a solid 6kWh was shovelled into the Thermino from the grid. (The Enphase battery was empty.) Most was in one solid block as nature intended!

2022-11-05: Intensity Threshold Adjust

I am now pushing the top-up threshold grid intensity up a bit (~5%) when the grid is green, and down a bit (also ~10%) when it is red. The aim is to respond slightly more dynamically to grid state.

I am separately working on computing green/red flags based on a rolling 7-day window, and switching to use that. I believe that this will better deal with the relatively low demand at weekends for example.

(I subsequently adjusted the logic to push the threshold down ~10% for red, push down ~5% for neither red nor green, and leave alone for green. That avoids ever topping up at an intensity higher than configured (which might cause alarm) while favouring green over normal over red.)

2022-11-07: Dodgy WiFi

20221107 heatBatTarget

Top-up from grid permitted from ~11pm to ~7am, though WiFi issues prevented top-up starting until after ~2am. 6kWh topped up from grid on the 6th, 4.7kWh in the small hours of the 7th.

Screenshot 20221107 myenergi Device Usage with Thermino filling from grid in early hours

Having made the top-up energy injection more reliable, and also the gathering of grid-intensity numbers from the Internet, top-up is now being sabotaged by the network connectivity of the RPi that manages the Thermino!

(Side note: see the Eddi/Thermino top-up nicely backs off when the dishwasher takes its two spikes of water-heating energy to avoid imposing a large lossy load on our grid feed.)

The Thermino RPi is meant to be connected to the 16WW network via a wired connection, which is in, but has never worked. (I do not know why.) As a temporary work-around I set up the WiFi dongle that came free with the Maplin RPi starter kit. That dongle is small and not very good, and needs the WiFi router to be blasting out at full strength to work. Intermittently the Thermino RPi cannot see the main RPi, and out of caution avoids any top-up at such times. List night the Thermino RPi lost connectivity (apparently) just before and did not regain it until just before , blocking top-up for over four hours! This may be as much to do with the general flakiness of the WiFi router as anything else...

I will work on fixing the wired connection longer term, but will ASAP try to improve WiFi!

2022-11-24: Heat Capacity Calibration

20221124 heatBatTarget

Heat battery target fill percentage (etc) into early hours of 2022-11-24.

Screenshot 20221124 myenergi Device Usage with Thermino filling from grid in early hours

By late yesterday we had not had any low-carbon electricity available for a while and the Thermino was down to mains inlet temperature of ~13°C, so effectively 'empty' with no heat to support the combi.

There was then availability and everything was set up to try to (nearly) fill the Thermino to ~60°C from the grid. Between 11pm and midnight on the 23rd 0.669kWh went in, and then on the 24th (today) up to about 4am another 6.763kWh, for a total of 7.432kWh, according to the Eddi stats.

This meets my expectation of ~7kWh of usable storage from above mid-range inlet temperatures without quite filling the Thermino to the point where it turns off its heater relay. It does not quite explain the ~10kW used on installation day, though we will have run some DHW away for testing.

(There was not much DHW use and the following night only ~0.7kWh was injected, roughly the expected daily losses.)

2022-12-21: Maximising Energy Absorption

I made adjustments to allow me capture more energy in the Thermino without the heating relay dropping out and soaked up ~7kWh overnight (and ~2kWh over the following night probably covering all use in the previous 24h). This is useful to accommodate very intermittent availability of such low-carbon grid energy.

2022-12-25: Daily Heat Loss

Today no DHW was drawn and the Thermino was pretty full overnight. ~1.2kWh was fed into the Thermino from grid top-up. So this is a reasonable spot estimate for daily losses from the storage system, ie including pipework.

2022-12-29: Metrics Tweaked

Tweaked controls and temperature-to-percentage mapping on the Thermino side to improve control further. I'm not finished yet, however!

heat battery top-up 27th/28th top-ups from grid in green throughout most of the 29th

Given continuing low grid carbon intensity (~70gCO2/kWh) over these few days, it is interesting to watch top-ups trickling in through all non-peak periods.

2023-01-06: Adjusted Times

This evening after observation of GB grid demand over some time I have moved the 20:00h (local time) slot from 'H' (high) to normal. Top-up can now happen during this hour when grid intensity is low enough.

(A couple of days later I also bumped 08:00h from normal to 'M' (medium) to encourage the system to fill its boots before the 09:00h 'H' period, just as currently happens before the start of the evening peak/'H' period.)

A few days ago I adjusted the top-up to be a little more aggressive if the target level is at or over 75%, to be better at opportunistically soaking up available low-carbon grid energy.

I am also contemplating adding 'dynamic' support to the Thermino while DHW is being drawn and the Thermino is not hot enough to keep the combi off. If any top-up would be permitted, ie the target fill is over 0%, then in the above case boost full immediately even if the Thermino level is at or above the target (but not full). That should reduce demand on the combi 'in real time', and carbon emissions, and suffer no storage loss. It can probably only contribute ~10% (maybe ~300Wh) to a long shower or bath. It can boost effective storage capacity and reduce storage losses.

An interim solution is: when the target fill is greater than zero, the Thermino is far from full, and temperature is falling rapidly, force a full boost immediately.

2023-01-09: Anticipating DHW Drawdown

As of this evening I have started logging all significant drawdowns of DHW, based on 5-minute sampling. I will look for patterns in this so that, for example, a boost could be encouraged just before common DHW drawdown times. Or dynamic response and recovery could be facilitated during such periods. This should not happen when grid demand and carbon intensity are too high, but normal thresholds might be eased a bit around those times. Or maybe a separate channel may enable dynamic response at any time if (say) intensity is not red or demand is falling, and grid intensity is below 'L' threshold, and the grid data is fresh.

This might work on (say) analysis of the previous two months' DHW draw data.

For this, meaningful patterns have to be present in the data to start with!

Also, I'm attempting to simplify the rest of the scheme again, reducing the L/-/M/H intensity levels scheme to just L/-/H, and simplifying the per-hour-of-day scheme accordingly.

# Grid intensity threshold to allow top-up from grid by H/-/L preference.
# Grid intensity must be *below* the given gCO2e/kWh to top up.
# H is high grid demand, - unspecified/normal, L low.
# Intensity levels specified must rise in order H - L.
# Zero means no top-up ever for given level.
# SVN $Id: intensity-threshold-by-HML.csv 48570 2022-11-10 14:32:33Z dhd $ #


# Hours to consider pre-charging 16WW thermal store for DHW.
# Local hour (UK), typical intensity (H=High/avoid - L=Low/good)
# SVN $Id: storage-charge-pref-by-hour-local-time.csv 49793 2023-01-08 08:50:04Z dhd $ #

This simplification seems right given some code cleverness such that thresholds are now automatically modulated by red/yellow/green status, and top-ups are blocked a little before the start of an H hour.

The normal - threshold could be automatically overridden to be (say) the average retail intensity over the last week, constrained to be less than the L threshold and greater than zero. That would typically top-up in below-average-intensity hours outside of off-peak.

2023-01-10: All Change! All Change!

Revised intensity scheme:

  • A 7-day rolling mean intensity value is now available.
  • When it is present, H (peak) hours are forced to 0 threshold, L (off-peak) hours use the configuration-file threshold, and other hours use the mean intensity capped by the L value.
  • The intensity threshold is still scaled down for red times by 10% (but nothing any more for yellow times).

This feels more like the spirit of the traffic-lights intensity tool: I should not have to keep tweaking magic numbers to keep it working well as the grid gets greener (and goes through the seasons)...

20230113 heatBatTarget

New scheme in place 2023-01-12/2023-01-13.

2023-01-21: opportunistic keep-warm

To try to at least cover more low DHW demand such as hand-washing, and allow the dynamic response instant top-up feature for larger draws, I am now forcing the target fill percentage to be just greater than zero when:

  • Not peak time ('H') nor grid red.
  • Intensity below the unadjusted off-peak ('L') threshold.
  • PV diversion not likely to be available soon.

This may not be invoked enough to be worth retaining its extra code.

2023-01-14: Get My Freq Back On

It looks as if I disabled the frequency response cron job back in October. I cannot remember why, so I just turned it back on. Grid support for the win, again!

2023-01-15: Using an Intensity Forecast

My system so far is entirely reactive, and that is fine. But it may be possible to improve outcomes using a tool such as to be alert when reactive is not going to work over the next day or so, ie the effective capacity of the heat battery.

For example, it would be possible in non-peak hours to force the top-up intensity threshold up to the maximum (ie as used for 'L' off-peak periods, 151gCO2/kWh for now), when the intensity forecast for next 24h to 48h is all above that maximum threshold. Full your boots while you can, before a coming green-energy famine, in other words.

2023-01-29: 18kWh

From very empty (~10°C cold mains) to more-or-less full ~7h and 8.9kWh, with a low-voltage event, three minutes of frequency response, and a couple of actual draw-downs of DHW, up to ~9am. Then ~16kWh by 10pm, ~17kWh by midnight and another ~1kWh in the wee hours.

20230129 heatBatTarget

2023-02-11: 9.5kWh

From fairly empty to more-or-less full ~9.5kWh overnight into wee hours today. (A little under 7h to 'full' from well below DHW temps, the last ~2h slow.) The system can load up with ~48h DHW consumption in under 8h.

20230210 heatBatTarget

2023-03-12: A Year-ish

About a year after it went live, as of today 1020kWh has been sent via the Eddi to the Thermino, from grid and diverted PV. (Months of 2022-03 to 2023-02 inclusive.)

2022, with ~10 months of Eddi/Thermino, had the lowest metered gas consumption since 2008 (2074kWh vs ~9000kWh in 2007, 8883kWh in 2008, 2862kWh in 2015),

It seems that replacing 1kWh of gas for DHW takes less than 1kWh of electricity.

Reducing annual gas demand by ~1MWh is good!

Our last Ecotricity bill estimated annual imports of gas at under ~1800kWh and electricity at ~1000kWh.

2023-06-27: Zero Gas

On I turned the gas boiler off entirely to verify that gas demand could drop to zero and that we would not run out of DHW. That has worked.

But as we have a slightly less-solidly sunny couple of weeks coming up, and the Thermino is acting as our primary/only source of DHW, I have set the minimum percentage full to 30%. That ensures that we should always have enough for a shower and/or some washing up, even in the gloomiest of weather. But I expect essentially no top-up from grid except in such dire straights. It should be a cheap insurance policy.

2023-07-28: top-up now not 'urgent' if the percentage fill target is under 50%.

That is, if not attempting to keep much in the store, be less keen to top up, especially from what may be high-carbon-intensity grid.

Now extended to ignore short dips in temperature (at <50% target), eg while running a bath, so that a 'safe' ~30% fill level can be kept indefinitely if desired, with the boiler off or on, while minimising unwanted grid imports.

That is, at 50% or above the Thermino is keenly topped-up during fast drawdown, else it actively resists top up then (eg until the state is settling).

2023-09-11: I turned the gas boiler back on (for DHW only) after meter reading this evening. This also adds the tiny draw (~1W) for its clock.

(The very next run of the bathroom hot tap drew ~10Wh worth of gas, even with a near-full Thermino.)

To reduce still further spurious boosts when water is being drawn off quickly, eg for a bath, and grid intensity is high, I have made the Thermino side slightly more reluctant to boost when the target percent full is <25%.

There are now changes in reluctance/eagerness at 25%, 50% and 75% fill targets.

2023-09-02: Thermino Losses New Estimate

We were away on holiday from 2023-08-19 to 2023-09-01 (14 full days). (We left the day before and returned the day after those dates.) In that time the Thermino has absorbed 14.9kWh diverted via the Eddi (no boost), ie just over 1kWh/d with no DHW demand.

This is with the Thermino 'full', ie as hot as possible, thus maximising losses (into the kitchen), some of which will be via the pipework.

2023-10-13: Simplified

There is now more wind power at random hours of the day than before.

To more dynamically respond to renewables intensity, I have removed the 9am and 7pm local time 'H' excluded hours from storage-charge-pref-by-hour-local-time.csv, leaving:


Now, a little after 7pm BST, more top-up is being allowed:

% tail -3 data/heatBattery/log/live/20231013.log
2023-10-13T18:11Z MT 20 GI 114 IT 0 F FH ES 1
2023-10-13T18:16Z MT 20 GI 112 IT 0 F FH ES 1
2023-10-13T18:21Z MT 66 GI 111 IT 151 F F ES 1

2023-10-17: Tuning TOPUPMINPCMAX

An unexpected emergency shower after a bath emptied the Thermino enough to top-up ~4kWh from grid at about 7pm (BST), just after peak time and at nearly 300gCO2/kWh.

The TOPUPMINPCMAX script level had been set at 30%, which is the minimum top-up level when not in 'bad' R/r/H states. In 'bad' states it was further pushed down to 20%.

I tweaked TOPUPMINPCMAX to be 24%, to top up very reluctantly at that minimum even when not 'bad'. (Top-up eagerness rises at each of 25%/50%/75%.)

That should still be enough for washing hands and dishes, or a short shower, even with gas DHW support off, minimising grid top-up at 'bad' and other high-carbon times.

2023-10-26: even more reluctant

If in an 'H' time, or intensity is 'R', the top-up target is reduced. This now also happens when grid intensity is on/above the 'L' threshold, currently 151, thus pushing the minimum top-up target down to 18 from 24. This works harder to minimise top-up when intensity is greater than gas burn.

2023-11-07: lowest carbon

A there was an energy storage nightmare: 2 showers and a bath drawn on a day with only a few minutes' grid electricity intensity low enough for unforced top-up, and the store started only 2/3rds full and ended negative, ie below 50°C to supply hot water directly... So ~2kWh of higher-than-gas-intensity grid energy was drawn.

I'm setting TOPUPMINPCMAX to be 0 until spring to minimise carbon footprint, ie never top-up from grid unless there is a carbon saving.

Logic has been added to ensure that top-up level is at least (minimal) 1% when grid carbon intensity is below the 'L' threshold, ie when avoiding gas would save carbon, when not in 'H' hours. This applies even when TOPUPMINPCMAX is 0.

2023-11-18: 9.8kWh from Cold to Full

A complete overnight refill from cold (~13°C) took ~9.8kWh.

2024-01-15: from colder (~9°C) took ~9.8kWh overnight.

2024-01-20: from ~11°C took ~9.9kWh overnight.

2023-11-27: 179 Threshold

I think that I am being too conservative on my upper intensity threshold to top up the Thermino from the grid, especially as displacing 1kWh of gas seems to take less than 1kWh of electricity.

So I am raising the threshold from 151 to 179gCO2/kWh overnight.

This should help me displace more gas and still save carbon in total, still well under a nominal 190gCO2/kWh for 100%-efficient DHW gas burn.

The (prime) 179 value should be relatively distinct in text searches.

2023-12-13: Boiler Failed Again

The gas boiler dripped and then failed again, with the circulation pump running continuously, and no response to a call for hot water even with the Thermino only tepid.

So I have put the Thermino system back on emergency 'primary DHW' mode, so we should have hot water, but no heating. And I have emailed boiler man!

I slightly adjusted the default fill target down from 80% to 74%, which should still be enough to run a bath, so that during 'R' and 'H' stress times the modified threshold is 49%. Both 74% and 49% are below fill-aggressiveness thresholds on the Thermino side, so now it will fill more gently until grid conditions are good.

2023-12-28: Standing Losses

20231226 heatBatTarget

There was no DHW use for 25/26/27th; there was no one home from the afternoon of the 24th to the afternoon of the 26th, and no DHW was drawn on the 26/27th.

202312 heatBatteryInputDailyRecent

Top-up energy consumption over the three days was 5.7kWh (1.9kWh/d), avoiding a big hump in grid carbon intensity on the evening of the 26th! This represents standing losses.


Note that the gas combo boiler failure meant that the kitchen was cooler than usual at ~17°C, which will have slightly increased losses from the full (hot) Thermino.

(0.936kWh was consumed on the 28th by the time family returned.)

2023: Gas Drop

For 2023 gas consumption fell to 1275kWh, the lowest year ever, reduced via the eddi/Thermino and an increasingly-aggressive top-up algorithm in part.

More typical annual gas consumption pre-Thermino was over 3000kWh.

2024-02-20: Rework for Heat Pump

The Thermino always tops up from local PV when export to grid exceeds ~400W, after local house demand is covered and the Enphase battery is full or charging as fast as it can. I do not expect this to change for now.

At the moment, the Thermino may get topped up from the grid in 'winter', ie when most days in a row it has not completely filled, assumed by diversion. In winter it will top-up from 00h up to 06h if grid CO2 per kWh is below gas, not at all from 16h up to 19h, and in the rest if grid intensity is below mean.

An optimal Thermino top-up algorithm may depend on whether the Intasol is kept, or the Thermino becomes pre-heat to the heat-pump DHW tank, legionella control, relative heat-loss of the heat-pump DHW tank and Thermino, etc, etc. But for now I will ignore most of the possible complexity and assume that the Thermino becomes simple serial pre-heat for the heat-pump DHW tank, ie that the latter can accept hot input water and has an TMV on the output for safety.

New top-up algorithm sketch

My working assumption is still never to top up from grid from 16h up to 19h, at least on weekdays.

Next I assume that DHW generation with the heat pump will have a CoP of about CoPDHW, which may be close to 2. This can be updated dynamically, or assumed and set statically.

Maybe I have the heat-pump DHW tank be kept 75%+ full outside 16h up to 19h, pushing that up to 100% from 00h up to 06h if grid intensity is not 'red' or if grid intensity is below mean at any other time. (I may wish to suppress heat-pump running from 00h up to 06h though, unless it can run in a very quiet/slow mode.)

(Maybe as with the Thermino in primary mode from 16h up to 19h I keep the heat-pump DHW tank ~25% full to allow washing up etc, and lower that percentage when the grid intensity is red. I may simply not have this degree of control over the heat-pump DHW.)

Maybe I then top-up the Thermino outside 16h up to 19h if grid intensity is below mean/CoPDHW so with effective intensity as good as heat-pump mean, or if intensity is forecast to be at least current*CoPDHW for most of the next 24h to 48h to ride out a bad day or three with tanks full.

I may prevent any Thermino top-up until the heat pump DHW tank is full, or I may let the Thermino concurrently soak up any dribbles of available power (eg from PV or from the grid connection capped at ~2kW) that the heat pump does not take, eg because the heat pump is running at low power.

And all Thermino top-up from grid should be inhibited if grid intensity is above gas, as an upper limit!


(Count: 1)