终端加入特定的路由的问题!
每一个终端设备的背面都会有标签,写有mac地址,然后通过串口把终端的mac地址转到协调器中,协调器得到这个mac传给路由,路由得到后在怎么做才能让该终端加入网络呢。怎么不让其他终端加入网络呢,而让该终端加入网络?
其实没看大懂你的意思,什么应用场景才用到终端通过串口给coo传输数据呢?
为什么必须是路由控制终端是否能加入,协调器控制不更好吗?
给你个思路:终端自动加入网络中,加入后周期性给协调器发送数据包,数据包中包含自身mac地址,协调器得到后对比白名单,不在白名单内就把这个节点删除。
我是这样的情况:我在一个路口有1个协调器,四个路由,协调器下的子节点就只想有四个路由,而不让终端加入协调器而加入指定路由,这样有什么办法吗
一般情况下,zigbee是通过网络状况来判断加入途径的,节点跟路由距离如何?
就20米以内吧,请问VV大神,有没有路由控制终端加入啊,自组网不能控制加入网络啊
我做了个实验:
1.让终端节点以孤节点方式加入网络;在ZDApp.c中对全局变量devStartMode进行了初始化.
- #if ( ZG_BUILD_RTRONLY_TYPE ) || ( ZG_BUILD_ENDDEVICE_TYPE )
- // devStartModes_t devStartMode = MODE_JOIN; // Assume joining
- devStartModes_t devStartMode = MODE_RESUME; // if already "directly joined"
- // to parent. Set to make the device do an Orphan scan.
- #else //当设备类型为协调器时
- // Set the default to coodinator
- devStartModes_t devStartMode = MODE_HARD;
- #endif
2.先把终端从已经加入的路由上移除:
NLME_LeaveReq_t zaddr; zaddr.extAddr=device_address;
zaddr.removeChildren=true; zaddr.rejoin=true; zaddr.silent=true; ZStatus_t zStatus_t=NLME_LeaveReq((NLME_LeaveReq_t *)&zaddr ); HalUARTWrite ( 0,(uint8 *)&zStatus_t, 1);
3 .终端加入新的路由节点:
- uint8 device_address[8]={0x00,0x12,0x4B,0x00,0x03,0xA5,0x4C,0xDC};
- byte rfd_type = CAPINFO_DEVICETYPE_RFD; //设置设备类型为精简版设备
- ……
- #if ( ZG_BUILD_COORDINATOR_TYPE )//如果是协调器则将终端加入网络中
- NLME_DirectJoinRequest(device_address,rfd_type);
- #endif
这样的实验结果是:能从路由1上移除该节点,但是就是加不上新的路由节点,这是为什么呢?
请各位大神帮忙看看
你的路由Permit Join有打开吗
谢谢VV大神。我的路由Permit Join是打开的。还是加不上呢?
你好,我最近碰到了你以前碰到过的问题,就是怎么修改扩展panid,请问你最好怎么解决的呢?方便的话,可以加一下qq吗?532306279