2025-07-22 12:00:39 -04:00
######################################################################
## AC related automations
## For more info visit https://www.vcloudinfo.com/click-here
## Contact: @CCOSTAN
2025-11-26 12:46:35 -05:00
# --------------------------------------------------------------
# Entity reference and attribute summaries:
#
# Entity ID: climate.downstairs
# Supported hvac_modes: heat, cool, heat_cool, off
# Supported fan_modes: on, off
# Supported preset_modes: none, eco
# Supported temperature range: 50°F (min_temp) – 90°F (max_temp)
#
# Current state (example):
# current_temperature: 77
# temperature: 83
# target_temp_high: null
# target_temp_low: null
# current_humidity: 58
# fan_mode: off
# hvac_action: idle
# preset_mode: none
# Supported features: 411
# --------------------------------------------------------------
# Entity ID: climate.upstairs
# Supported hvac_modes: off, heat, cool, heat_cool
# Supported temperature range: 50°F (min_temp) – 90°F (max_temp)
#
# Current state (example):
# current_temperature: 76
# temperature: 78
# target_temp_high: null
# target_temp_low: null
# friendly_name: Upstairs
# Supported features: 387
2025-07-22 12:00:39 -04:00
######################################################################
2025-07-12 17:44:42 -04:00
2025-05-28 17:08:23 -04:00
input_datetime :
downstairs_last_filter_change :
2025-05-28 17:51:13 -04:00
name : Downstairs Last Filter Change
2025-05-28 17:08:23 -04:00
has_date : true
has_time : true
upstairs_last_filter_change :
2025-05-28 17:51:13 -04:00
name : Upstairs Last Filter Change
2025-05-28 17:08:23 -04:00
has_date : true
has_time : true
2025-07-12 17:44:42 -04:00
# ---------------------------------------------------------------------------
# Binary sensors – true when the thermostat reports the compressor is running
# ---------------------------------------------------------------------------
2025-05-29 13:12:16 -04:00
binary_sensor :
- platform : template
sensors :
downstairs_ac_cooling :
friendly_name : "Downstairs AC is Cooling"
value_template : >
{{ state_attr('climate.downstairs', 'hvac_action') == 'cooling' }}
upstairs_ac_cooling :
friendly_name : "Upstairs AC is Cooling"
value_template : >
{{ state_attr('climate.upstairs', 'hvac_action') == 'cooling' }}
2025-05-28 17:08:23 -04:00
sensor :
2025-07-12 17:44:42 -04:00
- platform : template
sensors :
downstairs_ac_cooling_numeric :
friendly_name : "Downstairs AC Cooling Numeric"
value_template : "{{ 1 if is_state('binary_sensor.downstairs_ac_cooling', 'on') else 0 }}"
upstairs_ac_cooling_numeric :
friendly_name : "Upstairs AC Cooling Numeric "
value_template : "{{ 1 if is_state('binary_sensor.upstairs_ac_cooling', 'on') else 0 }}"
- platform : integration
name : Downstairs AC Runtime Raw
source : sensor.downstairs_ac_cooling_numeric
unit_time : h
method : left
round : 2
- platform : integration
name : Upstairs AC Runtime Raw
source : sensor.upstairs_ac_cooling_numeric
unit_time : h
method : left
round : 2
2025-05-28 17:08:23 -04:00
2025-07-12 17:44:42 -04:00
# ---------------------------------------------------------------------------
# Utility‑ meters that act like odometers (reset when you swap the filter)
# ---------------------------------------------------------------------------
utility_meter :
downstairs_ac_runtime_since_last_filter_change :
source : sensor.downstairs_ac_runtime_raw
upstairs_ac_runtime_since_last_filter_change :
source : sensor.upstairs_ac_runtime_raw
2025-07-13 12:18:25 -04:00
2025-07-13 12:23:49 -04:00
script :
2025-07-12 17:44:42 -04:00
reset_downstairs_filter :
alias : Reset Downstairs Filter
mode : queued
2025-05-28 17:08:23 -04:00
sequence :
- service : input_datetime.set_datetime
data :
entity_id : input_datetime.downstairs_last_filter_change
datetime : "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}"
2025-07-12 17:44:42 -04:00
- service : utility_meter.reset
target :
2025-07-13 12:18:25 -04:00
entity_id : sensor.downstairs_ac_runtime_since_last_filter_change
2025-07-12 17:44:42 -04:00
reset_upstairs_filter :
alias : Reset Upstairs Filter
mode : queued
sequence :
- service : input_datetime.set_datetime
data :
entity_id : input_datetime.upstairs_last_filter_change
datetime : "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}"
- service : utility_meter.reset
target :
2025-07-13 12:18:25 -04:00
entity_id : sensor.upstairs_ac_runtime_since_last_filter_change
2025-05-28 17:08:23 -04:00
2025-11-26 12:46:35 -05:00
##############################################################################
### AUTOMATIONS - Thermostat schedules, guardrails, and presence/weather logic
### Some shutoff automations are also in the ALARM.yaml package when windows/doors are left open.
### There are also some automations in the POWERWALL.yaml package when the grid is down.
##############################################################################
2025-05-28 17:08:23 -04:00
automation :
- alias : Notify Downstairs Filter Change Due
2025-07-12 17:44:42 -04:00
description : Notify when downstairs runtime exceeds threshold since last filter change
2025-05-28 17:08:23 -04:00
trigger :
- platform : numeric_state
entity_id : sensor.downstairs_ac_runtime_since_last_filter_change
2025-07-12 17:44:42 -04:00
above : 800 # hours
2025-05-28 17:08:23 -04:00
action :
2025-07-12 17:44:42 -04:00
- service : script.notify_engine # <-- keep your existing notify helper
2025-05-28 17:08:23 -04:00
data :
title : "Home Maintenance Reminder"
value1 : "It's time to change your Downstairs AC filter."
2025-07-12 17:44:42 -04:00
value2 : >
Runtime has exceeded 800 h. Last changed {{ ((now() - states.input_datetime.downstairs_last_filter_change.last_changed).total_seconds() / 86400) | round(0) }} days ago.
2025-05-28 17:08:23 -04:00
who : "Carlo"
group : "maintenance"
level : "active"
- alias : Notify Upstairs Filter Change Due
2025-07-12 17:44:42 -04:00
description : Notify when upstairs runtime exceeds threshold since last filter change
2025-05-28 17:08:23 -04:00
trigger :
- platform : numeric_state
entity_id : sensor.upstairs_ac_runtime_since_last_filter_change
2025-07-12 17:44:42 -04:00
above : 450 # hours
2025-05-28 17:08:23 -04:00
action :
- service : script.notify_engine
data :
title : "Home Maintenance Reminder"
value1 : "It's time to change your Upstairs AC filter."
2025-07-12 17:44:42 -04:00
value2 : >
Runtime has exceeded 450 h. Last changed {{ ((now() - states.input_datetime.upstairs_last_filter_change.last_changed).total_seconds() / 86400) | round(0) }} days ago.
2025-05-28 17:08:23 -04:00
who : "Carlo"
group : "maintenance"
2025-06-13 10:00:11 -04:00
2025-08-18 09:23:20 -04:00
- alias : 'AC Status Announcement'
2025-07-22 12:00:39 -04:00
id : 7812fdaf-a3f8-498b-8f07-28e977e528fe
trigger :
- platform : state
entity_id :
- climate.downstairs
- climate.upstairs
from : 'off'
2025-08-18 09:23:20 -04:00
- platform : state
entity_id :
- climate.downstairs
- climate.upstairs
to : 'off'
2025-07-22 12:00:39 -04:00
action :
- service : script.speech_engine
data :
NestStatus : "The {{ trigger.entity_id.split('.')[1].split('_')[0]}} {{ trigger.entity_id.split('.')[1].split('_')[1]}} has now been turned on for {{(trigger.to_state.state)}}."
call_window_check : 1
2025-07-12 17:44:42 -04:00
- alias : Prevent Upstairs Nest Below 76
2025-06-13 10:00:11 -04:00
id : 7812fdaf-a3f8-498b-8f07-28e977e528ff
trigger :
- platform : numeric_state
entity_id : climate.upstairs
attribute : temperature
below : 76
action :
2025-07-12 17:44:42 -04:00
- delay : "00:03:00"
2025-06-13 10:00:11 -04:00
- service : climate.set_temperature
data :
entity_id : climate.upstairs
2025-11-26 12:46:35 -05:00
temperature : 78
2025-07-22 12:00:39 -04:00
2025-11-26 12:46:35 -05:00
- alias : Set Downstairs to 77 When Both in Bed
id : set_downstairs_nest_77_both_in_bed
2025-07-22 12:00:39 -04:00
trigger :
- platform : state
entity_id : group.bed
to : 'on'
condition :
- condition : and
conditions :
- condition : state
entity_id : binary_sensor.sleepnumber_carlo_carlo_is_in_bed
state : 'on'
- condition : state
entity_id : binary_sensor.sleepnumber_carlo_stacey_is_in_bed
state : 'on'
2025-07-23 20:53:56 -04:00
- condition : state
entity_id : sun.sun
state : 'below_horizon'
2025-07-22 12:00:39 -04:00
action :
- service : climate.set_temperature
data :
entity_id : climate.downstairs
2025-11-26 12:46:35 -05:00
temperature : 77
- alias : 'Set Downstairs Thermostat Daytime Target'
id : set_downstairs_thermostat_daytime_target
2025-08-04 11:18:48 -04:00
mode : single
trigger :
- platform : state
entity_id : sun.sun
to : 'above_horizon'
2025-11-26 12:46:35 -05:00
- platform : time
at : "08:00:00"
2025-08-04 11:18:48 -04:00
- platform : numeric_state
2025-10-22 12:44:08 -04:00
entity_id : sensor.pirateweather_temperature
2025-11-26 12:46:35 -05:00
above : 92
- platform : state
entity_id : group.family
to : 'home'
condition :
- condition : and
conditions :
- condition : state
entity_id : sun.sun
state : 'above_horizon'
- condition : state
entity_id : input_boolean.guest_mode
state : 'off'
2025-08-04 11:18:48 -04:00
action :
2025-11-26 12:46:35 -05:00
- service : climate.set_hvac_mode
2025-08-04 11:18:48 -04:00
data :
entity_id : climate.downstairs
2025-11-26 12:46:35 -05:00
hvac_mode : cool
- choose :
- conditions :
- condition : and
conditions :
- condition : numeric_state
entity_id : sensor.pirateweather_temperature
above : 92
- condition : state
entity_id : group.family
state : 'home'
sequence :
- service : climate.set_temperature
data :
entity_id : climate.downstairs
temperature : 78
- conditions :
- condition : state
entity_id : group.family
state : 'home'
sequence :
- service : climate.set_temperature
data :
entity_id : climate.downstairs
temperature : 80
- conditions :
- condition : state
entity_id : group.family
state : 'not_home'
sequence :
- service : climate.set_preset_mode
data :
entity_id : climate.downstairs
preset_mode : 'eco'
2025-08-04 11:18:48 -04:00
# Set thermostats to eco mode when everyone is away
- alias : 'Set Thermostats to Eco When Away'
id : 1e2d3c4b-eco-thermostat-away
mode : single
trigger :
- platform : state
entity_id : group.family
to : 'not_home'
condition :
- condition : state
entity_id : group.family
state : 'not_home'
- condition : state
entity_id : input_boolean.guest_mode
state : 'off'
action :
- service : climate.set_preset_mode
data :
2025-11-03 12:35:24 -05:00
entity_id : climate.downstairs
2025-08-04 11:18:48 -04:00
preset_mode : 'eco'
2025-11-26 12:46:35 -05:00
- service : climate.set_hvac_mode
data :
entity_id : climate.downstairs
hvac_mode : cool
2025-11-03 12:35:24 -05:00
- service : climate.set_temperature
data :
entity_id : climate.upstairs
temperature : 84
2025-07-22 12:00:39 -04:00
2025-08-04 11:18:48 -04:00
# Automation: Set Thermostats Back to Cool Mode
- alias : 'Set Thermostats to Cool When Home'
id : 1e2d3c4b-cool-thermostat-home
mode : single
trigger :
- platform : state
entity_id : group.family
to : 'home'
condition :
- condition : or
conditions :
- condition : state
entity_id : group.family
state : 'home'
- condition : state
entity_id : input_boolean.guest_mode
state : 'off'
action :
2025-11-26 12:46:35 -05:00
- service : climate.set_preset_mode
data :
entity_id : climate.downstairs
preset_mode : 'none'
- service : climate.set_hvac_mode
data :
entity_id :
- climate.downstairs
- climate.upstairs
hvac_mode : cool
2025-08-04 11:18:48 -04:00
- choose :
- conditions :
2025-11-26 12:46:35 -05:00
- condition : numeric_state
entity_id : sensor.pirateweather_temperature
above : 92
2025-08-04 11:18:48 -04:00
- condition : state
entity_id : group.family
state : 'home'
sequence :
2025-11-26 12:46:35 -05:00
- service : climate.set_temperature
2025-08-04 11:18:48 -04:00
data :
entity_id : climate.downstairs
2025-11-26 12:46:35 -05:00
temperature : 78
2025-08-04 11:18:48 -04:00
- conditions :
- condition : state
2025-11-26 12:46:35 -05:00
entity_id : group.family
2025-08-04 11:18:48 -04:00
state : 'home'
sequence :
2025-11-03 12:35:24 -05:00
- service : climate.set_temperature
2025-08-04 11:18:48 -04:00
data :
2025-11-26 12:46:35 -05:00
entity_id : climate.downstairs
2025-11-03 12:35:24 -05:00
temperature : 80
2025-11-26 12:46:35 -05:00
- service : climate.set_temperature
data :
entity_id : climate.upstairs
temperature : 82
- alias : 'Reset Upstairs to 82 Each Night'
id : reset_upstairs_thermostat_nightly_82
mode : single
trigger :
- platform : time
at : "03:00:00"
action :
- service : climate.set_hvac_mode
data :
entity_id : climate.upstairs
hvac_mode : cool
- service : climate.set_temperature
data :
entity_id : climate.upstairs
temperature : 82