Nortek Stick / Conbee 2 and the Lutron Aurora Dimmer Switch Button push Issue

I’ve seen on this forum and in others posts on reddit etc that many have had inconsistent results with the Lutron Aurora dimmer switch on ZHA.

https://www.lutron.com/en-US/products/pages/standalonecontrols/dimmers-switches/smartbulbdimmer/overview.aspx

Turning the dial always works consistently, but pushing the button has been hit or miss. This device is one of my favorites and I’m determined to get it working in HA. Here’s what I’ve learned. Please keep in mind that I don’t know much about zigbee command classes so I’m probably using incorrect terminology but I think the experts can figure out what I’m describing:

  • Most (if not everyone) with the button push problem, appear to be using the Nortek Zigbee/zwave stick (HUSBZB-1).
    I have tried updating the zigbee stack on the stick but it still didn’t work…it actually seemed to be worse.

  • Since others do not seem to be having the same issue with the Conbee2, I decided to buy one and test it myself. As expected, the button pushes work consistently with the Conbee 2 in ZHA.

  • Listening to the zha_event stream always showed the expected result with the Conbee stick but would only show events some of the time with the Nortek stick.

  • However the zigbee logs always showed “something” with both sticks…just different output which leads me to believe that the Nortek stick is simply not paired correctly with the Lutron device or just not listening for the correct device cluster reports/attributes.

The next 2 posts are the zha_event and zigbee logs for both controller sticks when the button is pushed. It toggles max brightness(255) and off (0).
I split these into 2 different posts so they are easier to look at. One for Conbee2 and one post for Nortek.

CONBEE2 - Works as expected and consistently

Zigbee logs for button pushes

[0x0000:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [60, <Bool.false: 0>]
[0x4f4f:1:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=False disable_default_response=True> manufacturer=None tsn=5 command_id=Command.Read_Attributes>
[0x4f4f:1:0x0006] ZCL request 0x0000: [[0]]
[0x4f4f:1:0x0008] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=False disable_default_response=True> manufacturer=None tsn=6 command_id=4>
[0x4f4f:1:0x0008] ZCL request 0x0004: [255, 7]
[0x4f4f:1:0x0008] No handler for cluster command 4
[0x4f4f:1:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=False disable_default_response=True> manufacturer=None tsn=7 command_id=Command.Read_Attributes>
[0x4f4f:1:0x0006] ZCL request 0x0000: [[0]]
[0x4f4f:1:0x0008] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=False disable_default_response=True> manufacturer=None tsn=8 command_id=4>
[0x4f4f:1:0x0008] ZCL request 0x0004: [0, 7]
[0x4f4f:1:0x0008] No handler for cluster command 4
[0x4f4f:1:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=False disable_default_response=True> manufacturer=None tsn=9 command_id=Command.Read_Attributes>
[0x4f4f:1:0x0006] ZCL request 0x0000: [[0]]
[0x4f4f:1:0x0008] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=False disable_default_response=True> manufacturer=None tsn=10 command_id=4>
[0x4f4f:1:0x0008] ZCL request 0x0004: [255, 7]
[0x4f4f:1:0x0008] No handler for cluster command 4

Corresponding zha_event stream

Event 2 fired 5:43 PM:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "xx:xx:xx:xx:xx:xx:xx:xx",
        "unique_id": "xx:xx:xx:xx:xx:xx:xx:xx:1:0x0008",
        "device_id": "adf503a5c06a8fe45cc9a1810ae77755",
        "endpoint_id": 1,
        "cluster_id": 8,
        "command": "move_to_level_with_on_off",
        "args": [
            255,
            7
        ]
    },
    "origin": "LOCAL",
    "time_fired": "2020-11-19T22:43:17.682985+00:00",
    "context": {
        "id": "2bb807bcb2eb1a249a09de76ce650232",
        "parent_id": null,
        "user_id": null
    }
}
Event 1 fired 5:43 PM:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "xx:xx:xx:xx:xx:xx:xx:xx",
        "unique_id": "xx:xx:xx:xx:xx:xx:xx:xx:1:0x0008",
        "device_id": "adf503a5c06a8fe45cc9a1810ae77755",
        "endpoint_id": 1,
        "cluster_id": 8,
        "command": "move_to_level_with_on_off",
        "args": [
            0,
            7
        ]
    },
    "origin": "LOCAL",
    "time_fired": "2020-11-19T22:43:16.456370+00:00",
    "context": {
        "id": "1f11f395a2c87eb737fb561009afdb63",
        "parent_id": null,
        "user_id": null
    }
}
Event 0 fired 5:43 PM:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "xx:xx:xx:xx:xx:xx:xx:xx",
        "unique_id": "xx:xx:xx:xx:xx:xx:xx:xx:1:0x0008",
        "device_id": "adf503a5c06a8fe45cc9a1810ae77755",
        "endpoint_id": 1,
        "cluster_id": 8,
        "command": "move_to_level_with_on_off",
        "args": [
            255,
            7
        ]
    },
    "origin": "LOCAL",
    "time_fired": "2020-11-19T22:43:14.784466+00:00",
    "context": {
        "id": "e59fd88ce61ab820a5c2dcea91202da3",
        "parent_id": null,
        "user_id": null
    }
}

