ZigBee设备入网流程

ZigBee设备入网有关联方式和直接方式两种,我所熟悉的是关联方式,这也是最常用的方式。

关联方式

step1 设备发出Beacon Request

设备会在预先设置的几个信道里面按照指定的顺序逐信道发出这个包,看到Dest PAN ID,Dest Address都是0xFFFF,说明这是个广播包,在这些信道里面的网络都会收到它。

step2 route节点发出Beacon回复


这个回复里面有五个关键的值

  • Source PAN ID :回复Beacon的这个设备所处网络的PAN ID
  • Source Address:回复Beacon的这个设备所处网络的短地址
  • Association Permit:关联许可是否开放
  • Router Capacity:可否接入Route节点
  • End Device Capacity:可否接入End Device

能收到入网设备发出的Beacon Request的网络都会回复Beacon,并且同一个网络里面能收到入网设备Beacon Request的FFD设备都会回复Beacon。这样一来,一般入网设备会受到多个Beacon回复。那么它会按照下列的顺序,并且结合这帧Beacon的Link Quality来进行下一步动作:

  1. 入网设备首先判断Association Permit是否开放,这个是需要协调器发出全网广播,通知所有route节点这个许可开放了。
  2. 如果关联许可是开放的,再根据自己所属的设备类型来判断Router CapacityEnd Device Capacity
  3. 如果可以接入,再筛选最佳Link Quality的设备发出Association Request,这个时候就需要用Beacon里面的Source PAN ID和Source Address发出一个MAC层的单播包。

step3 设备发出Association Request

step4 route发出Association Response

step5 秘钥传输

step5 Device Announce

Device Announce的广播数据主要是通知全网相关节点有一个新设备进来了,给大家做个自我介绍,大家刷新下路由表这类的信息。并且可以看到此时的数据在NWK层加密了,就是用了上面的Transport Key传输的Standard Network Key。

ZigBee设备入网流程之关联方式的更多相关文章

  1. 【转】ZigBee终端入网方式深入分析

    前述 继之前对终端Direct Join的分析,发现很多东西还很模糊,存在很多问题.终于找到时间继续深入挖下去,这次应该比较完整地搞清了终端的入网机制,并纠正之前的几个认识偏差. 由于Z-Stack网 ...

  2. linux块设备读写流程

    在学习块设备原理的时候,我最关系块设备的数据流程,从应用程序调用Read或者Write开始,数据在内核中到底是如何流通.处理的呢?然后又如何抵达具体的物理设备的呢?下面对一个带Cache功能的块设备数 ...

  3. 热烈庆祝UE4完全免费Free---GitHub的关联方式

    热烈庆祝UE4完全免费Free---GitHub的关联方式 时间:2015-03-03 18:38:52      阅读:3007      评论:0      收藏:0      [点我收藏+] 标 ...

  4. Mybatis_resultMap的关联方式实现多表查询(一对多)

    a)在 ClazzMapper.xml 中定义多表连接查询 SQL 语句, 一次性查到需要的所有数据, 包括对应学生的信息. b)通过<resultMap>定义映射关系, 并通过<c ...

  5. 【ARM-Linux开发】ARM嵌入式设备Linux系统启动步骤和方式

    1). 简介 本文简单介绍ARM嵌入式设备基于嵌入式Linux操作系统时候的启动步骤和启动方式, 区别与X86平台,ARM平台下并没有一个标准的启动步骤,不同ARM SoC都会使用各自定义的boot ...

  6. [uboot] (番外篇)uboot串口&console&stdio设备工作流程 (转)

    [uboot] uboot流程系列:[project X] tiny210(s5pv210)上电启动流程(BL0-BL2)[project X] tiny210(s5pv210)从存储设备加载代码到D ...

  7. SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>

    此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...

  8. ios 8+ (xcode 6.0 +)应用程序Ad Hoc 发布前多设备测试流程详解

    我们开发的程序在经过simulator以及自己的iOS设备测试后,也基本完成应用程序了,这时候我们就可以把它发布出去了更更多的人去测试,我们可以在iOS平台使用ad hoc实现. 你在苹果购买的开发者 ...

  9. [Android] hid设备按键流程简述

    hexdump /dev/hidraw0就能看到usbhid设备传输过来的裸流 如:按下Input键 003ae60 0000 0096 8000 006b 0000 0000 0000 0000 * ...

随机推荐

  1. 谈谈php对象的依赖

    通过构造函数的方法 <?php //定义一个类,后面的类依赖这个类里面的方法 class play { public function playing() { echo "I can ...

  2. ES5拓展

    一.JSON拓展 1.JSON.parse(str,fun):将JSON字符串转为js对象 两个参数:str表示要处理的字符串:fun处理函数,函数有两个参数,属性名.属性值 // 定义json字符串 ...

  3. SVN错误记录

    1.SVN错误:Attempted to lock an already-locked dir 发生这个错误多是中断提交导致了,执行clear后可修复 右键项目--->team--->清理 ...

  4. django模板的变量,标签,过滤器和自定义过滤器,注释

    模板的作用是计算并输出: {{ 变量}} 当模版引擎遇到点如book.title,会按照下列顺序解析: 1.字典book['title'] 2.先属性后方法,将book当作对象,查找属性title,如 ...

  5. 『Python基础-3』变量、定义变量、变量类型、关键字Python基础-3』变量、定义变量、变量类型、关键字

    『Python基础-3』变量.定义变量.变量类型.关键字 目录: 1.Python变量.变量的命名 2.变量的类型(Python数据类型) 3.Python关键字 1. Python 变量.变量的命名 ...

  6. rails中发送ajax请求

    最近在写一个blog系统练练手,遇到一个一个问题,用户添加评论的时候想发送ajax请求,但是rails里的ajax和Python中的不太一样,Python中的ajax是用js,jquery实现的和ra ...

  7. Django时间时区问题

    在django1.4以后,存在两个概念 naive time 与 active time. 简单点讲,naive time就是不带时区的时间,Active time就是带时区的时间. 举例来说,使用d ...

  8. sql,lambda,linq语句

    实例 Code 查询Student表的所有记录. select * from student Linq: from s in Students select s Lambda: Students.Se ...

  9. 数据爬取后台(PHP+Python)联合作战

    一. 项目声明 本项目从前端,到后台,以及分布式数据抓取,乃我一个人所写,因此项目并不太完善!在语义分析以及数据处理上并不能尽如意.但是极大的减轻了编辑的工作量! 二. 项目所用技术 本项目中前端采用 ...

  10. android学习七 菜单

    1.菜单分类 常规菜单 子菜单 上下文菜单 图标菜单 辅助菜单 交替菜单 2.菜单类 andriod.view.menu   3.菜单的参数     名称:字符串标题     菜单ID:整数     ...