Okidoki, I tried now several installations. But no succes.
I hope you wil fix it.
Thanks allot for your patience and help.
Okidoki, I tried now several installations. But no succes.
I hope you wil fix it.
Thanks allot for your patience and help.
Hi Remco, I’m running into the same problems and have started a separate topic about it. Hope that it can be solved.
Requirements for custom_component not installing anymore - #2 by koying
Finally I’ve got it working again by removing filterpy as requirement and removing all scipy functions. I’ve also did some code cleaning and tested it in HA/core. The new version is available via github updated version.
This week I’ve been testing the new version in a 6 zone configuration en seems to run without problems.
During boot there may be several warnings in HA log when sensors or switches are not ready yet. When the sensor and/or switch is ‘online’ it should change to normal operation mode on its own.
Extract of my log of a single zone
2021-11-10 22:59:41 INFO (MainThread) [multizone_thermostat.woonkamer] initialise: woonkamer
2021-11-10 22:59:41 INFO (MainThread) [multizone_thermostat.woonkamer.heat] Config hvac settings for mode : heat
...
2021-11-10 22:59:41 INFO (MainThread) [multizone_thermostat.woonkamer] init thermostat
2021-11-10 22:59:41 INFO (MainThread) [multizone_thermostat.woonkamer] restore old controller settings
2021-11-10 22:59:41 INFO (MainThread) [multizone_thermostat.woonkamer.heat.pid] forcing new integral: 0.0
2021-11-10 22:59:41 INFO (MainThread) [multizone_thermostat.woonkamer] HVAC mode changed to heat
2021-11-10 22:59:41 INFO (MainThread) [multizone_thermostat.woonkamer] HVAC mode heat
2021-11-10 22:59:41 INFO (MainThread) [multizone_thermostat.woonkamer] new sensor filter mode for heat to: 4
2021-11-10 22:59:41 INFO (MainThread) [multizone_thermostat.woonkamer] new sensor filter mode (4) but no temperature reading for heat
2021-11-10 22:59:41 INFO (MainThread) [multizone_thermostat.woonkamer] new sensor filter mode for heat to: 4
2021-11-10 22:59:41 INFO (MainThread) [multizone_thermostat.woonkamer] new sensor filter mode (4) but no temperature reading for heat
2021-11-10 22:59:41 INFO (MainThread) [multizone_thermostat.woonkamer] new sensor filter mode for heat to: 4
2021-11-10 22:59:41 INFO (MainThread) [multizone_thermostat.woonkamer] new sensor filter mode (4) but no temperature reading for heat
2021-11-10 22:59:41 WARNING (MainThread) [multizone_thermostat.woonkamer] Current temp is None, cannot compare with target
...
2021-11-10 22:59:42 INFO (MainThread) [multizone_thermostat.woonkamer] new sensor filter mode for heat to: 4
When I have some time the next weeks I’ll check if the boot warnings can be improved/limited.
Perfect!!!
I’m running it now as we speak!!!
Great Job
Ah nice. Good too hear it finally running! Let me know if you have feedback.
Hello, I’m trying to understand how multi-zone work. What is the advantage of a multi-zone thermostat (with master and slaves) vs standalone thermostat ?
Good question.
In the most basic from a house has a single, in the livingroom positioned, thermostat. This will try to keep the livingroom at the chosen setpoint by switching the heater (gas heater, distric heating, heat pump etc). The heating of all other rooms depend on the heat requiment of the livingroom.
This can be upgraded by valves and thermostat per room to have better control per room. This is heating individually per zone/room.
Some systems still use the main thermostat (most likely the livingroom) as primary switch to control the heater. In this case, when a secondary room needs heating, it still depends on the main thermostat: when the main thermostat does not require heat there will be no heater activity thus the secondary room will warm up.
One of the operation modes of the multizone thermostat uses the weighted average of all rooms (satellites) heat requirement plus setpoints to determine the temperature error. This error can be used to control the heater.
In total three control options are available for the master which are:
Each satellite has the same control options except PID on valve position.
Edit:
This part is only the software operation. Please check if hardware modifications to you’re heating system are required! For instance: maybe the system needs to be equipped with a bypass valve to handle situations where too much valves are closed but still heat is required.
Thanks for this explanation. I’ve implemented multi zone thermostat based on markferry work.
Expect the fact that I can change generic thermostat with PID thermostat, I’m still trying to find an advantage of you solution versus the other one
Hello, is it possible to configure a minimum cycle duration for a gas boiler in a proportional mode ?
I think it’s minimal_diff , but don’t know how to use it
Hi Edouard,
I was not familiar with this topic thus cannot say directly which one you should use. There seem to be several variations which were created more or less at the same time period.
The main advantage of my version (for me at least) is that I control the main valve based on outdoor temperature (by linear trend) which directly compensates the heat loss. This is further adjusted by the max valve opening of each zone and the average room-setpoint temp scaled by room size.
Furthermore the satelite states are updated tot the master, and numerous adjustments can be made.
For me it is providing all options and insight for setting up - tuning of my heating system. But best is to try several versions to se which one fits you best.
Yes it should be minimal_diff
. I think this should work:
- platform: multizone_thermostat
name: pid
unique_id: mz_pid
sensor: sensor.fake_sensor_1
sensor_filter: 4
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 60
precision: 0.1
sensor_stale_duration:
hours: 3
passive_switch_check: True
heat:
entity_id: input_number.fake_pwm_heat
passive_switch_duration:
hours: 5
min_temp: 15
max_temp: 24
initial_target_temp: 21
away_temp: 12
proportional_mode:
control_interval:
seconds: 100
difference: 100
pwm:
seconds: 600
minimal_diff: 5
PID_mode:
kp: 30
ki: 0.003
kd: -24000
window_open_tempdrop: -3.6
This example has a control range of 0 to 100 and should result in switch activation when control value is above 5.
I just made a big update to the code. If you have some issues please try the new version.
Thanks a lot, I will try the new version.
Just released an update as the previous version did not properly initiate the temperature filter.
see version 0.4.1 bugfixes for more details
Hey @axax
I used adrien.b 's PID Thermostat, but wanted to try something different, since I run multi zone heating. Previously, I just used automation outside of thermostat to determine if main switch should be on/off (this gives signal to heat pump to heat). With 7 different zones, there were times when one zone stopped heating, heater went off, and few minutes later, there was demand from other zone, so it started again. Not the end of the world, but not ideal for heatpump either, so I wanted to see how yours behave.
First of all, any news on if or when this will be included in HACS repository?
Secondly, I literally just deployed it, mostly followed examples as I am bit confused which values do what. The documentation isn’t greatest But I noticed that some room, despite being 0,2 degrees below setpoint, did not change hvac action to heating.
Also, I don’t quite get the % of valve opened. I have simple on/off valves (NC), that open when zones need heat. My main switch is just signal for heat pump to start heating.
I tried to use room area ratio, not sure I got that right. Below is my config.
Any recommendations you can suggest? I have underfloor heating, which is really slow to react. With adrien’s PID thermostat, I used following settings:
kp : 100
ki : 0.003
kd : 220000
ke: 0.588
pwm : 02:00:00
sampling_period: 00:10:00
But in your multizone, I kept the default you suggested for underfloor heating:
- platform: multizone_thermostat
name: master_thermostat
sensor_out: sensor.espaltherma_outside
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
precision: 0.1
heat:
entity_id: switch.heat_pump_switch
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 60
difference: 100
minimal_diff: 5
pwm:
seconds: 600
PID_mode:
kp: 3
ki: 0
kd: 0
weather_mode:
ka: 2
kb: -6
MASTER_mode:
satelites: [living_room, guest_room, bathroom, office, master_bathroom, master_bedroom, kids_room]
goal: 150
kp: -0.15
ki: 0
kd: 0
sensor_stale_duration:
hours: 12
restore_from_old_state: True
restore_parameters: False
restore_integral: True
- platform: multizone_thermostat
name: living_room
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature_7
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 40
precision: 0.1
heat:
entity_id: switch.underfloor_heating_ground_floor
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 60
difference: 100
minimal_diff: 5
pwm:
seconds: 180
PID_mode:
kp: 30
ki: 0.005
kd: -24000
sensor_stale_duration:
hours: 12
restore_from_old_state: True
restore_parameters: False
restore_integral: True
- platform: multizone_thermostat
name: guest_room
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature_5
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 20
precision: 0.1
heat:
entity_id: switch.underfloor_heating_ground_floor_2
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 60
difference: 100
minimal_diff: 5
pwm:
seconds: 180
PID_mode:
kp: 30
ki: 0.005
kd: -24000
sensor_stale_duration:
hours: 12
restore_from_old_state: True
restore_parameters: False
restore_integral: True
- platform: multizone_thermostat
name: bathroom
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature_6
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 10
precision: 0.1
heat:
entity_id: switch.underfloor_heating_ground_floor_3
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 60
difference: 100
minimal_diff: 5
pwm:
seconds: 180
PID_mode:
kp: 30
ki: 0.005
kd: -24000
sensor_stale_duration:
hours: 12
restore_from_old_state: True
restore_parameters: False
restore_integral: True
- platform: multizone_thermostat
name: office
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 20
precision: 0.1
heat:
entity_id: switch.underfloor_heating_1st_floor_4
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 60
difference: 100
minimal_diff: 5
pwm:
seconds: 180
PID_mode:
kp: 30
ki: 0.005
kd: -24000
sensor_stale_duration:
hours: 12
restore_from_old_state: True
restore_parameters: False
restore_integral: True
- platform: multizone_thermostat
name: master_bathroom
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature_2
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 20
precision: 0.1
heat:
entity_id: switch.underfloor_heating_1st_floor
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 60
difference: 100
minimal_diff: 5
pwm:
seconds: 180
PID_mode:
kp: 30
ki: 0.005
kd: -24000
sensor_stale_duration:
hours: 12
restore_from_old_state: True
restore_parameters: False
restore_integral: True
- platform: multizone_thermostat
name: master_bedroom
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature_3
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 20
precision: 0.1
heat:
entity_id: switch.underfloor_heating_1st_floor_2
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 60
difference: 100
minimal_diff: 5
pwm:
seconds: 180
PID_mode:
kp: 30
ki: 0.005
kd: -24000
sensor_stale_duration:
hours: 12
restore_from_old_state: True
restore_parameters: False
restore_integral: True
- platform: multizone_thermostat
name: kids_room
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature_4
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 20
precision: 0.1
heat:
entity_id: switch.underfloor_heating_1st_floor_3
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 60
difference: 100
minimal_diff: 5
pwm:
seconds: 180
PID_mode:
kp: 30
ki: 0.005
kd: -24000
sensor_stale_duration:
hours: 12
restore_from_old_state: True
restore_parameters: False
restore_integral: True
Hi Stomko,
I intended to send just a short explanation but it gradually increased so hope it makes still some sense.
First of all, any news on if or when this will be included in HACS repository?
It is. You can add the repository as custom repository. I did not include it (yet) in the standard due to the complex operation, config and possible consequence when used not correctly.
Secondly, I literally just deployed it, mostly followed examples as I am bit confused which values do what. The documentation isn’t greatest
If you are willing to spend some time, could you create a new issue in github (or by any other way) give me some feedback what needs further updates/improvement. Maybe after you’ve concluded this thermostat works for you or not?
But I noticed that some room, despite being 0,2 degrees below setpoint, did not change hvac action to heating.
I expect it might start with a warning and in emergency mode as it waits for a first update of the temperature reading (indoor and/or outdoor depending the config). The pwm and control routine loop independantly of each other. The control value is calculated each control_interval
and each sensor (in- or outdoor) change. The pwm loop is checking each 1/10 of the pwm
set interval when pwm
> 0. The control value (valve_pos
) is used in the pwm loop operation (duration open/close).
It could therefore take a short moment to actually see it acting. In your case I think the following should occur:
control_interval
Check the attributes of the climate entity and search for valve_pos
. This value will be between 0-100 and defines the valve on-off time ratio. Thus as soon this value is larger than 0 your valve should be switched on within the pwm
defined period. When the valve_pos
is less than specified minimal_diff
the valve is not switched on to avoid short activations.
Note several valve_pos
could be present: one per control mode (*_valve_pos
) and a combined (summed) as valve_pos
. The latter is used for the pwm.
Also, I don’t quite get the % of valve opened. I have simple on/off valves (NC), that open when zones need heat. My main switch is just signal for heat pump to start heating.
In case pwm
is not specified or as pwm = 0
it gives a numerical value as output instead of switching a switch between on-off. I have for instance a radiator valve which requires a valve position.
Another use could be for instance to use the weather_mode
in combination with pwm=0
to output a required water temperature of the heating system.
Regarding your config, in general it seems to be oke. You can use your own PID values and interval times. In my config I use the weather mode to control the main valve and did not include it in the room thermostats to avoid control interference. as it would amplify the weahter compensation.
See the modified example below.
You could start with all restore_* = False
to assure a clean start.
- platform: multizone_thermostat
name: master_thermostat
sensor_out: sensor.espaltherma_outside
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
precision: 0.1
heat:
entity_id: switch.heat_pump_switch
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 180
difference: 100
minimal_diff: 5
pwm:
seconds: 600
PID_mode:
kp: 3
ki: 0
kd: 0
weather_mode:
ka: 2
kb: -6
MASTER_mode:
satelites: [living_room, guest_room, bathroom, office, master_bathroom, master_bedroom, kids_room]
goal: 80
kp: -0.15
ki: 0
kd: 0
sensor_stale_duration:
hours: 12
restore_from_old_state: False
restore_parameters: False
restore_integral: False
- platform: multizone_thermostat
name: living_room
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature_7
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 40
precision: 0.1
heat:
entity_id: switch.underfloor_heating_ground_floor
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 600
difference: 100
minimal_diff: 5
pwm:
hours: 2
PID_mode:
kp: 100
ki: 0.003
kd: -220000
sensor_stale_duration:
hours: 12
restore_from_old_state: False
restore_parameters: False
restore_integral: False
- platform: multizone_thermostat
name: guest_room
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature_5
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 20
precision: 0.1
heat:
entity_id: switch.underfloor_heating_ground_floor_2
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 600
difference: 100
minimal_diff: 5
pwm:
hours: 2
PID_mode:
kp: 100
ki: 0.003
kd: -220000
sensor_stale_duration:
hours: 12
restore_from_old_state: False
restore_parameters: False
restore_integral: False
- platform: multizone_thermostat
name: bathroom
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature_6
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 10
precision: 0.1
heat:
entity_id: switch.underfloor_heating_ground_floor_3
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 600
difference: 100
minimal_diff: 5
pwm:
hours: 2
PID_mode:
kp: 100
ki: 0.003
kd: -220000
sensor_stale_duration:
hours: 12
restore_from_old_state: False
restore_parameters: False
restore_integral: False
- platform: multizone_thermostat
name: office
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 20
precision: 0.1
heat:
entity_id: switch.underfloor_heating_1st_floor_4
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 600
difference: 100
minimal_diff: 5
pwm:
hours: 2
PID_mode:
kp: 100
ki: 0.003
kd: -220000
sensor_stale_duration:
hours: 12
restore_from_old_state: False
restore_parameters: False
restore_integral: False
- platform: multizone_thermostat
name: master_bathroom
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature_2
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 20
precision: 0.1
heat:
entity_id: switch.underfloor_heating_1st_floor
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 600
difference: 100
minimal_diff: 5
pwm:
hours: 2
PID_mode:
kp: 100
ki: 0.003
kd: -220000
sensor_stale_duration:
hours: 12
restore_from_old_state: False
restore_parameters: False
restore_integral: False
- platform: multizone_thermostat
name: master_bedroom
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature_3
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 20
precision: 0.1
heat:
entity_id: switch.underfloor_heating_1st_floor_2
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 600
difference: 100
minimal_diff: 5
pwm:
hours: 2
PID_mode:
kp: 100
ki: 0.003
kd: -220000
sensor_stale_duration:
hours: 12
restore_from_old_state: False
restore_parameters: False
restore_integral: False
- platform: multizone_thermostat
name: kids_room
sensor: sensor.aerq_temperature_and_humidity_sensor_v2_0_air_temperature_4
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 20
precision: 0.1
heat:
entity_id: switch.underfloor_heating_1st_floor_3
min_temp: 17
max_temp: 28
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 600
difference: 100
minimal_diff: 5
pwm:
hours: 2
PID_mode:
kp: 100
ki: 0.003
kd: -220000
sensor_stale_duration:
hours: 12
restore_from_old_state: False
restore_parameters: False
restore_integral: False
some explanation for the “master_thermostat”. All combinations are here possible iwth or without PID_mode
, weather_mode
and (goal
,kp
,ki
,kd
) in MASTER_mode
.
PID_mode:
kp: 3
ki: 0
kd: 0
fine tuning of weather_mode
. This reacts to the averaged (by room area) setpoints and room temps to change in my case the main
valve on-off time. It gives extra or less valve_pos
depending the error between avg setpoint and room temps.
weather_mode:
ka: 2
kb: -6
In this case the main controller of the valve_pos
by outside temperature and averaged (by room area) room temps. valve_pos= dT*ka + kb
MASTER_mode:
satelites: [living_room, guest_room, bathroom, office, master_bathroom, master_bedroom, kids_room]
Marker that this is the master thermostat. Specify which rooms to use for averaging. Only those which have the same preset mode (heat or cool) will be included. When preset mode is different (for instance master at heat and rooms at cool or off are excluded).
goal: 80
kp: -0.15
ki: 0
kd: 0
In this case fine tuning of weather_mode
. Adjust the valve_pos
to get max valve opening of all included rooms at goal = 80
(max of valve_pos
per room).
So you could use alternative config options. Note that I did not test these variations myself.
Examples are:
- platform: multizone_thermostat
name: master_thermostat
sensor_out: sensor.espaltherma_outside
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
precision: 0.1
heat:
entity_id: switch.heat_pump_switch
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 180
difference: 100
minimal_diff: 5
pwm:
seconds: 600
weather_mode:
ka: 2
kb: -6
MASTER_mode:
satelites: [living_room, guest_room, bathroom, office, master_bathroom, master_bedroom, kids_room]
sensor_stale_duration:
hours: 12
restore_from_old_state: False
restore_parameters: False
restore_integral: False
- platform: multizone_thermostat
name: master_thermostat
sensor_out: sensor.espaltherma_outside
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
precision: 0.1
heat:
entity_id: switch.heat_pump_switch
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 180
difference: 100
minimal_diff: 5
pwm:
seconds: 600
MASTER_mode:
satelites: [living_room, guest_room, bathroom, office, master_bathroom, master_bedroom, kids_room]
goal: 80
kp: -2
ki: -0.0001
kd: 100000
sensor_stale_duration:
hours: 12
restore_from_old_state: False
restore_parameters: False
restore_integral: False
3)master by PID only. thus operating on averaged setpoints and room temps.
- platform: multizone_thermostat
- platform: multizone_thermostat
name: master_thermostat
sensor_out: sensor.espaltherma_outside
sensor_filter: 3
initial_hvac_mode: "off"
initial_preset_mode: "none"
precision: 0.1
heat:
entity_id: switch.heat_pump_switch
initial_target_temp: 20
away_temp: 17
proportional_mode:
control_interval:
seconds: 180
difference: 100
minimal_diff: 5
pwm:
seconds: 600
PID_mode:
kp: 3
ki: 0
kd: 0
MASTER_mode:
satelites: [living_room, guest_room, bathroom, office, master_bathroom, master_bedroom, kids_room]
sensor_stale_duration:
hours: 12
restore_from_old_state: False
restore_parameters: False
restore_integral: False
Thanks. I have created issue #13 on github. Thanks for helping out.
I did update the issue #13 on github. I am not able to reliably get satellites to operate, and trigger master when needed. Can anyone suggest what am I doing wrong?
Hi, I have read the documentation and I still doubt whether this would be a solution for me.
My situation is that I have may floor heating segments with electric valves and I have a wired temperature sensor in each room. I currently control the system with one HASS generic thermostat for each room. The boiler is weather-controlled, so I don’t have any central thermostat; it just sets the water temperature based on the outside temperature. And once an open floor heating valve is detected (because there is water flow), the boiler starts running.
This is currently working OK, but now the boiler starts heating even if only one small room demands heat, which is very inefficient. Therefore, I would like the demand to be more “clustered”, so the room thermostats to also take into account the hystereses of other rooms. So the small room only starts heating when another big room also is.
Would that be achieved with this solution?
The requested functionality is not possible with the multizone thermostat. Each room thermostat operates independently and has no knowledge of the others or its state. Only the master thermostat uses the states of the room thermostats.
What you could try is switch the boiler heating depending the maximum valve opening (time) of all room thermostats. I guess this however means that you have to bypass the current boiler heating flow trigger and replace the pump operation with the multizone ‘master’ thermostat. This has as downside that if for al long duration one or multiple room thermostats ask for none or limited heat ( low valve opening (time)) it could cool down or drain the heat from the boiler without triggering heating as there is not sufficient flow?
Hello, I have a NO head, i.e. normally open. I made such a thermostat but it works the other way around. Can you somehow reverse the operation of the head?