Hacker News new | ask | show | jobs
by barnas2 406 days ago
You could easily make that. Thermostats are very simple concepts. Basic A/C systems are 4 wires. Power, heat, cool, fan. If you want to cool the house, you connect power to "cool" and "fan". For heat, connect "heat" and "fan". If you just want to move air, then just connect the fan. Throw in some hysteresis so you don't short-cycle the compressor. With a raspberry pi, temp sensor, screen, and a relay block (the voltages are too high for a pi), you can probably build this in an afternoon/weekend.

If you have heat pumps or a multiple zone system, or a few other things they can get more complex, but they still aren't super complicated.

1 comments

Yes! On my long list of things to do when I get the elusive "round tuit" is to build an open-source touchscreen thermostat using cheap ubiquitous off-the-shelf parts. Probably something like a CYD (cheap yellow display, as they are known), an ESP32 or RP3020, a good temp sensor, and some relays. The goal is to make it 100% compatible with Home Assistant as well as offer its own API and web interface to the local network. 3D print your case of choice.

I have run across a few open source thermostats, but either they are some hobbyist's one-off project, or they are geared toward very different systems from the common North American forced-air furnace and whole-house AC unit combo.

Before the but-what-about-ers start brigading in, yes it is possible to make this system safe against engineering or software defects. They make analog non-adjustable temperature sensors that "trip" below a certain temperature, you wire one in parallel with your heat wires near the furnace and you house will never go below freezing. (Very common in rentals.) If you're concerned about over-heating, add another temp sensor and relay and put it in series. Put time-out timers on every function. Have alerts sent to your phone. Add a SIM card and modem if you don't trust your wifi. And so on, tastefully adjusted to your own personal level of paranoia.