极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 29081|回复: 1

智能硬件Wi-Fi 1秒配网的技术大揭秘-氦氪云技术连载

[复制链接]
发表于 2015-11-4 10:09:20 | 显示全部楼层 |阅读模式
本帖最后由 氦氪空间 于 2015-11-4 10:11 编辑

(物联网技术干货连载长文,亮点在最后,需要耐心看完)
自从物联网问世以来,如何使得物能够联网,有了很多的方式,目前运用非常广的是Wi-Fi,今天在这个方面抛砖引玉。在不能修改传统硬件设备外观的情况下,要让设备的Wi-Fi模块连接路由器通常有2种形式:
1. smartconfig (Wi-Fi一键配网)
2. AP 软路由模式

首先说明一下,因为在使用时有3个设备:
1. 路由器(R)
2. 手机APP(A)
3. 智能硬件家电设备(D)

我们需要通过手机APP (A)把家里面的路由器(R)密码和SSID发送给智能硬件(D),然后让智能硬件能够连接路由器(R),才能上网被所谓的云端控制管理。

最古老的一种方式是 AP软路由模式,就是让智能硬件(D),把自己变成路由器,类似iphone里面开启热点功能一样,这样用户手机APP(A)就可以直接连接智能硬件(D),连接了之后当然就是往智能硬件上面发送家里面路由器(R)的SSID和密码了。
但是这个过程中在APP上面操作是比较繁琐的,特别是苹果的IOS系统,因为它不允许调用系统API进行 Wi-Fi 切换,所以必须要用户切换到设置界面进行切换。
而安卓系统稍微好一点,安卓系统可以通过调用系统API进行切换。
所以这个过程通常需要3步:
1、切换Wi-Fi到智能硬件的AP热点
2、选择上级路由器的SSID 并填写好密码提交
3、切换回原来的路由器上面。

后来,TI发掘出了一种私密通讯技术,最早叫smartconfig,打破了上述繁琐的配置方式,让APP只需要填写好路由器密码即可连接上,后来又有公司移植到其他的模块芯片上面,笔者2014年初的时候还见到过广东有这样的公司卖SDK,一个要卖10W,真心坑。

OK 接下来咱们解说一下这个smartconfig就是所谓的一键配置到底是什么鬼?速度比AP模式快,为什么呢?

所谓的smartconfig就是首先WI-FI硬件模组会进入混杂模式,什么是混杂模式?这里先不说;先说一下Wi-Fi,Wi-Fi是无线网,无线数据是在空中传播的,也就是说咱们也可以接收所有的无线数据(当然接收了不一定能够看得到,因为有加密嘛)。
扯回来说一下这个混杂模式,混杂模式就是让硬件模组把所有的WIFI数据都接收回来。


好了,接收回来之后但是数据加密了看不了怎么办?嗯~!凉拌!
因此,TI的工程师们找啊找,发现在加密的空中(Wi-Fi)数据里面,也有内容是明文的,那就是数据包的长度;那么好了,长度是明文的,他们就想到一个奇技淫巧,把路由器密码和SSID编码在长度里面,而且打一个标记;
那么硬件模组只需要进入混杂模式,接收回来的数据发现这个标记的话就做解码动作,获取SSID和密码。

这里有2个谜题,在下文中会一一解答。
谜题1:智能设备连接了路由之后,怎么让手机知道他已经连接路由器了呢?
谜题2:智能设备可以上网连接云端,但是这个设备是谁的呢,怎么知道?

回头说一下现在很火很便宜的ESP8266 芯片:
官方的SDK提供3种连接方式,smartconfig  esptouch 微信airkiss
   
