最近要给公司同事们培训WiFi快连技术,整理了相关资料,也分享在博客这,献给有缘人。

前言

现在的智能硬件产品,以WiFi品类居多,这些WiFi硬件没有人机交互界面,但设备要上网肯定要配置SSID等相关信息,于是WiFi快连应运而生。

事实上在2010年,wifi联盟就推出过简单配置的协议规范《WiFi Simple Configure》,通过输入PIN码或者按键来接入AP,这技术被称为WPS。可惜这个功能需要路由器支持,市面上一些路由器不支持,导致没有大规模推行。

快连不需要路由器支持,且更加简化,所以获得了迅速的发展。

转载请注明:http://blog.csdn.net/sadshen/article/details/47049129

一、什么是WiFi快连

那什么是快连呢?如下图中,手机(设备B)已经接入了AP,而设备A是一个信息孤岛。手机将AP的信息直接发送给设备A,设备A就可以接入AP了。

我们可以这样认为,WiFi快连就是接入AP的手机快速配置设备,使其接入AP的方式。

示例1-小蚁摄像头

下图是小蚁摄像头的APP,在这个界面已自动获取了SSID,用户只要输入密码即可进行快连。

示例2-小米插座

下图是小米插座的介绍界面,这里使用的也是WiFi快连技术,配置简单。

示例3-BroadLink插座

和小米闹掰的BroadLink,他们的插座也是一样的介绍。

二、WiFi快连技术的横向了解

事实上这些硬件厂商的快连技术都是依托上游的芯片方案商,我这里把最近接触的一些厂商给列出来。他们的快连技术原理上都类似,但各家都分别给这项技术取了名字。

TI作为最牛逼的厂商,是最早开始攻克这项技术的,他们称之为SmartConfig,这也是目前最多的叫法。

这里重点提一下微信,微信的口号是连接一切,作为物联网大海中的一艘航空母舰,自然也想在WiFi快连这块实现大一统。我想京东、苹果应该都有出了相关的标准方案,但我还没做过接入,这里就先不说。AirKiss的相关资料都列在网站上:http://iot.weixin.qq.com/ 。可以看到他已经与主流的模块都做了对接,使用对应芯片方案的硬件都可以通过微信实现快连。

三、WiFi快连技术的纵向了解-实现原理

到了最重头的部分,用通俗易懂的方式讲解理论知识,一直是本尊的强项。

实现原理是这样:手机通过UDP广播,将AP的相关信息组帧发出。而WiFi模块一直处于UDP监听状态。获取到AP信息之后,WiFi模块便可以接入AP了。

这里有一个难点是,如果WLAN都是不加密的话,那UDP直接把相关信息发出来就好,但可惜路由器AP的加密方式是不固定的,模块没法知道UDP数据是何种加密方式,因此没办法解析出DATA信息。

如下是802.2的封装格式。

所以,DATA不行,聪明的人类打算从其他字段下手,大部分字段手机端无法获得权限,最适合的只剩下长度字段。

这里举个例子,比如要发送“1,2,3”,即[0x31, 0x32, 0x33]。那么应该发送如下数据:

四、WiFi快连的衍生

BroadLink早期过度宣传,将WiFi快连技术申请专利,目前还在实审中,以我看来BroadLink采用的是CC3000方案,这个技术是TI的,所以我觉得它应该不会通过。

现在还能查到他们的专利:

当然,国内还有许多的厂家将这项技术进行了专利申请,还真是一种好玩的现象。

