简介
设备配网模块用于为设备配置上网环境,目前支持以下配网方式:
有线配网
AP 配网
二维码配网
注意:
并非任意设备都支持以上所有配网方式,具体支持的配网方式由硬件和固件版本决定。
通用配网流程
有线配网
说明:
添加已在线局域网设备,需设备硬件支持。
部分设备可通过自带网口使用有线上网,省去了配网环节,App 可通过局域网搜索到目标设备,使用设备 ID 向服务器发起绑定请求。
流程大致如下:
1. App 连接到与设备同一网络下的 Wi-Fi。
2. App 搜索到目标设备,取得目标设备 ID。
3. App 向服务器发起绑定目标设备的请求。
4. 账户绑定设备成功。
5. 订阅该设备。
6. 配网结束。
AP 配网
说明:
需设备硬件支持。
AP 配网原理是 App 连接设备发射的热点,使设备与 App 处于同一局域网,并在局域网下实现信息传递。
流程大致如下:
1. 设备复位进入配网模式并发射 Wi-Fi 热点。
2. App 连接设备的热点(进入局域网)。
3. App 向设备发送配网信息(Wi-Fi 信息)。
4. 设备收到配网信息并连接指定网络。
5. 设备上线并向服务器注册。
6. App 收到设备已上线通知。
7. App 向服务器发起绑定目标设备的请求。
8. 账户绑定设备成功。
9. 订阅该设备。
10. 配网结束。
二维码配网
二维码配网原理是 App 使用配网信息生成二维码,设备通过摄像头扫描二维码获取配网信息。
流程大致如下:
1. 设备复位进入配网模式,摄像头开始扫描二维码。
2. App 使用配网信息生成二维码。
3. 用户使用设备扫描二维码。
4. 设备获取配网信息并连接指定网络。
5. 设备上线并向服务器注册。
6. App 收到设备已上线通知。
7. App 向服务器发起绑定目标设备的请求。
8. 账户绑定设备成功。
9. 订阅该设备。
10. 配网结束。
使用示例
有线配网
import IoTVideo.IVNetConfig// 1.获取局域网设备列表let deviceList: [IVLANDevice] = IVNetConfig.lan.getDeviceList()// 2.取得目标设备let dev = deviceList[0]// 3.绑定设备// 4.订阅设备 token 来自绑定设备结果的 AccessToken 字段IVNetConfig.subscribeDevice(withToken: "********", deviceId: deviceId)
AP 配网
import IoTVideo.IVNetConfig// 1.连接设备热点,获取设备信息let dev = IVNetConfig.lan.getDeviceList().first()// 2.向服务器请求配网TokenIVNetConfig.getToken { (token, error) in}// 3.发送配网信息IVNetConfig.lan.sendWifiName("***", wifiPassword: "***", token: token, toDevice: dev.deviceID) { (success, error) inif success {//发送成功,开始监听事件通知} else {//发送失败}}// 4.等待设备配网成功通知,拿到结果后可调用 IVNetConfig.unregisterDeviceOnline(),销毁监听IVNetConfig.registerDeviceOnlineCallback { (devId, error) in {}// 5.绑定设备// 6.订阅设备 token 来自绑定设备结果的 AccessToken 字段IVNetConfig.subscribeDevice(withToken: "********", deviceId: deviceId)
二维码配网
接入方自定义传递给设备的数据格式,可使用内置工具类生成二维码,也可自行生成二维码
import IoTVideo.IVNetConfig// 1. 获取配网tokenIVNetConfig.getToken { (token, error) in}// 2. 生成二维码 使用得到的配网token加上wifi信息let image = IVNetConfig.qrCode.createQRCode(withWifiName: ssid,wifiPassword: password,token: token)// 3.用户使用设备扫描二维码....// 4.等待设备配网成功通知, 拿到结果后可调用 IVNetConfig.unregisterDeviceOnline(),销毁监听IVNetConfig.registerDeviceOnlineCallback { (devId, error) in {}// 5.绑定设备// 6.订阅设备 token 来自绑定设备结果的 AccessToken 字段IVNetConfig.subscribeDevice(withToken: "********", deviceId: deviceId)