(1)smartconfig 采用UDP广播模式(UDP接收IP地址是255.255.255.255),esp8266先scan 下AP ,得到AP的相关信息,如工作的channel ,然后配置wifi芯片工作在刚才scan到的channel上去接收UDP包,如果没有接收到,继续配置ESP8266工作在另外的channel上,如此循环,直到收到UDP包为止,为什么要提前进行SCAN 下WIFI AP呢?就是为了提高配置效率。假设当前网络中只有两个AP,一个AP工作在CHANEL1,另外个ap工作在channel13,我们现在需要配置智能硬件连接到AP2,就是channel13上,如果不提前scan就需要从1--13轮询扫描,比较浪费时间。如果扫描了AP,芯片只需在channel1和channel13两个通道扫描,可加快获取到UDP包;
(2)
esptouch 采用UDP组播模式(UDP接收IP地址是234.1.1.1, 234.2.2.2,234.3.3.3 to 234.100.100.100
UDP广播模式跟组播的差异就不用说了,这是基本的TCP/IP东西,如果从安全角度看 UDP组播会安全点,当然目前 这方面还不需要考虑。
(3)airkiss呢?嘿嘿 微信的东西,自己去抓包研究一下,反正也不难,不过可惜不开放,无法直接使用。

而氦氪是一家有梦想有技术的公司,我们优先考虑客户的利益,我们考虑如果采用airkiss会被微信限制,如果采用esptouch则会被芯片公司自己的方式局限,smartconfig每家实现方式多多少少都不一样,这样使用smartconfig的企业会各种踩坑,因此氦氪推出了一种自己的配网方式hekrconfig,速度快的同时并且完全开放源代码给合作的企业。
高潮来了~!首先讲讲如何速度快?过往的配网方式是把数据编码在长度里面,而氦氪家的hekrconfig是另外一种方式,把数据编码在UDP数据包的地址中,不需要从众多的数据包中逐个逐个解码长度做判断,而是可以通过MAC地址过滤直接精准获取数据后直接解码,因此可以达到1秒内完成SSID和密码的传输
氦氪开源资料可以到github中查看:github.com/HEKR-Cloud/

还没完呢,干货再来了,记得上面的谜题1么?咱们来做一下解答,智能设备连接了路由器之后,怎么通知手机我已经完成了wifi配置?目前airkiss和esptouch的做法是:发一个广播包,如果手机收到了回复的广播包之后,就认为设备已经配网成功。
那谜题2呢?目前一般厂家的做法是做一个二维码(京东微连,微信等),然后让手机APP扫描二维码,APP告诉云端"那个设备是我的",然后云端做设备和用户之间的绑定,二维码里面就是设备的唯一ID,每个设备都不一样,这个扫码绑定看这很屌,但是他们完全想不到中小厂家生产之中的如何如何的麻烦,需要把设备的二维码打印出来,一个一个贴,成本提高了,出错也多了,如果一个标签贴错了会导致用户永远无法使用该设备,一个错了后面一批次产品都会出错,后果严重!

那么我们来讨论一下氦氪家是如何解决这样的问题的,再次强调一下,氦氪是物联网中的苹果和谷歌:苹果的理念,软硬结合;谷歌的技术,开放前沿。
干货来了,在标准的wifi配网完成之后,APP会给智能设备发送一个用户标识,告诉智能设备你是哪个用户的,你连接云端之后就是某个用户的所有资产,然后设备连接云端同时会带上加密的用户标识符。因此不需要扫码,对,就这么简单!
下面可以看几个配网速度测评视频:
    hekr-config配网5秒,外加设置用户标识0.5秒,总体5.5秒
     airkiss配网12秒多
     esptouch配网13秒
     以上测评均为同一个路由器,连接路由器时间大概3~5秒右,因为在发广播包的时候路由器压力导致连接会变慢。
氦氪云联合安信可为家电家居厂家客户推出一体化极速解决方案,苦逼的嵌入式开发工程师及老板和负责人只用做监工与沟通协调工作即可:
无需研究各种物联云的对接接口
无需为各种坑爹的物联网云平台服务买单
无需研究开发esp等模块固件的开发文档
无需对比市面上各种高价的透传模块
无需研究微信对接开发的接口
无需花额外的钱与人力开发并维护可能过几个月就要被用户舍弃的app
……….
氦氪云联合安信可为厂家提供高效、低价、免费的软硬件一体化物联网智能解决方案
技术解答与支持QQ:2787648661
Esp8266wifi模块询价QQ:849742688

氦氪云技术下期连载:
模块小而美的设计,中国硬件也能有的情怀
智能硬件对接微信,二维码导致生产困难解决之道
氦氪家的Gemini是个什么鬼?云端定义硬件功能的新趋势





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-1-20 14:35:44 | 显示全部楼层
无法加入qq,群机器人直接拒绝加入
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 21:17 , Processed in 0.045773 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表