讲一讲WiFi快连、SmartConfig、SmartConnect
最近要给公司同事们培训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的更多相关文章
- 经典面试题|讲一讲JVM的组成
JVM(Java 虚拟机)算是面试必问的问题的了,而但凡问 JVM 一定会问的第一个问题就是:讲一讲 JVM 的组成?那本文就注重讲一下 JVM 的组成. 首先来说 JVM 的组成分为,整体组成部分和 ...
- JAVA经典面试题:讲一讲JVM的组成
JVM(Java 虚拟机)算是面试必问的问题的了,而但凡问 JVM 一定会问的第一个问题就是:讲一讲 JVM 的组成?那本文就注重讲一下 JVM 的组成. 首先来说 JVM 的组成分为,整体组成部分和 ...
- 关于RNA-Seq数据去接头(Adapter)这事需要讲一讲
关于RNA-Seq数据去接头(Adapter)这事需要讲一讲 RNA-Seq adapter barcode cutadapt 首先来了解一下三个概念: 1.adapter是一段短的序列已知的核酸链, ...
- 关于Android模块化我有一些话不知当讲不当讲
关于Android模块化我有一些话不知当讲不当讲 最近公司一个项目使用了模块化设计,本人参与其中的一个小模块开发,但是整体的设计并不是我架构设计的,开发半年有余,在此记录下来我的想法. 关于Andro ...
- 极客时间 Mysql实战45讲 07讲行锁功过:怎么减少行锁对性能的影响笔记 极客时间
极客时间 Mysql实战45讲 07讲行锁功过:怎么减少行锁对性能的影响笔记 极客时间极客时间 Mysql实战45讲 07讲行锁功过:怎么减少行锁对性能的影响笔记 极客时间 笔记体会: 方案一,事务相 ...
- Mysql实战45讲 05讲深入浅出索引(下)极客时间 读书笔记
极客时间 Mysql实战45讲 04讲深入浅出索引(下)极客时间 笔记体会: 回表:回到主键索引树搜索的过程,称为回表覆盖索引:某索引已经覆盖了查询需求,称为覆盖索引,例如:select ID fro ...
- Mysql实战45讲 04讲深入浅出索引(上)读书笔记 极客时间
极客时间 Mysql实战45讲 04讲深入浅出索引 极客时间(上)读书笔记 笔记体悟 1.索引的作用:提高数据查询效率2.常见索引模型:哈希表.有序数组.搜索树3.哈希表:键 - 值(key - v ...
- 面试必杀技,讲一讲Spring中的循环依赖
本系列文章: 听说你还没学Spring就被源码编译劝退了?30+张图带你玩转Spring编译 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configu ...
- 送命题:讲一讲Mybatis插件的原理及如何实现?
持续原创输出,点击上方蓝字关注我吧 目录 前言 环境配置 什么是插件? 如何自定义插件? 举个栗子 用到哪些注解? 如何注入Mybatis? 测试 插件原理分析 如何生成代理对象? 如何执行? 总结 ...
随机推荐
- Android Activity作为dialog对话框的使用详细介绍
Activity做为Android应用层四大组件的重要组成部分,它的灵活性.可扩性无论是在应用还是游戏方面都得到了广泛应用,本文主要介绍Activity作为dialog对话框 的使用方法进行说明. 本 ...
- bindColumn、bindParam与bindValue的区别
bindColumn:绑定一列到一个 PHP 变量(类似于list()函数为变量赋值) <?php //连接数据库函数 functionconnect() { try { $dbh = new ...
- @ResponseBody 返回中文乱码
第一种解决方法:在@RequestMapping注解添加produces属性 @RequestMapping(value = "testPersonalValidtor.do",p ...
- java浅析
基本结构 1.以字节码的方式运行在虚拟机上,不是直接编译成机器码运行,所以性能上差于 C 但是高于 python这样的解释形语言. 笔者大学期间学习过 汇编和C,工作后使用python,对这两种语言有 ...
- mysql_数据查询_连接查询
连接查询 1.连接(join) 也称θ连接,从两个关系的笛卡尔积中选择属性间满足一定条件的元组. 等值连接:θ为“=”的连接运算称为等值连接.从关系R和S的广义笛卡尔积中选取A.B属性值相等的元组. ...
- 如何将本地项目上传到gitlab上?
git push后需要输入用户名,密码 这是上传成功显示的页面 打开gitLab项目地址检查代码是否被正确上传 上传前: 上传后 这就完成将项目上传到gitlab了
- (C/C++学习)6.数组指针和指针数组
说明:int (*p)[4] 和 int *p[4](数组指针和指针数组),如果你是一个初学者,也许当你看到这两个名词的时候,已经懵了.其实,只要你理解了其中的含义.这两个名词对你来说会相当简单并且很 ...
- hdu2001 计算两点间的距离【C++】
计算两点间的距离 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- 优雅到骨子里的Requests
例子与特性 可以说Requests最大的特性就是其风格的简单直接优雅.无论是请求方法,还是响应结果的处理,还有cookies,url参数,post提交数据,都体现出了这种风格. 以下是一个简单例子: ...
- bupt summer training for 16 #8 ——字符串处理
https://vjudge.net/contest/175596#overview A.设第i次出现的位置左右端点分别为Li,Ri 初始化L0 = 0,则有ans = sum{ (L[i] - L[ ...