-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathheater_switch_mode.yaml
More file actions
235 lines (223 loc) · 6.08 KB
/
Copy pathheater_switch_mode.yaml
File metadata and controls
235 lines (223 loc) · 6.08 KB
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
blueprint:
name: Room heating mode switching
description: React to manual or automatic setup on thermostatic valve
domain: automation
source_url: https://github.com/francois09/HA_blueprints/heater_switch_mode.yaml
input:
climate_valve:
name: Climate valve
description: Rooms TRV (viewed as Climate)
selector:
entity:
domain: climate
manual_boolean:
name: Manual mode switch
description: Switch indicating if the room is in manual or automated mode
selector:
entity:
domain: input_boolean
selected_temp:
name: Selected °C setpoint
description: Helper to store room setpoint calculated by Heating Management
selector:
entity:
domain: input_number
winter_mode_boolean:
name: Winter switch
description: Global switch to say it's winter or not.
selector:
entity:
domain: input_boolean
selector_timer:
name: Timer to trigger read the temp event
description: Room timer to avoid multiple T° messages from TRV.
selector:
entity:
domain: timer
override_timer:
name: Timer to trigger reset to automated management
description: Timer to wait before resetting to automated T°
selector:
entity:
domain: timer
debounce_boolean:
name: Debounce valve update
description: Room debounce boolean flag
selector:
entity:
domain: input_boolean
occupancy_boolean:
name: Occupancy mode
description: Indicating if the room is occupied or no
selector:
entity:
domain: input_boolean
active_boolean:
name: Active for automation
description: Room activation status
selector:
entity:
domain: input_boolean
mode: queued
max_exceeded: silent
variables:
local_climate_valve: !input climate_valve
trigger:
- platform: state
entity_id: !input selector_timer
to: idle
id: TriggeredByTimer
- platform: state
entity_id: !input climate_valve
attribute: preset_mode
- platform: state
entity_id: !input climate_valve
attribute: temperature
- platform: state
entity_id: !input override_timer
to: idle
id: TriggeredByOverrideReset
condition:
- condition: state
entity_id: !input winter_mode_boolean
state: 'on'
action:
- choose:
#### When any change, wait timer to collect selected T°
- conditions:
- condition: not
conditions:
- or:
- condition: trigger
id:
- TriggeredByTimer
- condition: trigger
id:
- TriggeredByOverrideReset
sequence:
- service: timer.start
data:
duration: '0:00:05'
target:
entity_id: !input selector_timer
# When debounce is on, just turn off (automated events)
- conditions:
- condition: trigger
id:
- TriggeredByTimer
- condition: state
entity_id: !input debounce_boolean
state: 'on'
sequence:
- service: input_boolean.turn_off
data: {}
target:
entity_id: !input debounce_boolean
#### When override timer is Ok, it's time to reset to automated management
- conditions:
- condition: trigger
id:
- TriggeredByOverrideReset
- condition: state
entity_id: !input active_boolean
state: 'on'
### - condition: #### Value above normal value
sequence:
- service: input_boolean.turn_off
data: {}
target:
entity_id: !input manual_boolean
- service: input_boolean.turn_on
data: {}
target:
entity_id: !input debounce_boolean
- service: climate.set_preset_mode
data:
preset_mode: auto
target:
entity_id: !input climate_valve
#### When timer is Ok, it's time to collect selected T° and turn flag to manual
- conditions:
- condition: trigger
id:
- TriggeredByTimer
- condition: state
entity_id: !input climate_valve
attribute: preset_mode
state: manual
sequence:
- service: input_boolean.turn_on
data: {}
target:
entity_id: !input manual_boolean
- service: input_number.set_value
data_template:
value: "{% set temp = state_attr(local_climate_valve,'temperature')|float %}{{ temp }}"
entity_id: !input selected_temp
- service: input_boolean.turn_on
data: {}
target:
entity_id: !input occupancy_boolean
- service: timer.start
data:
duration: '6:00:00'
target:
entity_id: !input override_timer
#### When auto mode selected, set debounce and re-send manual to valve
- conditions:
- condition: trigger
id:
- TriggeredByTimer
- condition: state
entity_id: !input climate_valve
attribute: preset_mode
state: auto
sequence:
- service: input_boolean.turn_on
data: {}
target:
entity_id: !input debounce_boolean
- service: climate.set_preset_mode
data:
preset_mode: manual
target:
entity_id: !input climate_valve
- service: input_boolean.turn_off
data: {}
target:
entity_id: !input manual_boolean
- service: input_boolean.turn_on
data: {}
target:
entity_id: !input occupancy_boolean
- service: timer.cancel
data: {}
target:
entity_id: !input override_timer
#### When holiday mode selected, set debounce and re-send manual to valve
- conditions:
- condition: trigger
id:
- TriggeredByTimer
- condition: state
entity_id: !input climate_valve
attribute: preset_mode
state: holiday
sequence:
- service: input_boolean.turn_on
data: {}
target:
entity_id: !input debounce_boolean
- service: climate.set_preset_mode
data:
preset_mode: manual
target:
entity_id: !input climate_valve
- service: input_boolean.turn_off
data: {}
target:
entity_id: !input occupancy_boolean
- service: timer.cancel
data: {}
target:
entity_id: !input override_timer