Apr 152016
Heating Monitoring with RasPiO Duino

We went to Poland for the Easter holiday. When we got there the house was really cold (6°C), having been vacant for several months. We’ve got a fairly substantial solid-fuel furnace in the basement and a large room full of coal to burn. We have a gas boiler too, but we want to get rid of the coal to repurpose the space it occupies. Burning it is the most logical solution, but it involves some work. But I’ve tried to make it a bit more fun.

Solid fuel furnace

Solid fuel furnace

The furnace is an interesting beast. It’s taken me a long time to partially tame it, and I still get it wrong sometimes. There’s an electric pump which pumps the heating water round the system. There’s also a fan that is used to exert a measure of control over the fire.

More detail of the heating system

More detail of the heating system

There’s a microcontroller sitting on top of the furnace that switches on the pump when the furnace water temperature reaches 35°C and shows the current temperature via a 7 segment display. It also ensures that the fan is blowing air up through the fire if the furnace water temperature is below the chosen setting (I use 70°C for rapid-heating and 45°C for maintaining a reasonable temperature.) It always overshoots though and control is quite a bit less good than I would like it to be.


Here’s a video showing what I’ve put together…

What’s The Duino Being Used For?

The main nuisance is that the furnace is in the basement and I have my RasPi.TV Polska HQ two floors above. I don’t really want to be running up and down the stairs every 15 minutes to see how the fire is doing. So, last year, I came up with a way of remotely monitoring temperatures of the furnace water and the water pumping round the system. I used a Raspberry Pi B+, RasPiO Duino, two temperature sensors and a PiHut wifi dongle. This year I added a 20×4 LCD to the RasPiO Duino so that I could monitor these temperatures directly from the furnace room (kotłownia) as well as remotely via ssh.

RasPiO Duino + LCD20 kit used for furnace monitoring

RasPiO Duino + LCD20 kit used for furnace monitoring

(You can find the above LCD20 kit with and without a RasPiO Duino here.)

The TMP36 analog temperature sensors are connected to two analog ports on the RasPiO Duino, which reads their values and reports them to the Pi via the serial port. From the comfort of my first floor office, I can log into the Pi via ssh and run a Python script to show me the furnace water temperature and the pipe loop water temperature.

Real-time monitoring of furnace water and pipe water temperatures

Real-time monitoring of furnace water and pipe water temperatures

Our Heating System Is Fussy

That way I know when the furnace water temperature drops too low and it’s time to chuck some more coal on the fire. But the system is a bit fussy. If you overload it, the control is not all that good. It may be that the seals on the furnace need replacing or the fan control on the microcontroller is too liberal. WJDK exactly. But, if you fill it up with coal, it will massively overheat and boil the water. So I prefer to control it by restricting the fuel and monitoring the temperatures.

I Want Better Control

Solid-state relay

Solid-state relay

But my long-term aim is to take total control of the heating system using a RasPiO Duino instead of the existing micro-controller.

From observation, I know exactly how the current system works. I know when the fan and pump switch on and off. For example the fan comes on for about 15 seconds once every 5 minutes – even when the furnace water is way too hot. There is enough air leakage on the furnace that this needs to stop if we want proper control! So my game-plan is to use the RasPiO Duino and a couple of solid-state relays to control the furnace fan and the water pump and take total control of the system. The ultimate aim would be to be able to just load up the furnace once a day and leave it. Or even to be able to remotely tweak the settings without having to go to the basement.

Temperature Feedback From Within The House

But I will need temperature feedback from inside the house as well – and I’ve got the measurement side of that covered too. I also set up two other Raspberry Pis with temperature sensors to monitor different places in the house.

I set up a Raspberry Pi 3B with a prototype analog board on. This uses GPIO Zero to drive and display the output from two TMP36 sensors. One sensor was attached to the RasPi.TV Polska office radiator and the other was dangling in free air a couple of centimetres above the window sill where the Pi sat. The onboard wifi proved very useful and worked without a hitch for the whole two weeks we were there.

Analog board prototype on Pi3. This had two TMP36 as well

Analog board prototype on Pi3. This had two TMP36 as well

Still More Readings Needed