Nortek Stick

After a LOT of button pushes I finally got the zha_event to show activity see below for both the zigbee logs and the zha_event stream when the Nortek stick actually reported the button pushes

Zigbee logs

[0x0000:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [60, <Bool.false: 0>]
[0x3212:1:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=False disable_default_response=True> manufacturer=None tsn=30 command_id=Command.Read_Attributes>
[0x3212:1:0x0006] ZCL request 0x0000: [[0]]
[0x3212:1:0x0008] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=False disable_default_response=True> manufacturer=None tsn=31 command_id=4>
[0x3212:1:0x0008] ZCL request 0x0004: [0, 7]
[0x3212:1:0x0008] No handler for cluster command 4
[0x3212:1:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=False disable_default_response=True> manufacturer=None tsn=32 command_id=Command.Read_Attributes>
[0x3212:1:0x0006] ZCL request 0x0000: [[0]]
[0x3212:1:0x0008] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=False disable_default_response=True> manufacturer=None tsn=33 command_id=4>
[0x3212:1:0x0008] ZCL request 0x0004: [255, 7]
[0x3212:1:0x0008] No handler for cluster command 4

Corresponding zha_event stream:

{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "xx:xx:xx:xx:xx:xx:xx:xx",
        "unique_id": "xx:xx:xx:xx:xx:xx:xx:xx:1:0x0008",
        "device_id": "1234567890abcdefg",
        "endpoint_id": 1,
        "cluster_id": 8,
        "command": "move_to_level_with_on_off",
        "args": [
            255,
            7
        ]
    },
    "origin": "LOCAL",
    "time_fired": "2020-11-19T23:13:59.641917+00:00",
    "context": {
        "id": "3eb1cd6c57837efc5d26dc286deb80d8",
        "parent_id": null,
        "user_id": null
    }
}
Event 12 fired 6:13 PM:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "xx:xx:xx:xx:xx:xx:xx:xx",
        "unique_id": "xx:xx:xx:xx:xx:xx:xx:xx:1:0x0008",
        "device_id": "1234567890abcdefg",
        "endpoint_id": 1,
        "cluster_id": 8,
        "command": "move_to_level_with_on_off",
        "args": [
            0,
            7
        ]
    },
    "origin": "LOCAL",
    "time_fired": "2020-11-19T23:13:58.216472+00:00",
    "context": {
        "id": "362b47bacd37bbc349de56e769dc8cb6",
        "parent_id": null,
        "user_id": null
    }
}

** Now here’s what the Zigbee logs look like when nothing appears in zha_event:**

