Zigbee 3.0 button controller $8.88 USD at home Depot, includes cct bulb

My CC2531 arrived today, and I flashed it and ran https://www.zigbee2mqtt.io/ - and while the ZBT-CCTSwitch-D0001 is unsupported out of the box, that looks to be merely a formality. The messages come across fine and zigbee2mqtt knows what they mean.

The top three buttons (power, brightness, color temp) all generate very usable messages and a single message per button press.

power button twice in a row:

zigbee2mqtt:debug 2019-12-17 00:46:37: Received Zigbee message from '0xccccccfffea9cdd3', type 'commandOn', cluster 'genOnOff', data '{}' from endpoint 1 with groupID 16387
zigbee2mqtt:debug 2019-12-17 00:46:39: Received Zigbee message from '0xccccccfffea9cdd3', type 'commandOff', cluster 'genOnOff', data '{}' from endpoint 1 with groupID 16387

brightness (one press):

zigbee-herdsman:controller:log Skipping command 'moveToLevel' because it is missing from the lookup +1ms

color temp (two presses):

zigbee2mqtt:debug 2019-12-17 00:51:16: Received Zigbee message from '0xccccccfffea9cdd3', type 'commandMoveToColorTemp', cluster 'lightingColorCtrl', data '{"colortemp":181,"transtime":3}' from endpoint 1 with groupID 16387
zigbee2mqtt:debug 2019-12-17 00:51:36: Received Zigbee message from '0xccccccfffea9cdd3', type 'commandMoveToColorTemp', cluster 'lightingColorCtrl', data '{"colortemp":222,"transtime":3}' from endpoint 1 with groupID 16387

The challenging one is the bottom button "revert to scene" - this one generates two messages per button press:

change scene press 1:

 debug 2019-12-17 00:53:31: Received Zigbee message from '0xccccccfffea9cdd3', type 'commandMoveToLevelWithOnOff', cluster 'genLevelCtrl', data '{"level":254,"transtime":0}' from endpoint 1 with groupID 16387
 debug 2019-12-17 00:53:31: Received Zigbee message from '0xccccccfffea9cdd3', type 'commandMoveToColorTemp', cluster 'lightingColorCtrl', data '{"colortemp":153,"transtime":3}' from endpoint 1 with groupID 16387

chang scene pres 2:

 debug 2019-12-17 00:53:32: Received Zigbee message from '0xccccccfffea9cdd3', type 'commandMoveToLevelWithOnOff', cluster 'genLevelCtrl', data '{"level":254,"transtime":0}' from endpoint 1 with groupID 16387
 debug 2019-12-17 00:53:32: Received Zigbee message from '0xccccccfffea9cdd3', type 'commandMoveToColorTemp', cluster 'lightingColorCtrl', data '{"colortemp":370,"transtime":3}' from endpoint 1 with groupID 16387

change scene press 3:

 debug 2019-12-17 00:53:33: Received Zigbee message from '0xccccccfffea9cdd3', type 'commandMoveToLevelWithOnOff', cluster 'genLevelCtrl', data '{"level":254,"transtime":0}' from endpoint 1 with groupID 16387
 debug 2019-12-17 00:53:33: Received Zigbee message from '0xccccccfffea9cdd3', type 'commandMoveToColorTemp', cluster 'lightingColorCtrl', data '{"colortemp":222,"transtime":3}' from endpoint 1 with groupID 16387

So the change scene button just generates two commands - brightness and color.

For the top 3 buttons, we could just listen for the single button and rewrite it - either in zigbee2mqtt or elsewhere to do what we want. For the bottom button we'll have to recognize two successive commands and map them to a single command.

I'm sure that's doable, and it looks like we'll have to do it outside of Hubitat, so Zigbee2mqtt looks like a great choice if you're comfortable with the hardware aspect.

The responsiveness of zigbee2mqtt (at least the log messages) is immediate. This could be a really nice remote to scatter around the house (and I have plenty to scatter).

1 Like

Yeah, that's not good...it is actually setting the level and color temp of the bulb rather than trying to "transition" it. Same with on and off. Rather than toggling the lights, it's telling it to turn on or off. So, the remote is going to become unsynced with the bulb if the bulb is controlled from anywhere else for any of the attributes.

Yeah, but I saw that from my earlier observations with pairing the remote to bulbs directly. At least seeing the messages from the remote means I can map the messages to what I want. "on" and "off" will both be "toggle" (or just "button1") and "set level ###" will all map to "button 2".

Since we can't even get Hubitat to receive the messages at all - this is perfectly good for me. I have no intention of letting the remote talk to the bulb directly, personally. I probably won't even use these remotes directly/solely for lighting, anyway.

I think I'll have to get a CC2531 stick. Do you need their programmer to flash the stick? I have been meaning to play around with MQTT at some point so this might be chance.

It's to bad Hubitat doesn't have plans to support group messages to the hub. Since Smartthings, Deconz, Zigbee2MQTT, and Home Assistant all appear to support group messages to the hub that doesn't bode well for Hubitat. I think Hubitat is kind of between Smartthings and Home Assistant in the complications to setup. So I see it as being an option to move from Ikea's system or something else if someone wants more flexibility. The way the remote is implemented is per the Zigbee specification as well as their certification covers the spec.

