mirror of
https://github.com/CCOSTAN/Home-AssistantConfig.git
synced 2025-07-20 10:49:53 +00:00
135 lines
4.8 KiB
YAML
135 lines
4.8 KiB
YAML
# --------------------------------------------------
|
||
# AC Filter‑change runtime tracker
|
||
# --------------------------------------------------
|
||
|
||
input_datetime:
|
||
downstairs_last_filter_change:
|
||
name: Downstairs Last Filter Change
|
||
has_date: true
|
||
has_time: true
|
||
upstairs_last_filter_change:
|
||
name: Upstairs Last Filter Change
|
||
has_date: true
|
||
has_time: true
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Binary sensors – true when the thermostat reports the compressor is running
|
||
# ---------------------------------------------------------------------------
|
||
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' }}
|
||
|
||
sensor:
|
||
- 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
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 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
|
||
|
||
script:
|
||
reset_downstairs_filter:
|
||
alias: Reset Downstairs Filter
|
||
mode: queued
|
||
sequence:
|
||
- service: input_datetime.set_datetime
|
||
data:
|
||
entity_id: input_datetime.downstairs_last_filter_change
|
||
datetime: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}"
|
||
- service: utility_meter.reset
|
||
target:
|
||
entity_id: sensor.downstairs_ac_runtime_since_last_filter_change
|
||
|
||
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:
|
||
entity_id: sensor.upstairs_ac_runtime_since_last_filter_change
|
||
|
||
automation:
|
||
- alias: Notify Downstairs Filter Change Due
|
||
description: Notify when downstairs runtime exceeds threshold since last filter change
|
||
trigger:
|
||
- platform: numeric_state
|
||
entity_id: sensor.downstairs_ac_runtime_since_last_filter_change
|
||
above: 800 # hours
|
||
action:
|
||
- service: script.notify_engine # <-- keep your existing notify helper
|
||
data:
|
||
title: "Home Maintenance Reminder"
|
||
value1: "It's time to change your Downstairs AC filter."
|
||
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.
|
||
who: "Carlo"
|
||
group: "maintenance"
|
||
level: "active"
|
||
|
||
- alias: Notify Upstairs Filter Change Due
|
||
description: Notify when upstairs runtime exceeds threshold since last filter change
|
||
trigger:
|
||
- platform: numeric_state
|
||
entity_id: sensor.upstairs_ac_runtime_since_last_filter_change
|
||
above: 450 # hours
|
||
action:
|
||
- service: script.notify_engine
|
||
data:
|
||
title: "Home Maintenance Reminder"
|
||
value1: "It's time to change your Upstairs AC filter."
|
||
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.
|
||
who: "Carlo"
|
||
group: "maintenance"
|
||
|
||
|
||
- alias: Prevent Upstairs Nest Below 76
|
||
id: 7812fdaf-a3f8-498b-8f07-28e977e528ff
|
||
trigger:
|
||
- platform: numeric_state
|
||
entity_id: climate.upstairs
|
||
attribute: temperature
|
||
below: 76
|
||
action:
|
||
- delay: "00:03:00"
|
||
- service: climate.set_temperature
|
||
data:
|
||
entity_id: climate.upstairs
|
||
temperature: 77
|