[Deprecated] Hampton Bay Zigbee Fan Controller Driver (with Component Devices)

Ok..guess I'll have to review the code tomorrow and see if there is anything I'm missing on my end. If you have time tonight, open a separate window with the logs and toggle the various devices. Let me know if you see any errors. Also rebooting the hub and power cycling the fan (at the physical switch) can't hurt at this point.

I need to sign off for tonight but I'll look into it more tomorrow.

I've had logs open the whole time, no errors and logs show the devices doing what I want. I've also power cycled the hub, not the fan yet. I'll do that before heading to sleep now.

Just power cycled the fan, no change.

Just wanted to add, for those that don't know. Hampton Bay now has 8 different fans now that come with this controller. Ranging from $120 to the original $200 Gardinier one. They now also seem to be maintaining constant stock of just the controller.


I ordered 3 of the fans that Home Depot now offers as "WINK capable" (from the link I shared before). They come shipped in 2 separate boxes per fan. You get the "regular" fan and then the Hampton Bay Remote kit. lol

1 Like

Just an FYI, the built in driver has some changes to this device, all with backwards compatibility. You can now send any of these values to Set Speed.

The word or number will set the corresponding speed: (not case-sensitive)
0 = off
1 = low
2 = medium-low
3 = medium or med
4 = high
5 = on
6 = auto

If you use a number between 7-100 it will set the speed to the closest to 1/4 percent.

Ranges are:
7 - 37 = 25% or low
38 - 62 = 50% of medium-low
63 - 87 = 75% or medium
88 - 100 = 100% or high

If you enable component devices via the toggle, it will create a Light device and a Fan device. (You can rename them in each of the devices' settings page). The Light device will act just as any light device with a dimmer. The Fan device will support Set Speed, and Set Level. Anything sending a value to setLevel will be translated to Set Speed for you. So you can say things like "Alexa set the [device name] to high" (and she will set the speed to 100%) or you can use a number as well.

In component mode the parent controller device will work just as before except on and off will turn both component devices on and off.


Awesome news!!
One less driver I have to manage and I love the flexibility.

Would it be possible to add the cycle command (or something similar)?
I ask on behalf of @ogiewon since this was a feature request that I recently added to my custom driver and ABC Button Controller app.:wink:

1 Like

Since it uses setLevel for the Fan, you could just increase or decrease the value by 25. So the button press would be up or down in either direction instead of a cycle.

1 Like

Does the built-in driver support the comfort breeze mode of the Hampton Bay controller?

I assumed thats what "auto" means.

Makes sense...I'll have to adjust my BC app to work this way. Cycle Up/Cycle Down.

1 Like

@stephack is correct. That is what "auto" is.

I guess to emulate the remote cycle (wrap around) you'd have check if a decrease was pressed and the current value is already 0, then set it to 100. And if an increase was pressed and the current value is already 100, set it to 0.

Yep, that's pretty much how it setup now with fanSpeeds...I just had the logic included in my driver so it could be used by any app with a simple cycle() command. I'll need to add the logic to the BC app now.

Maybe this is something @mike.maxwell would consider adding to the fanControl capability for simpler app tie-ins.

Not a big deal in any case and I like the new features. Enough to remove the need for my custom driver.

Please don't make any extraordinary efforts on my behalf. Having Alexa to control speed is really adequate for my needs. I was messing around with a Pico remote, had an extra button, and thought it would be nice to be able to cycle through the fan speeds. It works well, however we rarely use it in practice.

Great to have this fan controller so well supported natively!


The Fan Capability is the same for all devices. I believe if you query the possible capability values, is will return an enum of [on, off, low, medium-low, medium, medium-high, high, auto], but you can pass whatever value you want into the method. It's up to how the setSpeed() method is implemented to convert these values to actionable commands based on the device.

1 Like

Alexa as well as most other methods of control have hard set "increase" and "decrease" values of +-25

So saying "Alexa increase the [device] level/brightness/percentage" will add 25 to the current value, and obviously stop at 100. The opposite with decrease, ending with turning the device off... (I believe) :wink:

1 Like

Then a very simple way to implement 'fan speed cycling' would be to add to that enum list a new value called 'cycle' that setLevel() just handles. :wink:

Cycle up or down? :sunglasses:

I see it acting just like the pull-chain on the fan...

off -> low -> medium-low -> medium -> medium-high -> high -> off

again, not a very important feature to me. But it might be useful to add...