-
-
Save raffy-ops/2bdf967036d8d274fb1f62572ed5e545 to your computer and use it in GitHub Desktop.
#ver. 1.7 | |
blueprint: | |
name: HVAC Pause V1.7 | |
description: Pauses HVAC when windows/doors open; resumes last state once closed | |
domain: automation | |
source_url: https://gist.github.com/raffy-ops/2bdf967036d8d274fb1f62572ed5e545 | |
input: | |
climate_device: | |
description: Climate entity used for climate control. | |
name: Climate Device | |
selector: | |
entity: | |
domain: | |
- climate | |
multiple: false | |
doors_windows: | |
description: Group of entities that will activate automation. (Assumes 'on' | |
means 'open') | |
name: Door and window sensors. | |
selector: | |
entity: | |
domain: | |
- group | |
- binary_sensor | |
multiple: false | |
pause_delay: | |
description: Time to wait before pausing the HVAC system. | |
name: Pause Delay | |
default: | |
hours: 0 | |
minutes: 5 | |
seconds: 0 | |
selector: | |
duration: {} | |
resume_delay: | |
description: Time to wait before resuming the HVAC system. | |
name: Resume Delay | |
default: | |
hours: 0 | |
minutes: 0 | |
seconds: 30 | |
selector: | |
duration: {} | |
timeout: | |
description: If set HVAC will ramain off if door/window is not closed prior to timeout value elapsing. | |
Set to 0 to disable timeout. | |
name: Timeout (optional) | |
default: | |
hours: 0 | |
minutes: 0 | |
seconds: 0 | |
selector: | |
duration: {} | |
action_first: | |
description: When set to On any defined 'Pause Actions' will occur after the pause delay and prior to | |
any other actions. | |
name: Action First | |
selector: | |
boolean: | |
pause_action: | |
description: Optional additional action to perform when climate entity is paused. | |
name: Pause Action (Optional) | |
default: [] | |
selector: | |
action: {} | |
resume_action: | |
description: Optional additional action to perform when climate entity resumes. | |
name: Resume Action (Optional) | |
default: [] | |
selector: | |
action: {} | |
timeout_action: | |
description: Optional additional action to perform if the timeout value elapses. | |
name: Timeout Action (Optional) | |
default: [] | |
selector: | |
action: {} | |
variables: | |
action_first: !input action_first | |
pause_action: !input pause_action | |
resume_action: !input resume_action | |
timeout_action: !input timeout_action | |
climate_device: !input climate_device | |
doors_windows: !input doors_windows | |
timeout: !input timeout | |
timeout_empty: {'hours':00, 'minutes':00, 'seconds':00} | |
name_id: '{{ state_attr( climate_device ,''friendly_name'')|lower |replace('' '',''_'') | |
| regex_replace(find=''[^\w]'', replace='''') ~ ''_snapshot'' }}' | |
mode: single | |
trigger: | |
- platform: state | |
entity_id: !input doors_windows | |
from: 'off' | |
to: 'on' | |
for: !input pause_delay | |
id: group_open | |
condition: | |
- condition: not | |
conditions: | |
- condition: state | |
entity_id: !input climate_device | |
state: 'off' | |
action: | |
- choose: | |
- conditions: '{{ pause_action is defined and action_first == true }}' | |
sequence: !input pause_action | |
- service: scene.create | |
data: | |
scene_id: '{{ name_id }}' | |
snapshot_entities: !input climate_device | |
- service: climate.set_hvac_mode | |
target: | |
entity_id: !input climate_device | |
data: | |
hvac_mode: 'off' | |
- choose: | |
- conditions: '{{ pause_action is defined and action_first != true }}' | |
sequence: !input pause_action | |
- if: | |
- condition: template | |
value_template: '{{ timeout != timeout_empty }}' | |
then: | |
- wait_for_trigger: | |
- platform: state | |
entity_id: !input doors_windows | |
from: 'on' | |
to: 'off' | |
for: !input resume_delay | |
continue_on_timeout: true | |
timeout: !input timeout | |
- choose: | |
- conditions: '{{ wait.trigger == none and timeout_action is defined }}' | |
sequence: !input timeout_action | |
- stop: '' | |
else: | |
- wait_for_trigger: | |
- platform: state | |
entity_id: !input doors_windows | |
from: 'on' | |
to: 'off' | |
for: !input resume_delay | |
continue_on_timeout: false | |
- condition: not | |
conditions: | |
- condition: state | |
entity_id: !input climate_device | |
attribute: fan_mode | |
state: 'on' | |
- condition: state | |
entity_id: !input climate_device | |
state: 'off' | |
- service: scene.turn_on | |
target: | |
entity_id: '{{ ''scene.'' ~ name_id }}' | |
- choose: | |
- conditions: '{{ resume_action is defined }}' | |
sequence: !input resume_action |
Thanks for the feedback! Added in the source_url. Please feel free to keep providing suggestions to improve this!
Just a request from my side: could you also add a temperature if window is opened? So you are able to choose between climate.set_hvac_mode and climate.set_temperatur? Thx
Just a request from my side: could you also add a temperature if window is opened? So you are able to choose between climate.set_hvac_mode and climate.set_temperatur? Thx
Yes this feature would be really good. But it would need to integrate air conditioning management, because it can be in cooling mode and heating mode. Lower the temperature in winter, but raise the temperature in summer. Thank you for your work.
Thank you @raffy-ops for this blueprint! Please check my fork to find a little fix in the branch with timeout set
Hey man, thanks for this great blueprint!
Been using it for a while, but back then I took the shortcut of making a copy of the blueprint and rename the scene name internally for each aircon I wanted to control. I see now you've changed the naming of the scene to change automatically. Really nice, now it's a blueprint again :)
Would you be so kind to also include
source_url: https://gist.github.com/raffy-ops/2bdf967036d8d274fb1f62572ed5e545
in the next version? That makes checking for updates much easier in the future.