Overview
This project replaces a basic on/off condo thermostat with a custom ESP32-S3 thermostat for 120V fan coil systems, designed around the quirks of two-pipe building HVAC.
Rather than trying to fight the limitations of seasonal heat/cool changeover, the design adds a smarter local interface around them—bringing environmental visibility, physical control, and Home Assistant integration to an otherwise simple fan switch.
The control loop runs locally on the ESP32, with Home Assistant used for weather data and optional integrations.
Key Features
- Custom OLED thermostat UI with automatic dimming
- Rotary encoder-driven local interface
- ESPHome firmware with standalone operation
- Custom pixel weather sprites (18 conditions, day/night variants)
- Relay switching for 120V fan coil control
- IR receive (with IR transmit expansion underway)
- Wall-mounted custom enclosure with hidden line voltage wiring
Hardware
Core components include:
- Waveshare ESP32-S3 Zero
- 2.42” SSD1309 OLED
- SHTC3 temp/humidity sensor
- KY-040 rotary encoder
- KY-018 ambient light sensor
- Opto-isolated relay
- Internal 120V→5V supply module
(Full BOM and schematic now linked on GitHub.)
Display / UI
The display was designed to be glanceable rather than menu-heavy:
- Center: indoor temperature
- Left: outdoor temp + dew point
- Right: setpoint + humidity
- Corner: custom weather sprite
- Bottom: Heat / Cool / Off mode
Ambient light automatically dims the display and subtle piezo tones provide button feedback.
Firmware
Built in ESPHome with custom lambdas handling:
- Display rendering
- Encoder navigation
- Relay logic
- Mode behavior
- Weather sprite rendering
The thermostat runs independently, with Home Assistant augmenting rather than driving core operation.
Enclosure Design
The final enclosure moved away from a vintage thermostat concept and became a purpose-built design using:
- Wiremold NMW3 enclosure
- Screwless metal faceplate
- 40mm aluminum encoder knob
Goal: something industrial and intentional rather than “prototype on a wall.”
Electrical Design
- Mains switching isolated in gang box
- 5V supply behind wall
- Low-voltage electronics in removable front assembly
- JST harness allows servicing without exposing line voltage
Future Work
- Higher-power IR blaster upgrade
- Expanded IR control via Home Assistant
- Additional UI refinements
- Possible Matter-oriented firmware variant
mackswan
Németh József László
Srinivasan M S
Build looks good but as I don't use Home Assistant any more I might do build it and add a Matter firmware.