Control Freak

Years ago, I bought a WiFi-connected relay module, just because. After seeing how it worked, it sat in my parts drawer as a solution looking for a problem. Well, the problem finally emerged – perhaps because we’re getting old – or perhaps because we’ve always been forgetful. But the days of merrily burning propane because an appliance was unintentionally left on are over.

We have a heat recovery ventilator (HRV) that normally runs on low, or is turned off completely when it’s especially cold out. It recovers some of the heat from exhausted stale air from the house, but judging by the melted snow around the exhaust, not nearly all of it. When we’ve filled the house with smoke from a mistake with the fireplace, or some exuberant cooking-on-high, we switch it on high for a bit. Then we forget it’s on for a couple weeks. I have no idea what that costs us, but judging by how cold the stairwell where the fresh air comes in gets, quite a bit.

We also have in-floor hydronic heat in our “north room”. This is our office, and windows on 3 sides makes it filled with light, and a bit cool in the winter evenings. It’s nice to warm up the floor for a few hours if we’re going to be in the room, so we turn on the floor heat. Then we forget it’s on for couple weeks. I don’t know what that costs us either. It’s not that bad, since the boiler is high efficiency, and the heat from the floor mostly offsets heat that would have to come from the forced air furnace. But it certainly is an unnecessary expense.

Wouldn’t it be nice to have a convenient control that allows one to turn the HRV on for a while, then have it automatically switch back to the original setting? And a control for the floor heat that switches off automatically after the desired hours of floor warming has been provided? Something like this?

And it would also be nice to be able to control it from one’s phone, something like this:

For quick installation, it would be nice if the relay module connected to our home network through WiFi. Then I can just screw it to the wall in the utility room, and run a wire to the HRV, and a wire to the junction box for the boiler thermostats. A 3D-printed case is a nice touch, rather than dangling it from the wall by wires:

Our “HVCon” system is installed and working for some weeks, now. Since it doesn’t need a pretty UI (and Mona is pretty clever about these things), it was quick to program. A single Windows app that runs on our media server implements a standard (boring) Windows UI (pictured above) and also allows an inbound connection from a TCP/IP terminal program on our phones (also pictured, above). The command line interface you see on the phone was delightfully simple to implement. If you can remember “H for help”, you can get the list of simple commands – we’re not controlling a nuclear power plant here…

The Windows app accepts only 3 requests: set HRV level, set HRV to high for a specified time, turn floor heat on for a specified time. When the user requests a change, the app uses the HTTP/REST interface of the relay module to set the relays, and starts a timer for timed operations. The response from the relay module isn’t parsed – it’s just displayed. If I start noticing something other than “success-success”, maybe I’ll check the relay response. Sadly, the relay module has no way to be interrogated to determine its current state, so the app stores the state, and they could get out of sync until another command is sent. Simple and works is the key, here.

And don’t underestimate the ability of a command line interface to quickly add a hand-held device into the mix. I was wrong, in the 80’s, when I thought a mouse was a tedious and inefficient UI device. But my investment in time for software for the phone to add it to the system was 0. You don’t need to calculate a savings ratio when one number is 0; you saved 100%.