Precise Thermostat Control

thermostat
smartapp_hvac

(automaton82) #1

This has probably already been done, but I was not happy with the sliders in the default thermostat app to set the temperature (I use Celsius and I want half-degree control and not to have to guess). Additionally, I don’t like to tap multiple times to toggle through furnace modes since each change can cause the furnace to turn on / off rapidly.

As such, I wrote a simple SmartApp which just allows precise input to set the temperatures, mode, and fan mode of the thermostat (one-time). It defaults to the current modes / temperatures when you install it. It will also not call any change if you didn’t make a chance (won’t re-enforce cool() if it’s already set to cool).

You can find it here if you’re interested:


(Jimmy) #2

Wouldn’t this be better as a device handler?


(automaton82) #3

Thought about that, but then I’d have 2 thermostat devices and that really bothered me, so I went this route.


(Paul James) #4

With ecobee3 in auto mode it has a 5 degree range to keep the temp. That is much larger then I would like. by setting this to cooling 72 and heating to 70 that would narrow it to 2 degrees. Do you think that would cause problems.

I am assuming this will override what is currently set in the thermostat?


(Barry) #5

Ideally, all thermostat devices should maintain higher precision than whole numbers, and optionally display that precision (as does my Free Ecobee DTH setup).

FYI - you can change the heat/cool gap on Ecobee thermostats in the advanced settings to less than 5 degrees if you like. You can also set the “overshoot” temp at which cooling starts (for example) to as low as .5 degrees over the set value, inverse for heat - these are also in the Advanced preferences.

My Ecobee DTH ( link ) allows for setting Fahrenheit to .5 degrees and Celsius to .1 increments. It also allow display of temperatures to 1 or 2 decimal places, for more precise viewing (the thermostats themselves only maintain 1 decimal point precision in Fahrenheit, and all Celsius temps are calculated from this, so 2 decimal point precision really only benefits Celsius displays). While there’s not a huge difference between 72.0 and 72.5, it is kinda cool to know that the thermostat will start “Cooling at 72.5” and then when it does make the call for Cooling, it displays “Cooling to 72.0”.


(automaton82) #6

This is a one-time set. So if you change the thermostat after changing it thru this SmartApp then it will take precedent. So it will definitely work, no risk.

But if Ecobee has a specific DH maybe that’s better.


(Jimmy) #7

not sure what you mean by this. you would just change the device type for your existing thermostat in the IDE. Unless i’m missing something…


(automaton82) #8

Nope I didn’t know you could do that haha. I thought it was stuck to the default one (in my case, “Z-Wave Thermostat”). TIL but the SmartApp is working for me so I don’t think I’ll re-write it to actually be a device with tiles and text input anytime soon. But that is a better option if you can just replace it, but that would require a lot of work (you’d have to write an entire thermostat handler).

This SmartApp just simply calls the available functions, and leaves the rest to the already written (and tested, I hope) thermostat device handlers.