3 thermostats, 3 heating circuits, 1 heater

Hi all,

My setup:

I have 1 heater (electric) that’s connected to multiple circuits of underfloor heating (water).
Heater is controlled via Shelly 1 and so are the valves opening/closing the heating circuits.
For temperature sensors, I’m using thermometers connected to ESP8266 in each room.
I want to control 3 of those circuits using HA. (“Obyvak”,“Miska”,“Loznice”)

I’ve created 3 generic thermostats and added those to the dashboard.

climate:
  - platform: generic_thermostat
    name: Termostat_Obyvak
    heater: switch.shelly_kotel
    target_sensor: sensor.temp_obyvak
    min_temp: 17
    max_temp: 23
    ac_mode: false
    target_temp: 20
    cold_tolerance: 0
    hot_tolerance: 0
    initial_hvac_mode: "off"
    away_temp: 16
    precision: 0.5

  - platform: generic_thermostat
    name: Termostat_Miska
    heater: switch.shelly_kotel
    target_sensor: sensor.temp_miska
    min_temp: 17
    max_temp: 23
    ac_mode: false
    target_temp: 19
    cold_tolerance: 0
    hot_tolerance: 0
    initial_hvac_mode: "off"
    away_temp: 16
    precision: 0.5

  - platform: generic_thermostat
    name: Termostat_Loznice
    heater: switch.shelly_kotel
    target_sensor: sensor.temp_loznice
    min_temp: 17
    max_temp: 23
    ac_mode: false
    target_temp: 19
    cold_tolerance: 0
    hot_tolerance: 0
    initial_hvac_mode: "off"
    away_temp: 16
    precision: 0.5

I’ve also created 3 pairs of automations that open/close the underfloor circuits


- id: '1704206708270'
  alias: TermostatObyvakZapnoutOkruh
  description: ''
  trigger:
  - platform: state
    entity_id:
    - climate.termostat_obyvak
    attribute: hvac_action
    to: heating
  condition: []
  action:
  - type: turn_off
    device_id: 0a0bf622901dfda2fbefe5177a9df319
    entity_id: cd85d840c582301fdd063063f0319d3f
    domain: switch
  mode: single

- id: '1704206800037'
  alias: TermostatObyvakVypnoutOkruh
  description: ''
  trigger:
  - platform: state
    entity_id:
    - climate.termostat_obyvak
    attribute: hvac_action
    from: heating
  condition: []
  action:
  - type: turn_on
    device_id: 0a0bf622901dfda2fbefe5177a9df319
    entity_id: cd85d840c582301fdd063063f0319d3f
    domain: switch
  mode: single

The problem:

I set the desired temperature for each room in the dashboard.
(Obyvak-22.5C, Miska-OFF, Loznice-19.5C)

The problem is that whenever any of those gets triggered and starts heating, it will open the heating circuits for all the enabled rooms, even if the temperature there is OK

image

(in this example Obyvak triggered to heating as it’s set to 22.5 but the room temp is only 22. It also opens the “Loznice” circuit even when this is set to 19 and has currently 19.5)

I guess I need to add some additional automation that will check the desired/current temp for each room before opening/closing each circuit?

Hi, I just dealt with the same situation.

I have a pump that brings the heat from the boiler in the shed, and I have several zone valves.
Instead of controlling the heater (or pump in my case), control the valve and make an automation that checks the state of the valve. When my valve is open for 5 min (it takes time to open) the pump gets turned on. In your case you could turn on the heater when a zone valve is open.

Examples of the thermostats controlling two valves (I have five)

  - platform: generic_thermostat
    name: Badkamer
    heater: switch.besturingverwarmingboven_vvv_boven_douche_vvhandhoog
    target_sensor: sensor.esp23_badkamer_vocht_temp_badkamer_temperatuur
    min_temp: 10
    max_temp: 26
    ac_mode: false
    target_temp: 18
    cold_tolerance: 0.2
    hot_tolerance: 0.1
    precision: 0.1
    min_cycle_duration:
      minutes: 15
    initial_hvac_mode: "off"
    away_temp: 10
    home_temp: 18
    comfort_temp: 19.5
    #sleep_temp: 10
    #activity_temp: 10

  - platform: generic_thermostat
    name: Huiskamer
    heater: switch.multi_socket_powernode_6_plug_2_klepbeneden #zoneklep beneden
    target_sensor: sensor.temp_huiskamer2_temperatuur
    min_temp: 10
    max_temp: 26
    ac_mode: false
    target_temp: 20
    cold_tolerance: 0.2
    hot_tolerance: 0.1
    precision: 0.1
    min_cycle_duration:
      minutes: 15
    initial_hvac_mode: "off"
    away_temp: 18
    home_temp: 20.2
    comfort_temp: 20.5
    #sleep_temp: 20
    #activity_temp: 10

And the automation for the pump:
The triggers are valve states, they trigger a pump to get the heat from the boiler and a distribution pump.

alias: Verwarming pomp aan
description: ""
trigger:
  - platform: device
    type: turned_on
    device_id: 70871ea6d87c902ee210eca85c4a91f7
    entity_id: 5d22e8b83bb67cad8333685564d9bb08
    domain: switch
    for:
      hours: 0
      minutes: 5
      seconds: 0
  - platform: device
    type: turned_on
    device_id: 70871ea6d87c902ee210eca85c4a91f7
    entity_id: d34fed1de9b41de13ee7dbb0a031a7da
    domain: switch
    for:
      hours: 0
      minutes: 5
      seconds: 0
  - platform: device
    type: turned_on
    device_id: 70871ea6d87c902ee210eca85c4a91f7
    entity_id: aba155bf60d65af45f60204fd1243c38
    domain: switch
    for:
      hours: 0
      minutes: 5
      seconds: 0
  - platform: device
    type: turned_on
    device_id: 70871ea6d87c902ee210eca85c4a91f7
    entity_id: a42bfd39fa104dbbff5405c5398578ff
    domain: switch
    for:
      hours: 0
      minutes: 5
      seconds: 0
  - platform: state
    entity_id:
      - switch.multi_socket_powernode_6_plug_2_klepbeneden
    to: "on"
    for:
      hours: 0
      minutes: 5
      seconds: 0
    id: TriggerIDZoneKlepBenedenAan
condition: []
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id:
        - switch.multi_socket_powernode_6_plug_pomp
  - if:
      - condition: trigger
        id:
          - TriggerIDZoneKlepBenedenAan
    then:
      - service: switch.turn_on
        target:
          entity_id: switch.multi_socket_powernode_6_plug_6_pompvloerverwarming
        data: {}
    alias: Vloerverwarming pomp alleen bij Zoneklepbeneden
mode: single

Of course you’ll also need an automation to turn stuff off again.

1 Like

Great idea,
much simpler now it does what I was expecting
thank you :slight_smile:

1 Like