1、专业术语
AP(Access Point):无线接入点,是一个无线网络的创建者,是网络的中心节点。简单来讲就像是无线路由器一样,设备打开后进入AP模式,在手机的网络列表里面,可以搜索到类似TPLink_XXX的名字。
STA(Station):任何一个接入无线的设备都可以成为一个站点,也就是平时接入路由器的设备。
SSID(Service Set Identifer):每个无线AP都应该有一个标示用于用户识别,SSID就是这个用于用户标识的名字,也就是我们经常说到的wifi名。
BSSID(Service Set Identifer):每一个网络设备都有其用于识别的物理地址,称作MAC地址,一般情况下出厂会有一个默认值,可更改,也有其固定的命名格式,也是设备识别的标识符。BSSID是针对设备说的,对于STA的设备来说,拿到AP接入点的MAC地址就是这个BSSID
ESSID(Service Set Identifer):是一个比较抽象的概念,它实际上就和SSID相同(本质也是一串字符),只是能如果有好几个无线路由器都叫这个名字,那么我们就相当于把这个SSID扩大了,所以这几个无线路由器共同的这个名字就叫ESSID。
举个例子,如果在一台路由器上释放的WiFi信号叫某个名字如"Feng",这个名字“Feng”就成为SSID;如果在好几个路由器上都释放了这个WIFI信号,那么大家都叫“Feng”,这个时候大家都遵循的这个名字就是ESSID。
总结一下:
BSSID就是具体的某个连锁店编号或地址
SSID就是连锁店的名字或照片
ESSID就是连锁店的总公司或招牌或品牌
然后一般SSID和ESSID都是相同的
2、配网两大技术
物联网时代技术开始规模化服务民众,方便快捷显得尤为重要,WIFI直连便是一个典型案例。目前主流的WIFI配置模式有以下两种:
2.1、AP配网
设备热点配网,智能硬件处于AP模式(类似路由器,组成局域网),手机用于STA模式
手机连接到处于AP模式的智能硬件后组成局域网,手机发送需要连接路由的ssid和pwd以及自定义的一些信息至智能硬件,智能硬件接收后,找到对应的路由器主动去连接路由器,完成配网。
2.2、一键(smartConfig)配网
又叫智能配网、快速配网、简单配网。智能硬件处于混杂模式下,监听网络中的所有报文,抓取空口包。手机APP按照一定的协议格式将ssid和pwd及自定义的一些信息编码,以UDP报文格式通过广播包或组播包发送,智能硬件接收到UDP报文后解码,得到正确的ssid和pwd及自定义信息,然后找到对应的路由器主动去连接路由器,完成配网。
2.3、优劣势对比
2.3.1、smartConfig
优势:
相对于AP配网,简单易操作,更加贴近市场
相对于AP配网,能明确的知道硬件设备端是否连接了路由器。可以通过设备端连接路由器后告知APP端已经连接路由器你可以停止发送广播包了。
劣势:
smartConfig需要路由器的参与,需要考虑到路由器的兼容性问题,所以配网成功率有所限制,比如路由器的信道,bgn模式(速率)、品牌、以及2.4G/5G、2.4G/5G同名路由器、同一场景下多个wifi同名等等的一系列兼容性问题。因为不管是组播还是广播方式,都是一种UDP报文,需要靠路由器转发,设备端监听空口包。
2.3.2、AP配网
优势:
AP配网是局域网直连模式,这种配网没你有路由器参与,所以没有路由器兼容性问题,所以配网成功率相比一键配网要高,目前国内智能设备生态链做的最好的企业也是一直沿用AP配网方式,配网成功率相对市场同类产品要高一些。
劣势:
AP配网相对复杂,需要涉及到手机的兼容性、还需要手动切换WIFI,如需要手机先连接上设备的AP热点,用户需要先进入WIFI列表页面然后手动切换到设备的AP热点,连接成功操作上云有需要切换到路由器的热点,有的手机也不能自动切换热点,比如苹果iOS11.0系统以下的手机,无法自动切换热点,需要用户进入WIFI列表页面,选择新热点。过于复杂,这是设备热点配网没有普及的原因之一,因为没有一键配网方便
AP配网是局域网模式,所以无法判断是否连上路由器,需要借助设备上云来判断。
3、配网流程
3.1、一键配网实现过程
此处大致介绍一下流程,当然实际为增加成功率考虑到安全性或者业务不同,肯定比这复杂丰富的多。比如为了安全性,会对定义的UDP广播协议采用自定义的一种安全性定义,增加校验增加加密等。比如为了增加成功率会才有一定的优化策略等等。
详细可参考:
自定义组播配网【待更新】
Step1:初始化硬件设备,使设备进入混杂模式;
Step2:手机连接路由器WIFI(获取路由器名称);
Step3:获取WIFI信息,WiFi 名字和密码;iOS 获取系统wifi列表方法
android可以直接获取到所有路由器WIFI 信息,没必要连接要发送的WIFI,所以可以直接使用输入;但iOS9.0之前没有接口获取WiFi List,iOS9.0有获取WiFi List的接口,但是需要苹果授权,需要申请比较复杂。所以现在市面上比较通用的方法还是直接获取当前连接的wifi
Step4:通过组播或广播方式发送WiFi的ssid和pwd或其他的信息比如bssis,userData等
此处一般会APP和设备端会定义一套完成的UDP报文协议协议数据除了WiFi的ssid和pwd,一般会增加一些用户的其他信息UDP报文协议为了安全考虑,一般会想办法增加一些复杂度,也会增加加密方法目前报文协议大致就两种:长度编码和MAC地址编码比如微信的airkiss就是通过长度编码的广播方式
Step4:设备端通过广播方式回发设备端相关信息,比如设备id,token
手机端能接收到设备端回发的信息,说明手机端发送的WIFI信息是正确的且设备端已连接上路由器
Step5:查询设备上云状态,注册用户
3.2、AP配网实现过程
此处大致介绍一下流程,当然实际为增加成功率考虑到安全性或者业务不同,肯定比这复杂丰富的多,比如传输ssid和pasword,有的厂商使用HTTPS方式,有的采用LAN Mode来交换密钥,后在在传输时加密ssid和password以及其他信息
Step1:初始化硬件设备,使设备进入 AP 模式;
Step2:手机连接路由器WIFI(获取路由器名称);
Step3:获取WIFI信息,WiFi 名字和密码;iOS 获取系统wifi列表方法
android可以直接获取到所有路由器WIFI 信息,没必要连接要发送的WIFI,所以可以直接使用输入;但iOS9.0之前没有接口获取WiFi List,iOS9.0有获取WiFi List的接口,但是需要苹果授权,需要申请比较复杂。所以现在市面上比较通用的方法还是直接获取当前连接的wifi
Step4:手机切回 AP WiFi:接入上述 设备出现的 WiFi 名字(SSID)的网络 (类似 TPLINK_XXX)。连上设备后,通过HTTP发送 step2获取到的WiFi名字和密码
有的方案也会发送一些其他信息,比如token。方便后面注册以此来确定是当前session的
Step5:查询设备上云状态,注册用户
因为AP配网的弱点,APP无法知晓设备是否上云,所以APP只能通过查询设备上云状态来判断注册的时候一般会携带一些参数,比如token此步骤,需要手机切换到路由器WIFI,所以配网成功后,设备端需切换到非AP模式,以此消除AP热点,手机自动切换到到其他路由WIFI
网友评论