Ecobee Plugin Update

@rafale77 sorry to bring one more hand for help on this one, but I’m stuck and it’s driving me nuts!! haha
Basically, I have a reactor sensor for setting mode to OFF and fan to CONTINUOUSON and for the life of me I can’t get the fan mode to take. I can even see it briefly go to On, but then for some reason the ecobee is kicking it back to auto. I’ve tried numerous combinations of “resume program”, “sleep” modes etc. No matter what I do, the thermostat won’t just stay in Fan only unless i trigger it from the thermostat itself, or the web or mobile Ecobee apps.

Any ideas?!

This is strange and is unfortunately not something I will be able to test since I no longer have an ecobee. One guess is that the fan status gets reset by another command in the plugin which could be the house mode hold. Let me get back home and take a look at the code to see if there is anything I can find.

@ruster34, feel free to PM me if you continue to have trouble getting ContinuousOn to execute properly with your ecobee thermostat. I figure you and I could at least compare notes, since I have several routines that run the fan (independently of ‘climateRefHold’ value) and then return the system to ‘Auto’.

Unquestionably, the ecobee API/plug-in can present several pitfalls that mess with automation (not least of which is the time delay, or ecobee’s annoying habit of switching modes – e.g. from ‘Home’ to ‘smart1’ – just because you ran ContinuousOn, ugh!). The ‘Modes’ will even change behavior depending on whether you have a 4th “Comfort Setting” defined within the ecobee app. :exploding_head:

Fortunately, the Reactor plug-in allowed me to track down some of those vexing anomalies; even then, lagging updates from the API can throw you off.

  • Libra

thanks man, I appreciate the offer. I’ve messed with these a lot between 2 different houses (one being a vacation rental, which brings upon definite different needs/priorities). I have actually found that resume program works really well, much better than I thought I would like. Ecobee does a great job of ramping up or down based on schedule sleep vs home schedules, etc.

My condition that trigger most of this was if windows or doors were left open, to circulate the air continuously, during the day, and while we’re home, so figure conflicts were numerous.

Regarding comparing notes, how are you doing this?

Before I begin, please note that there are known “issues” arising with the ecobee plug-in due (primarily, but not entirely) to the responses the app receives from the ecobee API. I’ll be detailing how I work around some of these surprises using the awesome Reactor plug-in.

Some of these anomalies include:

  • Authentication key PIN needing renewal after arbitrary periods (usually weeks);
  • ‘Mode’ being wrongly reported as (null) during any type of manual override;
  • App throwing several error types during otherwise normal phases;
  • Mismatch between list of possible ‘Modes’ vs. “House Modes” (e.g. “Sleep” is “Night”);
  • Existence of ‘Smart1’ mode in place of (or in addition to) ‘Vacation’;
  • Representing ‘Modes’ internally as text (e.g. ‘away’) instead of integers (e.g. 2);
  • Behavior of that 4th ‘Mode’ relying on how your ecobee ‘Comfort Activities’ are defined;

But if I had to boil down ecobee plug-in’s behavior to the most noticeable vexation, it is that if Vera changes anything (Temperature, FanOn, etc.) during one of the “Comfort Activities” you’ve declared on the Thermostat (or in your ecobee.com account), then instead of ‘Home’, ‘Away’, or ‘Sleep’, the app will consider your ‘Mode’ to be (null). This can be a challenge to deal with from the standpoint of, say, Reactor – since incorrectly testing for a (null) value (represented in the Reactor plug-in as the null string “”) may return TRUE when you expect FALSE (e.g. the comparison “{list/array} [CONTAINS] {hMode}” where hMode=“” => TRUE!).

In practice, this only becomes a problem if you indeed base any Reactor routines on what ‘Mode’ your thermostat is in; for instance, having Reactor force Vera’s House Mode to match whatever your ecobee device changes to, as I do. For most users, that’s an unlikely use case.

But if you do, and you’d like to know how I work around the (null) ‘Mode’ anomaly, I begin by declaring several Expression variables in Reactor:


One or more of the variables act as safeguards and/or triggers in a Reactor condition subgroup called ‘Run A/C Fan’ – reacting to turning ON a virtual switch (this device, known to my Alexa as “House Fan”, self-resets in 30 seconds):

So saying, “Turn on house fan” (or otherwise turning on the virtual switch manually or with a Scene) provides 30 seconds of air movement, but only if there has been a match between ‘House Mode’ and thermostat’s ‘Mode’ for a number of seconds, to avoid potential conflicts of operation.
Only then does the corresponding .TRUE activity group execute:

Notice my use of the (expressionless) variable ‘acModeOrig’ to temporarily store (and later restore) the prevailing thermostat ‘Mode’, just as ‘Auto’ negates the ‘Continuous On’ request. I also include a superfluous ‘Delay’ which makes sure the virtual switch is returned to OFF, as I really don’t like the fan running this way for longer than 30 seconds at a time (this activity gets used in other Reactor routines as well, you see).

Hopefully this write-up leaves you with more questions answered than new questions!!

  • Libra