微信wifi airkiss一键配网 Demo和关键点【iOS】

一.airKiss配网iOS Demo

  • airKissDemo下载
  • 备注
    • demo中收到设备端发的数据解析是按照自定义的格式解析的,所以解析部分需要自己根据自己的协议解析

二.实现图

微信wifi airkiss一键配网 Demo和关键点【iOS】_第1张图片
3181558177193_.pic_hd.jpg

备注
* 图中的流程是根据我的项目画的整个交互,airKiss配网在第七步移动端接收到报文就结束了
* airkiss也只是设备端和手机端的交互,没有云端

三.重点知识

3.1.关于设备端--轮询信道的机制

  • 首先扫描出周围有那几个信道的rounter,比如有1,3,6信道,然后按照从下到大排序保存
  • 然后在超时时间内就一直轮询着三个信道,间隔时间硬件可设置,默认为60s
  • 超时时间一过,又要开始扫描周围的信道,重复1,2步骤(超时时间可设置,默认时间为60s)
  • 设备端先锁定信道,然后就只接收此信道的数据,解析数据,超时时间内未解析出ssid和pwd就又开始重新锁定信道。判断是否锁定信道是和协议包的前导域有关的。了解此机制,可以更好的优化程序

微信wifi airkiss一键配网 Demo和关键点【iOS】_第2张图片
3191558177256_.pic_hd.jpg

备注

3.2.关于手机端发送协议包--关于前导域

协议包前面有个前导域,设备端根据这个来锁定信道,判断这个信道正在进行airkiss配网
所以这个前导域的数量确定需要根据设备端的信道轮询间隔和手机端发送数据包的间隔来确定,
信道一共有1-14个,但是常用的一般就那么几个,网络环境也一般很少集齐14个信道,所以一般考虑8个信道足以,考虑到手机端和设备端不同步问题,所以考虑数量考虑多一些;
假设设备端的信道轮询间隔为50ms,手机端发送数据包的间隔为5ms(也就是发送完一个前导域至少需要20ms),那么发送50个前导域,需要1s,足够设备端轮询20个信道

3.3.关于手机端发送协议包次数或说超时

按照airKiss协议的纠错分析,最坏的情况下,最多需要5次就可以完成信息的发送,发送五次后纠错成功率99.999%,发送五次后再发送意义不大。
5次的时间 = 5(协议包间隔+数据量数据包间隔)
假设,协议包间隔:100ms,数据包间隔:5ms,数据量:835 (假设50个前导域,ssid:helloword pwd:csy10841054)
5次的时间 = 5(100+8355) = 21.375s
这样看超时时间30s足够,但是还要以下因素

  • 考虑手机和设备端不同步(发5次不够
  • ssid和pwd较长
  • 网络不好,设备端连接路由的速度慢,(只有设备端连接上路由了,才回发数据)
  • 还要在加上被设备要回发数据给手机端(如随机数,设备ID等)的时间

综合这些考虑30s是不够的,所以建议可以设置60s。

3.4.关于airKiss协议

    * demo中有详细的注释

3.5.关于丢包和收不到包

关于丢包和收不到包,除了上面说的时间错开了,没有碰撞以及超时问题。还有一个重要的问题信道堵塞,造成数据包丢包不完整,解析不出来,所以这些间隔,需要错开,频率最好不要太高。

手机端参数如下:

超时时间 协议包间隔 数据包间隔
60000ms 100ms 5ms

设备端参数如下:

扫描信道间隔 回发数据给手机端间隔 回发数据给手机端次数
100ms 80ms 60

你可能感兴趣的:(微信wifi airkiss一键配网 Demo和关键点【iOS】)