Hi Geert,
You are right. Each room has a satellite, with each satellite having a room temperature sensor and a hvac mode (heat and/or cool) with each mode having a switch to open/close the valve of that room.
The master thermostat does not have a room temperature sensor. It requires also at least one hvac mode (heat and/or cool) with each mode having a switch to switch the heater on/off. The operation_mode
options "minimal_on", "balanced" or "continuous"
defines the scheduling of the satellites:
-
"minimal_on"'
: schedule satellites opening and have the heater as short active as possible but thus with high heat requirement; -
"continuous"
: tries to keep the heater as long as possible active resulting in low heat requirement -
"balanced"
: schedule opening of satellites ‘balanced’ between heater active duration and heat requirement
I use for the satellites: 2 sonoff 4ch relays for the floor heating, 2 zigbee radiator valves. The master switch is a sonoff single relay to activate a honeywell valve (district heating).
Some config examples can be found here github.
This is my current config
# MASTER
- platform: multizone_thermostat
name: master
unique_id: mz_master
initial_hvac_mode: "off"
initial_preset_mode: "none"
room_area: 142 # total heated area
passive_switch_check: True
heat:
entity_id: switch.mainvalve
passive_switch_duration:
days: 14
master_mode:
satelites: [living, sl1, bathroom, sl2, sl3, sl4, sl5]
operation_mode: "balanced"
control_interval:
minutes: 30
pwm_duration:
minutes: 30
pwm_scale: 100
pwm_resolution: 50
PID_valve_mode:
goal: .8
kp: -0.5
ki: -0.0003
kd: 0
restore_from_old_state: False
restore_parameters: False
restore_integral: False
- platform: multizone_thermostat
name: living
unique_id: mz_living
sensor: sensor.temp_living
filter_mode: 1
sensor_out: sensor.openweather_temperature
room_area: 62
initial_hvac_mode: "off"
precision: 0.1
sensor_stale_duration:
hours: 12
passive_switch_check: True
heat:
entity_id: input_boolean.living # operating multiple switches
passive_switch_duration:
days: 15
initial_target_temp: 19
away_temp: 15
proportional_mode:
control_interval:
minutes: 15
pwm_duration:
minutes: 30
pwm_scale: 100
pwm_resolution: 50
pwm_threshold: 2
PID_mode:
kp: 35
ki: 0.004
kd: -150000
window_open_tempdrop: -3.6
weather_mode:
ka: 2
kb: -15
restore_from_old_state: True
restore_parameters: True
restore_integral: True
- platform: multizone_thermostat
name: sl1
unique_id: mz_sl1
sensor: sensor.temp_sl1
filter_mode: 1
sensor_out: sensor.openweather_temperature
room_area: 20
initial_hvac_mode: "off"
precision: 0.1
sensor_stale_duration:
hours: 12
passive_switch_check: True
heat:
entity_id: switch.actuator_8
passive_switch_duration:
days: 15
initial_target_temp: 17.5
away_temp: 15
proportional_mode:
control_interval:
minutes: 15
pwm_duration:
minutes: 30
pwm_scale: 100
pwm_resolution: 50
pwm_threshold: 2
PID_mode:
kp: 35
ki: 0.004
kd: -150000
window_open_tempdrop: -3.6
weather_mode:
ka: 2
kb: -20
restore_from_old_state: True
restore_parameters: True
restore_integral: True
- platform: multizone_thermostat
name: sl2
unique_id: mz_sl2
sensor: sensor.temp_sl2
filter_mode: 1
sensor_out: sensor.openweather_temperature
room_area: 13
initial_hvac_mode: "off"
precision: 0.1
sensor_stale_duration:
hours: 12
passive_switch_check: True
heat:
entity_id: switch.actuator_6
passive_switch_duration:
days: 15
initial_target_temp: 17.5
away_temp: 15
proportional_mode:
control_interval:
minutes: 15
pwm_duration:
minutes: 30
pwm_scale: 100
pwm_resolution: 50
pwm_threshold: 2
PID_mode:
kp: 35
ki: 0.004
kd: -150000
window_open_tempdrop: -3.6
weather_mode:
ka: 2
kb: -20
restore_from_old_state: True
restore_parameters: True
restore_integral: True
- platform: multizone_thermostat
name: sl3
unique_id: mz_sl3
sensor: sensor.temp_sl3
filter_mode: 2
sensor_out: sensor.openweather_temperature
room_area: 7
initial_hvac_mode: "off"
precision: 0.1
sensor_stale_duration:
hours: 12
passive_switch_check: True
heat:
entity_id: switch.actuator_5
passive_switch_duration:
days: 15
initial_target_temp: 17.5
away_temp: 15
proportional_mode:
control_interval:
minutes: 15
pwm_duration:
minutes: 30
pwm_scale: 100
pwm_resolution: 50
pwm_threshold: 2
PID_mode:
kp: 35
ki: 0.004
kd: -150000
window_open_tempdrop: -3.6
weather_mode:
ka: 2
kb: -20
restore_from_old_state: True
restore_parameters: True
restore_integral: True
- platform: multizone_thermostat
name: bathroom
unique_id: mz_bathroom
sensor: sensor.temp_bath
filter_mode: 1
room_area: 7
initial_hvac_mode: "off"
precision: 0.1
sensor_stale_duration:
hours: 12
passive_switch_check: True
heat:
entity_id: switch.actuator_7
passive_switch_duration:
days: 15
initial_target_temp: 19.0
away_temp: 17
proportional_mode:
control_interval:
minutes: 15
pwm_duration:
minutes: 30
pwm_scale: 100
pwm_resolution: 50
pwm_threshold: 2
PID_mode:
kp: 35
ki: 0.004
kd: -150000
restore_from_old_state: True
restore_parameters: True
restore_integral: True
- platform: multizone_thermostat
name: sl4
unique_id: mz_sl4
sensor: sensor.temp_sl4
filter_mode: 2
sensor_out: sensor.openweather_temperature
room_area: 15
initial_hvac_mode: "off"
precision: 0.1
sensor_stale_duration:
hours: 12
passive_switch_check: True
heat:
# proportional valve
entity_id: number.sl4_valve_control
passive_switch_duration:
days: 15
initial_target_temp: 17.5
away_temp: 15
proportional_mode:
control_interval:
minutes: 15
# proportional valve thus no pwm
# pwm_duration:
# minutes: 30
pwm_scale: 100
pwm_resolution: 50
pwm_threshold: 2
PID_mode:
kp: 8
ki: 0.001
kd: -100000
window_open_tempdrop: -3.6
weather_mode:
ka: 2
kb: -20
restore_from_old_state: True
restore_parameters: True
restore_integral: True
- platform: multizone_thermostat
name: sl5
unique_id: mz_sl5
sensor: sensor.temp_sl5
filter_mode: 2
sensor_out: sensor.openweather_temperature
room_area: 18
initial_hvac_mode: "off"
precision: 0.1
sensor_stale_duration:
hours: 12
passive_switch_check: True
heat:
# proportional valve
entity_id: number.sl5_valve_control
passive_switch_duration:
days: 15
initial_target_temp: 17.5
away_temp: 15
proportional_mode:
control_interval:
minutes: 15
# proportional valve thus no pwm
# pwm_duration:
# minutes: 30
pwm_scale: 100
pwm_resolution: 50
pwm_threshold: 2
PID_mode:
kp: 8
ki: 0.001
kd: -100000
window_open_tempdrop: -3.6
weather_mode:
ka: 2
kb: -20
restore_from_old_state: True
restore_parameters: True
restore_integral: True