Zigbee疑难问题定位以及思路方法分享 (四)
接着上回继续分析公司遗留的问题四,问题四的需求就是,假如其中一个网关坏了,拿了一个新的网关,能够替换接管旧网关下面的所有设备,由于搞ZigBee也有两个月了,802.15协议以及ZigBee协议也蛮熟悉了,抓包也抓过了,对ZigBee通讯多少有些了解。
实现该问题思路有几点:1、理论上,入网成功后,设备通讯都是短地址,网关时0x0000,数据包里面有panID,推测不同的网络是通过panID来区分的;2、读取device以及协调器内FLASH的NV数据,发现都记录对方的MAC地址,依次类推,如果换网关,用相同的PANID和信道,即使能通讯上,但是如果一旦掉线,或者重启,发送NLME_OrphanJoinRequest包,新网关也不会接管剩下的设备。
首先试了一下方法1,果然旧网关把PANID与信道导出后,导入到新网关,旧网关下面的设备都上报到新网关上,但是有一点,新网关没有分配旧的网络地址,因此不能查到设备的MAC地址,无法向服务器上报数据(上报数据是用MAC地址来区分不同的设备,因为网络地址会变,MAC地址不会变)。但是可以记住该网络地址,下发给设备信息,这样就很好的传送数据。
试了一下方法2,果然只有双发都存有对方的MAC地址后,在设备端发送NLME_OrphanJoinRequest,网关才能接管,设备也才同意被接管。
根据以上两点,有了一些思路,修改地方如下
1、更换网关后,导入旧网关的信道和panId,赋值给_NIB.nwkPanId与_NIB.nwkLogicalChannel,并执行NLME_UpdateNV刷新网络。
2、网关端每次收到设备上报的数据,需要通过AddrMgrExtAddrLookup查找该设备网络地址对应的MAC地址,如果查不到,下发给设备端命令,让其走Rejoin的路线(根据上一节,Rejoin步骤已经修改NLME_ReJoinRequest为ZDO_MultipleJoinReq,即重新beacon,然后associate加入之前加入过的网络,判断之前加入的网络是通过panID实现的,因为新旧网络panID一样,因此通过一系列操作,加入成功),从而实现自动绑定到新网关上,从而实现替换,但是有个前提,不能让旧网关与新网关都在一个环境下,如果在一个环境下,需要把新网关重新初始化网络或者更换panID,来实现干扰,802.15协议也是通过panID来区分不同的局域网。
实验之后,效果很好。
Zigbee疑难问题定位以及思路方法分享 (四)相关推荐
- Zigbee疑难问题定位以及思路方法分享 (一)
最近换了家新公司,花了两个月从不懂ZigBee到解决了不少遗留偶发BUG,有了不少心得体会,下面分享下自己定位思路,以及分析问题的方法. 刚进公司,接手了另一个工程师做的ZigBee项目(采用CC25 ...
- Foxmail 本地邮箱密码破解思路方法分享
本文主要以POP3为例讲解, 其他邮件协议可以参考思路, 自行尝试解决. 最近发生了一件比较尴尬的事, 公司邮箱密码忘记了, 又不想麻烦IT部门更改, 就想尝试下自己破解下本地的密码. (反正密码已经 ...
- python selenium定位元素方法,python + selenium 练习篇 - 定位元素的方法
1.利用ID定位元素(能直接通过ID来定位的元素比较少) # coding=utf-8 from selenium import webdriver driver = webdriver.Chrome ...
- SAP UI5 应用开发教程之三十九 - SAP UI5 应用出现白屏的一些常见错误和分析方法分享试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
- ios8 定位问题解决思路
ios8 定位问题解决思路: 1.plist文件新加两条变量: a.NSLocationAlwaysUsageDescription=YES; b.NSLocationWhenInUseUsag ...
- 资源丨MySQL故障排查思路方法PPT视频24问答
昨晚,墨天轮邀请到MySQL技术顾问崔虎龙做了题为<一小时掌握MySQL故障排查思路方法>的直播分享,引起了大家的广泛关注,直播后很多小伙伴来找小编询问PPT.思维导图.视频等,在这里小编 ...
- 张宏 :移动机器人全局定位技术与方法是啥?道翰天琼认知智能机器人平台API接口大脑为您揭秘。
张宏 :移动机器人全局定位技术与方法是啥?道翰天琼认知智能机器人平台API接口大脑为您揭秘. 人工智能不仅要复现人类的大脑,还要构建容纳智能大脑的身体,机器人将是人工智能的完全体.8月7日-8月9日, ...
- 张宏 :移动机器人全局定位技术与方法是啥?道翰天琼认知智能机器人平台API接口大脑为您揭秘-1。
人工智能不仅要复现人类的大脑,还要构建容纳智能大脑的身体,机器人将是人工智能的完全体.8月7日-8月9日,2020年全球人工智能和机器人峰会(简称"CCF-GAIR 2020")在 ...
- 楚留香获取服务器信息未响应,楚留香手游后期输出乏力解决方法分享
楚留香手游后期输出乏力解决方法分享,很多小伙伴对这个游戏中的后期输出乏力不是很清楚,不知道他是干嘛的.小编就为大家详细的介绍下这个游戏中的后期输出乏力,还不知道的小伙伴千万不要错过! 楚留香武当后期输 ...
最新文章
- hive in 写法/linux OR CDH如果查看hive的版本
- 《水晶报表自动补空行,补格线思路》 【转】
- opencv KNN 模型不能保存的问题
- 洛谷P1182 数列分段`Section II`
- centos 安装低版本内核_Linux 升级内核
- 记腾讯互娱网站布局(3)
- 智能驾驶系统是怎样看懂交通标志的?3张流程图给你讲明白
- 标准库函数和系统调用的区别
- WCF 第一章 基础 完成一个WCF服务客户端
- php主动推送弹幕_源起网-织梦发布文档主动百度推送熊掌推送批量推送
- CI框架入门中的简单MVC例子
- 微软代码审查工具_微软代码审查的工作方式
- 查看电脑的补丁以及win10如何进入dos系统
- 2022-Java学习路线梳理
- 原则与思维模型--《思维模型》0
- YouTube Java API入门
- 小强统一认证中心-项目工程介绍
- CSS进阶篇——具体性 (specificity)
- 【读书分享】吴军:《信息传》
- 用 JavaScript 实现手势库 — 手势动画应用【前端组件化】