Custom Thermostat PCB Connects Boiler To Home Assistant

A thermostat unit and a replacement PCB for it

Thanks to Home Assistant, automating the various systems that run your home is easier than ever. But you still need to make a connection between those systems and your Home Assistant setup, which can be tricky if the manufacturer didn’t have this use case in mind. When [Simon] wanted to automate his home heating system, he discovered that most Home Assistant-enabled thermostats that he could find didn’t support his two separate heating zones connected to a single boiler. The easiest solution turned out to be to design his own.

The original heating system consisted of two control boxes that each had a 230 V mains connection coming in and a “request heat” control line going to the boiler. [Simon] considered replacing these with a simple off-the-shelf ESP8266 relay board and a 12 V power supply, but figured this would look messy and take up quite a bit of space. So he bought a neat DIN-rail mounted enclosure instead, and designed a custom PCB to fit inside it.

A Home Assistant screen showing two thermostatsThe PCB holds a Wemos D1 Mini connected to two relays that switch the two heating circuits. The D1 runs ESPhome and needs just a few lines of configuration to connect it to [Simon]’s home network. There’s no separate power supply — the 230 V line is connected directly to a 12 V DC power module mounted on the PCB, so the new system is plug-and-play compatible with the old.

Complete PCB design files are available on [Simon]’s website and GitHub page. There are several other ways to make custom thermostats for your home, with an Arduino for example. If you’re interested in repairing your own heating system, or want to optimize it even further, there’s a whole community out there to help you.

24 thoughts on “Custom Thermostat PCB Connects Boiler To Home Assistant

  1. Not necessarily the easiest solution (I guess it depends whether you’re a hardware or software person) as it sounds like he’s got Honeywell remote thermostats – they’re 433MHz RF between the room unit and the wall, and an understood protocol. Pretending to be the room unit and taking control that way is non-invasive.

    Also multiple zones aren’t even remotely ‘unusual’ in the UK.

  2. Wait what? Doesn’t Honeywell Evohome already support this? Granted I’ve not used the home assistant plugin, but their API docs certainly expose all heating zones independently… Maybe he didn’t want to pay for an Evo home upgrade, which should be compatible with all previous Honeywell home equipment… But this industry is a shit show so it probably isn’t that easy anyway.

  3. A bit of a shameless plug, but I built a complete controller (GPL v3) that supports any combination of zones, sensors, boilers and pumps and it has been running my mum’s 5-zones, 3 pumps, 1 boiler, 7-sensor system for a couple of years now.
    I built is specifically _not_ to need any external cloud services, it runs an internal webserver. (and AP node for config purposes)
    https://github.com/andypugh/ESP-Heat
    (Hmm, need to upload a new programming screen image, it now has a pointer for the current time)

  4. Somewhat of a shameless plug, but I wrote a heating controller (GPL v3) that supports any combination of zones, boilers, pumps and sensors. It has been running my mum’s system (with 5 zones) for a couple of years now.
    It was specifically written to avoid any dependency on external cloud services, so runs its own web server (and an AP for config if you boot with a button pressed)
    https://github.com/andypugh/ESP-Heat
    (This may be a repost, but the post seems to have disappeared without even a “awaiting moderation” warning)

  5. Looks like a typical relay control with a ESP module. I’ve been thinking to do something like this but I would still like a way to control it from the thermostat as a backup for when Home Assistant screws up.

      1. Just connect HA-based relay and old one in parallel. Most “standard” thermostats does same thing – use relay to close the circiut.
        I’m running my HA-based relay thermostat (zigbee temp sensors in all rooms + esp01/01s) plugged in parallel with old “wall” thermostat into my boiler without any issues.

    1. Or, more accurately, why can’t I send the useful reply that I want to?

      Somewhat of a shameless plug, but I wrote a heating controller (GPL v3) that supports any combination of zones, boilers, pumps and sensors. It has been running my mum’s system (with 5 zones) for a couple of years now.
      It was specifically written to avoid any dependency on external cloud services, so runs its own web server (and an AP for config if you boot with a button pressed)
      https://github.com/andypugh/ESP-Heat
      (This may be a repost, but the post seems to have disappeared without even a “awaiting moderation” warning)

    2. I also replied with a link to my related hackaday dot io projects and it’s not showing. You’d say the antispam thingything should have that domain (and github dot com) whitelisted, right?

  6. Snap : ) I have a similar setup controlling my own Worcester Bosch.
    https://imgur.com/a/1BXqhkg

    I like that he’s rolled his own AC/DC converter.

    The thermostats I use are very quick to throw together with OTS parts (3 Wemos boards + mains-USB adapter) and can plug in anywhere. They publish MQTT messages over WiFi.

    It’s a great way to automate without the limitations/expense of nest/hive etc.

    The downside is that whenever a heating engineer performs inspection/maintenance/repair they don’t understand what this is. I’ve found people are very quick to blame the thing they don’t understand if a problem arises..

  7. I’ve done this recently using a Tasmota OpenTherm interface, and now have an appreciation of how little the HVAC world looks beyond its own nose.

    To be fair, the integration into Home Assistant is fairly rubbish for how useful and universal it is to have room by room control of temperature. Tasmota is just a bridge that exposes some sensors, but no controls, so everything has to be done using MQTT commands or the like. I had to use Node Red to make these command, have Node Red expose a switch to Home Assistant (not a button, a switch, and you can only have one per page in Node Red), have that switch pretend to be the heater that i than could interact with via a home assistant climate element, that you have to write first before you can use them. Every interaction besides changing the set point requires restarting of Home Assistant Core, and after all this, you still have a dumb hysteresis based thermostat, which seems to be how OpenTherm works. Even after that, you can mess with set point for the water temperature, but there is the risk that your boiler stores this in a bit of flash, which will wear out, rendering the entire thing useless.

    seriously, home HVAC is a very outdated field. If you don’t believe me, shop around for manifold based air-air heat pumps, and compare the prices to multi split units. essentially the same thing, just 1 valve extra per indoor unit, but somehow orders of magnitude more expensive. Customers don’t know any better, installation has been walled off by installers that don’t want to learn new things, and the entire market stays behind.

Leave a Reply to alialialiCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.