接着上回继续分析公司遗留的问题四,问题四的需求就是,假如其中一个网关坏了,拿了一个新的网关,能够替换接管旧网关下面的所有设备,由于搞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疑难问题定位以及思路方法分享 (四)相关推荐

  1. Zigbee疑难问题定位以及思路方法分享 (一)

    最近换了家新公司,花了两个月从不懂ZigBee到解决了不少遗留偶发BUG,有了不少心得体会,下面分享下自己定位思路,以及分析问题的方法. 刚进公司,接手了另一个工程师做的ZigBee项目(采用CC25 ...

  2. Foxmail 本地邮箱密码破解思路方法分享

    本文主要以POP3为例讲解, 其他邮件协议可以参考思路, 自行尝试解决. 最近发生了一件比较尴尬的事, 公司邮箱密码忘记了, 又不想麻烦IT部门更改, 就想尝试下自己破解下本地的密码. (反正密码已经 ...

  3. python selenium定位元素方法,python + selenium 练习篇 - 定位元素的方法

    1.利用ID定位元素(能直接通过ID来定位的元素比较少) # coding=utf-8 from selenium import webdriver driver = webdriver.Chrome ...

  4. SAP UI5 应用开发教程之三十九 - SAP UI5 应用出现白屏的一些常见错误和分析方法分享试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  5. ios8 定位问题解决思路

    ios8 定位问题解决思路: 1.plist文件新加两条变量: a.NSLocationAlwaysUsageDescription=YES;    b.NSLocationWhenInUseUsag ...

  6. 资源丨MySQL故障排查思路方法PPT视频24问答

    昨晚,墨天轮邀请到MySQL技术顾问崔虎龙做了题为<一小时掌握MySQL故障排查思路方法>的直播分享,引起了大家的广泛关注,直播后很多小伙伴来找小编询问PPT.思维导图.视频等,在这里小编 ...

  7. 张宏 :移动机器人全局定位技术与方法是啥?道翰天琼认知智能机器人平台API接口大脑为您揭秘。

    张宏 :移动机器人全局定位技术与方法是啥?道翰天琼认知智能机器人平台API接口大脑为您揭秘. 人工智能不仅要复现人类的大脑,还要构建容纳智能大脑的身体,机器人将是人工智能的完全体.8月7日-8月9日, ...

  8. 张宏 :移动机器人全局定位技术与方法是啥?道翰天琼认知智能机器人平台API接口大脑为您揭秘-1。

    人工智能不仅要复现人类的大脑,还要构建容纳智能大脑的身体,机器人将是人工智能的完全体.8月7日-8月9日,2020年全球人工智能和机器人峰会(简称"CCF-GAIR 2020")在 ...

  9. 楚留香获取服务器信息未响应,楚留香手游后期输出乏力解决方法分享

    楚留香手游后期输出乏力解决方法分享,很多小伙伴对这个游戏中的后期输出乏力不是很清楚,不知道他是干嘛的.小编就为大家详细的介绍下这个游戏中的后期输出乏力,还不知道的小伙伴千万不要错过! 楚留香武当后期输 ...

最新文章

  1. hive in 写法/linux OR CDH如果查看hive的版本
  2. 《水晶报表自动补空行,补格线思路》 【转】
  3. opencv KNN 模型不能保存的问题
  4. 洛谷P1182 数列分段`Section II`
  5. centos 安装低版本内核_Linux 升级内核
  6. 记腾讯互娱网站布局(3)
  7. 智能驾驶系统是怎样看懂交通标志的?3张流程图给你讲明白
  8. 标准库函数和系统调用的区别
  9. WCF 第一章 基础 完成一个WCF服务客户端
  10. php主动推送弹幕_源起网-织梦发布文档主动百度推送熊掌推送批量推送
  11. CI框架入门中的简单MVC例子
  12. 微软代码审查工具_微软代码审查的工作方式
  13. 查看电脑的补丁以及win10如何进入dos系统
  14. 2022-Java学习路线梳理
  15. 原则与思维模型--《思维模型》0
  16. YouTube Java API入门
  17. 小强统一认证中心-项目工程介绍
  18. CSS进阶篇——具体性 (specificity)
  19. 【读书分享】吴军:《信息传》
  20. 用 JavaScript 实现手势库 — 手势动画应用【前端组件化】

热门文章

  1. swift 制作动态壁纸(live)实况图
  2. java中的DOM4J解析XML
  3. 服务无法在此时接受控制信息
  4. 【JAVA 动态创建风水罗盘 超精华Swing项目方案-项目目录 - 文章03】
  5. 三菱a系列motion软体_三菱M70第四轴追加参数设定一览表
  6. winform程序中e.Cancel有什么意义
  7. post 请求 通过 Ajax 下载文件
  8. 解决Log4j日志文件输出到了前一天的备份文件里
  9. 【今日CV 计算机视觉论文速览 第102期】Fri, 19 Apr 2019
  10. 使用realsensed455修改分辨率问题