Show current cooling/heating temperature differential (gives insight into automatic staging)

First up - thank you for beestat! This is the majority of the reason I picked ecobee :slight_smile:

EDIT 2022-8-26: After further testing, I suspect the API responds with the last saved manual staging differential, even when using automatic staging. If so, this feature is not as useful, except perhaps as part of just showing all available equipment configuration details.

One way to check would be enabling this setting and seeing if the API ever shows a value not in a 0.5°F increment.

beestat should show the configured heat/cool differential

beestat should show the stage1CoolingDifferentialTemp and stage1HeatingDifferentialTemp values (in degrees, so divided by 10).

These details might fit in the Thermostat Info dialog.

This is in addition to the current alerts when the differential is set to 0.5°F


beestat helpfully informs you when the cooling or heating differential is set to 0.5°F and should be raised to 1.0°F. However, this doesn’t take into account the more recent automatic staging setting which can pick a value between 0.5°F to 1.0°F.

According to an ecobee employee on Reddit, the automatic staging adjusts the differential from 0.5°F to 1.0°F, and as explained by another customer support interaction, this is impacted by the eco+ Savings Preference slider.

Now, I can manually configure staging to set the differentials to 1.0°F, but I’d like to explore what ecobee’s automatic differential algorithm is doing before I opt out of it entirely.


When I first set up my thermostats (1× Premium, 1× Enhanced), beestat warned me about the differential. I initially configured manual staging and looked around at what the automatic staging even did.

Within half a day, curiosity struck, so I re-enabled automatic staging and moved the eco+ slider to Maximum. Now, beestat no longer warns me, so the differential no longer equals 0.5°F. But to find out the value itself, I think I’d need to create a developer account.

From looking at the beestat graphs during “someone is usually home” periods, it appears that the Enhanced thermostat has picked a 0.8°F differential, running the compressor about once an hour. The Premium thermostat doesn’t have enough data yet to check this. And neither thermostat has been online for more than a day, so there’s not a lot of data for ecobee or beestat to do anything with.

(I’ve noticed the thermostat’s own temperature sensor has been varying in readings from too cold to too hot, -3°F to 0°F on the Premium and -1°F to +2°F on the Enhanced, so they might not have finished calibrating their offset to the thermostat’s internal heat.)

This is a nice idea. I could toss it in the Thermostat Info modal but it feels more prudent to put it somewhere new that can just show all (or certain relevant) settings.

If you’d like to see what these values are, open up the developer console (press F12 in beestat) and paste this code:

var thermostat = beestat.cache.thermostat[beestat.setting('thermostat_id')];
var ecobee_thermostat = beestat.cache.ecobee_thermostat[thermostat.ecobee_thermostat_id];
console.log('stage1CoolingDifferentialTemp = ' + beestat.temperature({'temperature': ecobee_thermostat.settings.stage1CoolingDifferentialTemp/10, 'units': true}));
console.log('stage1HeatingDifferentialTemp = ' + beestat.temperature({'temperature': ecobee_thermostat.settings.stage1HeatingDifferentialTemp/10, 'units': true}));

An astute observer may realize that you can look at other settings this way. You can access all of the settings with this:


I have no issues adding a place to show these settings in beestat. To satisfy your curiosity you can change your thermostat to auto and see if those values ever change. I’m guessing the automatically chosen value is not exposed, though.

Timeline for adding this to beestat is likely at least a few months out. Been working on the new 3D visualization feature so other smaller features are taking a backseat. Let me know what you find out!

1 Like

Thank you for the detailed reply!

Automatic staging

Temperature differential in API

Unfortunately, as you suspect, the automatically chosen values are not exposed. Instead, it’s returning the last selected manual staging values:

stage1CoolingDifferentialTemp = 1.0°F
stage1HeatingDifferentialTemp = 1.0°F

Temperature differential from observation

By looking at the beestat charts, automatic staging with eco+ cranked up to Maximum (as that is supposed to impact automatic staging) appears to try to optimize the temperature differential to obtain somewhere between 1–3 cycles per hour, at or below Honeywell’s recommended maximum CPH of 3 for their WiFi thermostat.

Assuming none of the other features intervene (min. compressor on/off time, max. temp, etc), this calculation could be automated by comparing the set point to when the thermostat engages cooling/heating. That’s a big assumption to make, though.

