设备配网

更新时间:2023-09-19 03:00:53下载pdf

涂鸦智能摄像机硬件 Wi-Fi 主要支持以下配网模式:

  • 快连模式(Smart Config 模式)

  • 热点模式(AP 模式)

  • 二维码模式

    二维码模式较为简单,建议使用二维码配网,如果设备扫描不了二维码,再尝试快连模式。

快连模式热点模式这两种配网方式和涂鸦其他设备的配网方式一样,可以参考文档设备配网

下面着重介绍一下智能摄像机特有的二维码配网模式。

二维码配网

二维码模式配网流程

设备配网

类和协议

类名(协议名) 说明
ThingSmartActivator 设备配网相关功能封装
ThingSmartActivatorDelegate 设备配网结果回调代理

接口说明

配网 Token 获取接口

- (void)getTokenWithHomeId:(long long)homeId
                   success:(ThingSuccessString)success
                   failure:(ThingFailureError)failure;

参数说明

参数 说明
homeId 设备将要绑定到的家庭的 id
success 成功回调,返回此次配网用的 Token
failure 失败回调,error 标示失败原因

接口说明

开始配网接口

- (void)startConfigWiFi:(ThingActivatorMode)mode
                   ssid:(NSString *)ssid
               password:(NSString *)password
                  token:(NSString *)token
                timeout:(NSTimeInterval)timeout;

参数说明

参数 说明
mode 配网模式
ssid 期望设备连接的 Wi-Fi 的 ssid
password 期望设备连接的 Wi-Fi 的密码
token 配网 Token
timeout 超时时间

接口说明

停止配网接口

- (void)stopConfigWiFi;

接口说明

配网结果代理回调

- (void)activator:(ThingSmartActivator *)activator didReceiveDevice:(ThingSmartDeviceModel *)deviceModel error:(NSError *)error;

参数说明

参数 说明
activator 此次配网使用的 ThingSmartActivator 对象
deviceModel 配网成功时,返回此次配网的设备模型,失败时返回 nil
error 配网失败时,标示错误信息,成功时为 nil

获取 Token

开始配网之前,SDK 需要在联网状态下从涂鸦云获取配网 Token,然后将 Wi-Fi 的 ssid 与密码一起生成二维码。Token 的有效期为 10 分钟,且配置成功后就会失效(再次配网需要重新获取)。设备配网需要依赖于家庭,设备必须绑定在某个家庭下,所以获取配网 Token 时,需要传入一个家庭的 id 作为参数,设备使用这个 Token 激活成功后,就会绑定在这个家庭的设备列表中。

ObjC

- (void)getToken {
    [[ThingSmartActivator sharedInstance] getTokenWithHomeId:homeId success:^(NSString *token) {
        NSLog(@"getToken success: %@", token);
        // TODO: startConfigWiFi
    } failure:^(NSError *error) {
        NSLog(@"getToken failure: %@", error.localizedDescription);
    }];
}

Swift

func getToken() {
                       ThingSmartActivator.sharedInstance()?.getTokenWithHomeId(homeId, success: { (token) in
        print("getToken success: \(token)")
        // TODO: startConfigWiFi
    }, failure: { (error) in
        if let e = error {
            print("getToken failure: \(e)")
        }
    })
}

二维码字符串

获取到配网 Token 后,还需要有期望设备连接的 Wi-Fi 的 ssid 和密码,通过下面的方式拼接成字符串,然后根据这个字符串生成一个二维码图片。

ObjC

NSDictionary *dictionary = @{
@"s": self.ssid,
@"p": self.pwd,
@"t": self.token
};
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:nil];
self.wifiJsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

Swift

let dictionary = [
    "s": self.ssid,
    "p": self.pwd,
    "t": self.token
]
let jsonData = JSONSerialization.data(withJSONObject: dictionary, options: JSONSerialization.WritingOptions.Element)
self.wifiJsonStr = String(data: jsonData, encoding: String.Encoding.utf8)

开始配网

使用上面生成的 wifiJsonStr 生成二维码,确定设备处于配网状态,将二维码对准摄像头,设备捕捉到二维码信息后会发出提示音。此时通过以下接口开始监听配网结果。

ObjC

[[ThingSmartActivator sharedInstance] startConfigWiFi:ThingActivatorModeQRCode ssid:self.ssid password:self.pwd token:self.token timeout:100];

Swift

                   ThingSmartActivator.sharedInstance()?.startConfigWiFi(ThingActivatorModeQRCode, ssid: self.ssid, password: self.pwd, token: self.token, timeout: 100)

停止配网

配网过程中,可使用下面的方法停止配网。

ObjC

[[ThingSmartActivator sharedInstance] stopConfigWiFi];

Swift

                   ThingSmartActivator.sharedInstance()?.stopConfigWiFi()

设备激活回调

配网结果通过代理 ThingSmartActivatorDelegate回调,代理方法如下:

ObjC

// deviceModel 则为配网成功的设备的信息
- (void)activator:(ThingSmartActivator *)activator didReceiveDevice:(ThingSmartDeviceModel *)deviceModel error:(NSError *)error;

Swift

func activator(_ activator: ThingSmartActivator!, didReceiveDevice deviceModel: ThingSmartDeviceModel!, error: Error!)

绑定模式

涂鸦智能设备支持强、中、弱三种绑定模式,设备成功激活到对应账号的家庭中后,不同的绑定模式,解除绑定需要不同的校验方式。

  • 强绑定:需要前一个用户在 App 中移除设备,才可以重新配网绑定到另一个账号中;
  • 中绑定:无需前一个用户在 App 中移除设备,即可重新配网绑定到另一个账号中,但是会向前一个账号的家庭组/默认组管理员发送 PUSH 通知消息;
  • 弱绑定:无需前一个用户在 App 中移除设备,即可重新配网绑定到另一个账号中。

由于 IPC 有音视频传输,涉及到的隐私比较多,默认是强绑定模式,且不可以切换成其他模式,如果接入方有强烈需求,且评估过修改成其他模式的影响,可向涂鸦开发者平台提交工单处理。