设备配网(启动配置)
设备配网过程
-
首先,需要配网的设备先进行未配网广播,这个广播不同于普通的ble广播,广播数据结构类型(AD Type)为mesh Beacon,专门用于mesh未配网广播和网络安全广播,数值为0x00时表示未配网广播(Unprovisioned Device beacon);0x01时表示网络安全广播(Secure Network beacon)。
当数值为0x00时,广播数组包含字段如下图所示:
device UUID是每个设备特有的128位UUID;OOB information 用于给启动配置设备表明自己支持OOB类型,每一位表示 一 种类型,如下表所示:
URI Hash:没整明白,,,,,望知道的评论区回复一下》》
-
邀请------ 启动配置设备(手机、平板或者其他的配网节点)收到设备的未配网广播后会发出一个邀请入网类型的PDU,设备收到后回复一个Provisioning Capabilities类型的消息,表明设备的功能(元素数量、支持的算法(FIPS P-256 Elliptic Curve)、PublicKey格式、OOB形式)
-
交换公共密钥------启动配置设备在收到设备的Provisioning Capabilities PDU后,会判断自己能否给设备配网,当有能力时会对设备发送Provisioning Start PDU,消息字段如下表所示,用于表明自己按设备的能力已经配置了加密方式OOB方式等
根据设备public key支持的格式,分为两种交换方式,
①public key字段值为0–No OOB Public Key is used,使用下图所示方式直接交换公共密钥
②public key字段值为1–OOB Public Key is used,使用下图所示方式在OOB信道中交换公共密钥
-
认证------认证需要根据设备的OOB能力(output OOB、input OOB、static OOB)选择不同的方式,可能是闪几下灯,输个数啥的
天猫精灵的开发者平台阿里精灵采用的static OOB方式,Authentication value计算公式:
AuthValue = SHA256(Product ID,MAC,Secret)。即:将ProductID,MAC,Secret三元组通过字符串用英文逗号连接,然后进行SHA256摘要计算,取前16字节。注:这里用于计算SHA256的英文字母全部为小写。
-
分配数据------认证完之后,启动配置设备就可以给待入网设备发送加入网络相关的信息了(前奏那么长,重点终于来到了)。认证成功完成后,会通过两台设备的私有密钥和交换的对等公共密钥生成会话密钥。会话密钥用于加密分配数据,包括称网络密钥(NetKey)、单播地址等。分配的数据如下表所示,
完事之后待入网设备给启动配置设备发送一条Provisioning Complete PDU结束整个配网过程。
配网PDU
在整个配网过程中有统一的PDU格式,有三个字段,各个字段的大小和解释如下表所示:
Type表示具体的PDU类型,共有10中类型,如下表所示:
配网PDU如何传输呢
字节序:大端
由于启动配置设备可能不支持Mesh(手机),为了解决这个问题,协议在配网中设置了两个承载:PB-ADV、PB-GATT,对于不支持Mesh的启动配置设备,待入网的设备通过PB-GATT承载传输配网信息。
。
。