Ecobee: support Hold Type and Hold Hours for Temperature Holds

The Ecobee implementation as of HA0.86 is able to set “Temperature Holds” but every temperature change is submitted as “Hold the new temperature until the next transition the in the schedule arrives”

When using the Ecobee app or the device panel, the temperature changes are held following a configurable “Default Hold Action”, that allows the user to specify: hold until the Next Transition in the schedule (what HA is doing as of now), OR: Hold for 2 hours, or hold for 4 hours or hold indefinitely.

The Ecobee API is quite flexible and allows the Temperature Hold that is being set to include a “Hold Hours” parameter.

With a quick&dirty hack in the Ecobee helper python module I could obtain the behavior I wanted, details in the forum post here: link

Ideally, the Ecobee component could be extended to include a couple of parameters:

ecobee:
   ape_key: whateverkey
   hold_type: holdHours   # or nextTransition, or indefinitely
   hold_hours: 2   # the number of hours to hold, only used if hold_type = holdHours

That option would also work great if it could be incorporated into the thermostat card, so it would either ask the user each time or settings for the hold type and hours would be in the more advanced three dot popup card.

I’d like to see this implemented the way IFTTT lets you control the Ecobee.

I currently use an applet to increase the temp by a couple degrees when my wife or I are cold (via a Google Home command). This applet sets a temporary hold for one hour at the new temperature, however my preferences for the Ecobee is to set the temporary hold until the next scheduled change.

Here is what that looks like in IFTTT…

If we could set temporary holds in Hass with either a default setting (i.e. the preference in the Ecobee settings) or override that with a specific number of hours that would be awesome. I could remove that IFTTT applet and do more interesting things that IFTTT isn’t flexible enough to do.

I can setup a script in Hass to do this but if it fails or Hass restarts it will get messed up and the temp will stay up. I’d rather have the Ecobee track the temporary hold.

I know this is an old thread, but I believe I’ve implemented the support you’re looking for. The PR (pull request) is pending approval:

4 Likes

I don’t see in the documentation how to call out these new hold modes. Mine appears to be defaulting to hold forever and I really just want it to hold till next transition. I tried adding “hold_mode: nextTransistion” but it fails. Do you have any advice or is this just the new way that it works and I have to get used to it and automate around it?

This is awesome, thanks @JaminCollins!
For the last year or two I have been hardcoding my Temp Hold settings directly inside the python ecobee library that ships inside the container (my python skills don’t go very far, HA’s framework is rocket science to my limited skills), this is such a welcome change :slight_smile:

i still prefer my implementation of this because it allows you to change the hold mode and number of hours on the fly. i’ve had it running as a custom component since around the same time this PR was created…maybe i’ll take a whack at creating my own PR to get my changes in on top of this.

i didn’t even notice this PR was there until it was implemented recently and i had to navigate around merge conflicts when i was updating (since my custom component does pretty much the same thing)…

@TryingHA just checked PR activity around this. First note that in 2021.2.3 the ecobee Hold functionality is broken, there is already a fix and it got merged but it is due to be released in the next HA point release (2021.2.4 if it gets released, or the first release in March)

To set this up you would need to use the HA GUI. “Ecobee Hold Action”, you should be able to choose Next Transition, 2 hours or 4 hours. I’m guessing (as I didn’t update yet) this will show up under a new “options” link the ecobee integration, i.e. with the old release I see

image

There should be a new “OPTIONS” link at the bottom next to “RENAME”

@crackers8199 it would have been nice to get a PR for this, it does seem though that the changes that got merged also allow changing the hold time on the fly, if this is settable via the GUI, it should be settable via a service call as well.

it doesn’t allow for setting the number of hours on the fly though. you have to choose two or four.

I tested this on the just-released 2021.3.2 version and my assumption that there would be a GUI for the hold configuration did not work, the Ecobee integration does not display an “Options” menu and the Devices that it handles do not display that either.
The HOLD time configured in the ecobee itself seems to be honored however, which in the past never was, that’s why I was manually hacking the python library they used. So as far as I can see, if you want a preset hold time of 2 hours (or 4 hours, or “next transition”) just configure that in your ecobee device directly, and HA seems to honor whatever you set there.

2 Likes

Does anybody have an example of a service call using this new scheme? Trying to add “holdHours: 2” to the service data line does not work.

service: climate.set_fan_mode
data:
fan_mode: on
target:
entity_id: climate.thermo

is the default and the logs from that say to use the holdHours option

1 Like

Hmmm well I’m messing with this hold mode but seems there’s no option of 2 hours, 4 hours of until changed… It just always defaults to the next transition time.

Did anyone get this to work like it does in the Ecobee app itself?

A long while ago i migrated from the ecobee integration to the homekit integration to manage this thermostat, and I didnt look back. It doesnt depend on cloud, and it similarly honours your app/ device setting for hold-mode.

I have the Ecobee using Homekit in HA but it seems to only set as permanent hold rather than next transition, 2 hours or 4 hours.
How do you get it to work?