WiFi 配网具体是什么方案?
更新时间:2018-10-19 11:29:34
配网方案介绍
Android 端 API 描述文档参见:Android 配网
iOS 端 API 描述文档参见:iOS 配网
配网定义
针对有屏可输入设备,如手机、平板等,用户可以直接通过界面输入 SSID 和 PASSWORD 让设备连上 WiFi 网络。对于无屏设备,如插座、灯泡等,用户无法通过输入上网信息让设备接入网络,这个时候我们就需要对这些设备进行配网操作。
配网定义:将路由器的 WiFi SSID 和 PASSWORD 通过某种方式传递到终端设备,让终端设备可以接入 WiFi 网络的过程。
配网方案
接下来将介绍一下四种方案:一键配网(又称 smartConfig 或 广播配网)、热点配网、零配、智能路由器配网。
一键配网
一键配网是手机通过广播发送上网热点信息(路由器 ssid & password),设备通过监听方式获取信息,然后连接上网热点的方案。该方案只需要用户输入 WiFi 的密码,点击开始配网即可完成配网操作。
热点配网
手机启动一个预定义热点(热点名:aha,密码:12345678),设备连接到手机热点获取路由器上网热点信息,之后设备再连接上网热点的方式。该方案需要 WiFi 切换相关的权限,如果没有授予权限可能会导致配网失败,建议将该方案作为补充方案。
零配
通过已连接上网热点的WiFi设备,将热点信息发送给待配网设备的方式。随着设备种类及量的提升,个人拥有的智能设备不止一个,如果能让已经配上网的设备帮助新设备自动配置好网络,那就不需要手机端发送账号密码,这个方案即为零配。
智能路由器配网
路由器预置配网热点,设备通过路由器预置配网热点获取上网热点的方案。该方案适用于用户家里已经有智能路由器的场景,用户不需要输入 WiFi 密码,只需要点击开始配网即可完成配网操作。
配网开发过程
配网主要分为以下四个过程:发现待配网的设备;开始配网;配网中间状态;配网结果。
设备发现
设备发现过程是指:获取待配网设备的产品类别(ProductKey)、设备名称(DeviceName)的过程。目前可以通过以下方式获取待配设备的设备信息:
(1)扫描二维码获取设备信息(扫码实现可使用开源库zxing或者阿里demoapp里的方案);
二维码内容可以是 http://www.taobao.com?pk=a17Gp9Vyqpx&dn=GPRS002 ,扫描获得该String之后可以获得ProductKey(蜂窝网二维码中需包含DeviceName)。
(2)产品列表或者其他整合的推荐列表;
如获取 thing/productInfo/getByAppKey 当前支持的产品列表;
(3)调用 SDK 本地发现接口发现;
Android: startDiscovery 获取到待配网设备的 ProductKey 和 DeviceName 。
iOS:startDiscovery 获取到待配网设备的 ProductKey 和 DeviceName 。
开始配网
热点配网和其他配网方式相比,会有一些前置的步骤,需要先调用以下接口。
(1)开启手机热点;
(2)发现连接到手机热点的设备;
(3)发送 WiFi 连接信息到设备端;
配网中
开始配网后,SDK会将配网的中间过程回调到上层。比如参数校验是否通过、是否需要用户传入额外的参数、配网进行中、配网结果的回调。
配网结果
配网成功或者配网失败,SDK 都会回调配网结果。配网失败会返回具体的配网错误码和错误信息,配网成功则返回 ProductKey 和 DeviceName 信息。用户可以使用配网成功的信息去做绑定操作。
配网方案对比
Android 配网方案对比:
方案名称
|
平均配网时间(秒)
|
适用场景
|
一键配网(smartConfig)
|
7.6
|
只有ProductKey;
2.4G WiFi;
交互简单,只需要输入WiFi密码;
|
热点配网
|
20
|
2.4G WiFi;
|
零配
|
6.7
|
当前环境已有具备为其他待配设备进行配网能力的设备;
无需用户输入WiFi 密码;
|
智能路由器配网
|
22
|
已有支持智能路由器配网的路由器,和支持智能路由器配网的智能设备; 无需用户输入WiFi 密码;
|
iOS 配网方案对比:
方案名称
|
配网时间
|
适用场景
|
一键配网(smartConfig)
|
11
|
只有ProductKey;
2.4G WiFi; 交互简单,只需要输入WiFi密码;
|
热点配网
|
16
|
2.4G WiFi;
|
零配
|
6.7
|
当前环境已有具备为其他待配设备进行配网能力的设备; 无需用户输入WiFi 密码;
|
智能路由器配网
|
22
|
已有支持智能路由器配网的路由器,和支持智能路由器配网的智能设备; 无需用户输入WiFi 密码;
|