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>
41 lines
1.6 KiB
YAML
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
|