0x0000:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [60, <Bool.false: 0>]
[0x3212:1:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=False disable_default_response=True> manufacturer=None tsn=34 command_id=Command.Read_Attributes>
[0x3212:1:0x0006] ZCL request 0x0000: [[0]]
[0x3212:1:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=False disable_default_response=True> manufacturer=None tsn=36 command_id=Command.Read_Attributes>
[0x3212:1:0x0006] ZCL request 0x0000: [[0]]

It looks like the Level Control cluster (0x0008) isn’t consistently reporting. Hopefully one of our fantastic devs can use this info to help get the Nortek stick working with the Lutron Aurora devices.

I just bind my Aurora’s to bulbs and they work pretty reliably however there are times when they take several presses to work. Interesting that it seems to work better with another coordinator.

If you rely on events do not upgrade the firmware to 3.08, you will loss all events unless you bind the Device to the coordinator (0.118 allows this)

At some point this fw will be the default on new Aurora.

1 Like

Thanks for the reply. Unfortunately I have these switches in different locations with different device types (sengled, hue bridge, Caseta, HBFC). I have also bound it directly to sengled and my fan controller but it also had occasional button push issue. Strangley enough, once I paired it to my Conbee stick, it works every time…so far at least.

If I didn’t already have about 70 device with twice as many entities tied to my Nortek stick, I would just use the Conbee2. I simply don’t have the time or patience to move over. Still hoping the devs get back and say it’s a simple fix. :crossed_fingers:

Are both the switches routing direct to the coordinator or via an intermediary router?

Directly to the coordinator sticks.
I setup a test instance of HA that has nothing but the zha integration, the zigbee stick and the switch configured.

@walt as requested, please see the logs below. This is the output when the button is pushed (once for on and another time for off). This is when attached to the Conbee 2 stick. I can get the same output when attached to the Nortek stick if needed. Let me know.

Conbee2

2020-11-20 17:11:53 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_INDICATION|2: 170>, 0]
2020-11-20 17:11:53 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2020-11-20 17:11:53 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [35, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xfffd>, 0, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x2964>, 0, 0, 19, b'\x86d)zz\xfd\xe7\x0f\x00\xff\xff\x80', 0, 175, 127, 63, 31, 0, 0, -78]
2020-11-20 17:11:53 INFO (MainThread) [zigpy_deconz.zigbee.application] New device joined: 0x2964, ff:ff:00:0f:e7:fd:7a:7a
2020-11-20 17:11:53 INFO (MainThread) [zigpy.application] Device 0x2964 (ff:ff:00:0f:e7:fd:7a:7a) joined the network
2020-11-20 17:11:53 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x2964>, ep: 0, profile: 0x0000, cluster_id: 0x0013, data: b'8664297a7afde70f00ffff80'
2020-11-20 17:11:53 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_INDICATION|2: 170>, 0]
2020-11-20 17:11:53 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2020-11-20 17:11:53 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [28, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x2964>, 1, 260, 6, b'\x10,\x00\x00\x00', 0, 175, 119, 64, 31, 0, 0, -79]
2020-11-20 17:11:53 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x2964>, ep: 1, profile: 0x0104, cluster_id: 0x0006, data: b'102c000000'
2020-11-20 17:11:53 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_INDICATION|2: 170>, 0]
2020-11-20 17:11:53 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2020-11-20 17:11:53 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [29, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.GROUP address=0x6277>, 0, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x2964>, 1, 260, 8, b'\x11-\x04\x00\x07\x00', 0, 175, 79, 64, 31, 0, 0, -84]
2020-11-20 17:11:53 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x2964>, ep: 1, profile: 0x0104, cluster_id: 0x0008, data: b'112d04000700'

The remote sends the events not directly to Coordinator, but to the group. By default ConBee radios show traffic for any group, but EZSP based radios need to be specifically added to that group.

Is there a “zhaquirk” for your device? By the looks of it, it is a randomly picked group by the device and ATM you cannot pick a group ID when creating a group in ZHA. So a quirk is needed if there’s none

1 Like