But I wanted more readings, so I soldered another RasPiO Duino directly to a Pi Zero and used that to read two more temperature sensors dangling in free air in the middle of the office. This could obviously be placed anywhere in the house. You could even have one in every room, but that might be a bit over the top. This Pi Zero was connected to wifi using an Edimax dongle. I assembled it without the headers and with its LED bent down as I wanted it to be as low-profile as possible so I could fit a Pimoroni Display-o-tron 3000 on top.

RasPiO Duino soldered to Pi Zero can read up to 6 TMP36

RasPiO Duino soldered to Pi Zero can read up to 6 TMP36

I could log into all three of these monitoring Pis to monitor the temperatures. This is what it looked like on my screen…

Monitoring temperature readings from three separate Pis

Monitoring temperature readings from three separate Pis

Next Step – Take Control!

So you can see the system is coming together nicely. Temperature monitoring is achieved. The next step is to take control of the fan and pump, which will require some hardware and software work. But ultimately I’d like to incorporate feedback, from the sensors in the house, into the control system as well. When the house is warm enough, the furnace water temperature can be turned down and the fire can be maintained at an absolutely minimal level. Who knows, maybe ultimately it could incorporate the outdoor temperature and weather forecast data for accurate predictive control. That would be ultra-cool, but is obviously several steps ahead!

Where Can I Get These Shiny Toys From?

You can get the RasPiO Duino here,

RasPiO Duino Kit

RasPiO Duino Kit

the RasPiO LCD20 here

RasPiO LCD20

RasPiO LCD20

