Files
home-assistant/packages/climate/climate.yaml
2022-10-30 11:06:27 -07:00

169 lines
4.3 KiB
YAML

# Climate Package
# -----------------------------------------------------------------------------
# Climate State Helpers
input_select:
climate_mode:
name: Climate Control Mode
options:
- Home
- Night
- Away
- 'Off'
- Manual
- Paused
input_number:
temp_setpoint_day_high:
name: Temperature Setpoint Day (High)
initial: 74
min: 60
max: 90
step: 1
temp_setpoint_day_low:
name: Temperature Setpoint Day (Low)
initial: 70
min: 60
max: 90
step: 1
temp_setpoint_night_high:
name: Temperature Setpoint Night (High)
initial: 76
min: 60
max: 90
step: 1
temp_setpoint_night_low:
name: Temperature Setpoint Night (Low)
initial: 70
min: 60
max: 90
step: 1
temp_setpoint_away_high:
name: Temperature Setpoint Away (High)
initial: 80
min: 60
max: 90
step: 1
temp_setpoint_away_low:
name: Temperature Setpoint Away (Low)
initial: 66
min: 60
max: 90
step: 1
input_datetime:
hvac_start_day:
name: HVAC Daytime Start
initial: '10:00'
has_date: false
has_time: true
hvac_start_night:
name: HVAC Nighttime Start
initial: '20:00'
has_date: false
has_time: true
template:
binary_sensor:
- name: HVAC Fan Running
state: >
{{ 'Running' in state_attr('climate.thermostat', 'fan_state') }}
# -----------------------------------------------------------------------------
# Climate Automations
automation:
# Automations for Open Windows/Doors
- alias: Pause HVAC when Doors/Windows Open
mode: queued
trigger:
- platform: state
entity_id: binary_sensor.all_doors
to: 'on'
for:
minutes: 5
- platform: state
entity_id: binary_sensor.all_windows
to: 'on'
for:
minutes: 5
condition: "{{ not is_state('input_select.climate_mode', 'Paused') }}"
action:
- service: scene.create
data:
scene_id: hvac_restore_state
snapshot_entities:
# See https://github.com/home-assistant/core/issues/69925
# - climate.thermostat
- input_select.climate_mode
- service: climate.set_hvac_mode
target:
entity_id: climate.thermostat
data:
hvac_mode: "off"
- service: input_select.select_option
target:
entity_id: input_select.climate_mode
data:
option: Paused
- service: notify.telegram_home
data:
message: HVAC Paused (Window or Door Open)
- alias: Restore HVAC when Doors/Windows Closed
mode: queued
trigger:
- platform: state
entity_id: binary_sensor.all_doors
from: 'on'
to: 'off'
for:
minutes: 5
- platform: state
entity_id: binary_sensor.all_windows
from: 'on'
to: 'off'
for:
minutes: 5
condition: "{{ is_state('input_select.climate_mode', 'Paused') }}"
action:
- service: scene.turn_on
target:
entity_id: scene.hvac_restore_state
# See https://github.com/home-assistant/core/issues/69925
# Assume thermostat is always heat_cool when not off
- service: climate.set_hvac_mode
target:
entity_id: climate.thermostat
data:
hvac_mode: "{{ 'off' if is_state('input_select.climate_mode', 'Off') else 'heat_cool' }}"
- service: notify.telegram_home
data:
message: HVAC Restored (Window or Door Open)
- alias: Widen HVAC Range at Night
mode: queued
trigger:
- platform: time
at: input_datetime.hvac_start_night
action:
- service: climate.set_temperature
target:
entity_id: climate.thermostat
data:
target_temp_high: "{{ states('input_number.temp_setpoint_night_high')|float }}"
target_temp_low: "{{ states('input_number.temp_setpoint_night_low')|float }}"
- alias: Narrow HVAC Range during Day
mode: queued
trigger:
- platform: time
at: input_datetime.hvac_start_day
action:
- service: climate.set_temperature
target:
entity_id: climate.thermostat
data:
target_temp_high: "{{ states('input_number.temp_setpoint_day_high')|float }}"
target_temp_low: "{{ states('input_number.temp_setpoint_day_low')|float }}"