OK, this is more of a proof-of-concept than a working example (I haven’t yet updated to include your start_date:
and end_date:
version, so am still getting errors, and I’ve kept some of your comments for things I want to come back to), but here is my apps.yaml excerpt right now =
heaty_full:
module: hass_apps_loader
class: HeatyApp
# This switch can be used to turn off all rooms (e.g. for vacation times).
# You may use any switch that has the states "on" and "off".
#master_switch: input_boolean.heating_master
thermostat_defaults:
set_temp_retries: 10
set_temp_retry_interval: 60
opmode_heat: "heat"
opmode_off: "off"
# You might want to use an alternative service that receives
# the operation mode value.
# (optional, default: climate/set_operation_mode)
#opmode_service: climate/set_operation_mode
# (optional, default: operation_mode)
#opmode_service_attr: operation_mode
# Entity attribute that holds the current operation mode.
# This is used to detect manual temperature adjustments, provide
# correct temperature values on startup and notice that a
# thermostat picked up temperature changes.
# (optional, default: operation_mode)
#opmode_state_attr: operation_mode
# You might want to use an alternative service that receives
# the temperature value.
# (optional, default: climate/set_temperature)
temp_service: climate/set_temperature
# (optional, default: temperature)
#temp_service_attr: temperature
# Entity attribute that holds the current target temperature.
# This is used to detect manual temperature adjustments, provide
# correct temperature values on startup and notice that a
# thermostat picked up temperature changes.
# (optional, default: temperature)
#temp_state_attr: temperature
schedule_snippets:
downstairs_winter_default:
- { weekdays: 1-5, start: "05:00", end: "06:00", temp: "23 if app.get_state('sensor.temperature__outside_front_hall') <= '-2' else Ignore()" } # Boost if chilly now
- { weekdays: 1-5, start: "06:00", end: "08:30", temp: 23 }
- { weekdays: 1-5, start: "08:30", end: "16:30", temp: "23 if app.get_state('input_boolean.janeathome') == 'on' else 21" } # Boost if wife at home
- { weekdays: 1-5, start: "16:30", end: "22:00", temp: 23 }
- { weekdays: 6, start: "05:00", end: "06:00", temp: "23 if app.get_state('sensor.temperature__outside_front_hall') <= '-2' else Ignore()" } # Boost if chilly now
- { weekdays: 6, start: "06:00", end: "10:30", temp: 23 }
- { weekdays: 6, start: "08:30", end: "16:30", temp: "23 if app.get_state('input_boolean.janeathome') == 'on' else 21" } # Boost if wife at home
- { weekdays: 6, start: "16:30", end: "22:00", temp: 23 }
- { weekdays: 7, start: "05:00", end: "06:00", temp: "23 if app.get_state('sensor.temperature__outside_front_hall') <= '-2' else Ignore()" } # Boost if chilly now
- { weekdays: 7, start: "06:00", end: "22:00", temp: 23 }
- { temp: "20 if app.get_state('sensor.pws_weather_1n_metric') <= '-2' else 18" } # Boost if probably chilly tonight
downstairs_shoulder_default:
- { weekdays: 1-5, start: "06:30", end: "07:30", temp: 22 }
- { weekdays: 1-5, start: "07:30", end: "16:30", temp: "22 if app.get_state('input_boolean.janeathome') == 'on' else 20" } # Boost if wife at home
- { weekdays: 1-5, start: "16:30", end: "22:00", temp: 23 }
- { weekdays: 6, start: "06:30", end: "09:00", temp: 22 }
- { weekdays: 6, start: "09:00", end: "16:30", temp: "22 if app.get_state('input_boolean.janeathome') == 'on' else 20" } # Boost if wife at home
- { weekdays: 6, start: "16:30", end: "22:00", temp: 23 }
- { weekdays: 7, start: "06:30", end: "22:00", temp: 22 }
- { temp: 17 }
downstairs_summer_default:
- { temp: 15 }
rooms:
downstairs:
friendly_name: Downstairs
# thermostats:
# climate.downstairs_heating:
schedule:
- start_date: { month: 1, day: 1 }
end_date: ( month: 3, day: 15 }
temp: IncludeSchedule(schedule_snippets["downstairs_winter_default"])
- start_date: { month: 3, day: 16 }
end_date: ( month: 5, day: 30 }
temp: IncludeSchedule(schedule_snippets["downstairs_shoulder_default"])
- start_date: { month: 6, day: 1 }
end_date: ( month: 9, day: 15 }
temp: IncludeSchedule(schedule_snippets["downstairs_summer_default"])
- start_date: { month: 9, day: 16 }
end_date: ( month: 10, day: 30 }
temp: IncludeSchedule(schedule_snippets["downstairs_shoulder_default"])
- start_date: { month: 11, day: 1 }
end_date: ( month: 12, day: 31 }
temp: IncludeSchedule(schedule_snippets["downstairs_winter_default"])
# friendly_name: Upstairs
# thermostats:
# climate.upstairs_heating:
# schedule:
# friendly_name: Hot water
# thermostats:
# climate.hot_water:
# schedule: