# 4. iOS-SDK 使用指南

# 4.1 接入MSmartSDK准备

(1)把MSmartSDK.framework和MSSecretSDK.framework拖入项目中。

(2)进入工程TARGETS->Build Settings 设置Other Linker Flags-all_load 或者-ObjC 或者 –fore_load (sdk路径),如图

(3)为应用授权获取WiFi信息的能力

若使用的是xcode10及以上版本,需对应用获取wifi信息的能力进行授权,如图所示,将开关打开,授权后,Xcode会自动在App ID和应用的权限列表中增加获取WiFi信息的权限。

(4)iOS13系统特殊配置

由于配网业务中使用了CNCopyCurrentNetworkInfo相关API获取设备当前所连接的wifi的信息,iOS13 系统对此做了限制,APP需要符合下列三项条件中的至少一项才能正常使用

  • 获得了定位服务权限的应用;

  • 目前正处于启用状态的 VPN 应用;

  • 使用 NEHotspotConfiguration (opens new window)配置过的Wi-Fi

    以上三种条件满足其一即可,若均未实现,会导致配网功能异常,建议实现第一种,较容易实现。

# 4.2 SDK初始化

依赖服务器域名地址,云端分配申请到的客户ID和客户密钥。线下申请 client_id、 client_secret。集成配网SDK用到client_id, client_secret,server_host。

(1)新版本初始化MSInterface

/**
 初始化MSmartSDK
 @param config 配置模型
 @param workMode 工作模式
 @param extras 扩展字典
 @return 初始化结果 YES/NO
 */
- (BOOL)initSDK:(MSConfig *__nullable)config workMode:(MSmartWorkMode)workMode extra:(NSDictionary *__nullable)extras{
   ......
}

(2)示例

- (void)init7xSDK{
    MSConfig *config = [[MSConfig alloc] init];
    ///OPen赋值 clientId && clientSecret
    config.clientId = Client_Id; //
    config.clientSecret = Client_Secret; //
    config.enableLog = YES;
    config.serverHost = ServeHost_OPen; //
    
    MSInterface * interface = [MSInterface shareInstance];
    BOOL success = [interface initSDK:config workMode:MSmartWorkModeInlandOpen extra:nil];
    [interface setTokenRefreshDelegate:self];//设置Token失效代理 如对象释放则代理失效,如多次设置该代理,则以最后设置的那次的代理为准
    if (success) {
        NSLog(@"初始化SDK成功");
    }
}

(3)初始化支持可配置项说明MSConfig

变量名 类型 说明
workmode 枚举 工作模式。1:国内美居,国内布谷。2:国内OPEN版。3:国际美居,国际东芝。4:海外OEM版
appId 字符串 SDK的appId
appKey 字符串 SDK的appKey
clientId 字符串 客户端ID clientId
clientSecret 字符串 客户端秘钥 clientSecret
enableLog 布尔 是否打印MSmartSDK日志
serverHost 字符串 SDK的serverHost 服务器域名
httpSignSecret 字符串 SDK的httpSignSecret
httpSignKey 字符串 SDK的httpSignKey
SSLPinningMode 布尔 SDK的https网络请求加密
tokenInvalidErrorCode 整形 设置Token失效的错误码
extras 字典 SDK的扩展字典
setLogInfo 方法 设置登录成功后的信息:accessToken,dataKey,dataIv
setCertificates 方法 设置https请求证书
enableSSIDFormatWithFormatArray 方法 设置sdk支持的ssid格式

# 43. 登陆

依赖获取应用级令牌接口,响应结果返回access_token。具体调用以接口文档为准。access_token过期后重新调用本接口获取。

 [[MSInterface shareInstance] setAccessToken:@""];//调用服务器获取令牌接口获取accessToken
//刷新token代理
- (void)refreshToken:(MSRefreshTokenBlock)competion{
    [[MSInterface shareInstance] setAccessToken:@""];//调用服务器获取令牌接口获取accessToken
    competion(YES);
}

# 4.4 配网

设置模块固件二合一相关参数示例。

信道列表/功能集类型/地区ID/模块域名/ 模块端口号/ 国家码/时区

//设置模块固件二合一相关参数
+ (NSDictionary *)createFunctionSetDic{
    //功能集参数
    NSArray *channelList = @[@{kMSSDKConfigFirstChannelNumber:@"1", //@"firstChannelNum";起始信道号
                               kMSSDKConfigChannelCount:@"13", //@"channelCount";信道个数
                               kMSSDKConfigChannelMaxPower:@"27", //@"channelMaxPower";信道最大传输功率
                               kMSSDKConfigChannelDFSEnable:@"0"}, //@"channelDFSEnable";信道DFS使能
                             @{kMSSDKConfigFirstChannelNumber:@"36",
                             kMSSDKConfigChannelCount:@"4",
                             kMSSDKConfigChannelMaxPower:@"23",
                             kMSSDKConfigChannelDFSEnable:@"0"},
                             @{kMSSDKConfigFirstChannelNumber:@"52",
                                kMSSDKConfigChannelCount:@"4",
                                kMSSDKConfigChannelMaxPower:@"23",
                                kMSSDKConfigChannelDFSEnable:@"1"},
                              @{kMSSDKConfigFirstChannelNumber:@"149",
                              kMSSDKConfigChannelCount:@"5",
                              kMSSDKConfigChannelMaxPower:@"27",
                              kMSSDKConfigChannelDFSEnable:@"0"},
                              ];
    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    dic[kMSSDKConfigFunctionType] = @"1";//@"functionType";功能集类型
    dic[kMSSDKConfigRegionID] = @"1";//@"regionID";地区ID
    dic[kMSSDKConfigModuleServerDomain] = @"iot1.midea.com.cn"; //@"moduleServerDomain";模块域名。具体以业务方云端获取为准
    dic[kMSSDKConfigModuleServerPort] = @"28443"; //@"moduleServerPort";模块端口号。具体以业务云端获取为准
    dic[kMSSDKConfigCountryCode] = @"CN"; //@"countryCode";国家码
    dic[kMSSDKConfigTimeZone] = @"8"; //@"timeZone";时区
    dic[kMSSDKConfigChannelList] = channelList; //@"channelList";信道列表,以用户当前国家向云端询问获取(配旧设备时可缺省)
    return [NSDictionary dictionaryWithDictionary:dic];
}

# 4.4.1 AP配网

(1)配网操作管理类MSDeviceConfigManager

 @note there is a 90 seconds timeout. tip:wifi module is appliance can not support 5G wifi network.
 @brief 开始配网
 @param params 配网参数模型
 @param configType 配网类型
 @param progresscallback 回调配网步骤.
  - MSmartDeviceConfigStepType apStep AP配网步骤回调
  - MSBleConnectStateType bleStep 蓝牙配网步骤回调
 @param completioncallback 完成回调配网信息
 */
- (void)startConfigureDevice:(MSDeviceConfigParams *__nonnull)params
                  configType:(MSDeviceConfigType)configType
            progressCallback:(MSProgressCallback)progresscallback
          completioncallback:(MSCompletionCallback)completioncallback;

startConfigureDevice:AP配网MSDeviceConfigAP

(2)示例

- (void)startAddDevice:(id)sender {
    MSDeviceApConfigParams *configParams = [[MSDeviceApConfigParams alloc] init];
    configParams.deviceSSID = self.codeResultParamDic[@"deviceSSID"]; // 设备热点"midea_fd_0008"
    configParams.routerSSID = self.codeResultParamDic[@"routerSSID"]; // wifissid “APP_TEST2”
    configParams.routerBSSID = self.codeResultParamDic[@"routerBSSID"]; //wifiBssid “5E:6E:0A:0F:E2:41"
    configParams.routerPwd = self.codeResultParamDic[@"routerPwd"];  //wifi密码
    
    NSDictionary *extraDic = [MideaConfigDeviceTool createFunctionSetDic];//示例见3.1
    configParams.countryCode = extraDic[kMSSDKConfigCountryCode];//@"countryCode" 国家代码(配旧设备时可缺省)
    configParams.channelList = extraDic[kMSSDKConfigChannelList];//@"channelList" 信道列表,以用户当前国家向云端询问获取(配旧设备时可缺省)
    configParams.timeZone = extraDic[kMSSDKConfigTimeZone];//@"timeZone"当前时区(配旧设备时可缺省)
    configParams.functionType = extraDic[kMSSDKConfigFunctionType];//@"functionType"功能集类型functionType
    configParams.moduleServerPort = extraDic[kMSSDKConfigModuleServerPort]; //@"moduleServerPort";  模块端口号
    configParams.moduleServerDomain = extraDic[kMSSDKConfigModuleServerDomain];//@"moduleServerDomain";模块域名
    configParams.regionId = extraDic[kMSSDKConfigRegionID];//@"regionID"  地区ID(配旧设备时可缺省)
    configParams.adsClusterId = self.codeResultParamDic[@"clusterId"];//app传递平台集群ID 
    
    [self.configManager startConfigureDevice:configParams configType:MSDeviceConfigAP progressCallback:^(MSmartDeviceConfigStepType apStep, MSBleConnectStateType bleStep) {
        if(apStep == MSmartDeviceConfigStepTypeConnectSuc) {
            self.flowLabel.text = @"连接设备成功...";
        } else if(apStep == MSmartDeviceConfigStepTypeConnectFailed){
            self.flowLabel.text = @"连接设备失败...";
        } else if(apStep == MSmartDeviceConfigStepTypeStartCheckCloud) {
            self.flowLabel.text = @"设备联网,开始广域网扫描...";
        }

    } completioncallback:^(NSError *_Nullable error, MSDevice * _Nullable device) {
        //高性能模组标识
        if (error.code == MSmartErrorCode_Suc) {
            self.flowLabel.text = @"设备联网成功...";
        } else if (error.code == MSmartErrorCode_WriteWifiInfoBy70_WrongPassword
                   || error.code == (MSmartErrorCode_WriteWifiInfoBy70_WrongPassword + 110000)) {//密码错误
            self.flowLabel.text = @"wifi密码错误...";
            
        } else if (error.code == 110000 + MSmartErrorCode_CurrentWifi_UnableAccessCloud){
            self.flowLabel.text = @"当前wifi无法访问云端,需连接指定wifi...";
            
        }else{
            self.flowLabel.text = [NSString stringWithFormat:@"%@",error.userInfo[NSLocalizedDescriptionKey]];
        }
        [self.startAddDeviceBtn setTitle:@"开始配网" forState:UIControlStateNormal];
    }];
}

