uSDK

概述

uSDK 封装了uSDK4.0,可以实现的功能包括智能设备配置入网、搜索、状态查询、控制、接收报警等。

路由器环境设置

目前海尔智能设备只能匹配2.4g频段路由,才能正常工作和使用,暂不支持5g频段。

路由无线网络基本设置

由于当前市场上路由品牌和手机品牌丰富多样,手机和路由联合工作时容易存在兼容性问题(如11bgn mixed模式),导致手机、路由、海尔智能设备不能正常协同工作(始终无法配置成功、始终不能发现U+只能设备后者配置成功率时高时低),这时可以参考如下截图对路由设置进行更改。 注意:SSID号不建议使用中文,建议使用英文和数字。因为中文符涉及到编解码问题,当APP、路由器编解码机制不同时,将导致设备无法配置成功。

uSDK

iOS端http请求配置

iOS端需要配置ATS(App Transport Security),具体配置方法参考[APP开发技巧] 【官方】iOS修改Info.plist 中“三.3. 配置ATS(App Transport Security)”

使用此模块之前iOS端需先在 config.xml文件配置基础环境属性,方法如下

  • 名称:uSDK
  • 参数:APPID
  • 参数:app_key
  • 参数:app_secret
  • 配置示例:
  <feature name="uSDK">
        <param name="APPID" value="MB-YZCS-0000" />
        <param name="app_key" value="8e22e867fdd5fb97325e2f042e633706" />
        <param name="app_secret" value="3F49AD63FBDDF272D0FEEF3400E40B15" />
    </feature>
  • 字段描述:

    APPID:在海极网为物联App申请的APPID,用于App校验。

    app_key:在海极网申请,用于与OPEN API交互时使用。APP开发中只有“开发测试”的app_key。开发完成且提交海极网审核完成后会发放“生产”的app_key,APP使用生产的app_key进行发布。

    app_secret:在海极网申请,uSDK使用。

使用此模块之前Android端需先在 config.xml文件配置基础环境属性,方法如下

    <meta-data name="APP_ID" value="MB-HAIERSDKU-0000"/>
    <meta-data name="APP_KEY" value="b3c88fbf455ee85795ee73463d7b4ec8"/>
    <meta-data name="SECRET_KEY" value="0CD3F75117E236686C35CBA84C8CC360"/>
  • 字段描述:

    APPID:在海极网为物联App申请的APPID,用于App校验。

    app_key:在海极网申请,用于与OPEN API交互时使用。APP开发中只有“开发测试”的app_key。开发完成且提交海极网审核完成后会发放“生产”的app_key,APP使用生产的app_key进行发布。

    app_secret:在海极网申请,uSDK使用。

startSDK

启动uSDK。启动uSDK是调用各种功能性API,使用U+物联功能的前提。

startSDK({params}, callback(ret, err))

params

types:

  • 类型:数组类型
  • 描述:(可选)设置过滤设备类型
  • 默认:全部类型
{
     types : [
               0,      //数字类型;所有设备类型
               1,        //数字类型;冰箱
               2,        //数字类型;分体空调
               3,        //数字类型;柜机空调
               4,        //数字类型;波轮洗衣机
               5,        //数字类型;滚筒洗衣机
               6,        //数字类型;热水器
               7,        //数字类型;微波炉
               8,        //数字类型;酒柜
               9,        //数字类型;油烟机
               10,        //数字类型;洗碗机
               11,        //数字类型;消毒柜
               12,        //数字类型;保留
               13,        //数字类型;商用空调
               14,        //数字类型;电视
               15,        //数字类型;娱乐设备:媒体中心,音响等
               16,        //数字类型;灯光照明
               17,        //数字类型;安全防范:安防设备
               18,        //数字类型;视频监控
               19,        //数字类型;传感器:各类环境传感器
               20,        //数字类型;智能家居:智能窗帘,三表等
               21,        //数字类型;医疗保健:各种家庭医疗监护,远程医疗等
               22,        //数字类型;冷柜
               23,        //数字类型;医用柜
               24,        //数字类型;燃气热水器
               25,        //数字类型;采暖炉
               26,        //数字类型;蒸箱
               27,        //数字类型;咖啡机
               28,        //数字类型;饮水机
               29,        //数字类型;灶具
               30,        //数字类型;烤箱
               31,        //数字类型;太阳能热水器
               33,        //数字类型;空气净化器
               34,        //数字类型;净水机
               51,        //数字类型;空气魔方
               225,        //数字类型;路由模块
               226,        //数字类型;智能路由器
               241,        //数字类型;控制终端
               0X24,    //数字类型;新风设备
               0X28,    //数字类型;小厨电
               0X26,    //数字类型;公共服务类
               0X29,    //数字类型;环境监测设备
               0X35,    //数字类型;其他
               0X27,    //数字类型;除尘设备
               0X32,    //数字类型;可穿戴设备
               0X20,    //数字类型;热泵
               0X23,    //数字类型;水壶
               0X25,    //数字类型;地暖设备
               0X30,    //数字类型;网关
               0XA1,    //数字类型;机器人
               49,        //数字类型;干衣机
               52,        //数字类型;浴霸及暖风机
               54        //数字类型;个人护理类
                 ]
}

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
       success : 'Y'      //字符串类型;成功  
}

err:

  • 类型:JSON对象
  • 内部字段:
{
   code : -10002,              //数字类型;错误码
    description : ''      //字符串类型;错误码的文字描述   
}

示例代码

 var uSDK = api.require('uSDK');
 uSDK.startSDK({},function(ret, err) {
                  if (ret) {
                     alert(JSON.stringify(ret));
                  } else {
                     alert(JSON.stringify(err));
                  }
                });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopSDK

停止uSDK。

stopSDK(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
       success : 'Y'      //字符串类型;成功  
}

err:

  • 类型:JSON对象
  • 内部字段:
{
   code : -10002,              //数字类型;错误码
    description : ''      //字符串类型;错误码的文字描述   
}

示例代码

 var uSDK = api.require('uSDK');
 uSDK.stopSDK(function(ret, err) {
                  if (ret) {
                     alert(JSON.stringify(ret));
                  } else {
                     alert(JSON.stringify(err));
                  }
                });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

configDevice

SmartLink方式配置设备入网。将设备加入指定无限网络,或更改设备所在网络。

configDevice({params}, callback(ret, err))

params

ssid:

  • 类型:字符串类型
  • 描述:无限网络名称,不支持中文,最大长度31
  • 默认:无

pwd:

  • 类型:字符串类型
  • 描述:无限网络密码,不支持中文,最大长度63
  • 默认:无

mac:

  • 类型:字符串类型
  • 描述:设备mac地址
  • 默认:无

timeoutInterval:

  • 类型:数字类型
  • 描述:(可选)配置超时时间,单位为秒,范围为30秒-120秒
  • 默认:60秒

security:

  • 类型:布尔类型
  • 描述:(可选)安全配置方法标示。true时,进行安全配置;false,普通配置
  • 默认:false

callback(ret, err)

ret:

  • 类型:JSON对象
  • 描述:设备信息
  • 内部字段:(如果没有则不返回)
{
       mac : ''           //字符串类型;设备mac  
       deviceID : ''      //字符串类型;设备ID  
       security : '非安全设备'      //字符串类型;设备安全性(安卓无此字段) 
                          // 取值范围:
                          // '未知'
                          // '安全性未知设备'
                          // '安全设备'
                          // '非安全设备'

       protocolType : '六位码' //字符串类型;设备应用协议类型
                                      // 取值范围:
                              // '未知'
                                 // '标准'
                              // '六位码' 
       isComplexDevice : false   //布尔类型;是否是复杂设备(安卓无此字段) 
          ip : ''      //字符串类型;设备IP  
       port :       //数字类型;设备端口(安卓无此字段)   
       uplusID : ''      //字符串类型;设备的类型唯一识别码,用来唯一标识设备类型
       state : ''      //字符串类型;获取设备状态
                           // 取值范围:
                       // '未知'
                          // '未连接'
                       // '连接中'
                       // '已连接'
                          // '就绪'
                       // '离线' 
       isSubscribed : true      //布尔类型;设备是否已被订阅(安卓无此字段)   
       securityVersion :      //数字类型;  
       eProtocolVer : ''      //字符串类型;设备遵守的E++协议版本号 
          softwareType : 'mqttUGWAuth'      //字符串类型;设备wifi的平台信息,如果此字段值为mqttUGWAuth 则表示设备支持授权
       smartLinkSoftwareVersion : ''    //字符串类型;设备模块的软件版本号  
       smartLinkHardwareVersion : ''    //字符串类型;设备模块的硬件版本号 
       smartLinkDevfileVersion : ''     //字符串类型;设备模块使用的配置文件版本号 
       type : '电热水器'      //字符串类型;设备大类分类  
       middleType :       //数字类型;设备中类 
       specialId : ''      //字符串类型;设备专用号 
          netType : '本地'      //字符串类型;设备的网络类型
                                 // 取值范围:
                         // '未知'
                            // '远程'
                         // '本地'
       isRemoteDeviceOnline : false    //布尔类型;(安卓无此字段) 
       supportNoPwdConfig : false      //布尔类型;(安卓无此字段)  
}

