This is a screenshot of what I pull up on my iPhone every morning now after its alarm clock wakes me up. That’s right, it’s an interface to turn on my espresso machine so that it will warm up to a specific temperature by the time I’m done snoozing! I can even look at a real-time plot of the temperature to confirm that it’s holding where it should be and doesn’t need to bumped up or down a degree.
As outlined in this previous post where I laid out my plan, I wanted the extra precision of digital temperature control in my Silvia, but I didn’t want to slap a PID box on the side of it with an LED readout of the temperature. So I decided to build my own controller, and I opted to add Wifi to it for a web-based interface, which also opened up the possibility of turning it on remotely from bed, so it would be all warmed up by the time I was ready for my morning shot of espresso. Additionally, the controller automatically shuts off 1 hour after first being activated, so I essentially leave my Silvia powered up all the time, and the boiler only turns on when I ask it to.
For the temperature control, I contacted the guy behind PIDKits.com and asked for everything except a PID controller, and he obliged, and also sold me a pre-assembled TC4v1 Arduino shield to interface with both the thermocouple (to read the boiler temperature) and the solid-state relay (to control the temperature). So with a bit of assembly, it was pretty easy to essentially bypass the built-in themostat with a digital one running on my Arduino. I played around with the P, I and D parameters on the controller, and I was able to get the temperature to be stable within ±1°C; much better than the ±15°C that the stock thermostat can achieve!
Next I ordered a CuHead Wifi shield for my Arduino and built a very simple REST-like interface using WiServer, which returns JSON, to run on the controller itself. This essentially turns the controller into a web service, which is in turned controller by a very simple PHP-based web app that runs on my iMac . This app contains all the right magical HTML incantations to look like a slick app on an iPhone/iPad, and can also be used on my iMac directly and even my new Kindle 3! (Update Jan 2012: I now have an HTML5 cached app on the phone: no iMac required after the first load!)
The whole thing is right now tucked away on the shelf beneath my Silvia, totally invisible to the casual eye, but I’ll probably put it in a little box or something just to hide exposed wires. (Update Jan 2012: in order to keep the connection stable I actually ended up hanging the controller on the wall hidden behind the Silvia.)
So I didn’t quite implement everything in the original plan, and I haven’t yet been able to run the entire app directly on the controller, nor have I been able to set up WebSockets through the Wifi shield, but overall I managed to accomplish the original design goals with a minimum of fuss, and hey, I use this thing every morning to make great espresso, so I’m a happy camper!
Nicolas Kruchten is a Staff Software Engineer at Datacratic in Montréal, Québec, Canada.
His interests include data visualization, robotics, economics and making the world a better place.