mirror of
https://github.com/CCOSTAN/Home-AssistantConfig.git
synced 2025-07-22 19:42:01 +00:00
* Add nightly reboot schedule for Frigate server in Proxmox configuration * Update HA version to 2025.6.1 * Update HA version to 2025.7.1, increase recorder purge days to 30, and enhance climate package with new sensors and utility meters for AC runtime tracking. In service of AC filter changing. #273 --------- Co-authored-by: Carlo Costanzo <CCOSTAN@users.noreply.github.com>
137 lines
4.9 KiB
YAML
137 lines
4.9 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
|
||
cycle: none # never auto‑reset
|
||
upstairs_ac_runtime_since_last_filter_change:
|
||
source: sensor.upstairs_ac_runtime_raw
|
||
cycle: none
|
||
|
||
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: utility_meter.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: utility_meter.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
|