Dit is mijn opzet. Het doet wat meer dan je mss wil, maar dat kun je makkelijk aanpassen. Het schedulen van de legionelle pre-run middels warmtepompstand gebeurt door de legionella run te detecteren (temp >62 oid). Vervolgens wordt in een time/date een trigger voor over iets van 6 1/2 dag gezet. Dit werkt ook goed wanneer je tussendoor HA herstart. Met een delay van 6 1/2 dag liep ik hier tegenaan.
In mijn geval. Douche triggered MV, De boiler pakt in eerste plaats lucht van de MV, daarna van buiten. Ik wil dus zoveel mogelijk de boiler laten draaien wanneer de MV op hoge stand draait. Bijkomend voordeel is dat de boiler na een douche meteen weer op temperatuur wordt gebracht waardoor de boiler in principe op een lagere temperatuur kan worden ingesteld.
Let op, de dag/nacht temperatuur zit momenteel in een automation verstopt. Dit is niet de 'default temperature'. GUI is voornamelijk voor debuggen, daar kom ik normaliter niet aan.
HA-technisch gezien kan het nog iets netter door template sensoren te gebruike ipv input numbers, maar dit was wat makkelijker in de opzet
Config van 'Boiler: set temperature'
Resultaat vd antilegionella prerun
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| alias: "Boiler: anit-legionella pre-run (on pre-run trigger)"
description: >-
Set the target temperature to 60 to heat the boiler mostly with heatpump
instead of electric element
trigger:
- platform: time
at: input_datetime.boiler_anti_legionella_pre_heat_trigger
condition:
- condition: template
value_template: "{{ float(states('sensor.boiler_hot_water_temperature') , 90) < 61 }}"
alias: Abort when water is already above 61
action:
- service: input_number.set_value
data:
value: 59
target:
entity_id: input_number.boiler_anti_legionella_temperature
alias: Set to 60
- delay:
hours: 24
minutes: 0
seconds: 0
milliseconds: 0
alias: Timeout in case anything unexpected happens
- service: input_number.set_value
data:
value: 0
target:
entity_id: input_number.boiler_anti_legionella_temperature
alias: Reset to 0
mode: single |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| alias: "Boiler: anti-legionella pre-run (on anti-legionella run)"
description: >-
When detected the actual anti-legionella run has started:
* Set when the next anti-legionella pre-run must start, 6 days and 21 hour
from now. This gives the next pre-run 3 hours to heat the boiler to 59 degrees
with in heatpump operation
* Reset the pre-run target temperature to 0
trigger:
- platform: template
value_template: "{{ float(states('sensor.boiler_hot_water_temperature') , 50) > 61 }}"
for:
hours: 0
minutes: 1
seconds: 0
alias: When boiler temperature is above 61 degrees
condition:
- condition: template
value_template: >-
{{as_timestamp(now()) >
as_timestamp(states('input_datetime.boiler_anti_legionella_pre_heat_trigger'))}}
alias: If next trigger not yet set (trigger datetime is in the past)
action:
- service: input_datetime.set_datetime
data:
datetime: >-
{{(as_timestamp(now()) + (((6 * 24) + 21) * 3600)) |
timestamp_custom('%Y-%m-%d %H:%M:%S', True)}}
target:
entity_id: input_datetime.boiler_anti_legionella_pre_heat_trigger
alias: Set trigger datetime to 6 days and 21 hours days from now
- service: input_number.set_value
data:
value: 0
target:
entity_id: input_number.boiler_anti_legionella_temperature
alias: Reset pre-run temperature
mode: single |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| alias: "Boiler: apply set temperature "
description: ""
trigger:
- platform: state
entity_id:
- sensor.boiler_set_temperature
for:
hours: 0
minutes: 1
seconds: 0
condition: []
action:
- service: water_heater.set_temperature
data:
temperature: "{{ states('sensor.boiler_set_temperature') }}"
target:
entity_id: water_heater.boiler
mode: single |
Deze heb ik momenteel niet aanstaan omdat ik het idee heb dat de warmtepompstand efficienter is, iig in de zomer. In winter mss niet omdat de AUTO-stand dan voor minder defrost zorgt
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| alias: "Boiler: auto-select mode"
description: ""
trigger:
- platform: state
entity_id:
- sensor.shower_water_temperature
- input_number.boiler_anti_legionella_temperature
- binary_sensor.shower_requests_mechanical_ventilation
for:
hours: 0
minutes: 0
seconds: 30
- platform: numeric_state
entity_id:
- sensor.boiler_energy_current
above: 800
for:
hours: 0
minutes: 0
seconds: 30
- platform: numeric_state
entity_id:
- sensor.boiler_energy_current
below: 800
for:
hours: 0
minutes: 0
seconds: 30
condition: []
action:
- if:
- condition: or
conditions:
- condition: numeric_state
entity_id: input_number.boiler_anti_legionella_temperature
above: 30
- condition: and
conditions:
- condition: numeric_state
entity_id: input_number.boiler_shower_mv_temperature
above: 30
- condition: state
entity_id: binary_sensor.shower_requests_mechanical_ventilation
state: "on"
- condition: numeric_state
entity_id: sensor.boiler_energy_current
above: 800
then:
- alias: Set mode to heat pump
if:
- condition: not
conditions:
- condition: state
entity_id: water_heater.boiler
state: heat_pump
then:
- service: water_heater.set_operation_mode
data:
operation_mode: heat_pump
target:
entity_id: water_heater.boiler
else:
- if:
- condition: numeric_state
entity_id: sensor.boiler_energy_current
below: 100
then:
- alias: Set mode to eco
if:
- condition: not
conditions:
- condition: state
entity_id: water_heater.boiler
state: eco
then:
- service: water_heater.set_operation_mode
data:
operation_mode: eco
target:
entity_id: water_heater.boiler
mode: single |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| alias: "Boiler: daytime operation trigger"
description: ""
trigger:
- platform: state
entity_id:
- schedule.boiler_daytime_operation_schedule
condition: []
action:
- choose:
- conditions:
- condition: state
entity_id: schedule.boiler_daytime_operation_schedule
state: "on"
sequence:
- service: input_number.set_value
data:
value: 50
target:
entity_id: input_number.boiler_default_temperature
- service: input_boolean.turn_on
data: {}
target:
entity_id: input_boolean.boiler_trigger_operation
- conditions:
- condition: state
entity_id: schedule.boiler_daytime_operation_schedule
state: "off"
sequence:
- service: input_number.set_value
data:
value: 46
target:
entity_id: input_number.boiler_default_temperature
mode: single |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| alias: "Boiler: reduce hysteresis"
description: >-
This reduces hysteresis by requesting a high target temperature. wait until
the default target temperature is reached before resetting.
The wait action was added to prevent the boiler from briefly stopping/starting
as was visible in power log
trigger:
- platform: template
value_template: >-
{{ float(states('sensor.boiler_hot_water_temperature') , 60) <
(float(states('sensor.boiler_set_temperature') , 0) - 4) }}
alias: Water cools down too much
for:
hours: 0
minutes: 1
seconds: 0
- platform: state
entity_id:
- input_boolean.boiler_trigger_operation
to: "on"
condition: []
action:
- delay:
hours: 0
minutes: 1
seconds: 0
milliseconds: 0
- if:
- condition: template
value_template: >-
{{ float(states('sensor.boiler_hot_water_temperature') , 60) <
(float(states('sensor.boiler_set_temperature') , 0) - 1) }}
alias: Water is cold enough
then:
- service: input_number.set_value
data:
value: 59
target:
entity_id: input_number.boiler_trigger_operation_temperature
- alias: Wait until water is hot enough
wait_template: >-
{{ states('sensor.boiler_hot_water_temperature') >=
states('input_number.boiler_default_temperature') }}
continue_on_timeout: true
timeout: "4:30"
- service: input_number.set_value
data:
value: 0
target:
entity_id: input_number.boiler_trigger_operation_temperature
- service: input_boolean.turn_off
data: {}
target:
entity_id: input_boolean.boiler_trigger_operation
mode: single |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| alias: "Boiler: trigger operation while/after showering"
description: >-
Trigger operation when MV starts due to showering. When MV stops, wait until
the default target temperature is reached before resetting.
The wait action was added to prevent the boiler from briefly stopping/starting
as was visible in power log
trigger:
- platform: state
entity_id:
- binary_sensor.shower_requests_mechanical_ventilation
for:
hours: 0
minutes: 1
seconds: 0
condition: []
action:
- choose:
- conditions:
- condition: state
entity_id: binary_sensor.shower_requests_mechanical_ventilation
state: "on"
sequence:
- service: input_number.set_value
data:
value: 55
target:
entity_id: input_number.boiler_shower_mv_temperature
- conditions:
- condition: state
entity_id: binary_sensor.shower_requests_mechanical_ventilation
state: "off"
sequence:
- wait_template: >-
{{ states('sensor.boiler_hot_water_temperature') >=
states('input_number.boiler_default_temperature') }}
continue_on_timeout: true
timeout: "3:00"
alias: Wait for water temperature above the default temperature
- service: input_number.set_value
data:
value: 0
target:
entity_id: input_number.boiler_shower_mv_temperature
mode: restart |
[
Voor 6% gewijzigd door
SalexSun op 03-06-2024 21:39
]