(3)AP配网相关可配置项说明

变量名 类型 说明
configType 枚举MSDeviceConfigType 配网类型
progresscallback block回调MSProgressCallback 回调配网步骤.
completioncallback block回调MSCompletionCallback 回调配网结果信息
MSDeviceBleConfigParams.peripheral 对象CBPeripheral 蓝牙外设信息
MSDeviceBleConfigParams.routerSSID 字符串 路由器ssid
MSDeviceBleConfigParams.routerBSSID 字符串 路由器bssid
MSDeviceBleConfigParams.routerPwd 字符串 路由器密码
MSDeviceBleConfigParams.bleSecondConfigType 枚举 MSBLEConfigNetMode 二代蓝牙相关.0:预连接,1:连接,2:连接未授权
MSDeviceBleConfigParams.countryCode 字符串 国家码
MSDeviceBleConfigParams.timeZone 字符串 时区
MSDeviceBleConfigParams.channelList 数组 信道列表,以用户当前国家向云端询问获取(配旧设备时可缺省)
MSDeviceBleConfigParams.regionId 字符串 地区ID
MSDeviceBleConfigParams.moduleServerDomain 字符串 模块服务器域名
MSDeviceBleConfigParams.moduleServerPort 字符串 模块服务器端口号
MSDeviceBleConfigParams.functionType 字符串 功能集类型
MSDeviceBleConfigParams.adsClusterId 字符串 平台集群ID
MSDeviceApConfigParams.deviceType 字符串 设备类型
MSDeviceApConfigParams.routerSSID 字符串 路由器ssid
MSDeviceApConfigParams.routerBSSID 字符串 路由器bssid
MSDeviceApConfigParams.routerPwd 字符串 路由器密码
MSDeviceApConfigParams.adsClusterId 字符串 平台集群ID

# 4.4.2 蓝牙配网

依赖扫描到蓝牙外设

(1)蓝牙扫描 MSBLEDeviceManager

/**
 开始蓝牙扫描
 
 @param filters 设置过滤数组
 @param timeout 超时时间 设置为-1 为持续扫描
 @param scanback 回调蓝牙外设.
 
  - peripheral 聚合了蓝牙外设的广播信息 详细信息参考CBPeripheral+MSExtensions.h
 */
- (void)startScanWithFilter:(NSArray *__nonnull)filters
                    timeout:(NSTimeInterval)timeout
                   scanback:(MSBleScanCallback)scanback;

filters: 需根据业务实际情况设置过滤数组。过滤的依据是广播里的"kCBAdvDataLocalName"字段值和蓝牙名称。

    NSDictionary *options = @{
        CBCentralManagerRestoredStateScanOptionsKey:@(YES),
        CBCentralManagerScanOptionAllowDuplicatesKey:@(YES),
        CBCentralManagerOptionShowPowerAlertKey:@(NO)
    };
    
    [[MSBLEDeviceManager shareInstance] setMSBluetoothOptionsWithScanForPeripheralsWithOptions:options connectPeripheralWithOptions:nil scanForPeripheralsWithServices:nil discoverWithServices:nil discoverWithCharacteristics:nil];
    
    @weakify(self);
    [[MSBLEDeviceManager shareInstance] startScanWithFilter:@[@"midea"] timeout:timeInterval scanback:^(CBPeripheral * _Nullable peripheral) {
        @strongify(self);
        [self dealFindBlePeripheral:peripheral error:nil];
    }];

扫描到外设蓝牙数据解析

NSData *data = peripheral.msAdvertiDictonary[@"kCBAdvDataManufacturerData"];
NSString *ssid = peripheral.msAdvertiDictonary[@"kCBAdvDataLocalName"];
NSDictionary *bleInfo = [MSmartBleTool bleAdvDicWithPeripheral:data bleName:ssid];

bleInfo字典字段说明

key value类型 说明
bleProtcolVersion 字符串 蓝牙协议版本
moduleType NSNumber 蓝牙模块类型(2:wifi+ble 0:一代单ble 1:二代单蓝牙 3:二代双模蓝牙 4:所有)
isWifiConfiged @(NO)/@(YES) wifi配置状态
wifiConfigEnable @(NO)/@(YES) WiFi配置功能是否可用
transportEnable @(NO)/@(YES) 是否支持BLE数据透传
deviceSSID 字符串 设备热点名称
deviceType 字符串 设备类型
deviceName 字符串 同deviceSSID
deviceSubType 字符串 设备子类型
deviceSN8 字符串 设备sn8
bindState @(NO)/@(YES) BLE APP绑定状态
isAuthority @(NO)/@(YES) BLE (二代单蓝牙用于app判断模组是否确权了,跳过配网指引)单蓝牙模组为前确权模组
affiliatedEnable @(NO)/@(YES) //是否支持网桥挂靠
otaEnable @(NO)/@(YES) 是否支持BLE OTA
functionSetEnable @(NO)/@(YES) 是否海内外统一模组,0:非统一;1:统一
regionIDEnable @(NO)/@(YES) 是否支持地区ID
supportBind @(NO)/@(YES) 是否支持绑定功能
deviceMac 字符串 设备Mac
errorCode 字符串 错误码
referenceRSSI NSNumber RSSI