One ecobee thermostat has chosen a 0.5°F differential for a fairly large downstairs area (includes a finished basement), but the other thermostat jumped up to a 0.8°F differential then later shifted to a full 1.0°F swing for a small upstairs area (two bedrooms, one bathroom).

I wouldn’t be surprised if the downstairs thermostat raises the temperature differential above 0.5°F after more time operating. I initially repeatedly adjusted the temperature offset and wall insulation while trying to improve accuracy, which appeared to greatly confuse it as for part of one night it cycled on/off at a 0.1°F differential, which shouldn’t even be possible. Fortunately, the next day it sorted itself out, plus I emailed ecobee to have them reset the temperature learning database.

(If you want to look at the data, I’m happy to share.)

While manual staging will always be more predictable, it might be worthwhile noting in the beestat documentation that automatic staging can pick values in between 0.5°F and 1.0°F (as per the customer support response linked in my first post). This might be more comfortable in larger/better insulated spaces, or provide extra flexibility on the go (one can change the eco+ savings preference from the app, but changing the thermostat’s installation settings for manual staging requires being physically present).

NOTE: I am very new to ecobee and beestat, so I may be misreading details. I’ll recheck on what the thermostats are doing in a few weeks or so.

Viewing thermostat installation details

console.table is a handy developer console trick, thanks!

I agree with moving this to a new place, not just adding it all to the Thermostat Info modal. It might be a useful reference in case a thermostat is replaced (warranty/etc), upgraded, or factory reset.

Timeline estimate noted, no hurry from me!

And the 3D visualization tool looks sweet… I’m going to have to either find this house’s floor layout or do a lot of measuring (perhaps saving up for that laser measuring tool).

I have also experimented with automatic staging and have observed frequent 0.1 deadbands in cooling mode. However when it starts getting warm outside, it seems to switch to 0.5 deadband. My guess is that the thermostat knows how long it will take for your house to heat up. If the time that it takes is longer than a certain time, it knows that it can run a 0.1 deadband and the cooling will not start and stop ever 5 minutes. In other words, if the thermostat knows that it will take 1 hour for the temperature to increase by 1 degree, it can safely use 0.1 deadband because it knows when cooling stops, the temperature will overshoot by a certain amount. If it knows the temperature will be 0.2 below the setpoint when cooling stops and the temperature is increasing at 1 degree per hour, it knows cooling will be off around 18 minutes. Therefore it can use a differential of 0.1 degree and have about 3 cycles per hour which is somewhat the industry standard in cycle rate. That of course is just a guess. I also know that if the temperature stops rising in cooling mode or stops dropping in heating mode, automatic staging appears to change to a 1 degree differential. Maybe this is to keep heating and cooling off as long as possible to save energy? @digitalcircuit, have you made any more discoveries on this?

@Audi2013 Thank you for sharing your experience! That makes sense - it seems like the thermostat is aiming for around 3 CPH - perhaps closer to 2 CPH for me, but that might be due to setting my eco+ slider to Maximum.

I’ll keep exploring how the automatic staging works. I’ve been interrupted somewhat by contacting support about ceiling fans in adjacent rooms significantly impacting the measured temperature (2-3°F drop as compared to smart sensor, enough to make it feel uncomfortably warm, which is what prompted me to investigate it). I feel I’ve been pretty thorough in insulating the thermostat mounting on the wall, and I’m doing some tests for support.

Once that’s resolved (and I’m no longer throwing off the thermostat’s temperature algorithms), I’ll pay more attention to how automatic staging works.

@digitalcircuit I just saw this. For some reason your response ended up in my promotions folder which I never check. I’m not sure if you got an answer but I can answer your question about the ceiling fans as I have noticed that too. The thermostat makes some internal heat and ecobee has a patent out about compensating for that internal heat in order to read the correct temperature. I forgot how they do it. If you are blowing air past the thermostat, it removes some of that internal heat and the internal compensation does not account for airflow. As a result, it makes the thermostat read the temperature lower than it actually is. I have notice this occur with both my ecobee thermostats as both of them are located in rooms with ceiling fans.

