完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 一只耳朵怪 于 2018-6-4 09:37 编辑
组网问题: 1. 如果用zigbee做智能家居,一旦协调器被用户购入,那么,如果用户新增节点(可能来源于不同的商家),那新节点如何知道原有协调器的panid 等参数?(用户不可能再去买一套协调器 + ep吧) 有没有这么一种解决方法:所有的协调器烧写同一套代码,所有ep也烧写默认的panid等参数,那么只要用户购买了ep,直接拿回家,就能组网使用了。 但是,这种做法还有一个问题,就是邻网干扰,即无法控制EP加入自己家的网络,还是邻居的网络。即使加入自己的网络,也无法确认数据包会不会发送到邻网协调器中。 我现在的做法是: a.使用 NV_RESTORE 。 这样可以确保ep加入协调器后,保存所有的参数。(如果同时存在第二个相同代码的协调器,由于代码相同,不确定此时会不会串网,如果此时不串网,可以往下看 ) b.修改MAC_SPEC_MIN_RECEIVER_SENSItiVITY -97 改为 40 ,目的是: 只有ep 靠的很近,才可以入网。入网成功后,则不受该距离限制。 这么做的结果是: 只有新EP靠近协调器时,才可以入网。并且一旦入网成功,所有的信息会通过 NV_RESTORE 存储到ep的flash。到目前为止,测试结果表明,不会加入到相同协调器代码的邻网。————————如果与您测试结果不同,敬请指导。 求大牛指导,这种方法可行性如何,有没有严重纰漏? 退网问题 参考某些论坛的帖子,他们的做法是: //delete flash uint8 pg; for ( pg = OSAL_NV_PAGE_BEG; pg <= OSAL_NV_PAGE_END; pg++ ) [ HalFlashErase(pg); ] 这样可以上传所有:nv_restore 存储的信息。 但是,我测试下来有问题,即删除之后,不能重新入网。 求大牛指教退网问题? 请问该如何操作,才能删除nv-restore存储的信息,又不影响二次入网。 |
|
相关推荐
14个回答
|
|
1:zigbee里面一般很少指定PANID去加网,都是通过搜索网络来加网的,如果你们是成套卖产品的话,可以让end device搜到网络后,选择某个特定的网络,事先把协调器的IEEE可以写在节点处。等加网以后可以用NV保存信息了。
另外你的协调器一般情况下把permit join关闭,需要有设备加的时候通过按键等方式开启。这样别家的zigbee也不会随便加到你的网络里面去。 你说的b方法也是一种可行的方法,ZigBee Light Link中入网就是通过RSSI值来确定的 关于退网问题,不能简单把NV中的信息删除,而是要把节点的整个状态改变掉,改到和初始状态一样,在这个初始化的过程中,其中做的一件事情就把NV中的信息删除。 参考uint8 ZDOInitDevice( uint16 startDelay )函数 |
|
|
|
一个简单且非常有效的方法zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);
我也为此问题困扰了好久,现在解决了,分享出来,希望对有同样需求的人有帮助。 |
|
|
|
1102sc 发表于 2018-6-1 14:29 1.协调器,路由节点,终端节点都开启了NV_INIT跟NV_RESTORE。 zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE)函数对这三种设备是否都有效?执行此函数并重启后是否会将之前NV里的网络相关信息都删掉? |
|
|
|
0896086 发表于 2018-6-1 14:41 zigbee的网络层有个api可以让某一个节点退出网络 ZStatus_t NLME_LeaveReq( NLME_LeaveReq_t* req ); 请求自己或者其他设备脱离网络,执行此函数不会导致其父节点重新分配设备地址。 req – 脱离请求数据结构: typedef struct [ uint8* extAddr; uint8 removeChildren; uint8 rejoin; uint8 silent; ] NLME_LeaveReq_t; extAddr -要脱离的设备的扩展地址 removeChildren -true 子设备也脱离,false只脱离当前设备。目前只能用false rejoin -true 允许设备重新加入网络,false 不允许设备重新加入网络 silent – true will. false if the。
|
|
|
|
wenlonghbo 发表于 2018-6-1 14:14 如果别家的协调器开着的情况下,是不是存在终端会连到别家的协调器上的可能? 请教一下这种情况如何解决呢? 谢谢。 |
|
|
|
蒋jiang 发表于 2018-6-1 14:51 我让她脱了里了那有这么加入该网络中呢 |
|
|
|
wenlonghbo 发表于 2018-6-1 14:14 路由有这个权限吗 |
|
|
|
我做了个实验: 1.让终端节点以孤节点方式加入网络;在ZDApp.c中对全局变量devStartMode进行了初始化.
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 .终端加入新的路由节点:
这样的实验结果是:能从路由1上移除该节点,但是就是加不上新的路由节点,这是为什么呢? 请各位大神帮忙看看 |
|
|
|
wenlonghbo 发表于 2018-6-1 14:14 我试了把permit join关闭,这样终端节点掉电了后需要permit join打开才能重新入网。这样也很不方便啊 |
|
|
|
wenlonghbo 发表于 2018-6-1 14:14 VV 终端设备回复原厂设置, 离开网络时,是否需要告知他的 父节点? 如何 告知,直接使用ZDOInitDevice(0)吗? 父节点如何感知 子节点 离开网络? 我在回复原厂设置中 使用了zstack 原本的code,离开网络时父节点没有感知到, 重新加入网络后,分配的短地址还是一样的 NLME_LeaveReq_t leaveReq; //delete the user item osal_nv_delete( ZONE_CIEADDRESS_AND_ENROLL_INFO, NV_CIEADDR_LEN+NV_EXTDATA_LEN); // Set every field to 0 osal_memset( &leaveReq, 0, sizeof( NLME_LeaveReq_t ) ); // This will enable the device to rejoin the network after reset. leaveReq.rejoin = TRUE; // Set the NV startup option to force a "new" join. //3 zgWriteStartupOptions( ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE ); // Leave the network, and reset afterwards if ( NLME_LeaveReq( &leaveReq ) != ZSuccess ) [ // Couldn't send out leave; prepare to reset anyway ZDApp_LeaveReset( FALSE ); ] |
|
|
|
蒋jiang 发表于 2018-6-1 14:51 协议栈里面是如何做到 是否同意加入呢? 难道他有自己的MAC黑名单。 |
|
|
|
蒋jiang 发表于 2018-6-1 14:51 请问 这条函数呢ZDP_MgmtLeaveReq ??? 在HA 的规范中 回复原厂设置时候,好像两个都需要 Return to Factory Defaults In support of a return to factory default capability, HA devices shall implement the ZDO Management Leave server service. When invoked with a unicast address and the DeviceAddress set to NULL=0x00000000, the device shall implement a NWK Leave. When invoked with a broadcast address and the DeviceAddress set to NULL=0x00000000, the device shall wait the broadcast timeout period to allow the message to propagate through network, then the device shall implement a NWK Leave. Prior to execution of the NWK Leave in either case, processing in the device shall ensure all operating parameters are reset to allow a reset to factory defaults. |
|
|
|
你好!你这种方式根本就不行啊,我没开启nv_restore,但是按照你的方法把MAC_SPEC_MIN_RECEIVER_SENSITIVITY修改后,改为-20 根本就不行,该多远入网还是多远入网,请问你当时是怎么测试的。
|
|
|
|
permit join 只是针对未入网的节点,如果节点入网了,也加了NV功能,那节点即使掉电重启,不需要开permit join,你试验有问题! |
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
709 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
618 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1080 浏览 1 评论
774 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
537 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
189浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
147浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
16浏览 13评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
138浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
132浏览 12评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 03:02 , Processed in 1.437171 second(s), Total 71, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号