[RELEASE] 3 Speed Ceiling Fan Thermostat

Thanks for the update. Cheers

Does this Smart App override all manual inputs?

@dalec I’m trying to resolve a WAF issue. She was expressing frustration that she had turned on the fan for circulation (not temperature reasons), and the thermostat turned it off because it was at defined temperature. I know this has been mentioned a few times in this thread, but we hadn’t come to a resolve for it yet. I was determined to work out a setup where I still get my thermostat functions, but she can use the fan “manually” and it work as desired. I think I have the start on the logic, but I’m not sure how one would codify it.

Here’s my suggestion:

  1. Setup a variable in the background to track whether the fan was turned on by the thermostat
  2. Adjust thermostat program to set variable to 1/yes, etc when it engages
  3. Adjust thermostat program to set variable to 0/no, etc when it disengages
  4. Set variable to 0/no, etc when fan is manually turned off also, in case thermostat is overridden with an off command (don’t want to break the logic here, trapping the program to never run again)
    ----4a. This would be a good place to insert a time delay, perhaps adjust variable to 0/No after X minutes, as someone obviously doesn’t want the fan on right then.
  5. Restrict thermostat program to run only when fan is OFF, AND variable is 0/No

I think this set of conditions will allow the thermostat AND manual control (other apps/triggers) to co-exist. If something turns on the fan manually, it would prevent the program from making any speed/on/off adjustments, as the fan would be on while variable is 0.

What do you think, am I crazy?

Also, the ability to restrict program run time by day of week and time of day would be awesome, as multiple instances with different settings could be put in place (perhaps a child app scenario?).

This is built in… sort of.

Create a new mode called something like AutoFanControl and assign that in your smartapp. That way your fan is always in manual control for your wife until you set the mode to AutoFanControl and the smartapp temp control takes over. She can control the fmode manually or automatically in another smartapp like CoRE for example.

Now CoRE if you are not familiar with it, is super flexible and able to accommodate just about anything you can dream up. So the logic scenario you are asking above can be built in CoRE pistons along with Time of day, or any kind of scheduling.

The parent-child functions are actually completed by another member @whoismoses here but I just totally forgot about implementing them because I haven’t been using the temp control over the cold months. I’ve just never done a merge of code from a fellow contributor in GitHub so I got to do some catchup reading.

Can you give me some details on how to create the 2nd mode for manual control only? Also, I just installed your app and wasn’t sure of the default behaviors. If the fan turns on automatically to low based on temperature, then I manually increase the fan to medium speed, does it stay at medium or will it reset to low in a few minutes?

If you do a search here in the forums for “add a new mode” you will see this informative FAQ by @JDRoberts

So think of this smartapp as a thermostat for automatic control only. If you don’t want automatic but want to override like in your example just disable the auto control.

But in your case you stated above yes the automatic will take back control on the next change in temperature at the sensor. If you want to increase the fan speed just lower the setpoint temp and automatic takes over at the new setpoint.

Hope that helps. I think I cover all this in the user manual that is built in to the smartapp? But if not it might be good for me to add it

Thanks for the reply. I apologize if I am asking questions that are covered in the user guide. One last question - if I manually change the fan speed, it will stay at the manually set speed until the reported temperature actually changes, correct? For example, if my sensor doesn’t report a change in temperature, the manually set speed will remain unchanged until the temperature does fluctuate.

Yes it takes some kind of change. …like the temperature increasing/decreasing or movement changing or if you are using motion

If you want to get something that this app can’t then take a look at CoRE which is totally flexible with almost anything you can dream up

Thanks so much for the help.

1 Like

@dalec hello, love your app, question for you. Is there any way to add in some code so that you can select the fan speed you want instead of total automation?

Sure but instead of using my smartapp that is intended for typical control you might consider using CoRE by @ady624 which can do very specific and customizable control functions. I use CoRE for specialized control needs and it is hard to imagine a control scenario that CoRE can’t handle. :slight_smile: How exactly are you wanting to control the fan speeds?

1 Like

I just wanted to ability to set the fan to low so it does not go to med and high while the wife and are are sleeping. This is a huge fan and on high speed literally makes the room a wind tunnel.
I am very familiar with CoRE have 30 pistons

Couldn’t you just raise the temperature threshold?

How would that help, I want the fan to come on, but not on high speed.

Right, there are 3 different setting for different temperatures. I haven’t played around with it in a while but I believe that i had 7 degrees between each increment. My fans mostly stayed on low. The bigger the threshold, the more rise in temperature it would take to goto medium and then even more to go to high.

ahh, I gotcha, let me take a look, thanks, I appreciate.

1 Like

@jasonrwise77 follow @rontalley suggestion. :slight_smile: which would work if you want to change the threshold in the device handler. But you could effectively do it as well from the smartapp.
This is from the original post

This smartapp uses any temperature input to control the High, Medium, Low speeds of a ceiling fan based on your desired room temperature setpoint turning on each speed automatically in 1 degree differential increments (adjustable). For example, if you set your desired room temperature setpoint at 72, the low speed comes on first at 73, the medium speed comes on at 74, the high speed comes on at 75. And vice versa on decreasing temperature until at 72 the ceiling fan turns off.

So for you, just increase the Fan Differential Temp to 10. If you did that then in my example above with a room setpoint temp of 62, the low speed comes on at 72 and not until the room hits 82 will medium speed turn on. which effectively is keeping it off. Just remember the setpoint isn’t actually going to be your actual desired room temp but setpoint PLUS the differential is; which in this case is 72.

FYI you might try experimenting with using the reverse function for your large fan to see if that solves the wind problem too in the bedroom?

1 Like

What you are suggesting is what I was speaking to. :grinning:


Thanks for the help, i really appreciate.

I cannot do this, the app will not let me my only choices are .5 1.0 1.5 2.0. Can this be changed to a manual value?