err:

  • 类型:JSON对象
  • 内部字段:
{
   code : -10002,        //数字类型;错误码
    description : ''      //字符串类型;错误码的文字描述   
}

示例代码

var uSDK = api.require('uSDK');
uSDK.configDevice({
                      ssid : 'APICloud',
                      pwd : 'yzkjapi2015',
                      mac : 'DC330D5739D5',
                      timeoutInterval : 120,
                      security : false
                  },function(ret, err) {
                      if (ret) {
                         alert(JSON.stringify(ret));
                      } else {
                         alert(JSON.stringify(err));
                      }
               });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopConfigDevice

在执行配置设备入网过程中,中断设备配置入网。

stopConfigDevice(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
       success : 'Y'      //字符串类型;成功  
}

err:

  • 类型:JSON对象
  • 内部字段:
{
   code : -10002,              //数字类型;错误码
    description : ''      //字符串类型;错误码的文字描述   
}

示例代码

 var uSDK = api.require('uSDK');
 uSDK. stopConfigDevice(function(ret, err) {
                  if (ret) {
                     alert(JSON.stringify(ret));
                  } else {
                     alert(JSON.stringify(err));
                  }
                });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getDeviceList

获得设备列表集合。

getDeviceList(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
       notification : false    //布尔类型;是否是通知。false时,调用本接口主动获取设备列表时的回调;true时,当周围设备增加或者减少,设备列表集合发生变化时的回调
       deviceInfos :             //数组类型;设备信息集合
        [                       
             {                           //JSON对象;设备信息(内部字段如果没有则不返回)
               mac : ''           //字符串类型;设备mac  
             deviceID : ''      //字符串类型;设备ID  
               security : '非安全设备'      //字符串类型;设备安全性(安卓无此字段) 
                          // 取值范围:
                          // '未知'
                          // '安全性未知设备'
                          // '安全设备'
                          // '非安全设备'

               protocolType : '六位码' //字符串类型;设备应用协议类型
                                      // 取值范围:
                              // '未知'
                                 // '标准'
                              // '六位码' 
               isComplexDevice : false   //布尔类型;是否是复杂设备(安卓无此字段) 
                  ip : ''      //字符串类型;设备IP  
               port :       //数字类型;设备端口(安卓无此字段)   
               uplusID : ''      //字符串类型;设备的类型唯一识别码,用来唯一标识设备类型
               state : ''      //字符串类型;获取设备状态
                           // 取值范围:
                       // '未知'
                          // '未连接'
                       // '连接中'
                       // '已连接'
                          // '就绪'
                       // '离线' 
               isSubscribed : true      //布尔类型;设备是否已被订阅(安卓无此字段)   
               securityVersion :      //数字类型;  
               eProtocolVer : ''      //字符串类型;设备遵守的E++协议版本号 
                  softwareType : 'mqttUGWAuth'      //字符串类型;设备wifi的平台信息,如果此字段值为mqttUGWAuth 则表示设备支持授权
               smartLinkSoftwareVersion : ''    //字符串类型;设备模块的软件版本号  
               smartLinkHardwareVersion : ''    //字符串类型;设备模块的硬件版本号 
               smartLinkDevfileVersion : ''     //字符串类型;设备模块使用的配置文件版本号 
               type : '电热水器'      //字符串类型;设备大类分类  
               middleType :       //数字类型;设备中类 
               specialId : ''      //字符串类型;设备专用号 
                  netType : '本地'      //字符串类型;设备的网络类型
                                 // 取值范围:
                         // '未知'
                            // '远程'
                         // '本地'
               isRemoteDeviceOnline : false    //布尔类型;(安卓无此字段) 
              supportNoPwdConfig : false      //布尔类型;(安卓无此字段)              
            }
      ]  
}

