Internet controller (Smarter) Water Heater

I live in an old house of character in Malta. In Malta it is very common that people use electric water heaters that heat 200 litres of water. In my house the switch to control this geyser is located on the second floor. Apart from having to go up 2 flights of stairs the switch itself is dumb. I upgraded the switch to an analogue timer but this is still too dumb. I play football at different times during the week. To make matter worse I sometimes stay to have beer after (I don’t want to ruin my figure with too much exercise).

This convinced me to work on a smart switch which can be controlled physically and through a web interface. My wife is not tech friendly so to keep a happy household I must ensure any upgrades must allow the device to be used the same way as before.

I decided to use a device called Spark Core. It is an Arduino with a built-in Wi-Fi connection to the internet and most importantly access to the spark cloud. It is programmed using the Arduino code which is a derivative of JAVA and flashed through the cloud itself. It has really impressed me on how well this combination works and its small size is incredible. I highly recommend this for prototyping.

To make sure my geyser goes on, whether there is internet available or not, the control unit must store and execute the alarms locally. This caused a few headaches since this is a microcontroller which has memory limitations, couple this with required libraries such as time and internet libraries and you will find you are struggling for memory. For this reason I was only able to create 4 separate alarms. Since my development of the device, the Spark Core team have updated the firmware which they state improves the memory management of the microcontroller. Since 4 alarms are enough for my needs I did not need to test this by increasing the alarms.

I was planning on posting photos of the prototype I made but in the end I did such a bad job cutting the plastic and fitting everything inside I thought it would be too graphic for the internet to see.

I originally planned on installing a push button switch which would keep the geyser on for an hour. I decided to forgo it which allowed me to implement a simple power switch which can be found in all houses. This makes the geyser look the same as all other geysers on the market. No one is the wiser of this upgrade.

I was still testing the implementation in the photos below but all in all it was a success. Geyser went on immediately using the switch and internet user interface. No fires and no animals were hurt

I have worked as a web developer in the past but I was never too great when it came to doing work for me. The user interface is as simple as it gets - it cannot get better approval than the wife managing to use it.

Possible improvements for the future (apart from a better UI):

  • Instead of a fixed one hour on period replace with a user specified amount for example 30, 45, 60, etc.
  • Actual temperature of water
  • Working LED on switch
  • LED indicators somewhere more visible

Demo URL Below:


@maldman Awesome project. Solving real world problems with the Spark Core! Would love to see you share the demo code as well!!



Excellent project @maldman
Would you please care to share your code?