Ceiling Fan Control with Natural Language

I’ve installed a GE Z-wave 3-speed fan controller (12722) in the living room to control my ceiling fan. I am currently using the custom device type (https://graph.api.smartthings.com/ide/device/editor/5d58f6b8-62ca-4437-b9ed-e9e1d2991efb#ide-editor-panel) by @ChadCK.

This device type works wonderfully with my fan.

The problem is, I use Alexa to control my HA. I really enjoy the voice control and use it almost exclusively in my system, unless I’m working on something.

With the DT I have to say, “Alexa, set ceiling fan to 33% or 66% or 100%” instead of say “Alexa, set ceiling fan to Low, Medium, or High”. The natural language is what I want to use.

So, I set up some virtual switches (ceiling fan low, ceiling fan medium, ceiling fan high). I gave control to Alexa over these and I use Trigger Happy by @bravenel to complete integration. But, even now I have to say, “Alexa, turn on ceiling fan low” etc…

While this this is more of a natural language, it still isn’t what I’m wanting.

I use the custom DT and apps by @DarcRanger to control my Z-wave thermostats. I can say “Alexa, set the heater to 75 degrees” and she does it.

I have searched and searched and can not find any thing that will give me this type of natural language control over my fans.

Has anyone written anything like this? Or is anyone interested in writing something like this?

I’m trying to learn groovy and I’m hoping that I can eventually figure it out myself… but I’m no where near writing a working device type just yet.

I’m open to any and all feedback and ideas on how I can get this to work the way I am wanting.


Why don’t you just take the virtual switch you tied to the set level for low, etc and use the Ifttt Echo trigger method?

That way you can make the phrase pretty much anything you want to. “Trigger low fan setting” or “Trigger ceiling fan to low” or whatever.

You still have to say trigger, but other than that you can use any wording you want.

I do. I set up 3 virtual switches. Ceiling fan low, medium, and high. I say, “Alexa, turn on ceiling fan low” to change the speeds.

I want it like it is with my thermostat.

I want to say, “Alexa, set the ceiling fan to low”

I know it’s trivial… but since I’m using voice control almost exclusively I want the voice control to be very natural. This way anyone that comes over can use it very quickly and easily with very little coaching.

With the Echo devices and the Fire TV Sticks with voice remotes I’ll have voice control in every room of the house.

I’ve also got 4 minimotes on the way (these are mostly for when the baby is asleep in our arms and we don’t want to talk loudly to Alexa.

Sure, but my point is just that if you want the word “set” in there you can do that if you use the trigger format. But you do have to include the word “trigger.”

“Alexa, Trigger set the ceiling fan to low” will work in that format. Just another option, I know it’s not ideal.

Yeah, I’ve thought of that too… but like you said, still not ideal.

I’m know I’m being a picky ass, but I’m also looking at when my parents and in-laws are here. The more natural the language, the better it will be.

Would “Alexa, set the ceiling fan to low on.”

Name the switch ceiling fan to low or create a group in Echo with that name. With that single switch in it that is programmed for the low setting. That is if Alexa will deal with that phasing.

1 Like

@DarcRanger I forgot about the group’s in the Alexa app. I’ll try that.