示例代码

 var uSDK = api.require('uSDK');
 uSDK. getDeviceList(function(ret) {
                  if (ret) {
                     alert(JSON.stringify(ret));
                  } 
                });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

connect

与设备建立连接。调用此接口前需要先调用getDeviceList

connect({params}, callback(ret, err))

params

deviceID:

  • 类型:字符串类型
  • 描述:设备ID
  • 默认:无

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
       success : 'Y'      //字符串类型;成功  
}

err:

  • 类型:JSON对象
  • 内部字段:
{
   code : -10002,         //数字类型;错误码
    description : ''      //字符串类型;错误码的文字描述   
}

示例代码

var uSDK = api.require('uSDK');
uSDK.connect({
                deviceID : 'DC330D5739D5'
              },function(ret, err) {
                  if (ret) {
                     alert(JSON.stringify(ret));
                  } else {
                     alert(JSON.stringify(err));
                  }
           });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

disconnect

断开设备连接。调用此接口前需要先调用getDeviceList

disconnect({params}, callback(ret, err))

params

deviceID:

  • 类型:字符串类型
  • 描述:设备ID
  • 默认:无

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
       success : 'Y'      //字符串类型;成功  
}

err:

  • 类型:JSON对象
  • 内部字段:
{
   code : -10002,         //数字类型;错误码
    description : ''      //字符串类型;错误码的文字描述   
}

示例代码

var uSDK = api.require('uSDK');
uSDK.disconnect({
                deviceID : 'DC330D5739D5'
              },function(ret, err) {
                  if (ret) {
                     alert(JSON.stringify(ret));
                  } else {
                     alert(JSON.stringify(err));
                  }
           });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

attributes

获得当前设备所有属性值。调用此接口前需要先调用getDeviceList

attributes({params}, callback(ret))

params

deviceID:

  • 类型:字符串类型
  • 描述:设备ID
  • 默认:无

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
       notification : false    //布尔类型;是否是通知。false时,调用本接口主动获取当前设备所有属性值时的回调;true时,当设备属性状态变化时推送当前设备所有属性值
       deviceID : ''           //字符串类型;设备ID 
       attributes :             //数组类型;设备属性集合
        [                       
             {                           //JSON对象;设备属性(内部字段如果没有则不返回)
               attrName : ''           //字符串类型;设备属性名 属性名称对应于设备ID文档中命令ID集合中的功能识别码  
             attrValue : ''      //字符串类型;设备属性值 对应于设备ID文档中命令ID集合中的属性参数编码  
          }
      ]  
}

示例代码

var uSDK = api.require('uSDK');
uSDK.attributes({
                  deviceID : 'DC330D5739D5'
                },function(ret) {
                   if (ret) {
                         alert(JSON.stringify(ret));
                   }
               });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

alarms

获得报警信息。调用此接口前需要先调用getDeviceList

alarms({params}, callback(ret))

params

deviceID:

  • 类型:字符串类型
  • 描述:设备ID
  • 默认:无

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
       notification : false    //布尔类型;是否是通知。false时,调用本接口主动获取报警信息时的回调;true时,当设备存在故障或警告推送报警信息
       deviceID : ''           //字符串类型;设备ID 
       alarms :             //数组类型;报警信息集合
        [                       
             {                           //JSON对象;报警信息(内部字段如果没有则不返回)
               name : ''           //字符串类型;报警名称  
             value : ''      //字符串类型;报警描述  
             alarmMessage : ''      //字符串类型;六位码协议的报警信息  报警消息中存储的是报警消息ID,即设备ID文档中报警ID集合的报警属性。每种设备都有各自的报警ID集合,APP需要通过设备ID文档自行匹配对应的报警描述
             alarmTimestamp : ''      //字符串类型;六位码协议的报警时间   时间格式为yyyy-MM-dd HH:mm:ss.SSS,即年-月-日 时:分:秒.毫秒(其中小时为24小时制),例如2013-01-05 23:37:27.323
          }
      ]  
}

