Recently, I have been more frequently back in the office in my company, but not on a regular schedule.
I am now wondering how I could “pause” the automated temperature regulation, e.g. for my home office.
I use HomematicIP devices, which ran mostly independent of HomeAssistant. They are mostly autarkic and set up. The only issue is that they assume my presence, which is now rendering their schedules obsolete. (The HomaticIP integration is configured, I am using it for read access only right now)
HomeAssistant is my frontend for the rest of the automation.
Now I am imagining something like this:
Time input field (either for a timer or for a fixed time) plus button on the dashboard.
when triggered, HA would now set the room from automatic to manual mode with a reduced temperature
when timer expired, HA would set the room back to the automatic schedule.
Is this approach reasonable or are their smarter ways to automate this?
This is very much dependant on what automation you are using to controll your heating.
Personally, I dont use the thermostat’s schedule at all und controll everything from appdaemon/schedy inside HA.
In particular, I controll with these entitys:
A heating-mode input_select to choose from: No Heating, Summer, Normal, Homeoffice
A schedulinung mode input to bail out of the complete scheduler
The Presence sensor
Window contacts
A humidity sensor that turns on when the shower is used
This is my current configuration; sorry for the english/german mixture:
schedy_heating:
module: hass_apps_loader
class: SchedyApp
actor_type: thermostat
expression_environment: |
def heating_mode():
return state("input_select.heating_mode")
def is_occupied():
return is_on("binary_sensor.wohnung_bewohnt")
def is_workday():
return is_on("binary_sensor.workday_sensor")
watched_entities:
- input_select.heating_mode
- input_boolean.heating_schedy
- binary_sensor.wohnung_bewohnt
- binary_sensor.workday_sensor
schedule_prepend:
- name: "Don't schedule when controll is turned off"
x: "Abort() if is_off('input_boolean.heating_schedy') else Next()"
- name: "No heating in off-mode"
x: "Mark(OFF, Mark.OVERLAY) if heating_mode() == 'Heizung aus' else Next()"
rooms:
Wohnzimmer:
watched_entities:
- binary_sensor.zsens_wz_balkontur_ias_zone_delayed
- input_boolean.heating_wz_eod
rescheduling_delay: 60
actors:
climate.shellytrv_wohnzimmer:
schedule:
- name: "No heating in the living room in summer-mode"
x: "OFF if heating_mode() == 'Sommer' else Next()"
- name: "no heating when window open"
x: "Mark(OFF, Mark.OVERLAY) if is_on('binary_sensor.zsens_wz_balkontur_ias_zone_delayed') else Next()"
- name: "Lower temp when noone is home"
x: "Mark(16, Mark.OVERLAY) if not is_occupied() else Next()"
- name: "Scheduled heating in normal mode"
v: 20
rules:
- x: "Next() if heating_mode() == 'Normal' else Break()"
- { start: "09:00", end: "23:00:00", weekdays: 1-5 }
- { start: "09:30", end: "23:30:00", weekdays: 6-7 }
- name: "Scheduled heating in homeoffice mode"
v: 20
rules:
- x: "Next() if heating_mode() == 'Homeoffice' else Break()"
- { start: "17:00", end: "22:30:00", weekdays: 1-5 }
- { start: "09:30", end: "23:30:00", weekdays: 6-7 }
- name: "Fallback temp for all other situation"
v: 16
Schlafzimmer:
watched_entities:
- binary_sensor.zsens_sz_fenster_ias_zone_delayed
rescheduling_delay: 60
actors:
climate.shellytrv_schlafzimmer:
schedule:
- name: "No heating in summer-mode"
x: "OFF if heating_mode() == 'Sommer' else Next()"
- name: "No heating when window is open"
x: "Mark(OFF, Mark.OVERLAY) if is_on('binary_sensor.zsens_sz_fenster_ias_zone_delayed') else Next()"
- name: "Lower temerature when noone is home"
x: "Mark(15, Mark.OVERLAY) if not is_occupied() else Next()"
- name: "Schedule for homeoffice mode"
v: 19
rules:
- x: "Next() if heating_mode() == 'Homeoffice' and is_workday() else Break()"
- { start: "09:00", end: "17:00" }
- name: "Fallback temp for all other situation"
v: 15
Bad:
watched_entities:
- input_boolean.heating_towelboost
- binary_sensor.zsens_sz_fenster_ias_zone_delayed2
rescheduling_delay: 30
actors:
climate.shellytrv_bad:
schedule:
- name: "A heating-boost when using the shower"
x: "Mark(24, Mark.OVERLAY) if is_on('input_boolean.heating_towelboost') else Next()"
- name: "No heating when the window of an adjecant room is open for a long time"
x: "Mark(OFF, Mark.OVERLAY) if is_on('binary_sensor.zsens_sz_fenster_ias_zone_delayed2') else Next()"
- name: "Lower temerature when noone is home"
x: "Mark(16, Mark.OVERLAY) if not is_occupied() else Next()"
- { v: 20, start: "07:00", end: "09:00", weekdays: 1-5 }
- { v: 20, start: "09:00", end: "11:00", weekdays: 6-7 }
- v: 16