Let me know if you make any more discoveries. The only recent discovery I have made with automatic staging is it also seems to know the slope at which the cooling or heating will change the temperature in degrees per hour. Similar to Beestat however my guess is that it is only maybe a short term average. It seemed to adjust over a few days when I relocated one of my thermostats. Anyway if the slope of cooling is greater than a certain rate, it assumes that it will overshoot the setpoint and therefore it changes the differential back to 0.5. Eventually if it is in the 50’s outside, it will change my differential to 1 degree because it must think the AC will cool the upstairs zone down so fast it will overshoot the setpoint and thus it increases the differential. So if it’s cold outside, differential in cooling will be 1 degree. Somewhat cold is 0.5 degrees. 70’s to 80’s outside seems to operate at 0.1 differential because it seems to know the zone wont warm up that fast. When the temperature is in the mid 80’s outside, the upstairs zone seems to change to 0.5 degrees because it knows the zone will heat up too fast and cause short cycling. That of course is just the one thermostat. The downstairs behaves somewhat the same but those thresholds are shifted because the downstairs cools faster and warms up slower . All that is without the “adjust temperature for humidty” turned on. If I turn that on, it becomes 5 minutes on and 7 minutes off and 5 minutes on…I can’t really use automatic staging with the “adjust temperature for humidity” feature.


1 Like

Are you still using automatic staging? I have Ecobee 4’s and have played around with this option. It seems to work well in heat but not in cool. In cool, I cant figure out what it is doing. It frequently seems to use a 0.1 differential which is not 0.5-1.0 as advertised. I can see the tight deadband in beestat. It runs a bunch of 5 minute cooling cycling (min run timer). I submitted a ticket but have gotten nowhere and no one appears to be looking into it. They claim it’s only my thermostats. You said that it is aiming for 2 cph? Is that averaged over 24 hrs? We tend to run a few degrees cooler at night for a cooling setpoint so between 6 AM and 12 PM, cooling may not run at all. If the thermostat is really counting cycle rate, maybe my 24hr cph is low so it runs a 0.1 differential? Have you observed 0.1 differentials?


I am still using automatic staging, and I have run into the occasional 0.1° differential 5 minute cooling cycles that I also do not understand why they happen.

At first, I noticed several on the Downstairs thermostat after changing some settings, so I asked ecobee support to reset the HVAC equipment data. That hasn’t happened again since.

Recently, I changed the Upstairs thermostat to cool down to 76°F instead of 77°F at night, and for the past three days I’ve had some 0.1° cooling cycles - twice the first two nights, and once tonight. I don’t think it did this until my recent schedule change. I’ll give this a week or so (for the learning algorithm to adapt), and if it keeps happening, I’ll try switching back to the old 77°F schedule.

That’s interesting and glad to know it’s not just my stats doing that. Feel free to create a support ticket on that issue because ecobee claims my thermostats are the only ones doing this behavior. They act like they have never seen this before. It’s probably just that no one has noticed and I wouldn’t have known either if it wasn’t for beestat! Are you using “adjust temperature for humidity”? When that is on, all I get is 0.1 differentials. When that is off, I’d say half of my cooling cycles are 0.1 differentials. I do not have this issue in heating mode.


I was thinking about this and you actually may be on to something. I created a spreadsheet to analyze my ecobee data and it will calculate average CPH. I’m only averaging around 1 cycle an hour in a 24 hour period due to my unit being oversized and it being fairly mild here. I wonder if it’s taking the rolling 24hr average CPH rate and if it’s less than X it decreases the differential and greater than X, it increases it. This could explain why sometimes mine randomly change to 0.5 diff and other times 0.1 diff. I never seem to see anything above 0.5. The weird thing is, this behavior doesn’t happen in heat. Can you correlate your 0.1’s to a decrease in average cycle rate before the 0.1’s occur?

I have kept Adjust temperature for humidity turned off to have accurate temperature in beestat graphs, and because the ceiling fan/moving air temperature inaccuracy problem results in the relative humidity readings swinging wildly (even when only using Smart Sensors, the thermostat’s temperature sensor is used for calculating the relative humidity from the internal humidity sensor).

Unfortunately, in the past few months when keeping the night time temperature at 77°F, I haven’t had the Upstairs AC turn on at all during the Sleep setting, beyond the initial cooling down from 81°F to 77°F. Otherwise, it has only run during the Away setting, with a 1.0°F differential + 1.0°F for the Away mode.

It’s possible I never ran into this until changing my Sleep temperature to 76°F because it hasn’t been warm enough at night to hit 77°F.

It seems to be the same for me - I’m still only getting 1-2 cycles per hour on average, even if some of those cycles are very close together.

(I have not yet opened a support ticket with ecobee, but I will keep paying attention to what happens.)