示例代码

var uSDK = api.require('uSDK');
uSDK.alarms({
                  deviceID : 'DC330D5739D5'
                },function(ret) {
                   if (ret) {
                         alert(JSON.stringify(ret));
                   }
               });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

state

查询设备连接状态。调用此接口前需要先调用getDeviceList

state({params}, callback(ret))

params

deviceID:

  • 类型:字符串类型
  • 描述:设备ID
  • 默认:无

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
       state : '已连接'      //字符串类型;设备连接状态
                                  // 取值范围:
                            // '未知'
                                  // '未连接'
                               // '连接中'
                               // '已连接'
                                  // '就绪'
                               // '离线' 
}

示例代码

var uSDK = api.require('uSDK');
uSDK.state({
               deviceID : 'DC330D5739D5'
            },function(ret) {
               if (ret) {
                    alert(JSON.stringify(ret));
               }
           });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

writeAttribute

执行设备控制,发送单命令。需要严格遵守ID文档规定,不能使用发送组命令的方法发送单命令。调用此接口前需要先调用getDeviceList

writeAttribute({params}, callback(ret, err))

params

deviceID:

  • 类型:字符串类型
  • 描述:设备ID
  • 默认:无

name:

  • 类型:字符串类型
  • 描述:属性名
  • 默认:无

value:

  • 类型:字符串类型
  • 描述:属性值
  • 默认:无

timeoutInterval:

  • 类型:数字类型
  • 描述:(可选)超时时间,单位为秒,范围为12秒-120秒
  • 默认:15秒

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
       success : 'Y'      //字符串类型;成功  
}

err:

  • 类型:JSON对象
  • 内部字段:
{
   code : -10002,         //数字类型;错误码
    description : ''      //字符串类型;错误码的文字描述   
}

示例代码

var uSDK = api.require('uSDK');
uSDK.writeAttribute({
                     deviceID : 'DC330D5739D5',
                     name : '2000ZZ',
                     value : '',
                     timeoutInterval : 120
                    },function(ret, err) {
                      if (ret) {
                        alert(JSON.stringify(ret));
                     } else {
                        alert(JSON.stringify(err));
                     }
                  });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

executeOperation

执行设备控制,发送组命令。组命令是由组命令号或组命令标识、单命令集合两部分组成的。调用此接口前需要先调用getDeviceList

executeOperation({params}, callback(ret, err))

params

deviceID:

  • 类型:字符串类型
  • 描述:设备ID
  • 默认:无

operationName:

  • 类型:字符串类型
  • 描述:要执行的设备操作命令(组命令号或组命令标识)
  • 默认:无

cmdList:

  • 类型:数组类型
  • 描述:要执行的设备操作命令列表(单命令集合)
  • 默认:无
{
    cmdList : 
      [     
         {
               name : '',     //字符串类型;属性名
               value : ''       //字符串类型;属性值
         }
      ]
}

timeoutInterval:

  • 类型:数字类型
  • 描述:(可选)超时时间,单位为秒,范围为12秒-120秒
  • 默认:15秒

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
       success : 'Y'      //字符串类型;成功  
}

err:

  • 类型:JSON对象
  • 内部字段:
{
   code : -10002,         //数字类型;错误码
    description : ''      //字符串类型;错误码的文字描述   
}

示例代码

var uSDK = api.require('uSDK');
uSDK.executeOperation({
                     deviceID : 'DC330D5739D5',
                     operationName : 'getAllProperty',
                     cmdList : [],
                     timeoutInterval : 120
                    },function(ret, err) {
                      if (ret) {
                        alert(JSON.stringify(ret));
                     } else {
                        alert(JSON.stringify(err));
                     }
                  });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本