WiFi 配网方案介绍
更新时间:2019-05-13 15:31:21
配网方案介绍
Android 端 API 描述文档参见:Android 配网
iOS 端 API 描述文档参见:iOS 配网
配网定义
针对有屏可输入设备,如手机、平板等,用户可以直接通过界面输入 SSID 和 PASSWORD 让设备连上 WiFi 网络。对于无屏设备,如插座、灯泡等,用户无法通过输入上网信息让设备接入网络,这个时候我们就需要对这些设备进行配网操作。
配网定义:将路由器的 WiFi SSID 和 PASSWORD 通过某种方式传递到终端设备,让终端设备可以接入 WiFi 网络的过程。
配网方案
接下来对阿里提供的WiFi配网方案进行描述:一键配网(又称 smartConfig 或 广播配网)、手机热点配网、零配、智能路由器配网。
一键配网
一键配网是手机通过广播发送上网热点信息(路由器 ssid & password),设备通过监听方式获取信息,然后连接上网热点的方案。该方案只需要用户输入 WiFi 的密码,点击开始配网即可完成配网操作。
手机热点配网
手机启动一个预定义热点(热点名:aha,密码:12345678),设备连接到手机热点获取路由器上网热点信息,之后设备再连接上网热点的方式。该方案需要 WiFi 切换相关的权限,如果没有授予权限可能会导致配网失败,建议将该方案作为补充方案。
零配
通过已连接上网热点的WiFi设备,将热点信息发送给待配网设备的方式。该方案不需要用户在手机端输入WiFi热点的SSID/密码,因此称为零配。
智能路由器配网
路由器预置配网热点,设备通过路由器预置配网热点获取上网热点的方案。该方案适用于用户家里已经有智能路由器的场景,用户不需要输入 WiFi 密码,只需要点击开始配网即可完成配网操作。
本方案现在已经不再维护,因此此处不做描述
设备热点配网
方案简述: 设备开启设备WiFi热点, 手机搜索发现到热点后连接到该热点, 手机将路由器上WiFi热点的SSID/密码发送给WiFi设备, 然后WiFi设备使用该SSID/密码连接WiFi热点
工作原理如下所示:
摄像头扫码配网
针对拥有摄像头及二维码解码能力设备,可以通过App生成携带SSID、password等信息的二维码,摄像头根据App的二维码画面解码出信息,连接路由器,即完成配网绑定流程。
开发者将SSID、password信息传入SDK后,SDK会将完整二维码信息回调并开启局域网监听,开发者需要展现二维码并监听配网结果。
二维码规则:二维码中携带的信息如下:
key | 描述 | 是否必选 |
---|---|---|
v | version,版本号,区分为阿里的二维码规则,当前为Ali_1 | 必选 |
s | ssid,家庭路由SSID | 必选 |
p | password,家庭路由密码 | 必选 |
b | BSSID,家庭路由的BSSID信息, Hex String,解决gbk编码等问题 | 必选 |
t | token,绑定需要的Token信息,3 Bytes random string | 可选 |
二维码拼接规则:
按Json 规则拼接,
e.g.
{"v":"Ali_1","s":"Router","p":"12345678","b":"EC26CAB68CC","t":"93DAB7"}
配网开发过程
配网主要分为以下四个过程:发现待配网的设备;开始配网;配网中间状态;配网结果。
设备发现
设备发现过程是指:获取待配网设备的产品类别(ProductKey)、设备名称(DeviceName)的过程。目前可以通过以下方式获取待配设备的设备信息:
(1)扫描二维码获取设备信息(扫码实现可使用开源库zxing或者阿里demoapp里的方案);
二维码内容可以是 https://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 密码; |
设备热点配网 | 11 | 设备支持启动WiFi热点 |
摄像头扫码配网 | 10(依赖摄像头识别解码能力) | 摄像头设备且支持二维码解码能力 |
iOS 配网方案对比:
方案名称 | 配网时间 | 适用场景 |
---|---|---|
一键配网(smartConfig) | 11 | 只有ProductKey; 2.4G WiFi; 交互简单,只需要输入WiFi密码; |
热点配网 | 16 | 2.4G WiFi; |
零配 | 6.7 | 当前环境已有具备为其他待配设备进行配网能力的设备; 无需用户输入WiFi 密码; |
智能路由器配网 | 22 | 已有支持智能路由器配网的路由器,和支持智能路由器配网的智能设备; 无需用户输入WiFi 密码; |
设备热点配网 | 18 | 设备支持启动WiFi热点 |
摄像头扫码配网 | 10(依赖摄像头识别解码能力) | 摄像头设备且支持二维码解码能力 |