The analog board is not out yet (coming soon).

  22 Responses to “Central Heating Furnace Monitoring and Control with RasPiO Duino and Raspberry Pi”

  1. Lovely project. What would be really cool is if (when you left Poland) you filled the furnace up with coal for the next trip. Then, you could somehow remotely turn the furnace on at the airport and have the house nice and toasty for when you arrived. :-)

    • That would be pretty cool. I’d much prefer to use the gas system (instant heat on and off with no overshoots) but we’ve got all that sodding coal to get rid of. Lighting the coal furnace automatically would be tricky though because you have to start with paper and sticks to get the heat up before chucking bits of coal on. Auto-ignition would be very very cool though. Love the idea.

  2. Hi there,

    Thanx for quite interesting and innovative article.
    Not only I come from Poland but because of the idea ;-)
    I’d have a question to above: how do you think it may be possible to monitor and/or control an eg. Bosch LG condensing furnace /Cerapur Smart/?
    I know there a proprietory interface but for the sake of the idea I thought of Arduino/Rasp DIY interface.


    PS. I hope you succeded with warming up the house before Easter anyways despite these experiments ..))

    • Monitoring would probably be easy because all you do is put your sensors where you want them and get the Duino/Pi to show you the values. It doesn’t need to affect the system.

      Control would be a different matter though. I only consider controlling this system because it’s very simple and I can find a way to do it non-destructively without damaging the existing micro-controller. The pump and fan literally plug into the back of the microcontroller box using IEC plugs and sockets.

      (Yes the house was warmed through within about 36 hours. It takes that long to get the walls warmed, but the air temperature was habitable within a few hours.)

      • Thats ok.
        I meant to connect directly to Bosch interface however plus GSM/Router DIY module, not independent external sensors installed by me. Is is some standard or Bosch’s proprietary thus enforcing a purchase of dedicated module?

  3. Analog Zero board looks neat. It should sell really well. Will it be a Kickstarter? I hope it will be in your stylish black finish.

    • Hi Tony. Haven’t yet decided whether to KS it or not, but it will definitely be in the RasPiO standard “colours” of black/white/gold

  4. Hi Alex,I’m a 16 yr old beginner with my Raspberry Pi B+ and I would like to know how to get some thing like wine to run on my Pi. I want to run Windows programs on the NOOBS operating system. could you make a video about it?

  5. While I am not an expert on the control of heating appliances your control system needs to have some safety features as well.

    I would suggest that there is a risk from low water flow – either the water will boil or if all the water has been lost the boiler could melt and set the house on fire.

    There is also probably a risk from shutting the fan off when the coal is burning – a shortage of air will produce large ammounts of lethal Carbon Monoxide and there will be little or any airflow to carry this up the chimney

    You might also need an over temperature action ( shut of fan but keep pump running ?) – this needs to balance the risks from the furnace melting against burns from the radiators and pipes

    The software probably needs some sort of safety reliability level as well due to the risks of the failures.

    There are probably others as well – replacing a control system without a full understanding of the requirements can lead to fatal consequences.


    • Definitely some good points to consider there John. The chimney has an excellent “pull” on it and there is air-flow even when all the adjustable openings are fully closed (I suspect leaky seals). When the fan is off and everything is shut, you can hear the air-flow being sucked into the furnace by the “pull” of the chimney.

      The way my father-in-law used to use the system was with the fan permanently unplugged. The control system never really worked as it should have from day 1 (it was installed in 2003). That’s why I want to improve it. Most of your suggestions were already on my ‘radar’ but thank you for caring enough to mention them :) I might just chuck a CO detector into the mix as a result of your comments.

      I could easily have the system send me a push notification to my phone in the event of a fault condition, but the reality is the vast majority of the time it’s in use, I’m in the house anyway with half an eye on the temperatures. I can’t wait to get rid of all the coal so we can stop using it altogether :)

  6. I am not an expert on boiler safety. I hope to use the above ideas to monitor and record the on/off cycles of my furnace along with temperature data.

    I just thought I should mention that those of us who are not professionals should be careful not to wire around any of the safety features on our furnaces. These features are often a bunch of electro-mechanical switches in series with the relay controlled by the thermostat that calls for heat. Therefore, with these switches in series, if one sensor is not satisfied the boiler does not get the command to start.

    Typical safety devices are one or two low-water sensors. I also have an air pressure sensor in the flue to ensure that the draft inducer had induced enough draft so that all combustion gases go up my flue even when the flue its cold. I have an outdoor metal flue that gets cold because to save energy I had an economizer installed that closes the flue as soon as the boiler cycles off. An economizer was not possible on my old over-sized boiler so the natural draft cooled down the boiler and all the water in it whenever it cycled off.

    Of course, the most important safety is the gas valve which will not open fully if the thermo-couple is not hot enough to open it. It would be pretty hard to mess with this wiring, but be careful.

    I have a computerized control system that calls for heat, it just doesn’t have any memory to collect data. I did notice when researching control systems that none of the computerized system were designed to replace any of the electro-mechanical safety devices.

  7. A good project! I second the safety points raised by the others who have commented here. Beyond that: As an automation engineer, I have worked with automated heating and cooling systems in a manufacturing environment. It is not an easy thing to get control of. One thing that can help is to incorporate and PID(proportional, integral, derivative) into your system. There are libraries around which can help with that. I usually use the proportional and integral part of the algorithm and dis-regard the derivative. The benefit is that one does not end up with ‘overshoot’ of the set points. In other words, the closer the system gets to the set point(ex. water temperature – 45C) the less energy the system needs to pour into the water. So as the sytem gets to 40C, for example, one might have the damper partially close and the fan speed reduce in order be able to hit the set point. The PID loop allows one to predict the systems response and thus prevent the system from over-heating and thus giving you much better conrol.

    Just a thought. Good luck with this very cool project!

  8. But can you get a program written for Windows running on the NOOBS operating system? wine was a program I found to do that but I couldn’t figure out how to install it. the website is https://www.winehq.org/

    • The only way to do it that I know of is to use an x86 emulator, but people who have done it tell me it’s horribly slow. Have a google for “Exagear Desktop” and see what you think. (It’s not free though – £10-20 depending on what Pi you have.)

  9. trzeba bylo najpierw troche posprzatac i dopiero robic fotki. Za balagan w kotlowini 1, za projekt 6. Pozdro

  10. One way to help control the boiler without constant attention is to use it at a constant reduced heat output. We used to use this mode when electric power and the electric controls were not available or working. Getting this to happen with coal is usually a matter of draft control and using a smaller fire than normal. The most popular way to use coal when it still was common had a “stoker” (Hopper, electric worm feeder, pulverized coal) Besides temperature controls, timers were used to limit the amount of coal fed into the boiler.

Leave a Reply