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.

zigbee3.0种关于Zstackapi_bdbStartCommissioningReq()的用法

Other Parts Discussed in Thread: TIMAC

使用芯片:CC2652R

开发平台:CC13x2 / 26x2 SDK

设备类型:协调器

关于3.0网络的组网入网,现在通过BDB来进行,推荐的开发文档也都看了,但是在实际应用种还是由一些问题和疑惑:

1、现在的硬件设备没有按键,所以Zstackapi_bdbStartCommissioningReq()是在初始化的程序种直接调用的;

       请问,作为一个协调器,不需要立即打开允许入网和发现绑定的功能,Zstackapi_bdbStartCommissioningReq()的参数应该用什么比较合适?

       现在的测试情况是:使用BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_NWK_STEERING,网络会建立,并且会立即打开允许入网;

       使用BDB_COMMISSIONING_MODE_NWK_FORMATION,也会建立网络,不打开允许入网;

2、 如果单独协调器的话,上边的配置不管用哪个,网络建立都没有问题。但是,如果我在这个网络中入网了一个路由设备,那么本协调器重启之后,就没有网络了(默认的PANID,我是设定的固定值,不是FFFF),表现就是没有link stauts的广播发出,有别的设备发出的beacon request的时候,它也也不发送beacon ,但是协调器程序是运行的,因为我做了一个LED的闪烁指示。

3、这个协调器模块,我配置成初始状态不打开入网。由于没有按键,只有与网关的串口连接,有哪个MT的指令可以触发Zstackapi_bdbStartCommissioningReq()这个调用么?如果有的话吗,参数配置BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_NWK_STEERING,还是只用BDB_COMMISSIONING_MODE_NWK_STEERING就可以了?

      ZHA1.2协议栈的时候,一直用的是MT_ZdoMgmtPermitJoinRequest(),来打开入网的,现在还使用这个指令有什么问题么?

4、对以前协议栈的设备的入网,按照TI大佬的建议修改,现在ZHA1.2的设备可以入网,2.5.1a协议栈的路由设备还是入网一直失败,通过抓包观察,能执行到协调器发送trans key,但是设备发不出来Device Announce

  • 需要讨论一下,稍后再来回复
  • 需要讨论一下,稍后再来回复
  • 1、这个测试情况是正常的,你想要实现的是什么功能,不用按键,程序里控制协议栈开/关 permit join?
    2、有加NV_restore吗?
    3、MT_ZdoMgmtPermitJoinRequest()可以用,mt_zdo.c里有定义
    4、关闭了TC link key怎么还有exchange过程?
  • 1、想实现的功能就是协调器初始的时候建立网络(如果没有建立过则新建,建立过就用原来的网络),不允许入网,后边通过网关下达指令再打开入网;
    2、NV_RESTORE和NV_INIT都在编译条件中添加了的;
    3、这个我再试试;
    4、“关闭TC link key”是指编译条件中的“TC_LINKKEY_JOIN”吗?这个我没有关闭,但是ZHA1.2的设备可以入网的。另外这个选项不能关闭吧?如果关闭了,我的网络是不是就是不加密的网络了?

    编译条件如下(使用的是zc-cie的例程的编译条件,自己添加了MT相关):
    NPI_USE_UART
    NPI
    ZTOOL_P1
    MT_TASK
    MT_APP_FUNC
    MT_SYS_FUNC
    MT_AF_FUNC
    MT_ZDO_FUNC
    MT_ZDO_CB_FUNC
    MT_NWK_FUNC
    MT_NWK_CB_FUNC
    MT_UTIL_FUNC
    MT_APP_CNF_FUNC
    MT_ZDO_MGMT
    MT_ZDO_CB_MGMT
    ZCL_READ
    ZCL_DISCOVER
    ZCL_WRITE
    ZCL_BASIC
    ZCL_IDENTIFY
    ZCL_ZONE
    ZCL_WD
    ZCL_ACE
    TIMAC_ROM_IMAGE_BUILD
    TIMAC_ROM_PATCH
    xUSE_ZCL_SAMPLEAPP_UI
    MAX_STATUS_LINES=10
    ZSTACK_SECURITY
    xBOARD_DISPLAY_USE_UART
    FREQ_2_4G
    OSAL_PORT2TIRTOS
    OSAL_PORT2TIRTOS_OSALMAP
    STACK_LIBRARY
    RCN_APP_ASSERT
    HAL_ASSERT_SPIN
    ZDO_API_BASIC
    TC_LINKKEY_JOIN
    NV_RESTORE
    NV_INIT
    FEATURE_NON_BEACON_MODE
    ZCL_STANDALONE
    MAX_DEVICE_TABLE_ENTRIES=50
    NVOCMP_NVPAGES=2
    DEVICE_FAMILY=cc26x0
    CC26X2R1_LAUNCHXL
    DeviceFamily_CC26X2
  • 问题2的补充:现象就是只要现在设置的PANID与原来的相同,就建立不起来网络,换一个PANID就有网络了。
    操作步骤是:
    1、11频段、PAN=0x1234,建立了一个网络;
    2、入网了一个路由设备,入网成功后,该路由设备就在“11频段、PAN=0x1234”这个网络正常工作了;
    3、重启协调器,网络就没有了;使用重新烧写程序,还是建立不起来网络;
    4、如果把协调器的PAN改一下,比如改成了PAN=0x5678,烧写完毕后,网络就建立起来了,再重启协调器,网络还是正常的。
  • 问题2现在没事了。
    原因是第一次断电重启的过程中,烧写了一下程序,所以NV里边的原来的网络信息是被擦除了,启动后可能是发现空间中有跟自己的PANID相同的网络,所以它就不建立网络了。
    这个地方更ZHA1.2的时候,是有区别的。ZHA1.2中,在建立网络时,如果空间中有跟自己ID相同的网络,会将自己的网络ID自动加1,然后建立网络。
  • 好的,感谢提供反馈
  • 还有一个奇怪的现象:
    初始化种调用Zstackapi_bdbStartCommissioningReq()时,参数配置为BDB_COMMISSIONING_MODE_NWK_FORMATION。
    第一次烧写程序进去后,默认就打开了允许入网;断电重启一下,允许入网就是关闭的了~

  • 请问使用的协议栈版本是什么?
  • 您好,前几天一直没网。
    版本是simplelink_cc13x2_26x2_sdk_3_40_00_02