This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LP-CC2652RB: [Zigbee] The Switch device does't receive data from the Light device.

Part Number: LP-CC2652RB

Dear Sir/Madam,

 

My customer wants to make communicate each other with two devises, she found a problem during test.

Would you please help to resolve this issue?

 

[H/W and SDK information]

 

DVK ; LP-CC2652RB

IDE ; Code Composer Studio

SDK ; SimpleLink CC13x2 26x2 SDK (4.10.00.78)

Example code ; ‘zc_sw’ and ‘zc_light’ (in zstack)

 

[Test #1]

This is a general test procedure. It’s OK. 

  1. Downloaded into DVK after build ‘zc_sw’, I will call it ‘SW device’ .
  2. Downloaded into DVK after build ‘zc_light’, I will call it ‘Light device’ .
  3. ‘SW device’ created a bind to ‘Light device’.
  4. Pressed BTN2 on ‘SW device’.
  5. The light in ‘Light device’ is toggled.

 

[Test #2]

‘SW device’ send few data to ‘Light device’. It’s OK. 

  1. Added few data in payload based on ‘zc_sw’.
  2. Downloaded into DVK after build ‘zc_sw’, I will call it ‘SW device’ .
  3. Downloaded into DVK after build ‘zc_light’, I will call it ‘Light device’ .
  4. ‘SW device’ created a bind to ‘Light device’.
  5. Pressed BTN2 on ‘SW device’.
  6. The light in ‘Light device’ is toggled and checked data that ‘Light device’ received from ‘SW device’ .

 

[Test #3] ;

‘Light device’ send few data to ‘SW device’. ‘SW device’ can’t receive data from ‘Light device’.

  1. Added code below to ‘zc_light’ to send data to ‘SW device’.

 ====================================

 static void zclSampleLight_processKey(uint32_t _btn, Button_EventMask _buttonEvents)

{

                                                                .

                                                                .

                                                                .

 

     if(key == CONFIG_BTN_RIGHT)

       {

            zstack_getZCLFrameCounterRsp_t rsp;

 

            User_Test_Value++;

 

            Toggle_Led_Flag ^= 1;

 

            Zstackapi_getZCLFrameCounterReq(appServiceTaskId, &rsp);

            if(Toggle_Led_Flag == 0)

                zclGeneral_SendOnOff_CmdOn( SAMPLELIGHT_ENDPOINT, &zclSampleLight_DstAddr, FALSE, rsp.zclFrameCounter );

            else

                zclGeneral_SendOnOff_CmdOff( SAMPLELIGHT_ENDPOINT, &zclSampleLight_DstAddr, FALSE, rsp.zclFrameCounter );

        }

}

 

==================================== 

  1. Downloaded into DVK after build ‘zc_sw’, I will call it ‘SW device’ .
  2. Downloaded into DVK after build ‘zc_light’, I will call it ‘Light device’ .
  3. ‘SW device’ created a bind to ‘Light device’.
  4. Pressed BTN2 on ‘Light device’.
  5. Checked data that ‘SW device’ received from ‘Light device’ .

->> ‘SW device’ didn’t receive data from ‘Light device’

 

Would you please give any advice for this?

Or Is there a more suitable example for bidirectional communication?

 

Thanks,

YY.

 

 

  • You cannot make two ZC to communicate directly unless you use inter PAN message. You should use one ZC to setup network and others, maybe ZR or ZED, joins ZC network to do communication.

  • Hi YY,

    I assume that one of the devices described in your tests is a ZC and the other is a ZED or ZR.  The light application does not automatically bind to the switch through BDB Finding and Binding, therefore you will need to accomplish this manually if you plan to use indirect addressing with a ZCL command.  This would also be used for BDB reporting.  Alternatively, you could use AF data requests but this would still assume knowledge of the direct address.  Please follow the corresponding SimpleLink Academy Lab (among others) to better understand how to achieve communication: https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread/f/158/t/738773 

    Regards,
    Ryan 

  • Dear YK Chen,

     

    I’m sorry for confusing you.

    The example code for ‘Light device’ was ‘zed_light’, not ‘zc_light’.

    In other worlds, my customer did test with ‘zed_light’.

     

    Regards,

    YY.

  • Dear Ryan,

    Thanks for your feedback. I will check it and discuss with my customer, get back to you.

    Thanks,

    YY.

  • Dear YK Chen and Ryan,

     

    My customer think that it is difficult to solve the problem only with your advice. Would you please advise further detail?

    Is there any example code in SDK the customer can refer to? Or can you provide example code based on SDK ?

     

    Thanks,

    YY.

  • Hi,

    Agreed with Ryan.

    Our examples use an automatic process to "bind" common devices. (This process is called "finding & binding").
    For example, the switch binds to light. This allows the switch to communicate with the light using indirect addressing. This means application doesn't need to know the destination address; rather, the destination address is determined by lower Zigbee layers using a binding table (which includes the destination address of the light through finding & binding).

    However, the light does not automatically bind to switch. This means that, in order for the light to send successfully to switch, you must consider one of the options:

    1. In application layer, save the address of the switch. Then light can use this address to "directly address" and send to switch.
    2. Create a manual bind from switch to light. After this, the light's binding table will have address of the switch. Then the light can use "indirect addressing" to send to switch.

    Agreed with YK.
    Please refer to "Part 1: Cluster Reporting and Manual Binds" of this one: https://dev.ti.com/tirex/explore/node?node=AJeGnyIqlkquNAYMtLtovQ__pTTHBmu__LATEST


    Regards,
    Toby