1、概要

Wi-Fi大家很早就接触了,但是配网(配置Wi-Fi 账户名SSID/密码)对很多人都比较陌生。因为早期的Wi-Fi设备基本都是带屏幕和输入设备的(如笔记本/手机/PDA等)。配网只需要用户直接输入路由器的SSID/password即可,简单到被人忽略。

但是随着物联网兴起,Wi-Fi被大量应用于没有人机交互方式的设备中,如智能插座等物联网终端产品中,而Wi-Fi(IEEE802.11)标准在设计之初是没有考虑这种无人机交互方式的配网的,也就是没有官方标准。配网成了一种类似于黑客找漏洞的技术,这也就导致了市面上配网的方法多种多样,且各家玩各家的,鱼龙混杂,互不相通,整体体验偏低

几个概念

狭义配网:Wi-Fi设备获取路由器信息(SSID,password等)并连接路由器的过程

绑定:用户手机APP账号与被配网设备关联的过程

广义配网:狭义配网+绑定

本文讨论的配网如未注明都指狭义配网;并省略云端参与流程。简化示意图如下:

那么市面上的配网技术有哪几种呢?按原理分商用的主要有:

  1. 一键配网;

    1. 广播包长方式;
    2. 组播地址方式。
  2. 设备热点配网;
  3. 蓝牙辅助配网;
  4. 手机热点配网;
  5. 零配;
  6. 其他(如语音配网/摄像头二维码配网等)。

阿里云IoT开发的物联网操作系统AliOS Things 支持上述1-5配网方式。

2、详细介绍

2.1、一键配网

2.1.1、流程

一键配网(Smart Config)主要原理为:

1、设备(HaaS100)进入sniffer模式(又叫混杂模式,即不过滤数据报文),监听环境中所有的802.11报文;

2、设备(HaaS100)需要在所支持的信道(通常1-13)上轮询监听(因为设备(HaaS100)不知道用户手机和目标路由器的信道);

3、捕获到符合配网规则的数据报文后停止信道轮询,尝试在在此信道上接收完成所有报文;

4、当前信道接收失败或超时重新回到步骤2.

5、数据报文接收完成则关闭sniffer模式,回到station模式并开始尝试连接路由器,狭义的配网过程完成。

2.1.2、数据传输方式

数据的承载方式有两种,一种广播方式,另一种是组播方式。下面分别介绍。

设备(HaaS100)在接入路由器之前,没有获得对应密钥,无法解密路由器局域网内的数据报文(包括连接到目标路由器的用户手机的报文)。

如下图所示,设备(HaaS100)在sniffer模式收到的数据报文主体即Frame Body部分是加密的,仅帧头和整个报文长度是不加密的。

要通过手机将配网信息传给设备(HaaS100),那么就得考虑使用这些信息。

MAC帧格式:

广播包长方式:

数据报文长度共2字节,且包头和校验和占掉了一部分字段故不能从0开始编码,而太长会导致整个数据报文冗余数据急剧增加,如折中取11bit。

具体方式为:手机端通过发送不同长度的广播报文,将配网信息编码到报文长度信息中。--有点像藏头诗吧?

组播地址方式:

如果使用地址编码,即使用下图的DA编码,那么就是组播方式。

ieee802.11将224.0.0.0 ~ 239.255.255.255划定为组播保留地址,在以太网中,目的IP地址为组播保留地址的数据包,目的MAC地址需要做一个映射。具体做法是,MAC地址的3个高字节固定为01:00:5E,后三个字节依次为组地址的从高字节起的第二字节取低7位、组地址的第三字节和第四字节,例如组地址225.215.145.230对应的MAC地址为01:00:5E:57:91:E6。所以有23个bit可用户编码。