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.

协调器上电只允许以前加过的终端加入

Other Parts Discussed in Thread: Z-STACK

协议栈版本3.0.2,协调器2538,终端2530

1.协调器上电只允许以前加过他的终端加入,不允许新的终端加入,如何操作?协调器上电只执行bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_FORMATION);测试没效果,新的终端还是能加进来

2.协调器允许新的终端加入,通过触发bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING);

理论上不是180秒后就不允许新的终端加进来了吗?实测5分钟后新的终端还是能加进来?什么原因?

3.协调器里的associatedDevice.timeoutercounter会每隔一段时间就恢复默认值,

这个值可以改大一点吗?现在的应用场景是一个协调器多个终端,我想把该间隔该大一点以降低网络拥挤,

请问可以改吗?在哪里改?在终端还是协调器端改?

  • 1、可以使用白名单机制
    2、BDBC_MIN_COMMISSIONING_TIME: Length of time to commission the network for which permit join is enabled, a maximum of 254 seconds is required in accordance with Zigbee 2015 and later specification 你这个值定的多少?
    3、更改END_DEV_TIMEOUT_VALUE【zglobals.h】

  • 1.BDBC_MIN_COMMISSIONING_TIME我设为60,但是60S以后很长时间新的终端还是能加的进来
    2.已经加进来的终端,即使该终端执行bdb_resetLocalAction,还是会自动加入之前的协调器,
    之前协调器的BDBC_MIN_COMMISSIONING_TIME设为60,但是过了很久才去把跟他连的终端执行
    factory reset 终端还是能连的上,感觉协调器一直允许入网
  • 你所描述的情况最好抓包看一下,数据包能看出协调器是否打开了permit join,以及permit join的持续时间

  • 终端入网后,协调器端的AssociatedDevList里的timeoutCounter会每10秒左右就恢复默认值
    但是我终端没有主动发东西给协调器,而且我的DPOLL_RATE设的都是好几分钟,
    这是终端哪里跟协调器每10秒左右通信一次了?
  • 你有沒有抓包看看是不是终端有发东西给协调器
  • 你的终端有polling也會讓AssociatedDevList里的timeoutCounter恢复默认值
  • 1.我一分钟才POLL一次啊(DPOLL_RATE=61000)
    怎么抓包十几秒就POLL一次?polling和DPOLL_RATE是一个东西吗?如果不是,
    那么polling怎么设置?能不能关闭?怎么关闭?
    2.协调器断电后,怎么设置终端一直尝试rejoin?怎么改参数?
    /****************************************
    * The following are for End Devices only
    ***************************************/

    -DRFD_RCVC_ALWAYS_ON=TRUE

    /* The number of milliseconds to wait between data request polls to the coordinator. */
    -DPOLL_RATE=61000

    /* This is used after receiving a data indication to poll immediately
    * for queued messages...in milliseconds.
    */
    -DQUEUED_POLL_RATE=100

    /* This is used after receiving a data confirmation to poll immediately
    * for response messages...in milliseconds
    */
    -DRESPONSE_POLL_RATE=100

    /* This is used as an alternate response poll rate only for rejoin request.
    * This rate is determined by the response time of the parent that the device
    * is trying to join.
    */
    -DREJOIN_POLL_RATE=440

    /* Rejoin retry backoff silent period timer duration in milliseconds - default 15 minutes according to HA test spec */
    -DREJOIN_BACKOFF=900000

    /* Rejoin retry backoff scan timer duration in milliseconds - default 15 minutes according to HA test spec */
    -DREJOIN_SCAN=900000

    /* Latest sample apps use LED4 and do not use S1 switch */ /*默认-DENABLE_LED4_DISABLE_S1*/
  • 基本上是修改POLL_RATE沒錯,你看看程序里面有沒有地方調用NLME_SetPollRate去改到poll rate了
  • 请问:
    1.NLME_SetPollRate和DPOLL_RATE都设为0是否可以?我的终端DRFD_RCVC_ALWAYS_ON=TRUE
    2.协调器断电后,怎么设置终端一直尝试rejoin?是改DREJOIN_BACKOFF和DREJOIN_SCAN吗?具体怎么改?
  • 1. 可以
    2. 預設终端就一直尝试rejoin,rejoin時間是由 #define SAMPLEAPP_END_DEVICE_REJOIN_DELAY 10000 所設置
  • 那么再请问DREJOIN_BACKOFF和DREJOIN_SCAN是干啥的?rejoin例程里默认是10秒尝试一次,直至入网成功?
    DREJOIN_BACKOFF&DREJOIN_SCAN和SAMPLEAPP_END_DEVICE_REJOIN_EVT是什么关系?
    DREJOIN_BACKOFF&DREJOIN_SCAN只是初次入网的时候才起作用?rejoin就跟他没关系了?
  • 這兩個參數在z-stack 3.0.2已經沒有使用了
  • DPOLL_RATE=0同时NLME_SetPollRate(0);,我尝试把NLME_SetPollRate(0);放在一个定时器里面,每隔一段时间去关闭POLL,
    发现还是关不掉,因为associatedDevice.timeoutercounter还是10S左右就恢复默认值,官方例程,NLME_SetPollRate这块我没改啥
  • 抓包還是看到終端有作data request?
  • 不知道你那邊為什麼會發生這樣的狀況,建議你重裝一次Z-Stack 3.0.2然後只修改POLL_RATE設置後再測試看看
  • 测试发现做如下设置(即-DPOLL_RATE=61000、-DQUEUED_POLL_RATE=0、-DRESPONSE_POLL_RATE=0),即可61秒POLL一次
    但是设为-DPOLL_RATE=61000、-DQUEUED_POLL_RATE=100、-DRESPONSE_POLL_RATE=100,就是10秒左右POLL一次,这是什么原因?
  • 你有把 processors.wiki.ti.com/.../Zigbee_Known_Issues_and_Proposed_Fixes 里面的補丁打上去你用的Z-Stack 嗎?