Is it possible to have a ‘Boost’ preset in generic_thermostat, whereby it will set the heating to +0.5°C above the set temperature for 1 hour? If not possible as a preset in configuration, maybe it could be done in automations?
My current configurations is below and has a target temperature, however I would prefer that the boost is +0.5°C of the current set temperature, rather than the target temperature:
If calling it manually: First Automation:
Trigger on the Boost input boolean turning on.
Second Automation:
Trigger on the boost input boolean being on for xx minutes.
If you want it to happen automatically, you could trigger on a template that looks at the set temp and the current temp. e.g. if there is a large difference even though the heat has been on for xx minutes.
Only if you want the boost to turn on after a delay of xx minutes. If you were aiming to have the boost “be on for xx minutes” you need to move the for: template to the other automation.
Also you need to turn the scene before_boost on in the second automation, not off.
Also, also there was a stray data with no service, only an entity id. I deleted it.
Also I fixed the triggers required for the second automation. One to revert the scene if the input boolean is turned off manually, one for the xx minute time out.
And finally I added the service to turn the input boolean off in the case of a time out. You could put a condition in there to only turn it off if it is on but turning it off if it is off already (i.e. manual boost cancel) does not hurt.
alias: Turn on boost
trigger:
- platform: state
entity_id: input_boolean.boost
to: 'on'
action:
- service: scene.create
data:
scene_id: before_boost
snapshot_entities:
- climate.thermostat
- service: climate.set_temperature
data_template:
entity_id: climate.thermostat
temperature: "{{ state_attr('climate.thermostat', 'temperature')|float + 0.5 }}"
alias: Turn off boost
trigger:
- platform: state # manual cancel
entity_id: input_boolean.boost
to: 'off'
- platform: state # time out
entity_id: input_boolean.boost
to: 'on'
for:
minutes: "{{ states('input_number.boost_time')|int }}"
action:
- service: scene.turn_on
data:
entity_id: scene.before_boost
- service: input_boolean.turn_off # for the time out trigger case.
entity_id: input_boolean.boost
I have it primarily working thanks to tom_l’s code above, but have a couple of questions. When I add it to the frontend as an entity, I get two buttons (or switches), but I have to press them and then press trigger to get it to action. Is there a way to just have the trigger in the frontend?
Also, how/where do I set the duration of the boost?
You have added the automations to the front end. Remove them ( make sure they are on first) and just add the boost input boolean. This is your trigger.