I could not get the remote to pair with Deconz.

With this Amazon.com and 4 jumper wires I already had, I was able to program the firmware from a Raspberry Pi. The adapter in this Amazon kit is just a breakout board to go from tightly spaced pins to wider spaced pins, but I needed it given the jumpers I had on hand.

The CC debugger programmer hardware that zigbee2mqtt mentions on their website (https://www.zigbee2mqtt.io/getting_started/flashing_the_cc2531.html) seems more complicated than the Raspberry Pi route, to be honest. The only tricky part with the Pi was having the jumper wires and making sure you get the pins right on both the breakout board and the Pi. Luckily my first bad attempt didn't burn anything out. Once I had the parts, it took about 5 minutes - but this isn't my first time doing something like this.

If you're comfortable in Linux and have done some electronics, it's really simple.

Lengthy reply omitted in the interest of keeping this thread on topic.

2 Likes

I've managed to very reliably get my desired result from zigbee2mqtt using the following code changes to the underlying Zigbee libraries:

I'll submit a pull request soon to get this merged into the project, but until then you can apply my code changes following these instructions:

And, not documented above, add the one line to node_modules/zigbee-herdsman/dist/controller/events.js.

As an aside, I'm unhappy with the lack of a "plugin" architecture for herdman's libraries / zigbee2mqtt - it'd be really nice to add new devices/converters without having to edit the npm managed files.


With the device/converter listed above, I'm mapping:

  • Button1 (on/off) - On = button1, Off = button1
  • Button2 (brightness) - All level values = button2
  • Button3 (color temp) - If immediately following a button4, ignore, otherwise all color temps = button3
  • Button4 (scene) - Remote sends two commands, output is always button4 from the first (setLevel) command. Second command (color temp) is ignored

The remote sends a sequence number from 0-127, which is what I used to distinguish the second command button4 sends (color temp) from the actual color temp button3. In my testing so far, it is very consistent and reliable.

I haven't bridged the gap between mqtt and Hubitat yet.

@bertabcd1234
How exactly did u get the remote to pair with the hue hub? I was able to get the bulb no problem, and have tried the remote a few times with no luck. I download the hue lights app in order to Force touch link but it never finds the remote. Once connected to the hue hub can it be used with multiple bulbs on the hub? I ask because my dad only has a hue hub and something like this would be a great cheaper method vs philips dimmers and bulbs. Thanks

I got 7 bulbs to disconnect from their remote and pair to HE easily. However, I am having no luck getting the remote to Touch-link with a bulb afterwards. I tried multiple remotes with multiple bulbs.

What I did:

  1. Held button 1 & 2 until red light blinks
  2. Move remote close to bulb
  3. Bulb will blink three times, pause, blink 3 times, pause, and finally 3 more blinks and then stop
  4. I try pushing buttons on remote and nothing.

Am I missing a step?

Also, some people mentioned pairing the remote to hub before the Touch-link. What is the process for that? Is that necessary?

I paired the remote to Hubitat before touchlinking it.

I reset the remote per the instructions (pin in back). Then I put the hub in Touch Link mode as I performed the Touch Link procedure on the device, holding the top two buttons for about 10 seconds. You won't get feedback from the app that this happened. I think the LED pattern on the remote will tell you, but I don't remember what they do.

Note that this does not make the remote configurable in Hue itself (or visible in the app). You have to Touch Link it to one or more bulbs (the box says up to 20; I'm guessing the Bridge makes this 19). The difference is that if those bulbs are already on the Hue network, it won't steal them away. Also, in my experience, manipulating the bulbs with the remote did not update their status in the Hue app. This may limit how useful this is for you.

How did you do that?

Reset the remote (pin in back until light flashes) - and put Hubitat into Zigbee discovery mode.

SUCCESS!!!! Thank you to all.

I am seeing resellers on eBay for these now trying to sell them for ~$12.
LOL

For reference.. don't trust the HD website on stock here.... you an actually still find this on their website and I avoided that ones with only a few listed,because I know those stock numbers are never perfect. But I found near work that claimed 26 in stock.. sounded safe... guy knew what I was talking about, knew where they were a couple days prior but spent half an hour looking and couldn't find them.... bleh....

Also, I looked into the PN on the pictures.. the zigbee chip is is a pretty reasonable looking Silcon Labs SoC.... not sure, but it's possible those pads on the left side are wired to the programming interface on the chip... could probably be hacked. This is the series part based on the part number on the chip in that picture: EFR32MG1P132F256IM32 - Silicon Labs

If you guys havenโ€™t seen this, it might be of interest and help your efforts.

3 Likes

I guess Smartthings will get an official device handler. Given it says it's compatible with Smartthings on the box it's probably a good thing. Otherwise the comments are in line with this thread. We are SOL on directly using the remote until Hubitat makes a platform change. But for the price it's worth it for the bulb.

Bulb is compatible. No claim on the box that remote is compatible from what Iโ€™ve seen and read.

How are you going to distinguish the setLevel from button 2 to the setLevel for button 4?