home-assistant/automations/ac_peak_setback.yaml
jm 1e3c1001d0 Harden AC rules with workday+weather fallbacks (v2)
Replace the three live AC automations in place (same ids -> same entity_ids,
continuous history/traces):

* pre-cool & peak-setback: the workday check moves out of a blocking
  `condition` into template logic that falls back to a plain Mon-Fri test when
  binary_sensor.workday_sensor is unavailable/unknown. Previously a dead sensor
  silently skipped the run.
* pre-cool: weather.get_forecasts now uses continue_on_error, and a
  `fc is defined and is mapping` guard falls back to an assumed 88F high (->70F
  regular pre-cool) when the forecast hard-errors or returns nothing.
* peak-ends: unchanged behavior (runs daily), documented only.

Add AUTOMATIONS.md (identity model, per-rule spec, failure-mode table, deploy
steps) and deploy.py (pushes automations/*.yaml to the HA config API by id).

Fallbacks verified empirically against the live automations via execution
traces before this commit. Also removed throwaway server-side debug automations
(three TEST spoofs + the ac_flap_1758_1820 experiment).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 21:09:48 -04:00

41 lines
1.6 KiB
YAML

# ac_peak_setback — let the house drift during the utility peak window
#
# id / entity : ac_peak_setback -> automation.ac_peak_setback_to_82
# trigger : 14:00 local (America/New_York)
# purpose : On work days, set cool 82F to coast through the 14:00-19:00 peak.
#
# Graceful degradation (v2):
# * workday sensor unavailable/unknown -> fall back to a plain Mon-Fri check
# (a broken holiday sensor must not silently cancel the setback).
# The original used a blocking `condition` on the workday sensor, which would
# skip the run whenever the sensor was unavailable; that is the bug this fixes.
#
# v2 (2026-07-09): workday fallback added. See AUTOMATIONS.md.
id: ac_peak_setback
alias: AC - Peak setback to 82
description: >-
v2 (2026-07-09). At 2pm on work days, sets the thermostat to cool/82F to coast
through the 2-7pm peak. Falls back to Mon-Fri if the workday sensor fails.
Managed in git; see AUTOMATIONS.md.
mode: single
triggers:
- trigger: time
at: "14:00:00"
conditions: []
actions:
- variables:
is_workday: "{% set wd = states('binary_sensor.workday_sensor') %}{% if wd in ['on','off'] %}{{ wd == 'on' }}{% else %}{{ now().weekday() < 5 }}{% endif %}"
- if:
- condition: template
value_template: "{{ is_workday }}"
then:
- action: climate.set_hvac_mode
target:
entity_id: climate.t6_pro_z_wave_programmable_thermostat_with_smartstart
data:
hvac_mode: cool
- action: climate.set_temperature
target:
entity_id: climate.t6_pro_z_wave_programmable_thermostat_with_smartstart
data:
temperature: 82