Ensmartening a heating system
When we bought The House, we also inherited the heating system - a 1990s-vintage oil-fired system that runs both the hot water and the radiator heating. It's a typically European system and in operation, it's incredibly simple - fuel oil (which is actually pink diesel) is burnt in the bit that sticks out at the bottom of the big orange box at the rate of 2 litres an hour.
That's used to heat the water that circulates through the radiator network, and also heats the contents of a 300 litre heat exchanger tank which takes up most of the orange box. Cold water comes in through the pipe on the wall, circulates through the heat exchanger, and goes off into the house water system. Voila, mains-pressure hot water at 45 degrees.
Although it was state of the art in 1997 (and cost a small fortune - The House came with All The Receipts), it's remarkably dumb in modern automation terms. The control unit is the box that sticks out at the top - it's got a 7-day 4-programme controller to control heating and water timings, and the temperature that the heating circuit reaches is controlled by an external temperature sensor on the outside of the house and a couple of other parameter adjustments. Otherwise, it's either running (burning 2 litres an hour) or it's off.
Once you get over the disquieting feeling that comes with having 4,500 litres of diesel sitting in tanks in your cellar, the whole setup works remarkably well. It's been painstakingly maintained for its entire life, and all the non-electronic parts are either stainless steel or readily-obtainable standard items like circulation pumps. It's run flawlessly for over 25 years and there's no reason to assume that it can't keep going.
The other interesting factor is that it's actually economical to run, at least compared to the gas system that heated our previous house. Even on the coldest days of the year it burns less than 10 litres of oil, so the 2,000 litres that I filled up with at the start of the autumn is going to last a while.
All that means that replacement with a new system - either a heatpump or wood pellets - is going to take a very long time to recoup the costs. But in the meantime, I'm stuck with a system that predates the internet, never mind a "smart" home. It's a truth universally acknowledged that a house with an outdated heating system is in want of a retrofitted upgrade solution...
Attempt 1 - retrofitting smart controls
My first idea was to try to reverse-engineer the control system so that I could control the burner with something programmable. In theory,that should be possible - the entire system (burner, water heat exchanger, controller) is modular, and the specific control unit this installation was fitted with has the option of a remote programming unit connected by a 2-wire cable. Remotes aren't hard to find on eBay as these systems get decommissioned, so I figured I could pick one up cheap and hack my way in.
That idea fell apart on two grounds - firstly, the protocol turns out to be old, proprietary and completely undocumented. I got precisely nowhere trying to get information out of Viessmann, so the entire process would have involved reverse-engineering. Secondly, I was a bit wary about trying to reverse-engineer the system that we rely on for heat and hot water, because blowing that up would make me extremely unpopular.
Attempt 2 - control the demand.
After the disappointment of the closed protocol, it suddenly struck me that reverse-engineering was probably overkill anyway. Unlike the gas systems that I've been used to, the oil burner is either on or off - it doesn't modulate at all. Whether it fires or not is determined by the temperature of the water being pumped round in the heating circuit - when it drops below the setpoint determined by the outside temperature, the burner kicks in; and shuts off when temperatures are back where they should be. That happens suprisingly infrequently - for every hour of operation, the boiler fires for less than 10 minutes even on the coldest days, and the circulation pumps only draw about 35W of power. Put those two together with the fact that it's also more efficient from a whole-house perspective to try to keep a constant temperature rather than have it bouncing up and down. This means it makes sense to run the system continually and concentrate on the parts I can control - the radiators.
Controlling radiator output is a solved problem - fit thermostatic valves and control the temperatures and duty times from Home Assistant. All the radiators have either a Tado or a Sonoff unit fitted, which means that each room can be controlled separately both in terms of time and temperature.
Stretch goal - statistics
Heating your house from a fuel source that a) you can see being depleted and b) needs a specific decision to replenish is a different perspective to have if you're used to a system where the fuel flows through a pipe or down a wire. That's especially the case if you don't know how much fuel you're going to consume, and getting refueled has a lead time. In the winter months there can be a 4-6 week lead time between order and delivery of oil supplies.
Knowing how much we're consuming was the next step. You'd think that this would be easy to do - surely digital flow meters are a thing? They are, but have two problems - firstly they're VERY expensive because they're normally fitted to high-value industrial systems; and secondly installing one would require chopping into the fuel feed pipe. I'm fine with doing "normal" plumbing, but I'm not keen on the idea of messing around with small bore copper piping through which flows noxious and flammable liquids if I'm honest.
If I couldn't measure the flow, what about the depth? Analogue tank depth guages definitely exist, and even the digital versions are relatively dumb and definitely not machine-readable. That led to an abortive attempt to measure the depth with a laser reflection ranger, which failed because the refractive index of the oil stopped the light being reflected properly. Then a second attempt with an ultrasonic distance sensor returned readable results - but the volume of oil being used was so small relative to the storage volume of the six tanks that the average day's usage was lost in the margin of error of the sensor.
The answer, as it turned out, was way simpler. The system burns fuel at a constant rate of 2 litres an hour - that value is explicitly stated in the specifications, and backed up by the fact that the fuel injector nozzles are sized and calibrated in terms of specific fuel volumes per time interval. So if I could figure out how long the system was burning for, I'd know what the fuel consumption is.
There's no obvious interface or diagnostics available from the control unit itself, but there is a proxy measure. When the burners ignite, the intake fans kick in to blow air into the system at pressure. The combination of those and the fuel pumps draw about 250 watts, so the amount of time that the system power consumption is more than the 35 watts of pump-only operation is the length of burn.
Measuring power consumption in a way that can be fed into Home Asisstant for number crunching is no problem - there's a Shelly 1PM fitted in series with the burner circuit, and that's fed into a Home Assistant automation which increments a counter each minute when the power draw is greater than 200W:
- id: '1736029563776'
alias: Increment Burntime Counters When Heating Power > 200
description: Increment Burntime Counters When Heating Power > 200
triggers:
- minutes: '*'
trigger: time_pattern
conditions:
- condition: numeric_state
entity_id: sensor.heating_pm1_power
above: 200
actions:
- action: counter.increment
metadata: {}
data: {}
target:
entity_id: counter.heating_daily_burn_time_counter
- action: counter.increment
metadata: {}
data: {}
target:
entity_id: counter.heating_total_burn_time_counter
Figuring out the fuel consumption is just a case of dividing by 60 to get the hours figure, and multiplying by 2 litres per hour:
I've also added counters to record the total run time of the system on a daily and total-to-date basis just for completeness.
Why bother?
A good question. Partly it's a "because I can" situation - the developments in tools like Shelly sensors and Home Assistant make it possible to do things like this in the first place. Just because the heating system predates these doesn't automatically mean that it's stuck being dumb forever. There's also the quantification angle, too - knowing how much oil we're consuming is a "peace of mind" thing, knowing that based on actual consumption trends we're going to be OK to get through the winter with the fuel stocks that we've got in. But what's been most suprising is finding out with hard numerical facts that a system that I thought was obsolete is actually surprisingly economical to run, and doesn't have as big a CO2 footprint as I initially thought, at least in comparison with an equivalent gas-fired system.