协调器基于switch例程,终端基于light例程
1.终端加上协调器后,等一会把终端复位,
发现终端再也入不了网了,此时我通过按键触发,
协调器端触发bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_FINDING_BINDING);
终端触发bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING);
终端还是无法入网
2.关于终端当前的状态,是否在线,是用ZDO_STATE_CHANGE判断还是用zclSampleSw_ProcessCommissioningStatus
如果用zclSampleSw_ProcessCommissioningStatus,怎么判断终端是否掉线?
3.协调器和终端恢复出厂用什么接口函数?
Jesse Huang:
1、终端即使在入网后每次复位还是要调用 bdb_StartCommissioning()。
2、终端可在 zclSampleSw_ProcessCommissioningStatus() 中的 case BDB_COMMISSIONING_PARENT_LOST: 中判断掉线了。
3、恢复出厂设置调用 bdb_resetLocalAction() 函数。
YiKai Chen:
1. 你終端有使能NV_RESTORE嗎?
2. 建議用ZDO_STATE_CHANGE
3. 用bdb_resetLocalAction
user5367314:
回复 YiKai Chen:
1.协调器和终端都使能了NV_INIT和NV_RESTORE
2.协调器按键里面调用的是bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING);
3.bdb_resetLocalAction和下面的函数功能是一样的吧?是不是factory reset?
zgWriteStartupOptions( ZG_STARTUP_SET, (ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE) );SystemResetSoft();
4.现在正常组网后,等一段时间把终端复位,复位后就加不上了,我在协调器和终端双方都触发了bdb_StartCommissioning也是加不上
5.我把协调器断电,3.0.2协议栈默认的,终端是不是会一直重连?
Jesse Huang:
回复 user5367314:
对了,Z-Stack 3.0.2 的终端是不会主动发送 rejoin request 的,要在 zclSampleSw_ProcessCommissioningStatus() 中的 case BDB_COMMISSIONING_PARENT_LOST: 中调用 rejoin request 函数。case BDB_COMMISSIONING_PARENT_LOST:{if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_NETWORK_RESTORED){
}else{// Parent not found, attempt to rejoin again after a fixed delayosal_start_timerEx(Cursor_TaskID, EVENT_END_DEVICE_REJOIN, END_DEVICE_REJOIN_DELAY);}}break;
在 zclSampleSw_ProcessEvent 中:// 设备失去父节点消息后定期发送rejoinif( events & EVENT_END_DEVICE_REJOIN ){bdb_ZedAttemptRecoverNwk();return (events ^ EVENT_END_DEVICE_REJOIN);}
user5367314:
回复 Jesse Huang:
我这边试了,把协调器断电再上电,终端会自动连上的,
是不是开启了NV的原因?
需要加bdb_ZedAttemptRecoverNwk吗?
Jesse Huang:
回复 user5367314:
你协调器断电,终端掉线后,协调器再上电,终端在不调用 bdb_StartCommissioning 的情况下能自动连上吗?
YiKai Chen:
回复 user5367314:
是因為开启了NV、應該不用加bdb_ZedAttemptRecoverNwk
user5367314:
回复 Jesse Huang:
可以,我两边都开启了NV,重启协调器,终端会自动连上,终端没有调用bdb_StartCommissioning
user5367314:
回复 YiKai Chen:
1.加入终端或者协调器由于某种原因NV信息在上电的时候没有恢复成功,
保险起见,是不是建议在终端里加个bdb_ZedAttemptRecoverNwk?
2.现在正常组网后,等一段时间把终端复位(即调用bdb_resetLocalAction),复位后就加不上协调器了,我在协调器和终端双方都触发了bdb_StartCommissioning也是加不上,请问是什么原因?如何解决?
YiKai Chen:
回复 user5367314:
那你的問題是?