摄像头二维码配网

更新时间:2024-05-20 02:04:48下载pdf

通过摄像头设备扫描 App 二维码来传递配网信息的方式,实现设备配网。

IActivator 初始化

参数说明

参数名 类型 是否必填 说明
mode ActivatorMode 配网模式

代码示例

self.pair = ActivatorService.shared.activator(.QRCode)

获取配网 Token

参数说明

参数名 类型 是否必填 说明
assetId String 指定的资产 ID
longitude String 经度信息
latitude String 纬度信息
success ((String)->(Void))? 成功回调函数
failure ((Error)->(Void))? 失败回调函数

代码示例

// 获取资产激活令牌
ActivatorService.shared.activatorToken(assetId: "123456", longitude: "30.1234", latitude: "120.5678", success: { token in
    // 成功回调函数
    print("激活令牌为:\(token)")
}, failure: { error in
    // 失败回调函数
    print("获取激活令牌失败,错误信息为:\(error.localizedDescription)")
})

创建二维码

QRCodeDataForQRCodeActivatorMode 方法参数说明

参数名 类型 是否必填 说明
ssid String 要连接的 Wi-Fi 热点的 SSID
password String 要连接的 Wi-Fi 热点的密码
pairingToken String 设备配网令牌

代码示例

self.qrCodeData = ActivatorService.shared.QRCodeDataForQRCodeActivatorMode(ssid: self.ssid, password: self.password, pairToken: self.pairingToken)

if let filter = CIFilter(name: "CIQRCodeGenerator") {
    filter.setValue(self.qrCodeData, forKey: "inputMessage")

    if let output = filter.outputImage {
        let scale = 300 / output.extent.size.width
        let qrImage = output.transformed(by: CGAffineTransform(scaleX: scale, y: scale))
        self.qrCodeImage.image = UIImage(ciImage: qrImage)
    }
}

注册 IActivatorListener 监听配网结果

参数说明

参数名 类型 是否必填 说明
deviceModel IActivatedDevice? 若操作成功,表示被激活的设备信息,否则为 nil
params ActivatorParams? 操作相关的参数信息

回调函数说明

函数名 参数 说明
onSuccess deviceModel: IActivatedDevice?, params: ActivatorParams? 操作成功回调函数,返回被激活的设备信息
onError error: Error, params: ActivatorParams? 操作失败回调函数,返回错误信息

代码示例

private func start() {
    pair.listener = self
}

extension ViewController: IActivatorListener {
    func onSuccess(deviceModel: IActivatedDevice?, params: ActivatorParams?) {
        SVProgressHUD.dismiss()
        self.navigationController?.popToRootViewController(animated: true)
    }

    func onError(error: Error, params: ActivatorParams?) {
        SVProgressHUD.dismiss()
        SVProgressHUD.showInfo(withStatus: error.localizedDescription)
    }
}

开始配网

该方法用于开始设备配网操作。

参数说明

参数名 类型 是否必填 说明
params ActivatorParams 配网操作相关的参数信息,见代码示例

代码示例

// 创建 QRCodeActivatorParams 实例
let params = QRCodeActivatorParams(ssid: "my_wifi_ssid", password: "my_wifi_password", pairToken: "my_pair_token")

// 开始设备配网操作,pair 是在初始化过程中生成的
// self.pair = ActivatorService.shared.activator(.QRCode)
pair.startPair(params)

停止配网

该方法用于停止设备配网操作。

代码示例

// 停止设备配网操作,pair 是在初始化过程中生成的
// self.pair = ActivatorService.shared.activator(.QRCode)
pair.stopPair()