什么是一件配网?
一键配网是个啥,干什么用的?
万物互联的时代,物联网是大势所趋了。是个设备就想要联网,但是也不能给每个设备都设计一个屏幕和键盘,首先成本太高,其次只用来输入wifi名字密码未免太浪费。最开始的解决办法就是让设备工作在AP模式,类似一个wifi路由器,手机连接AP,然后再打开通讯用的软件输入wifi名字密码。虽然可行,但总归还是有些许的麻烦。于是一键配网就诞生了,只要设备通电,然后局域网内广播一下(APP、扫码、微信等),设备就联网了。
设备没有连上wifi那它是如何接收到wifi名字和密码的呢?
不知道大家有没有发现,就是当我们打开手机的wifi,你会发现在网络列表,有很多wifi信息。即便我们不知道他们的密码,但是我们依然能获取到wifi的名字,以及一些其他的信息。
::: hljs-center
:::
对了没错,所谓的一键配网正是利用的这个信息。网络传送数据都是数据包的形式。说的直白一点wifi名字和一些其他信息也都是一些数据包。数据包有大有小,一键配网程序就会将这些可见数据包用大大小小大,小小大大大。转换成00110,11000。这个的格式来广播wifi的密码。然后 wifi设备将收到的连续数据包转换成密码就可以实现上网。当然了我只是方便大家理解这么举例,实际的过程要复杂的多。但是一键配网的核心就是利用了可见数据包的长度来进行的编码。
接下来我们就具体来演示一下配网的过程
首先我的手机和这台电脑处在同一wifi网络中,等待配网的wifi模块还未接入网络。此时接通模块电源,模块开始尝试用之前的wifi信息联网,但没有成功,联网失败后他就会进入SmartConfig模式等待配网。
::: hljs-center
:::
这时的模块工作在混杂模式,就像我们开始讲的那样,他能看到好多的wifi信息,但是无奈没有密码他一个也连不上。可以想象他现在是何等的绝望。这时我们在电脑端开启抓包工具,然后监听我们的局域网,接下来用我们的手机发送一键配网的数据包。下图就是我们监听到的网络数据包了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TCR1cfEa-1660210863608)(https://upload-images.jianshu.io/upload_images/23281831-830e2571d3ea5dd4.png)]
数据比较多,我们把他们弄导入excel然后做一下分析。这里发送地址选择我们手机的ip,目的地址4个255也就是广播地址。剩下的这些数据就是配网软件发送的数据包了。根据我们前面的分析,配网的密码是用数据包的长度编码的,所以我们只需复制最后一列数据,然后删除没用的信息只保留len。
::: hljs-center
:::
接下来就让我看看这些数字都代表啥意思吧。首先开始是515.514.513.512的连续循环,表示数据开始发送。接着往下来,到这里前戏终于结束了,正片开始。但是这一堆的数字,看的头皮发麻啊。不方,数据每3个一组,我们先合并这3个单元格,然后输入我写好的函数。
::: hljs-center
:::
函数内容:
="序号"&OFFSET(INDIRECT("R"&ROW()&"C"&COLUMN(),),1,-1)&",数据:"&RIGHT(DEC2HEX(OFFSET(INDIRECT("R"&ROW()&"C"&COLUMN(),),2,-1)-40),1)
接着往下这样一拉,数据就整理好了。然后我们继续往下看这里len的305的数据是1,306是4,中间这个连不上号的是校验位不用管他,ái,继续往下307,308一直到这里。发现了没有从len305-313存储的正是我们的wifi密码,而这也确实证明了我们之前说的理论。
::: hljs-center
:::
理论知识说完了,那我们就来看看微信扫码一键配网是如何实现的
实现一件配网的方法有很多,比如厂家的APP、安信可公众号、微信Airkiss等等。这里我们来说一说微信的扫描一件配网。其实二维码包含的只是一个链接,扫码只是打开这个链接而已,如果我们提取二维码的链接,然后发送到微信,也是可以实现同样功能的。而真正实现一键配网的是微信的airkiss技术,注意这里最早使用这个技术的是TI这家公司,也就是德州仪器。注意哈不是山东德州,而是美国的德克萨斯州,并且用到了他们的CC3000系列芯片上。
::: hljs-center
:::
当然乐鑫ESP8266也支持这个技术并起名SmartConfig。就是我们之前视频讲过的。而微信将她取名airkiss,不得不说微信真是文艺啊,但是基本原理是差不多的。只是使用微信的这个技术需要自己的服务器。认证的公众号等等条件。但是不要怕,即便是个人用户也可以申请测试号,来体验这个功能。这个就是我测试号实现的二维码。现在扫码也是可以用的。而我之前分享给大家的这个二维码是安信可科技提供的。从上面提取的网址域名也可以看出,相对比较稳定,大家可以放心使用。