Many HVAC systems in North America operate off 24V systems, which can be readily upgraded with off-the-shelf smart thermostats quite easily. However, there are many people living in buildings with 120-volt fan coil units who aren’t so lucky. [mackswan] is one such individual, who set about building a smart thermostat to work in these situations.
The build is based around an ESP32 running ESPHome firmware. It rocks a 2.42″ OLED screen with automatic brightness adjustment for showing temperature and control parameters. There’s a rotary encoder on the front with an integrated button for control, with [mackswan] building the physical device to look as clean and neat as possible. The device uses a relay to switch the fan coil system on and off to heat or cool as needed, with an SHTC3 temperature and humidity sensor used to monitor current conditions in the home.
If you’re in an apartment building or live in a condo with this kind of setup, [mackswan’s] build might be just what you’re after to improve your HVAC control. We’ve featured plenty of other DIY thermostat hacks over the years, too. Meanwhile, if you’re finding creative ways to better heat and cool your living space, we’d love to hear about it on the tipsline!

Don’t have one of thhose systems, so excuse me if this seems naive, but why not add a relay to the 120V fan and control with low voltage, so you could usea commonly available thermostat?
With the fan-coil system in the article, they can only control whether or not their fan is on. The heating/cooling operation is handled by a separate system that services the entire building. I don’t think a typical 24v thermostat would work with this, even adding a relay in-between. A 24v thermostat will attempt to not only activate the fan but also control whether the HVAC is heating or cooling. My thermostat has actually displayed an error message when it’s not able to get appropriate feedback from the HVAC. I don’t know if other thermostats do this though.
Good questions… SB has the gist of it.
In this type of two-pipe fan coil system, the building determines whether hot or chilled water is available, so in my unit I can demand heat or cool, only that the fan blows over the coils that are hot or cold according to the season when the building changes over.
You can add a relay and drive it with a 24V thermostat, but most conventional thermostats expect to be able to call for heat or cool and infer system state from that. Without that feedback, they can behave oddly or throw errors depending on the model.
In my case I leaned into the system being a single control point and built a smarter interface around it instead: local control loop, better visibility (temp, humidity, outdoor conditions), and integration with Home Assistant/HomeKit while keeping the core control on-device.
So not strictly necessary, but it ended up being a good fit for this kind of setup.
One issue with adding a relay is finding space to mount it without modifying the fan coil unit wiring, which could void your warranty and would not be allowed if you rent your space.
Thanks for the comment! It turns out the relay wasn’t the biggest space sink – the 120V to 5V transformer was. I found a great enclosed one on amazon. The relay is the only part of the thermostat that actually sits in the wall with the wires. The transformer actually sits on the opposite side of the 2″ thick wall (in a closet) and I covered it with a wiremold starter box to keep it enclosed for extra safety and to avoid anything pushing against it. The original thermostat actually pushed pretty far back into the gang box, like a light switch, so having all of the brains inside of the housing itself is a great space saver.
I always wanted to do that back when I lived in an apartment that had just a dial with numbers to control the heat. It was really hard to get a consistent temperature, what a stupid controller.
Its still surprisingly hard to get a consistent temperature with any fan coil I’ve found since its just circulating the air. It can be 2 degrees warmer at thermostat height than it is 4 feet from the fan coil at couch height. This does give me more accurate setting, but also the possibility of integrating other sensors in different placements to look at averaging temperatures, or telling a fan to turn on to circulate air in a different direction.
Build looks good but as I don’t use Home Assistant any more I might do build it and add a Matter firmware.
Then thet turn to “dumb” devices like Nest Thermostats
Unless you own your humble abode, did you get permission from the landlord ?
I own 😁
I like the project. Well thought out , beautiful implementation, awesome build. The way I see it though is it’s for a problem that doesn’t exist. There are absolutely line voltage thermostats that work just fine. Some even being programmable “smart” thermostats. Or as others have mentioned it could have been done with three relays. One relay for heat, one for cool, and one for fan. At my workplace we have a slew of line voltage basic thermostats that connect to a 3 phase contactors for rooftop ventilation fans.
Appreciate that — and you’re absolutely right that line-voltage thermostats exist and work fine in a lot of setups.
In my case the limitation is the building’s two-pipe fan coil system. The building determines whether hot or chilled water is available seasonally, so there’s no separate heat/cool call at the unit — the thermostat is really just switching the fan coil on/off. That’s why a typical “heat relay / cool relay / fan relay” setup doesn’t apply here. Even an off the shelf dumb thermostat that was previously installed by the HVAC has to be wired so both the Blue and Yellow wires (cool, heat) were nutted together and sent as load.
What I was trying to solve wasn’t basic control so much as visibility and interface like having local temperature, setpoint, humidity, and outdoor conditions on a glanceable display, plus integration with Home Assistant/HomeKit while keeping the control loop local.
Totally agree it’s not necessary for everyone, but for this kind of system it ended up being a nice way to add functionality without changing how the HVAC actually operates.
MackSwan here. Really appreciate the feature! I’ve since published the full build docs, wiring schematic, and firmware on GitHub for anyone interested in digging in or building their own:
https://github.com/mackswan/esp32-fancoil-thermostat
Happy to answer any questions.