Netatmo thermostat boost mode

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.

2 Likes

Hi, i am trying to follow this along but getting very confused as to why the Boost Temp is then set to current temp +1?

I probably wrongly took it as the input_number.boost_target would be set by UI?

Hi, Boost temp is supposed to be dynamically set by taking the current environment temperature (not the schedule temperature) and just incrementing it by 1. You can increment it by whatever amount you like but the idea is not to cook yourself in case things go wrong :smiley:

1 Like

Ah perfect thank you, makes sense.
Actually using a Nest Thermostat on the new integration and amazed how dumb it is. This boost for time period instead of specific temp is a great feature its missing by default.
Thanks again for explaining.

1 Like

Sorry, this is coming on well for me. However if i turn off the input_boolean.boost_active i want to stop the script.
I thought i understood the automations enough but clearly i don’t as my boolen triggers no change. Can you help point me to where i should be adding this?

hi @bighead85, setting input_boolean.boost_active to off manually will not do anything because you don’t have any automations to handle that (and will actually break the existing two automations).

input_boolean.boost_active is just used as a condition for these two automations, “Heating Boost Cancelation” and “Heating Boost Finish”.

In order to stop the heating boost you would run the “Heating Boost Finish” automation, and if you want a button for it you would add something like this in your lovelace card:

image

#add this to the main card that has the run heating boost, duration, etc
#replace entity name with your automation name for boost finish
#this one requires the multiple-entity-row plugin
      - entity: automation.heating_boost_finish
        type: 'custom:multiple-entity-row'
        tap_action:
          action: call-service
          service: automation.trigger
          target:
            entity_id: automation.heating_boost_finish
        icon: 'mdi:stop'
        name: Stop Heating Boost
        show_state: false

Or as a new, dedicated button:

image

type: button
tap_action:
  action: call-service
  service: automation.trigger
  service_data: {}
  target:
    entity_id: automation.heating_boost_finish
icon: 'mdi:stop'
name: Stop Heating Boost
show_state: false
show_icon: true

Play around with it and adjust according to your liking.

1 Like

Very Impressive Automation for Netatmo , thanks but…

i can’t find the device_id of the netatmo thermostat in your ‘heating boost finish script’
where you set preset_mode to schedule ?

is it possible to use the entity_id: climate.netatmo_sufra ? if yes, how to code it ?

Is it possible to access to the details of planning ? maybe via webhook or else

Many thanks (sorry for my poor english)

Hi @Jcarlier, yes this one is a bit tricky. I realize now that my instructions for this one are not the best.
So you start by creating the new automation, and paste this:

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
  - 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

Now switch the editor to “Visual editor” in upper right corner.
And in Targets, delete the device with the “DELETE_THIS” name, click on Pick device (the blue icon), and pick your Netatmo.
Like this:

Now you can save it and you should be good to go.