有线设备配网

更新时间:2024-03-20 05:52:51下载pdf

有线设备已通过网线连接着网络,设备激活过程中,用户无需输入路由器的名称和密码。

配网流程

下图以 Zigbee 有线网关为例,描述有线网关配网流程:

AppSDK网关云端将 Zigbee 网关重置获取 Token获取 Token返回 Token返回 TokenApp连上和网关相同的路由-器热点发送激活命令发送激活命令设备收到激活信息去云端进行激活激活成功激活成功激活成功AppSDK网关云端(Zigbee)网关配网

发现设备

SDK 提供发现待配网有线设备的功能,获取设备前,手机需与设备接入同一网络。然后注册获取有线设备的通知,待 SDK 收到有线设备的广播即会通过通知转发设备信息。

转发通知

// 收到有线配网设备的广播后,会发送此通知。object 为 dictionary,@{@"productId":productId, @"gwId":gwId}
extern NSString *const ThingSmartActivatorNotificationFindGatewayDevice;

获取 Token

开始配网之前,SDK 需要在联网状态下从涂鸦查询配网 Token,然后才可以开始有线设备激活配网。Token 的有效期为 10 分钟,且配置成功后就会失效。再次配网时,需要重新查询 Token。

接口说明

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

参数说明

参数 说明
homeId 设备将要绑定的家庭的 ID
success 成功回调,返回配网 Token
failure 失败回调,返回失败原因

示例代码

Objective-C:

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

Swift:

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

开始配网

接口说明

- (void)startConfigWiFiWithToken:(NSString *)token timeout:(NSTimeInterval)timeout

参数说明

参数 说明
token 配网 Token
timeout 超时时间

示例代码

Objective-C:

- (void)startConfigWiFiToken:(NSString *)token {
    // 设置 ThingSmartActivator 的 delegate,并实现 delegate 方法
    self.wiredActivator.delegate = self;

    // 开始配网
    [self.wiredActivator startConfigWiFiWithToken:token timeout:100];
}

- (ThingSmartActivator *)wiredActivator {
    if (!_wiredActivator) {
        _wiredActivator = [[ThingSmartActivator alloc] init];
    }
    return _wiredActivator;
}

#pragma mark - ThingSmartActivatorDelegate
- (void)activator:(ThingSmartActivator *)activator didReceiveDevice:(ThingSmartDeviceModel *)deviceModel error:(NSError *)error {

    if (!error && deviceModel) {
        // 配网成功
    }

    if (error) {
        // 配网失败
    }

}

Swift:

func startConfigWifiToken(_ token: String) {
    // 设置 ThingSmartActivator 的 delegate,并实现 delegate 方法
    wiredActivator.delegate = self

    // 开始配网
    wiredActivator.startConfigWiFi(withToken: token, timeout: 100)
}

lazy var wiredActivator: ThingSmartActivator = {
    let activator = ThingSmartActivator()
    return activator
}()

#pragma mark - ThingSmartActivatorDelegate
func activator(_ activator: ThingSmartActivator!, didReceiveDevice deviceModel: ThingSmartDeviceModel!, error: Error!) {
    if deviceModel != nil && error == nil {
        //配网成功
    }

    if let e = error {
        //配网失败
        print("\(e)")
    }
}

停止配网

开始配网操作后,App 会持续广播配网信息,直到配网成功,或者超时。如果需要中途取消操作或配网完成,需要调用 [ThingSmartActivator stopConfigWiFi] 方法。

接口说明

- (void)stopConfigWiFi;

示例代码

Objective-C:

- (void)stopConfigWifi {
    self.wiredActivator.delegate = nil;
    [self.wiredActivator stopConfigWiFi];
}

Swift:

func stopConfigWifi() {
    wiredActivator.delegate = nil
    wiredActivator.stopConfigWiFi()
}