(2)配网操作管理类MSDeviceConfigManager

 @note there is a 90 seconds timeout. tip:wifi module is appliance can not support 5G wifi network.
 @brief 开始配网
 @param params 配网参数模型
 @param configType 配网类型
 @param progresscallback 回调配网步骤.
  - MSmartDeviceConfigStepType apStep AP配网步骤回调
  - MSBleConnectStateType bleStep 蓝牙配网步骤回调
 @param completioncallback 完成回调配网信息
 */
- (void)startConfigureDevice:(MSDeviceConfigParams *__nonnull)params
                  configType:(MSDeviceConfigType)configType
            progressCallback:(MSProgressCallback)progresscallback
          completioncallback:(MSCompletionCallback)completioncallback;

startConfigureDevice:AP配网MSDeviceConfigBluetooth

(3)示例

- (void)startBleConnect {
    DDLogDeviceInfo(@"二代蓝牙配网参数 : deviceMac = %@, routerBSSID = %@,  routerSSID = %@,   routerPassword = %@,  familyId = %@,  connectMode = %lu, \n Peripheral = %@",  self.deviceMac, self.wifiBssid, self.wifiSsid, self.wifiPassword, self.familyId, (unsigned long)self.mode, self.peripheral );
    
    MSDeviceBleConfigParams *params = [[MSDeviceBleConfigParams alloc] init];
    params.peripheral = self.peripheral; //
    params.routerSSID = self.wifiSsid; // wifissid “APP_TEST2”
    params.routerPwd =self.wifiPassword; //wifi密码
    params.routerBSSID = self.wifiBssid;//wifiBssid “5E:6E:0A:0F:E2:41"
    params.bleSecondConfigType = self.mode; // MSBLEConfigNetMode_Connection
    
    NSDictionary *tmpDic = [MideaConfigDeviceTool createFunctionSetDic];//示例见3.1
    //国家码,信道数据,地区ID
    params.countryCode = tmpDic[kMSSDKConfigCountryCode]; //@"countryCode" 国家代码(配旧设备时可缺省)
    params.timeZone = tmpDic[kMSSDKConfigTimeZone];//@"timeZone"当前时区(配旧设备时可缺省)
    params.channelList = tmpDic[kMSSDKConfigChannelList];//@"channelList" 信道列表,以用户当前国家向云端询问获取(配旧设备时可缺省)
    params.regionId = tmpDic[kMSSDKConfigRegionID];//@"regionID"  地区ID(配旧设备时可缺省)
    params.moduleServerDomain = tmpDic[kMSSDKConfigModuleServerDomain];//@"moduleServerDomain";模块域名
    params.moduleServerPort = tmpDic[kMSSDKConfigModuleServerPort];//@"moduleServerPort";  模块端口号
    params.functionType = tmpDic[kMSSDKConfigFunctionType];//@"functionType"功能集类型functionType
    params.adsClusterId = [NSString stringWithFormat:@"%@",[MideaUserManager shareInstance].currentUser.clusterId];//app传递平台集群ID 
    
    @weakify(self);
    [[MSDeviceConfigManager shareInstance] startConfigureDevice:params configType:MSDeviceConfigBluetooth progressCallback:^(MSmartDeviceConfigStepType apStep, MSBleConnectStateType bleStep) {
        @strongify(self);
        switch (self.bleStep) {
            case MSBleConnectStepTypeStartConfig:    // 6(联网准备)
            
                break;
             case MSBleConnectStepTypeFindingDeviceInCloud: //11(设备联网)
            
                 break;
             case MSBleConnectStepTypeFindDeviceInCloudSuccess:  //12 
            
            	break;
            default:
                break;
        }
    } completioncallback:^(NSError * _Nullable error, MSDevice * _Nullable device) {
        DDLogDeviceInfo(@"二代蓝牙配网结果--------------------------------------------------------------------------%@--%@", error, [device mj_JSONObject]);
        if(error.userInfo){
           
        }
        
        if (error.code == 0) {
            [self activeDevice:device];//激活设备
        }
        else{
            if (error.code == MSmartErrorCode_Ble_WriteWifiInfo_WrongPassword
                || error.code == (MSmartErrorCode_Ble_WriteWifiInfo_WrongPassword + 110000)) {//密码错误
              
            }   
        }
    }];
}

(4)蓝牙配网相关可配置项说明

@interface MSDeviceBleConfigParams : MSDeviceConfigParams

///路由器ssid
@property(nonatomic, copy,nullable) NSString *routerSSID;
///路由器密码
@property(nonatomic, copy,nullable) NSString *routerPwd;
///路由器bssid
@property(nonatomic, copy,nullable) NSString *routerBSSID;
///设备sn
@property(nonatomic, copy,nullable) NSString *deviceSN;
///设备SSID
@property(nonatomic, copy,nullable) NSString *deviceSSID;
///设备密码
@property(nonatomic, copy,nullable) NSString *devicePassword;
///设备类型
@property(nonatomic, copy,nullable) NSString *deviceType;
///设备子类型
@property(nonatomic, copy,nullable) NSString *deviceSubtype;
///设备ID
@property(nonatomic, copy,nullable) NSString *deviceId;
///设备名称
@property(nonatomic, copy,nullable) NSString *deviceName;
///随机数
@property(nonatomic, copy,nullable) NSString *randomNum;
///1:非open模式,0:open模式
@property(nonatomic, copy,nullable) NSString *securityType;

