Site Overlay

Monitoring a Solar Hot Water System

The diagram is my solar hot water system, water is heated daily for all our needs using both direct solar energy via evacuated tubes, and surplus electricity from a PV array, (oh and a traditional gas boiler for when we’re desperate – e.g. middle of winter and there’s snow on the panels!).

Navitron Evacuated Tubes. Solar radiation is captured using multiple glass tubes forming a vacuum between layers of glass (like a thermos flask) that help with better heat retention. Heat is transferred via a heat exchange. Usually plumbed as a closed loop – in this setup water is drawn directly from the bottom of the cylinder, and after picking up heat from the panels, returned to the top of the cylinder using a central heating pump. A simple temperature difference and relay controller turns the pump on and off as required.

Solar PV. With a 4kw array on the roof we quite often have surplus electricity. The solarboost+ detects the surplus power and produces a variable voltage output to send to an immersion heater. Because we didn’t have a spare immersion slot in the cylinder I used a “Willis type” external immersion arrangement. The heated water is circulated via passive convection from the bottom to the top of the cylinder.

The temperature of the cylinder, hotwater panel and willis immersion are all monitored with a RaspberryPi and a set of 1-wire sensors so I can keep an eye on the system. Using an old smart phone re-purposed as a simple monitor the family can quickly and easily see if there’s sufficient hot water available.

On the raspberrypi are two Python scripts, two cron jobs, a Round Robin database, a simple web server and two javascript/html webpages. Combined, this produces a graph of heat change over time for the panel, willis heater and the bottom, middle and top of the cylinder. Using google gauge javascript, a simple web page for displaying on a cheap phone that shows the temperature of the top and middle of the cylinder.

The 1-wire sensors are easily hooked up to a raspberrypi. I’ve used four – and they each have their own unique code so it’s easy to use just one 3 core cable to connect them all together – no need for separate wires for each one.

The Round Robin Database (RRD) on the raspberrypi stores the temperature readings averaged over 5 minutes. The script used to create the RRD is in the zip file below.

Using a python script, temperature readings are taken every minute and added to the RRD database. The same script also generates a graph at the same time.

Every midnight a CRON job and shell script is used to copy that days graph to a backup.

A cron job and python script are used to take temperature readings and export a JSON formatted file every minute

A further python script is executed to run a simple http web server. The web server hosts two files – index.html which shows the current graph, and a link to the back up graph folder. The second file, now.html, runs javascript to read the json file and generate two google gauges. These refresh every few minutes to show current top and middle cylinder temperatures. This web page can be shown on an old smart phone re-purposed as a cheap wall display showing “at a glance” the availability of hot water for use.

If anyone is interested, a zip file with all the code used is here. It’s not pretty, but it works for me!