最近要给公司同事们培训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. Java&Xml教程(六)使用JDOM解析XML文件

    JDOM 提供了非常优秀的Java XML API来更方便的读取.修改.生成XML文档.JDOM还提供了包装类供用户从SAX.DOM.STAX事件解析.STAX流解析中选择具体的实现. 在本教程中,我 ...

  2. Android通过透明度设置背景变暗

    变暗 WindowManager.LayoutParams lp=getWindow().getAttributes(); lp.alpha=0.3f; getWindow().addFlags(Wi ...

  3. JS——锚点的运用

    锚点的两种形式: 1.<a href="#a">点击到锚点</a> 2.window.location.hash = "#a"; 最后都 ...

  4. [转]Learn SQLite in 1 hour

    转载说明: 1.原文地址:http://www.askyb.com/sqlite/learn-sqlite-in-1-hour/ 2.译文地址:http://www.oschina.net/quest ...

  5. javascript的严格模式:use strict

    ECMAscript 5添加的运行模式,禁止一些非标准.不安全的操作. <script> "use strict"; console.log("这是严格模式. ...

  6. HDU_5723_最小生成树+任意两点距离的期望

    Abandoned country Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  7. SpringMVC知识点总结一(非注解方式的处理器与映射器配置方法)

    一.SpringMVC处理请求原理图(参见以前博客) 1.  用户发送请求至前端控制器DispatcherServlet 2.  DispatcherServlet收到请求调用HandlerMappi ...

  8. c3p0 连接池配置

    C3P0 可使用properties 配置文件方式,将c3p0.properties放在classpath目录下,如果为WEB应用,放在WEB-INF\classes下 c3p0.properties ...

  9. php第二十一节课

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

  10. 模拟Spring容器的getBean方法(Maven工程)

    Spring容器的getBean方法是通过反射机制实现的,下面的测试程序模拟getBean的实现原理. 步骤一:pom.xml文件配置解析XML文件的dom4j.jar 步骤二:XML文件中配置bea ...