Alexa Identify Cluster

nRF Connect SDK v1.8.0, Zephyr, Zigbee, ZBOSS

I have an issue with Alexa Echo Gen 4 Zigbee Discovery and  a malformed packet when modifying the nrf/samples/zigbee/light_bulb to be a Door Lock instead of a Light Bulb.


I am using the nRF Zigbee sniffer to analyze the transactions during device discovery.  Once Alexa discovers the Lock, it sends


Alexa:


Command: Identify (0x00)

Payload:

    Identify Time: 3 seconds


Lock replies:


Command: Default Response (0x0b)

Response to Command: 0x00

Status: Success (0x00)


... about 2 seconds go by ...


Alexa:


Command: Read Attributes (0x00)

Attribute: Identify Time (0x0000)


Lock replies [Malformed Packet]


Command: Read Attributes Response (0x01)

Status Record:

    Attribute: Identify Time (0x0000)

    Status: Success (0x00)

    Data Type: 8-bit Bitmap (0x18)


I believe that this is the cause of the main problem which is that the Alexa app won’t interact with the Lock because “Device doesn’t support requested value”.  There are no other transactions that indicate problems, e.g. Alexa is mostly polling for Lock state which the Lock is happily replying to.

To further isolate the problem, I have built the application with the light bulb example only slightly modified to fit in the wider Zephyr application framework (and I don’t have any buttons or lights on my HW).


Alexa:


Command: Identify (0x00)

Payload:

    Identify Time: 3 seconds


Lock replies:


Command: Default Response (0x0b)

Response to Command: 0x00

Status: Success (0x00)


... about 2 seconds go by ...


Alexa:


Command: Read Attributes (0x00)

Attribute: Identify Time (0x0000)


Lock replies:

Command: Read Attributes Response (0x01)
    Attribute: Identify Time (0x0000)
    Status: Success (0x00)
    Data Type: 16-bit Unsigned Integer (0x21)
    Identify Time: 1 seconds

So here we see the expected response provided by the light bulb example returns the correct type according to the Zigbee specification.  I will continue digging into this but I am stumped.  I would LOVE to be able to intercept the Read Attribute to the Identify Cluster so that I can respond correctly but I cannot figure out how to hook into it.

J.P.

Parents Reply Children
  • Hi Marte,

    I'm afraid that I had nasty error in my door lock cluster list declaration - fixing it resolved the Identify Time issue:

    I had:

    ZB_HA_DECLARE_DOOR_LOCK_CLUSTER_LIST(
    	door_lock_clusters,
    	basic_attr_list,
    	identify_attr_list,
    	groups_attr_list,
    	scenes_attr_list,
    	door_lock_attr_list);

    Instead of:

    ZB_HA_DECLARE_DOOR_LOCK_CLUSTER_LIST(
    	door_lock_clusters,
        door_lock_attr_list,
    	basic_attr_list,
    	identify_attr_list,
    	groups_attr_list,
    	scenes_attr_list);

    I hope that this can resolve your investigation.

    J.P.

Related