Hello there, I have a Netatmo smart thermostat that controls my heating system and one thing that I found lacking is a Boost mode. Most of the times I just want the heating running for X minutes rather that setting the thermostat to a higher value and making the ambient too hot.
Thus, I hope this will help somebody.
I’ll try to do a newbie step by step guide, as I would have hoped to find.
Last but not least, this is almost entirely based on the scripts from Nest Thermostat - Boost Mode Script & Automation by @apmillen. Thank you.
The end result will look like this:
I would like to thank my family for their support and … oh wait, this is not a book.
.
.
Heating Boost script
This is the main script that activates the boost.
Go to Configuration → Entities → Search for “Netatmo Cloud” and get its entity ID.
Go to Configuration → Scripts → Add script → Select “Edit in YAML” on the top right dialog.
Paste (and update) the following:
# !! Replace "netatmo.sufra" with your netatmo entity ID you got earlier.
alias: Heating Boost
sequence:
# Save the current schedule temperature as previous target temperature.
# Not used in my version but kept just in case you decide to.
- service: input_number.set_value
data_template:
entity_id: input_number.previous_target
value: '{{ states.climate.netatmo_sufra.attributes.temperature }}' # <--------
# Save the new boost temp based on current Room temp + 1.
- service: input_number.set_value
data_template:
entity_id: input_number.boost_target
value: >-
{{ states.climate.netatmo_sufra.attributes.current_temperature | float +
1 }}
# <-------------^^^
# This is just for example purposes - I have a "normally on" motor valve for the hot water cylinder
# that will close the circuit via a Shelly relay so that only radiators heat up.
# - type: turn_on
# device_id: 00348ac0a3d91cf5118effef74bc5a3e
# entity_id: switch.shelly1_valve_hw
# domain: switch
# Set the thermostat to match boost target.
- service: climate.set_temperature
data_template:
hvac_mode: heat
temperature: '{{ states(''input_number.boost_target'') }}'
entity_id: climate.netatmo_sufra #<-------
# Turn on boost active boolean.
- service: input_boolean.turn_on
data:
entity_id: input_boolean.boost_active
# Wait for whatever amount of minutes you selected in the slider.
- delay:
minutes: '{{ states(''input_number.boost_duration'') | int }}'
mode: single
.
.
Heating Boost Finish script
This turns off the boost once the duration expires.
Go to Configuration → Entities → Search for “Heating Boost” and get its entity ID.
Go to Configuration → Automations → Add automation ->Select “Edit in YAML” on the top right dialog.
Paste (and update) the following:
alias: Heating Boost Finish
# Stop the Heating Boost script when its time is up.
trigger:
- platform: state
# ! Replace this with the entity ID you got above for the Heating Boost script
entity_id: script.1625783840608 # <--------------------
from: 'on'
to: 'off'
condition:
- condition: state
entity_id: input_boolean.boost_active
state: 'on'
# Set the Netatmo thermostat back to Schedule mode.
# The device_id needs to be replaced, see below how to
action:
- service: climate.set_preset_mode
data:
preset_mode: Schedule
target:
device_id: DELETE_THIS # <---------------- see below how to replace
- delay: '00:00:02'
# The hot water example I was talking about earlier
# - type: turn_off
# device_id: 00348ac0a3d91cf5118effef74bc5a3e
# entity_id: switch.shelly1_valve_hw
# domain: switch
# Turn off the Boost active status.
- service: input_boolean.turn_off
data:
entity_id: input_boolean.boost_active
mode: single
In the above code you need to replace device_id with your own.
After you paste it, switch to the “Visual editor” in upper right corner. Under the Actions section, in Targets, delete the device with the “DELETE_THIS” name, click on “Pick device” (the blue icon), and pick your Netatmo. Now you can save the automation.
.
.
Heating Boost Cancelation script
This will cancel the script if the thermostat changes after the Boost was turned on (by canceling the new temperature directly from the Netatmo app for example).
Go to Configuration → Automations → Add automation → Select “Edit in YAML” on the top right dialog.
Paste (and update) the following:
alias: Heating Boost Cancelation
# Activates if Thermostat preset changes from Manual to Schedule
trigger:
- platform: state
entity_id: climate.netatmo_sufra #<--------
attribute: preset_mode
from: manual
to: Schedule
# only if the Heating Boost script was running
condition:
- condition: state
entity_id: input_boolean.boost_active
state: 'on'
# Turns off the Heating Boost script.
# ! Replace this with the entity ID you got above for the Heating Boost script
action:
- service: script.turn_off
data:
entity_id: script.1625783840608 #<------------
- delay: '00:00:02'
# Resets the boost_active status
- service: input_boolean.turn_off
data:
entity_id: input_boolean.boost_active
mode: single
.
.
Lovelace button
Go to your Dashboard → Select “Edit Dashboard” on the top right dialog → Select “Add Card” → Select “Button” → Click “Show code editor”.
NOTE: I use the following custom Lovelace addon: GitHub - benct/lovelace-multiple-entity-row: Show multiple entity states and attributes on entity rows in Home Assistant's Lovelace UI, so some options below will not do anything if you don’t have this (i.e. the confirmation part).
Paste (and update) the following:
type: entities
show_header_toggle: false
state_color: true
title: Heating Boost
entities:
# Boost duration slider
- entity: input_number.boost_duration
# Ask for confirmation before running the script.
# ! Replace this with the entity ID you got above for the Heating Boost script
- entity: script.1625783840608 #<----------
tap_action:
action: toggle
confirmation:
text: Confirmation required
action_name: .
name: Run Heating Boost
# Show the old temp target if you want. I don't use it anymore.
- entity: input_number.previous_target
type: 'custom:multiple-entity-row'
# Show the new temp target
- entity: input_number.boost_target
type: 'custom:multiple-entity-row'
# Show the boost status
- entity: input_boolean.boost_active
type: 'custom:multiple-entity-row'
state_color: true
show_state: false
.
.
One last thing left.
SSH to your Home Assistant instance and open up configuration.yaml.
Add the following:
input_boolean:
boost_active:
name: Boost Active
icon: mdi:fire
# These register the temp values and duration.
input_number:
boost_target:
name: Boost Target Temperature
min: 16.0
max: 25.0
step: 0.5
unit_of_measurement: '°C'
mode: box
previous_target:
name: Previous Target Temperature
min: 16.0
max: 25.0
step: 0.5
unit_of_measurement: '°C'
mode: box
boost_duration:
name: Boost Duration
min: 5
max: 30
step: 5
unit_of_measurement: 'mins'
That should be it (in case I didn’t forget anything).
Have fun.