Heating, underfloor, with PID controller, Home Assistant and Waveshare ESP32 relay board

In previous posts, I’ve been testing and figuring out how to manage my old control system for our underfloor heating. Now, it was time for something more bold, and since I’m increasingly impressed with Home Assistant(HA) and its software capabilities, that’s exactly what I did.

Industrial-style ESP32 boards are becoming increasingly popular for Home Assistant and automation projects, especially when they include Ethernet, isolated inputs and relay outputs on a single PCB. The Waveshare ESP32-S3-ETH-8DI-8RO(W8) is one such board: it’s compact, well-equipped and clearly designed for serious control applications, rather than just hobbyist breadboards.

In this post, I’ll share my experience setting up this board using ESPHome, pointing out the main configuration points, common mistakes and practical lessons I’ve learned along the way.


Introduction
Hardware
Since my underfloor heating systems have 7 zones I have picked the mentioned W8 which have 8 relays. The last eighth relay will handle the circulation pump. Relay output is chosen since the actuators for the valves are using 24 VAC.

It is also important to mention that W8 have a native Home Assistant integration

I will need 7 thermometers, one for each zone, and are for the moment doing tests with RuuviTag, a little expensive, and Zonoff SNZB-02D, just 0.2 C resolution.

Software
As said the base is HA with ESPHome, installed as an "Add on", and the HASmartThermostat, installed via "HACS".

ESPHome(EH)
EH was new for me so we take it from the beginning......and yes there are other ways to compile and upload to an ESP32 device ! 😉

The first thing is to create a file, on your PC, named "W8-eth.yaml" and paste in the content from the EH site config for W8. Don't change anything !!

If you check the configuration you will find references to several "!secret" values. When ESPHome parses the config file it always attempts to load the file "/homeassistant/esphome/secrets.yaml"

The easiest way to create this file is to use the "File editor" installed as an "Add-on". Go to "/homeassistant/esphome" and create the file with info

# ESPHome API encryption key (32-byte Base64)
api_encryption_key: "3HbA4aOAE06+l1/EJR2w8wbZ11EtC4="
# OTA update password
ota_password: "xyz"

The key can be retrieved from here and the password can be anything of your choice.

Then "ESPHome Builder => + NEW DEVICE => Continue". Drag the "W8-eth.yaml" to the opened popup. "Install => Manual download", the compilation is starting and you can follow the progress.

After the compilation is finished "What version do you want to download => Factory format" and the file will be saved in "Download". Go to https://web.esphome.io/ and click on "Connect" and you will probably see something like "USB JTAG/serial debug unit". Choose it "Connect => Install => Choose file(the .bin file) => Install". After the install "RESET DEVICE" and the W8 will boot up.

Go to "Settings => Integrations > ESPHome => Add device". Enter the IP adress or hostname and the W8 will be added with 27 entities. Check the function activating a relay.

Remarks
Compile error
If you have updated EH or getting a compile error always use the "Clear all" button in the upper right. This is effectively resetting the build environment for everything and ensures a fresh complete rebuild from scratch.

Browser
ESPHome Web requires a browser that supports WebSerial. Please use Google Chrome or Microsoft Edge.

Smart Thermostat 



.
.
.


To be continued !










Comments

Popular posts, last 30 days

iCloud drive sync, or mount, with a Linux, Ubuntu, device

Home Assistant with VirtualBox or Proxmox or Linux KVM ???

Raspberry Pi OS Lite with GUI, RDP, VNC, Chromium

Installing Ubuntu 24.04 or 24.10/25.04 on an old MacBook Air(2011)

Clone the Raspberry boot disk

Raspberry Pi 2, 3, 4, 5 USB SSD or USB drive boot

IVT, Bosch heat pump easy integration, Home Assistant

SeaTalk1 to NMEA 0183 converter, DIY

IKEA Bäve dimmer hack II