Thanks for purchasing the ESPHome 8-Zone HVAC Controller V2.
This guide shows you how to:
- connect the board by USB
- flash it in ESPHome
- add it to Home Assistant
- check the logs to confirm the board is responding
- then connect 24V AC so the relays can operate
Important Power Note
USB only powers the ESP32. USB does not power the relay side of the board. 24V AC is required for the relays to work.
The normal process is:
- Connect by USB.
- Flash and configure the ESP32.
- Add it to Home Assistant.
- Check the logs show it is online and responding.
- Connect 24V AC.
- Test the relays and zone outputs.
You can do the software setup first, but you will need 24V AC connected before you can test actual relay switching.
What You Need
- the ESPHome 8-Zone HVAC Controller V2
- a USB C cable
- Home Assistant running on your network
- the ESPHome add-on installed in Home Assistant
- your Wi-Fi name and password
- a 24V AC supply for the board when you are ready to test the relays
Step 1: Connect The Board By USB
Plug the board into your computer or into the machine you are using for setup via USB.
The ESP32 side should power up, but the relays will not operate yet on USB alone.
Step 2: Open ESPHome In Home Assistant
In Home Assistant:
- Open Home Assistant.
- Click
Settings. - Click
Add-ons. - Click
ESPHome.
If you do not already have ESPHome installed, install the ESPHome add-on first.
Step 3: Create A New Device In ESPHome
In the ESPHome dashboard:
- Click
New Device. - Give it a name such as
zone-control. - Enter your Wi-Fi details when prompted.
- Choose
ESP32. - Finish the wizard.
ESPHome will generate a basic config for you.
Step 4: Replace The Generated Config
Open the device you just created, click Edit, and replace the generated YAML with the following V2 config.
Do not use this V2 config on the original V1 board. V1 and V2 use different GPIO pinouts.
esphome:
name: esphome-8zone-v2
friendly_name: ESPHome 8-Zone Controller V2
compile_process_limit: 1
on_boot:
priority: 100
then:
- switch.turn_on: switch1
- switch.turn_on: switch2
- switch.turn_on: switch3
- switch.turn_on: switch4
- switch.turn_on: switch5
- switch.turn_on: switch6
- switch.turn_on: switch7
- switch.turn_on: switch8
esp32:
board: esp32dev
framework:
type: arduino
logger:
api:
ota:
- platform: esphome
web_server:
port: 80
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
output_power: 20.0
fast_connect: true
power_save_mode: none
ap:
ssid: "TekOnline 8 Zone V2"
password: "REPLACE_WITH_YOUR_OWN_PASSWORD"
captive_portal:
switch:
- platform: gpio
name: "Zone 1"
pin: GPIO12
id: switch1
inverted: false
restore_mode: ALWAYS_ON
- platform: gpio
name: "Zone 2"
pin: GPIO14
id: switch2
inverted: true
restore_mode: ALWAYS_ON
- platform: gpio
name: "Zone 3"
pin: GPIO27
id: switch3
inverted: true
restore_mode: ALWAYS_ON
- platform: gpio
name: "Zone 4"
pin: GPIO26
id: switch4
inverted: false
restore_mode: ALWAYS_ON
- platform: gpio
name: "Zone 5"
pin: GPIO25
id: switch5
inverted: true
restore_mode: ALWAYS_ON
- platform: gpio
name: "Zone 6"
pin: GPIO33
id: switch6
inverted: true
restore_mode: ALWAYS_ON
- platform: gpio
name: "Zone 7"
pin: GPIO32
id: switch7
inverted: true
restore_mode: ALWAYS_ON
- platform: gpio
name: "Zone 8"
pin: GPIO4
id: switch8
inverted: false
restore_mode: ALWAYS_ON
sensor:
- platform: internal_temperature
name: "Internal Temperature"
- platform: wifi_signal
name: "8-Zone V2 WiFi Signal"
update_interval: 600s
- platform: uptime
name: "8-Zone V2 Uptime Seconds"
update_interval: 60s
text_sensor:
- platform: version
name: "8-Zone V2 ESPHome Version"
- platform: wifi_info
ip_address:
name: "8-Zone V2 IP"
bssid:
name: "8-Zone V2 BSSID"
- platform: uptime
name: "8-Zone V2 Uptime"
V2 Pinout Reference
| Zone | ESP32 GPIO | Inverted |
|---|---|---|
| 1 | GPIO12 | false |
| 2 | GPIO14 | true |
| 3 | GPIO27 | true |
| 4 | GPIO26 | false |
| 5 | GPIO25 | true |
| 6 | GPIO33 | true |
| 7 | GPIO32 | true |
| 8 | GPIO4 | false |
Step 5: Save And Install
After pasting in the config:
- Click
Save. - Click
Install. - Choose
Plug into this computerif you are flashing from the same machine. - Follow the prompts.
ESPHome will build the firmware and flash it to the board over USB.
Step 6: Let It Join Wi-Fi
After flashing, the board should reboot and try to connect to your Wi-Fi.
If it cannot join Wi-Fi, it may create a fallback hotspot using the ap: section in the config.
Step 7: Add It Into Home Assistant
Once the board is online:
- Go to Home Assistant.
- Click
Settings. - Click
Devices & Services. - Look for the discovered ESPHome device.
- Click
Add.
Step 8: Check The Logs
Before wiring the relay side, first confirm the ESP32 side is healthy.
In Home Assistant:
- Click
Settings. - Click
Add-ons. - Open
ESPHome. - Find your device in the ESPHome dashboard.
- Click the device name.
- Click
Logs.
You are mainly checking that the device has booted, connected to Wi-Fi, connected to Home Assistant via the API, and is staying online without obvious repeated errors.
Step 9: Connect 24V AC
Once the board is flashed, online, and the logs look healthy, connect 24V AC.
Without 24V AC, the ESP32 can still appear online, but the relays will not function.
Step 10: Test The Zones
After 24V AC is connected:
- Open Home Assistant.
- Open the controller device.
- Toggle one zone switch at a time.
- Confirm the correct relay activates.
- Confirm the correct zone or damper responds.
Common Questions
Can I Do The Setup With Only USB Connected?
Yes, for flashing, Wi-Fi setup, Home Assistant adoption, and log checking.
No, for relay operation. USB only powers the ESP32. 24V AC is required for the relays.
Which Config Should I Use For The Original V1 Board?
Use firmware/esphome/8zone_controller_v1.yml from the project repo. The original V1 board uses a different pinout:
| Zone | ESP32 GPIO |
|---|---|
| 1 | GPIO27 |
| 2 | GPIO32 |
| 3 | GPIO25 |
| 4 | GPIO33 |
| 5 | GPIO26 |
| 6 | GPIO19 |
| 7 | GPIO18 |
| 8 | GPIO17 |
Troubleshooting
I Can See The Device In Home Assistant, But The Relays Do Not Work
Most likely cause: 24V AC is not connected.
USB alone will not power the relays.
The Wrong Zone Toggles
Confirm you are using the correct config for your board revision. V1 and V2 use different GPIO pinouts.
The Config Will Not Validate
Check for typos, wrong indentation, copied quotes or hidden characters from a rich text editor, and old passwords or keys copied incorrectly.
Leave a Reply