#pragma mark 蓝牙相关
///蓝牙外设信息
@property(nonatomic, strong, nullable) CBPeripheral *peripheral;
///蓝牙直连控制绑定码
@property(nonatomic, copy,nullable) NSString *bindCode;
///蓝牙直连控制类型
@property(nonatomic, assign) MSBLEDirectConnectionType bleDirectConnectionType;
///二代蓝牙相关
@property(nonatomic, assign) MSBLEConfigNetMode bleSecondConfigType;
/// 蓝牙绑定绑定码下发动作类型
@property(nonatomic, assign) MSBLEBindActionType bleBindActionType;
///蓝牙配网模式
@property (nonatomic ,assign,readwrite) MSBLEType bleType;

///地区ID
@property(nonatomic, copy,nullable) NSString *regionId;
///模块服务器域名
@property(nonatomic, copy,nullable) NSString *moduleServerDomain;
///模块服务器端口号
@property(nonatomic, copy,nullable) NSString *moduleServerPort;
///国家码
@property(nonatomic, copy,nullable) NSString *countryCode;
///时区
@property(nonatomic, copy,nullable) NSString *timeZone;
///功能集类型
@property(nonatomic, copy,nullable) NSString *functionType;
///信道列表
@property(nonatomic, strong,nullable) NSArray *channelList;

///平台集群ID
@property (nonatomic, copy) NSString *adsClusterId;
///ads域名
@property (nonatomic, copy) NSString *adsDomain;
///ads端口号
@property (nonatomic, copy) NSString *adsPort;

///后确权使能
@property(nonatomic, assign) BOOL  authEnable;
///固定信道使能
@property(nonatomic, assign) BOOL  channelEnable;
///设置国家码使能
@property(nonatomic, assign) BOOL  countryCodeEnable;

///功能集使能
@property(nonatomic, assign) BOOL  functionSetEnable;
///地区ID使能
@property(nonatomic, assign) BOOL  regionIdEnable;
///支持绑定功能
@property (nonatomic, assign) BOOL supportBind;

///恢复配网相关 恢复配网类型
@property(nonatomic, assign) MSConfigContinueType  continueType;

///AP/蓝牙校验密码错误使能
@property(nonatomic, assign) BOOL  checkPasswordEnable;

# 4.5 错误码

