Skip to content

mwood77/ha-trv-zone-heating

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Home Assistant Automated TRV Zone Heating

Welcome 👋

Here you'll find a collection of automations that'll allow you to precisely control the heating within your home on a room-by-room basis, using Zigbee based TRVs and temperature sensors.

Why Use This

Fine-tunable, fully automated, and remote-controlled heating.

This is a cost efficient system which converts traditional hot water radiator heating systems into a zone-controlled heating system; each room with an installation has the capability to self-regulate its own temperature.

This project's goal is to be as comprehensive as possible, providing a local-controlled alternative to closed source automated heating systems like that offered by Tado, Drayton's Wiser, and Resieo's Evohome.

What's a TRV (Thermostatic Radiator Valve)

Wikipedia

A TRV (Thermostatic Radiator Valve) is a device which is connected to hot water radiator heating systems, at each radiator. These allow you to set a rough temperature per room by adjusting the water in-flow into each radiator. These offer better temperature regulation than conventional flow based radiator valves, but still require the the main heating system to be pumping in order to heat the room or area.

How This Works

Heating is controlled through a feedback system, which is managed by Home Assistant.

Home Assistant monitors the current temperature of a given climate (room) and adjusts the TRV's state (open/closed), and the central thermostat setpoint when heating is required or no longer required.

The feedback loop looks like this:

flowchart TD
    Z((Home Assistant))
    W[/Mobile Device/]

    A((Manipulate Central Thermostat))
    B(Google Cloud Service Pub/Sub)

    Z --> | 1 - Publish setpoint change | B
    Z .-> | 2 - Retry on failure x3 | B
    B --> A
    Z .-> | 3 - Notify after 3 failures to retry | W

    Z --> C(Room 1);
    Z --> D(Room 2);
    Z --> E(Room 3);

    F{Is room temperature above setpoint?};
    G([Continue monitoring temperature]);
    H[YES];
    I[NO];
    J([Open room's TRV]);
    K[/Request setpoint change/];
    L{Are We Heating?};
    
    %% Room 1 is at temperature
    C --> F;
    
    %% Room 2 is at temperature
    D --> F;
    
    %% Room 3 asks for heat
    E --> F;
    
    %% Do Nothing
    F --> H;
    H --> L;
    L --> M[YES] --> N([Close room's TRV]) .-> K;
    L --> O[NO] --> G;
    
    %% Call for heat
    F --> I;
    I .-> J;
    J .-> K;
    K .-> Z;
Loading

Getting Started

Purchasing Equipment

Design Considerations and Safety Precautions

Warning

It's very important that every aspect of this system can be manually controlled, both digitally and physically!

You must consider fall-back options, should your Home Assistant installation or internet connectivity fail. Provided you followed the steps outlined here, your system should be failsafe.

A personal anecdote. I've used this setup for over a year and experienced both a power failure, and my Home Assistant system failing to boot. Neither events affected our heating, as each radiator is locally controlled, and our thermostat (Google Learning Thermostat) is still capable of local independent control our boiler. We still had heating when we needed it, even when the automation failed.

Prerequisites

Important

You must have a decent level of familiarity with Home Assistant; the open source home automation platform.

  1. A central, hot water based, heating system that uses radiators and a "CV boiler"
    • For best results, your CV needs to be OpenTherm compatible. This standard is nearly 30 years old, so it's likely yours is, but there are some caveats:
  2. An established and functional Home Assistant installation
  3. A Home Assistant installation with HACS; we'll need a few integrations which fall outside the realm of "official integrations."
  4. A Zigbee coordinator
  5. An established and configured Zigbee2MQTT installation within Home Assistant

Installation

Planning our Installation

Let's assume we're installing this system in a fictional house:

base house without valves or automationWinder

Our base house without valves or automation

This house has:

  • 3 levels
  • 1 CV boiler
  • 8 radiators
  • 1 central thermostat
  • 2 heating loops

Step 1

We need to decide which radiators will be equipped with TRVs and which radiators will remain as "dumb radiators." We must have at least one "dumb radiator" per heating loop to prevent damage to your CV.

Important

It is critical to have a few "dumb radiators" throughout your house, with them set to be marginally open. This is generally called "Frost Protection" on consumer systems. Failure to have a couple non-automated radiators on your system could create a water hammer-like effect within your heating loops, which could cause damage to your CV.

For example, a potential runaway scenario would be when all TRVs are closed on your system (the rooms are at the desired temperature), while the Central Thermostat is still calling for heat. Since you've got a few "dumb radiators" on each heating loop, that means that those radiators are still open on the system, reducing the total system pressure, and mitigating any over-pressure events.

Once you've decided on which rooms will have TRVs, you then need to assess whether or not that room has one or more-than-one radiator. If it has one radiator, then install a TRV. If it has more-than-one radiator, you must install a TRV on only one of the radiators - the others must remain dumb. This is because each room will be classified as a "climate."

Step 2

Now that you've planned out which rooms and which radiators will have TRVs, you can go ahead and install all TRVs and temperature sensors.

base house without valves or automation

Our house with TRVs and temperature sensors

Device Image Device Name
central thermostat icon Central Thermostat
TRV icon TRV
temperature sensor Temperature Sensor

Step 4

Add all devices to Home Assistant via Zigbee2MQTT. Make sure you use a consistent and clear naming scheme. I use the following:

  • [ Climate Area ] - [ Sensor / Device Type ] - [ Numerical Room Identifier{.}Numerical Device Identifier ] - [ Unique Identifier ]
    • Climate area
      • the room that the device is installed in
    • Sensor / Device Type
      • the type of sensor. TRV, temperature sensor, presence sensor, etc
    • Numerical Room Identifier
      • Each room should be numbered, so all devices within that room can be indexed. For example:
        • Kitchen = 1
        • Living Room = 2
        • Main Bedroom = 3
        • Guest Bedroom = 4
        • Etc
    • Unique Identifier

      💡 Pro-tip - physically label each device with its unique identifier!

      • Each sensor should have a unique identifier. My rule of thumb is to prefix all devices of a type with a common letter, followed by a number. That way you can move sensors around the house and rename them easily. For example:
        • All TRVs are labeled as TRVX where X is a number
          • TRV1 is in the Bathroom
          • TRV2 is in the Kitchen
        • All temperature sensors are prefixed with the letter K
          • K1 is in the Main Bedroom
          • K2 is in the Bathroom
          • K3 is in the Kitchen

This translates to:

  • Kitchen - TRV - 2.1 - TRV3
  • Kitchen - Temperature - 2.2 - K3
  • Bathroom - TRV - 4.1 - TRV2
  • Bathroom - Temperature - 4.2 - K2

Using a predictable naming scheme will allow you to filter or search for devices by type, location, or unique identifier.

Step 5

The hard work is done and now it's time to start creating climates in Home Assistant! Make a beverage of your choice and sit yourself down in-front of your computer.

Once you've installed and configured both "Better Thermostat" and "Weather," it's now time to setup each climate. I won't dive into how to setup each climate, as that's documented quite extensively on Better Thermostat's website, here. However once you've completed that, you should now have a handful of rooms, or areas, which are designated as climates.

Step 7

Let the automations begin 🤖

You can now implement any of the automations I've created in this repository, but at a minimum you'll need these 4 automations:

Congrats, you've now got a fully zone-controlled TRV heating system. Wicked, right?

Step 8

You've now got a fully zone-controlled system, but now let's go for the wow-factor. Here's a collection of automations which take the entire system up a notch:

Here are some nice push-notification automations:

About

Home Assistant TRV based zone heating

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published