讲一讲WiFi快连、SmartConfig、SmartConnect的更多相关文章

  1. 经典面试题|讲一讲JVM的组成

    JVM(Java 虚拟机)算是面试必问的问题的了,而但凡问 JVM 一定会问的第一个问题就是:讲一讲 JVM 的组成?那本文就注重讲一下 JVM 的组成. 首先来说 JVM 的组成分为,整体组成部分和 ...

  2. JAVA经典面试题:讲一讲JVM的组成

    JVM(Java 虚拟机)算是面试必问的问题的了,而但凡问 JVM 一定会问的第一个问题就是:讲一讲 JVM 的组成?那本文就注重讲一下 JVM 的组成. 首先来说 JVM 的组成分为,整体组成部分和 ...

  3. 关于RNA-Seq数据去接头(Adapter)这事需要讲一讲

    关于RNA-Seq数据去接头(Adapter)这事需要讲一讲 RNA-Seq adapter barcode cutadapt 首先来了解一下三个概念: 1.adapter是一段短的序列已知的核酸链, ...

  4. 关于Android模块化我有一些话不知当讲不当讲

    关于Android模块化我有一些话不知当讲不当讲 最近公司一个项目使用了模块化设计,本人参与其中的一个小模块开发,但是整体的设计并不是我架构设计的,开发半年有余,在此记录下来我的想法. 关于Andro ...

  5. 极客时间 Mysql实战45讲 07讲行锁功过:怎么减少行锁对性能的影响笔记 极客时间

    极客时间 Mysql实战45讲 07讲行锁功过:怎么减少行锁对性能的影响笔记 极客时间极客时间 Mysql实战45讲 07讲行锁功过:怎么减少行锁对性能的影响笔记 极客时间 笔记体会: 方案一,事务相 ...

  6. Mysql实战45讲 05讲深入浅出索引(下)极客时间 读书笔记

    极客时间 Mysql实战45讲 04讲深入浅出索引(下)极客时间 笔记体会: 回表:回到主键索引树搜索的过程,称为回表覆盖索引:某索引已经覆盖了查询需求,称为覆盖索引,例如:select ID fro ...

  7. Mysql实战45讲 04讲深入浅出索引(上)读书笔记 极客时间

    极客时间 Mysql实战45讲 04讲深入浅出索引 极客时间(上)读书笔记  笔记体悟 1.索引的作用:提高数据查询效率2.常见索引模型:哈希表.有序数组.搜索树3.哈希表:键 - 值(key - v ...

  8. 面试必杀技,讲一讲Spring中的循环依赖

    本系列文章: 听说你还没学Spring就被源码编译劝退了?30+张图带你玩转Spring编译 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configu ...

  9. 送命题:讲一讲Mybatis插件的原理及如何实现?

    持续原创输出,点击上方蓝字关注我吧 目录 前言 环境配置 什么是插件? 如何自定义插件? 举个栗子 用到哪些注解? 如何注入Mybatis? 测试 插件原理分析 如何生成代理对象? 如何执行? 总结 ...

随机推荐

  1. no斜体 背景图片坐标

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. [Windows Server 2012] 安装SQL Server 2012

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装SQL S ...

  3. Java_Web三大框架之Hibernate+jsp+selvect+HQL登入验证

    刚开始接触Hibernate有些举手无措,觉得配置信息太多.经过一个星期的适应,Hibernate比sql简单方便多了.下面做一下Hibernate+jsp+selvect+HQL登入验证. 第一步: ...

  4. Android中Webview使用经验总结

    很早前就喜欢在Android中使用Webview组件结合JS来做应用,总结了一些不错的小经验,在这里持续更新,自己备忘,也希望给其他需要的同学一些参考- 1.添加权限 要用Webview,确认你在** ...

  5. CAD把一个DWG文件中的多个图框一次性全部插入到打开的DWG文件中

    主要用到函数说明: _DMxDrawX::InsertBlock 向控件数据库中插入一个图块,不用它插入匿名块,详细说明如下: 参数 说明 BSTR pszDwgFileName 图块定义的dwg 文 ...

  6. Mapreduce代码疑点(1)

    一.Hadoop MultipleInputs.addInputPath 读取多个路径 https://blog.csdn.net/t1dmzks/article/details/76473905 M ...

  7. uva 1585 Score(Uva-1585)

    vj:https://vjudge.net/problem/UVA-1585 不多说水题一个o一直加x就加的变为0 我的代码 #include <iostream> #include &l ...

  8. Spring 注解注入的几种方式(转)

    平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程 ...

  9. 使用Scrapy爬取图书网站信息

    重难点:使用scrapy获取的数值是unicode类型,保存到json文件时需要特别注意处理一下,具体请参考链接:https://www.cnblogs.com/sanduzxcvbnm/p/1030 ...

  10. Linux自动化之Cobbler补鞋匠安装

    cobbler介绍:   快速网络安装linux操作系统的服务,支持众多的Linux发行版:Red Hat.   Fedora.CentOS.Debian.Ubuntu和SuSE,也可以支持网络安装w ...