Simple automation that pauses the climate entity when doors or windows are open and resumes last state once they are closed.
Features:
- Ability to set the time delay that doors/windows must be open or closed prior to automation triggering.
- If HVAC is off when door/windows open automation will not cause any changes.
- If HVAC is turned on while windows/doors open, automation will not override any settings once windows/doors are closed.
- Ability to trigger additional actions when HVAC is Paused or Resumed, including notifications or triggering other automations.
- Ability to run multiple instances of the blueprint at once to control multiple HVAC systems by utilizing separate automations which use this blueprint.
- Ability to set a timeout in which the HVAC will not auto resume if doors/windows have been opened for more than a specified duration.
- Ability to set timeout actions if the timeout period has elapsed. (Useful for sending notifications)
- Choose whether you want custom actions to occur either before or after the HVAC system has been turned off.
Needed to work
- Climate entity
- Group entity or binary_sensor that you want to trigger the climate entity.
- Automation assumes that when the group entity or binary_sensor is âonâ the HVAC system should be paused.
Information on setting up a group entity: Group - Home Assistant (home-assistant.io)
Release Notes
1.1
- Used climate state value instead of Hvac action attribute to determine if automation should resume HVAC.
1.2
- Re-wrote to include a condition to prevent automation from firing when HVAC is already off.
- Uses âclimate.set_hvac_modeâ instead of âclimate.turn_offâ
1.3
- Added ability to use both new style and old style groups.
- Changed the delay selector to use a typed number selector giving the interface a cleaner look.
1.4
- Added ability to trigger optional additional actions when the climate entity is paused and/or resumed.
1.5
- Blueprint now names the climate snapshot based off of the climate entity friendly name. This means you can now run multiple instances of the same blueprint for different climate entities without the snapshots overriding each other. Snapshot naming accounts for spaces and special characters that may be included in the friendly name so no name changes should be necessary.
1.6
- Automation will no longer restore previous settings if thermostat is adjusted while HVAC is off.
- 1.6.1 Added source_url into blueprint to allow easier updating and sharing.
Latest
1.7
- Added in timeout and timeout actions! If the timeout is set then the system will remain in its off state after the set timeout value even if the door/window sensors are closed. If the door/window sensors are closed prior to the timeout value elapsing then the system will restore as normal.
- Timeout actions are optional actions that will run if the system does timeout.
- Action First toggle: this feature if set to on will cause any user defined pause actions to happen after the pause delay and before the thermostat is turned off. This is useful if you want to create a notification prior to actually shutting off the system. To make these actions happen instantly set the pause delay to 0.
Feel free to keep me updated on your experience with this automation if you choose to use it!
If you have feature requests that someone has already requested, please chime in! That lets me know what to work on next!
Code
#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 == false }}'
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