Fixing Amazon's Thermostat
Amazon's Smart Thermostat is not very smart when it comes to older central air systems.
As mentioned in the main article on the Amazon Smart Thermostat, this thermostat is designed for modern central Heating/Cooling systems that can do partial heating and cooling and can efficiently keep a home at a given temperature without cycling on and off. However, older systems are either on, or off, and the way the scheduling is designed for this thermostat does not work well with these older systems.
It's described more in the article, but as an example, if you set the Heat to 68, it will turn off as soon as it reaches 69 and turn on as soon as it drops below 68. This initially feels like something you would want, but what happens on older furnaces is the system will cycle on and off every 15-20 minutes when it's hot or cold outside, which is excessive wear-and-tear on these systems. Most thermostats have a wider window, sometimes referred to as swing, which allows the house to warm up a bit beyond the desired temperature as well as allows it to drop below it. Most thermostats are 2 degrees, some 3, some even allow you to configure it. So far Amazon has not acknowledged there is any issue with their thermostat and so far has not allowed users to configure this in any way.
The Fix
Amazon appears to have no interest in fixing this bug after being reported by numerous users, including myself multiple times, so the only fix is to create routines. If your needs are simple, the routines aren't bad, but if you work from home some days of the week or have various exceptions the starts can get messy pretty fast. Here's an example of a very simple setup that effectively keeps the temperature of the house around 68 in the Winter (heating).
Rule | Day | Time | Condition | Set Temp | Name of Routine |
---|---|---|---|---|---|
1 | All | 00:00-23:59 | If Temp > 69 | 66 | W - A - T Above 69 |
2 | All | 23:00 | (time only) | 60 | W - A - T 60 at Night |
3 | M-F | 6 | (time only) | 70 | W - WD - Set Temp 70 |
4 | M-F | 6-23 | If Temp < 67 | 70 | W - WD - T Below 67 |
5 | S,S | 9 | (time only) | 70 | W - SS - Set Temp 70 |
6 | S,S | 9-23 | If Temp < 67 | 70 | W - SS - T Below 67 |
The first routine says if the temperature exceeds 69 degrees, drop the thermostat temperature to 66. The second routine is the overnight routine which drops the temperature to 60 degrees at 23:00. The Fourth routine is to cover Monday through Friday and warm the house starting at 0600 if the temperature is below 67. The Fifth routine is the same, except starts at 0900 as we wake up later on the weekend.
The Third routine is a hack and feels like a bug; if I don't do this, the Fourth routine never executes. This makes no sense to me. I have to explicitly set the temp to 70, then after that, routines One and Four regulate the temperature in the house all day. Routine Six is the same routine hack for the weekend.
This effectively lets the house warm up until it hits 70 then cool off until it drops below 67 degrees, or a total of 3 degrees of swing.
Routines only allow integer inputs, so we can not make it 2 degrees, etc, it will always be an odd number. Remember, the thermostat by default has only 1 degree of swing. If it's set to 68, it will warm up until it hits 70, then cool off until it's below 68. Note that "Temp > 69" does mean that it reaches 70 degrees, it does not seem to evaluate any decimal places.
A Summer (Cooling) set of routines will also be necessary to complete the set. I have named them above to make them easy to identify, "W" for Winter, "A" for All Days, "WD" is Workday, and "SS" is Weekend. When it's time to switch from Heat to Cool, you will need to deactivate one set and enable the other set. You also need to set the Thermostat to Manual in the Thermostat settings itself, you don't want the Thermostat to have its own schedule which may conflict with the Routines.
How reliable are Routines? I am not sure, I will have to watch and see if this does what I expect it to do. With the hacky-feeling routines mentioned above in place, things seem to be working. Initially, a few of the Routines worked, others did not, so I did some googling and found some users saying routines can act kind of quirky initially and to get them set up the way you want them and then disable the routine and re-enable it. I did that and so far they seem to be working okay, but time will tell. I do occasionally find that a routine has not ran, such as my AC routine that when the temperature drops below 74 it raises it to 76 does not run and the AC just stays at a fixed 74 degrees for a while, then later it fixes itself. If I look in the logs in the Alexa app all of the temperature data is there so it clearly knew the temperature had dropped, etc, so it may be that there was some connectivity issue, more on that below.
Finally; does it seem like it's working? Yes. I have graphs of my home temperature and evaluating the graphs before I made this change I see that the house temperature hovers right around 68 all day, hardly any variation at all. As mentioned above this is hard on older central systems. With the Routines, I see temperature spikes as it rises to hit 70 and shuts off and gradually cools off until it drops below 67 and then turns back on, as expected with the rules I have defined.
Below are two graphs to show the difference. Keep in mind that with the schedule, the furnace was turning on 3-4 times an hour, or 50-70 cycles! With the routines, it turned on 9 times. Both days were very similar in temperature; low around 32F and high around 45F.
Caveats
First obvious one; annoying complexity. If you want to change the Min or Max, you have to edit a bunch of routines. If you have exceptions on a certain day etc, the routines may still activate and over-ride your exceptions, etc. They are by far not perfect. I highly suggest you document what you want your routines to do (I use a spreadsheet, but it's not doing any calculations etc) and play through them in your head before going through the trouble of inputting them into the Alexa app. This will also help if you need to change them later, or add recurring exceptions, etc.
Second thing to mention is that all routines run in the cloud, that is to say that the thermostat does not do anything related to routines. It is effectively a temperature sensor and a few relays, that is it. So when a routine runs, it is because the thermostat has reported to the cloud service that a temperature is X and the cloud service evaluates your routines and if one matches it executes it and changes the thermostat settings, etc. So if your thermostat has poor WiFi connectivity or your internet is down, etc, your routines will not run. I would hope that any communication with the thermostat from the cloud requires some bi-direction acknowledgement so that if communication fails it can retry but I often have routines here that will work most of the time but occasionally do not, leading me to question if the thermostat and the cloud service are reliably communicating.