typedef NS_ENUM(NSInteger, MSmartErrorCode)
{
    MSmartErrorCode_Suc = 0,//成功
    MSmartErrorCode_FindDeviceInLANTimeOut = 4000,//局域网未发现设备 No device found
    MSmartErrorCode_QRCodeInvalid = 4001,//二维码错误 Invalid QRCode
//    MSmartErrorCode_HomeWifiNotChange = 4002,//手机未切换至配网的目标wifi Failed to change Wi-Fi network
    MSmartErrorCode_DeviceSSIDInvalid = 4006,//待配网的设备热点不符合热点格式 Unknown Device, the Wi-Fi AP SSID must start with fixed format
    MSmartErrorCode_APDisConnect = 4007,//未与设备AP热点建立起连接 Failed to connect to Midea Appliance
    MSmartErrorCode_FindDeviceTimeOutInAPMode = 4011,//配网第一步在AP模式下超时时间内未发现设备 Failed to connect to Midea Appliance
    MSmartErrorCode_HomeWifiBssidInvalid = 4012,//家庭路由wifi bssid不合法
    MSmartErrorCode_FindDeviceTimeOutInSTAMode = 4013,//配网在STA模式下超时时间内未发现设备 Failed to connect to Midea Appliance
    MSmartErrorCode_WriteTempId_TimeOut = 4014,//设置临时id应答超时
    MSmartErrorCode_WriteTempId_ReturnFailed = 4015,//设置临时id返回值错误

    MSmartErrorCode_GetWifiListFailed = 4019,//获取周边wifi列表失败
    MSmartErrorCode_WriteWifiInfoBy70_WrongSSID = 4020,//新模块设置ssid密码环节ssid长度有误
    MSmartErrorCode_WriteWifiInfoBy70_WrongPwdLength = 4021,//新模块设置ssid密码环节pwd长度有误
    MSmartErrorCode_WriteWifiInfoBy70_WrongBSSID = 4022,//新模块设置ssid密码环节bssid长度有误
    MSmartErrorCode_WriteWifiInfoBy70_TimeOut = 4023,//新模块设置ssid密码环节超时无应答
    
    MSmartErrorCode_WriteWifiInfoBy68_ReturnFailed = 4024,//旧模块设置ssid密码环节失败
    MSmartErrorCode_WriteWifiInfoBy68_TimeOut = 4025,//旧模块设置ssid密码环节超时无应答
    MSmartErrorCode_SwitchSTAFailed = 4029,//旧模块由AP切换至STA模式失败
    
    MSmartErrorCode_DisConnectHomeWifi = 4030,//快连模式当前连接的wifi不是家庭wifi
    MSmartErrorCode_FastConnectFindDeviceTimeOut = 4031,//快连模式在超时时间内未发现设备(局域网或者云端发现)
    MSmartErrorCode_ConfigVersionNonsupport = 4032,//当前不支持该模块版本的配网,需升级SDK
   
    MSmartErrorCode_Ble_GetPublicKeyFailed = 4051,//蓝牙配网,秘钥协商获取公钥失败
    MSmartErrorCode_Ble_CheckKeyFailed = 4052,//蓝牙配网,秘钥协商校验秘钥失败
    
    MSmartErrorCode_Ble_WriteWifiInfoBy69_UnknownReply = 4053,//蓝牙配网,发送网络信息失败未知回复
    MSmartErrorCode_Ble_WriteTokenFailed = 4055,//蓝牙配网,设置token失败
    MSmartErrorCode_Ble_FindSSIDFailed = 4056,//蓝牙配网,找不到ssid
    MSmartErrorCode_Ble_ConnectWifiFailed    = 4057,//一代蓝牙,连接路由器失败
    MSmartErrorCode_Ble_ParseDNSFailed     = 4058,
    MSmartErrorCode_Ble_ConnectCloudTCPFailed     = 4059,
    MSmartErrorCode_Ble_HeartbeatTimeOut      = 4060,
    MSmartErrorCode_Ble_ConnectCloudSSTFailed   = 4061,
    MSmartErrorCode_Ble_ModuleActiveRestart       = 4062,
    MSmartErrorCode_Ble_ModulePassiveRestart = 4063,
    MSmartErrorCode_Ble_ConnectCloudSDKAuthFailed = 4064,
    MSmartErrorCode_Ble_ConnectCloudClosed = 4065,
    MSmartErrorCode_Ble_ConnectCloudSendDataFailed = 4066,
    MSmartErrorCode_Ble_UnEnable = 4079,//蓝牙配网,蓝牙开关未开启(蓝牙不可用)
    MSmartErrorCode_Ble_NotFindBLEDevice = 4080,//蓝牙配网,在超时时间内未发现目标蓝牙外设
    MSmartErrorCode_Ble_NotScan = 4081,//蓝牙配网,未扫描获取蓝牙外设
    MSmartErrorCode_Ble_Unknow_Error = 4082,//蓝牙未知错误
    
    MSmartErrorCode_Ble_ConnectPeripheralFail = 4085,//蓝牙配网,连接外设失败
    MSmartErrorCode_Ble_DiscoverServiceFail = 4086,//蓝牙配网,发现服务失败
    MSmartErrorCode_Ble_DiscoverCharacteristicsFail = 4087,//蓝牙配网,发现特征失败
    MSmartErrorCode_Ble_CheckStatusFail = 4088,//蓝牙配网,查询状态失败
    
    MSmartErrorCode_Ble_Timeout = 4089,//蓝牙配网,超时
    
    MSmartErrorCode_WriteWifiInfoBy70_WrongPassword = 4090,//新模块设置ssid密码环节路由器密码错误
    //二代蓝牙新增错误码
    MSmartErrorCode_Ble_WriteWifiInfo_WrongPassword = 4094,//二代蓝牙配网,模组返回路由密码错误
    MSmartErrorCode_Ble_WriteWifiInfoBy69_ParamDif = 4096,//发送wifi信息,模组回复参数错误
    MSmartErrorCode_Ble_WriteWifiInfoBy69_ParamWrong = 4097,//发送wifi信息,模组回复参数与已连接参数不一致
    MSmartErrorCode_Ble_RouterRSSIWeak = 4098,//模块上报连接路由失败,信号弱
    MSmartErrorCode_Ble_DHCPFailed = 4099,//模块上报DHCP失败
    MSmartErrorCode_Ble_RouterAuthError = 4100,//模块上报路由器认证错误
    MSmartErrorCode_Ble_RouterAssociationError = 4101,//模块上报路由器关联错误
    MSmartErrorCode_Ble_LoginServerTimeOut = 4115,//模块上报服务器登录超时
    MSmartErrorCode_Ble_Error0x11 = 4116,//APP发送的信道在1~13之间,且SSID包含有“5G/-5G/_5G”等有5G标识的相关字符集,WiFi模块扫描路由器AP失败。
    MSmartErrorCode_Ble_Error0x12 = 4117,//APP发送的信道在1-13之间,且SSID没有包含“5G/-5G/_5G”相关字符集,wifi模块扫描路由器AP失败。
    MSmartErrorCode_Ble_Error0x13 = 4118,//APP发送的信道是0,且SSID中没有包含“5G/-5G/_5G”相关字符集wifi模块扫描路由器AP失败。
    MSmartErrorCode_Ble_Error0x14 = 4119,//APP发送的信道是>13,且SSID中没有包含“5G/-5G/_5G”相关字符集wifi模块扫描路由器AP失败
    MSmartErrorCode_Ble_Error0x15 = 4120,//APP发送的信道>13,且SSID包含有“5G/-5G/_5G”等有5G标识的相关字符集,wifi模块扫描路由器AP失败
    MSmartErrorCode_Ble_Error0x16 = 4121,//APP发送的信道是0,且SSID包含有“5G/-5G/_5G”等有5G标识的相关字符集,wifi模块扫描路由器AP失败。
    
    MSmartErrorCode_Ble_FamilyId_Is_Null = 4170,//网桥子设备配网,业务层没有传家庭id
    MSmartErrorCode_Ble_DeviceGetFail = 4171,//网桥子设备配网,云端获取deviceId失败
    MSmartErrorCode_Ble_SendDeviceIdAndFamilyIdFail = 4172,//网桥子设备配网,发送deviceId给模组失败
    
    MSmartErrorCode_CurrentWifi_UnableAccessCloud = 4122,//当前的wifi无法访问云端
    
    MSmartErrorCode_Ble_CountryCodeError            = 4123,//蓝牙配网国家码错误
    MSmartErrorCode_Ble_TimezoneError              = 4124,//蓝牙配网时区错误
    MSmartErrorCode_Ble_ChannelListError            = 4125,//蓝牙配网信道表错误
    MSmartErrorCode_Ble_InvalidPeripheral            = 4126,//蓝牙配网,当前蓝牙外设不支持
    
    MSmartErrorCode_WriteWifiInfoBy70_CountryCodeError            = 4127,//AP配网国家码错误
    MSmartErrorCode_WriteWifiInfoBy70_TimezoneError              = 4128,//AP配网时区错误
    MSmartErrorCode_WriteWifiInfoBy70_ChannelListError            = 4129,//AP配网信道表错误
    MSmartErrorCode_WriteWifiInfoBy70_UnKnown            = 4135,//AP配网模块应答未知错误
    MSmartErrorCode_WriteWifiInfoBy70_ModuleServerDomainError              = 4136,//AP配网,模块服务器域名错误
    MSmartErrorCode_WriteWifiInfoBy70_ModuleServerPortError            = 4137,//AP配网,模块服务器端口号错误
    MSmartErrorCode_WriteWifiInfoBy70_RegionIDError            = 4138,//AP配网,地区ID错误
    MSmartErrorCode_WriteWifiInfoBy70_FunctionTypeError            = 4139,//AP配网,功能集类型错误
    MSmartErrorCode_Ble_ModuleServerDomainError = 4140,//蓝牙配网模块服务器域名错误
    MSmartErrorCode_Ble_ModuleServerPortError = 4141,//蓝牙配网模块服务器端口号错误
    MSmartErrorCode_Ble_RegionIDError = 4142,//蓝牙配网区域ID错误
    MSmartErrorCode_Ble_FunctionTypeError = 4143,//蓝牙配网功能集类型错误
    MSmartErrorCode_Ble_UnSupport5GWIFIError = 4144,//蓝牙配网模块回复不支持5G WiFi
    MSmartErrorCode_Ble_AlreadyBind = 4145,//蓝牙配网模块回复设备已被绑定
    MSmartErrorCode_Ble_ReceiveDataError = 4146,//蓝牙配网模块回复数据接收失败
    MSmartErrorCode_Ble_BindAndVerifyCommondError = 4147,//蓝牙绑定校验失败
    MSmartErrorCode_Ble_QueryAuthFailed= 4148,//蓝牙查询确权状态失败
    MSmartErrorCode_Ble_SetAuthFailed = 4149,//蓝牙设置确权状态失败
    MSmartErrorCode_Ble_ReportAuthFailed = 4150,//蓝牙上报设备确权状态失败
    
    ///ap ADS
    MSmartErrorCode_NewSetPwdAndSSID_ADSClusterIdCodeError            = 4160,//ADS集群ID错误
    MSmartErrorCode_NewSetPwdAndSSID_ADSDNSAnalysisCodeError            = 4161,//ADS DNS解析错误
    MSmartErrorCode_NewSetPwdAndSSID_ADSTCPConnectError              = 4162,//ADS Tcp连接失败
    MSmartErrorCode_NewSetPwdAndSSID_ADSDomonError            = 4163,//请求接入层域名错误
    
    ///蓝牙 ADS
    MSmartErrorCode_NewSetPwdAndSSID_BLE_ADSClusterIdCodeError            = 4164,//ADS集群ID错误
    MSmartErrorCode_NewSetPwdAndSSID_BLE_ADSDNSAnalysisCodeError            = 4165,//ADS DNS解析错误
    MSmartErrorCode_NewSetPwdAndSSID_BLE_ADSTCPConnectError              = 4166,//ADS Tcp连接失败
    MSmartErrorCode_NewSetPwdAndSSID_BLE_ADSDomonError            = 4167,//请求接入层域名错误(69)
    MSmartErrorCode_BLE_ADSDomonError            = 4174,//请求接入层域名错误(0D)
    MSmartErrorCode_BLE_ADS_ID_Error            = 4173,//模组ADS ID错误
    
    
    MSmartErrorCode_BLE_Router_RSSI_Week            = 4175,//模组反馈路由信号太弱
    MSmartErrorCode_BLE_Domain_TimeOut            = 4176,//模组连上路由器之后,登录云端失败
    
    
    //OTA
//    MSmartErrorCode_ModuleUpdateFailed = 5000,//待修复wifi模块升级失败,超时 Update module failed
//    MSmartErrorCode_ModuleUpdate_Unknown = 5001,//升级模块失败,未知消息 Update module unknow message
//    MSmartErrorCode_ModuleUpdate_UnfindFile = 5002,//升级模块失败,升级文件未找到 Do not find file
//    MSmartErrorCode_ModuleUpdate_DownloadFailed = 5003,//升级模块失败,下载错误 Download failed
//    MSmartErrorCode_ModuleUpdate_CheckSum = 5004,//升级模块失败,升级Image文件checksum错误 CheckSum failed
//    MSmartErrorCode_ModuleUpdate_TFTPTimeout = 5005,//升级模块失败,TFTP server响应超时 Tftp server is time out
//    MSmartErrorCode_ModuleUpdate_WrongName = 5006,//升级模块失败,错误的文件名 File's name is wrong
//    MSmartErrorCode_ModuleUpdate_Protocol = 5007,//升级模块失败,协议不支持 The protocol is not supported
//    MSmartErrorCode_ModuleUpdate_Index = 5008,//升级模块失败,无效的分区索引 Wrong index
//    MSmartErrorCode_ModuleUpdate_ImageHDR = 5009,//升级模块失败,IMAGE_HDR错误 Image_hdr wrong
//    MSmartErrorCode_ModuleUpdate_RestarFailed = 5010,//重启模块失败 Restart module failed
//    MSmartErrorCode_DeviceModuleInfoFailed = 5011,//获取设备类型失败 Get module info failed
//    MSmartErrorCode_ModuleUpdate_NotInLan = 5012,//修复有问题模块环节局域网中未找到设备
//    MSmartErrorCode_ModuleUpdate_SetDeviceTempId = 5013,//修复有问题模块环节设置临时id失败
    //蓝牙 OTA
    MSmartErrorCode_Ble_OTA_GetModuleVersionFailed = 5014,//升级模块,获取模块版本失败
    MSmartErrorCode_Ble_OTA_RestartFailed = 5101,//蓝牙重启失败
    MSmartErrorCode_Ble_OTA_CheckBinFailed = 5102,//OTA检查bin文件失败
    MSmartErrorCode_Ble_OTA_QueryStatusFailed = 5103,//OTA查询状态失败
    MSmartErrorCode_Ble_OTA_QueryBootFailed = 5104,//OTA查询Boot版本号失败
    MSmartErrorCode_Ble_OTA_EraseFlashFailed = 5105,//OTA擦除Flash失败
    MSmartErrorCode_Ble_OTA_RequestFlashFailed = 5106,//OTA请求Flash失败
    MSmartErrorCode_Ble_OTA_WriteFlashFailed = 5107,//OTA写入Flash失败
    MSmartErrorCode_Ble_OTA_CheckFlashFailed = 5108,//OTA校验Flash失败
    MSmartErrorCode_Ble_OTA_UpgradeFailed = 5109,//OTA升级失败
    //透传相关
    MSmartErrorCode_Transport_ResultIllegal = 6000,//透传返回数据解密失败,消息体不合法
    MSmartErrorCode_DevProtocolCmdError = 6001,//lua脚本获取指令失败 Get command fail
    MSmartErrorCode_Transport_TimeOut = 6002,//透传超时,即设备未应答
    MSmartErrorCode_LuaFileEXEInternalFailed = 6003,//lua脚本解析指令异常(指令数据格式异常)
//    MSmartErrorCode_DeviceUnAuthentication = 6004,//设备未确权
    MSmartErrorCode_DeviceIdInvalid = 6006,//设备ID错误(家电不存在) DeviceId Error, Device not exists
    MSmartErrorCode_LuaFileDecryptFailed = 6015,//lua脚本解密失败
    MSmartErrorCode_LuaFileUrlNull = 6016,//云端lua版本管理接口返回url为空
    MSmartErrorCode_LuaFileMD5Null = 6017,//云端lua版本管理接口返回md5为空
    MSmartErrorCode_LuaFileMD5CheckFailed = 6018,//下载的lua脚本md5校验不通过
    MSmartErrorCode_LuaByteToJsonFailed = 6019,//使用Lua将二进制转JSON失败
    MSmartErrorCode_LuaJsonToByteFailed = 6020,//使用Lua将JSON转二进制失败
    MSmartErrorCode_LuaGetInfoFailed = 6022,//获取Lua信息失败
    MSmartErrorCode_LuaFileDownLoadFailed = 6023,//下载Lua失败

    //设备状态查询错误
    MSmartErrorCode_CloundRandomCodeFailed = 1321,//云端发现sn在线,但随机数未上报成功
    MSmartErrorCode_CloundDeviceOffLine = 1307,//云端查询设备不在线
    MSmartErrorCode_BLELANONLINE = 4168 ,//蓝牙配网,局域网在线,云端查找sn和随机数都没找到
    MSmartErrorCode_FINDLANONLINE = 4169,//AP配网,局域网在线,云端查找sn和随机数都没找到
    
    //内部错误
    MSmartErrorCode_ParamsInvalid = 8000,//参数不合法
    
    MSmartErrorCode_BLEOTAError = 8002,//蓝牙 OTA 升级中出错 BLE OTA error
    
    //网络请求
    MSmartErrorCode_ServerBackFormatWrong = 9000,//服务器返回数据格式异常
    MSmartErrorCode_NetCancel = 9001,//网络请求取消
    MSmartErrorCode_NetSysTemError = 9002,//网络请求异常
    MSmartErrorCode_NetWorkError = 9003,//无法连接网络 Network is not available
};

# 4.6 IOS-SDK下载

点击下载 (opens new window)

最后修改于: 2024-09-18