uSDK

startSDK stopSDK configDevice stopConfigDevice getDeviceList connect disconnect attributes alarms state writeAttribute executeOperation

概述

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

  • 配置示例:

  1. <feature name="uSDK">
  2. <param name="APPID" value="MB-YZCS-0000" />
  3. <param name="app_key" value="8e22e867fdd5fb97325e2f042e633706" />
  4. <param name="app_secret" value="3F49AD63FBDDF272D0FEEF3400E40B15" />
  5. </feature>
  • 字段描述:

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

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

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

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

  1. <meta-data name="APP_ID" value="MB-HAIERSDKU-0000"/>
  2. <meta-data name="APP_KEY" value="b3c88fbf455ee85795ee73463d7b4ec8"/>
  3. <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:

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

callback(ret, err)

ret:

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

err:

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

示例代码

  1. var uSDK = api.require('uSDK');
  2. uSDK.startSDK({},function(ret, err) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. } else {
  6. alert(JSON.stringify(err));
  7. }
  8. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopSDK

停止uSDK。

stopSDK(callback(ret, err))

callback(ret, err)

ret:

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

err:

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

示例代码

  1. var uSDK = api.require('uSDK');
  2. uSDK.stopSDK(function(ret, err) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. } else {
  6. alert(JSON.stringify(err));
  7. }
  8. });

可用性

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对象
  • 描述:设备信息
  • 内部字段:(如果没有则不返回)
  1. {
  2. mac : '' //字符串类型;设备mac
  3. deviceID : '' //字符串类型;设备ID
  4. security : '非安全设备' //字符串类型;设备安全性(安卓无此字段)
  5. // 取值范围:
  6. // '未知'
  7. // '安全性未知设备'
  8. // '安全设备'
  9. // '非安全设备'
  10. protocolType : '六位码' //字符串类型;设备应用协议类型
  11. // 取值范围:
  12. // '未知'
  13. // '标准'
  14. // '六位码'
  15. isComplexDevice : false //布尔类型;是否是复杂设备(安卓无此字段)
  16. ip : '' //字符串类型;设备IP
  17. port : //数字类型;设备端口(安卓无此字段)
  18. uplusID : '' //字符串类型;设备的类型唯一识别码,用来唯一标识设备类型
  19. state : '' //字符串类型;获取设备状态
  20. // 取值范围:
  21. // '未知'
  22. // '未连接'
  23. // '连接中'
  24. // '已连接'
  25. // '就绪'
  26. // '离线'
  27. isSubscribed : true //布尔类型;设备是否已被订阅(安卓无此字段)
  28. securityVersion : //数字类型;
  29. eProtocolVer : '' //字符串类型;设备遵守的E++协议版本号
  30. softwareType : 'mqttUGWAuth' //字符串类型;设备wifi的平台信息,如果此字段值为mqttUGWAuth 则表示设备支持授权
  31. smartLinkSoftwareVersion : '' //字符串类型;设备模块的软件版本号
  32. smartLinkHardwareVersion : '' //字符串类型;设备模块的硬件版本号
  33. smartLinkDevfileVersion : '' //字符串类型;设备模块使用的配置文件版本号
  34. type : '电热水器' //字符串类型;设备大类分类
  35. middleType : //数字类型;设备中类
  36. specialId : '' //字符串类型;设备专用号
  37. netType : '本地' //字符串类型;设备的网络类型
  38. // 取值范围:
  39. // '未知'
  40. // '远程'
  41. // '本地'
  42. isRemoteDeviceOnline : false //布尔类型;(安卓无此字段)
  43. supportNoPwdConfig : false //布尔类型;(安卓无此字段)
  44. }

err:

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

示例代码

  1. var uSDK = api.require('uSDK');
  2. uSDK.configDevice({
  3. ssid : 'APICloud',
  4. pwd : 'yzkjapi2015',
  5. mac : 'DC330D5739D5',
  6. timeoutInterval : 120,
  7. security : false
  8. },function(ret, err) {
  9. if (ret) {
  10. alert(JSON.stringify(ret));
  11. } else {
  12. alert(JSON.stringify(err));
  13. }
  14. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopConfigDevice

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

stopConfigDevice(callback(ret, err))

callback(ret, err)

ret:

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

err:

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

示例代码

  1. var uSDK = api.require('uSDK');
  2. uSDK. stopConfigDevice(function(ret, err) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. } else {
  6. alert(JSON.stringify(err));
  7. }
  8. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getDeviceList

获得设备列表集合。

getDeviceList(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. notification : false //布尔类型;是否是通知。false时,调用本接口主动获取设备列表时的回调;true时,当周围设备增加或者减少,设备列表集合发生变化时的回调
  3. deviceInfos : //数组类型;设备信息集合
  4. [
  5. { //JSON对象;设备信息(内部字段如果没有则不返回)
  6. mac : '' //字符串类型;设备mac
  7. deviceID : '' //字符串类型;设备ID
  8. security : '非安全设备' //字符串类型;设备安全性(安卓无此字段)
  9. // 取值范围:
  10. // '未知'
  11. // '安全性未知设备'
  12. // '安全设备'
  13. // '非安全设备'
  14. protocolType : '六位码' //字符串类型;设备应用协议类型
  15. // 取值范围:
  16. // '未知'
  17. // '标准'
  18. // '六位码'
  19. isComplexDevice : false //布尔类型;是否是复杂设备(安卓无此字段)
  20. ip : '' //字符串类型;设备IP
  21. port : //数字类型;设备端口(安卓无此字段)
  22. uplusID : '' //字符串类型;设备的类型唯一识别码,用来唯一标识设备类型
  23. state : '' //字符串类型;获取设备状态
  24. // 取值范围:
  25. // '未知'
  26. // '未连接'
  27. // '连接中'
  28. // '已连接'
  29. // '就绪'
  30. // '离线'
  31. isSubscribed : true //布尔类型;设备是否已被订阅(安卓无此字段)
  32. securityVersion : //数字类型;
  33. eProtocolVer : '' //字符串类型;设备遵守的E++协议版本号
  34. softwareType : 'mqttUGWAuth' //字符串类型;设备wifi的平台信息,如果此字段值为mqttUGWAuth 则表示设备支持授权
  35. smartLinkSoftwareVersion : '' //字符串类型;设备模块的软件版本号
  36. smartLinkHardwareVersion : '' //字符串类型;设备模块的硬件版本号
  37. smartLinkDevfileVersion : '' //字符串类型;设备模块使用的配置文件版本号
  38. type : '电热水器' //字符串类型;设备大类分类
  39. middleType : //数字类型;设备中类
  40. specialId : '' //字符串类型;设备专用号
  41. netType : '本地' //字符串类型;设备的网络类型
  42. // 取值范围:
  43. // '未知'
  44. // '远程'
  45. // '本地'
  46. isRemoteDeviceOnline : false //布尔类型;(安卓无此字段)
  47. supportNoPwdConfig : false //布尔类型;(安卓无此字段)
  48. }
  49. ]
  50. }

示例代码

  1. var uSDK = api.require('uSDK');
  2. uSDK. getDeviceList(function(ret) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

connect

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

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

params

deviceID:

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

callback(ret, err)

ret:

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

err:

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

示例代码

  1. var uSDK = api.require('uSDK');
  2. uSDK.connect({
  3. deviceID : 'DC330D5739D5'
  4. },function(ret, err) {
  5. if (ret) {
  6. alert(JSON.stringify(ret));
  7. } else {
  8. alert(JSON.stringify(err));
  9. }
  10. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

disconnect

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

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

params

deviceID:

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

callback(ret, err)

ret:

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

err:

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

示例代码

  1. var uSDK = api.require('uSDK');
  2. uSDK.disconnect({
  3. deviceID : 'DC330D5739D5'
  4. },function(ret, err) {
  5. if (ret) {
  6. alert(JSON.stringify(ret));
  7. } else {
  8. alert(JSON.stringify(err));
  9. }
  10. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

attributes

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

attributes({params}, callback(ret))

params

deviceID:

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

callback(ret)

ret:

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

示例代码

  1. var uSDK = api.require('uSDK');
  2. uSDK.attributes({
  3. deviceID : 'DC330D5739D5'
  4. },function(ret) {
  5. if (ret) {
  6. alert(JSON.stringify(ret));
  7. }
  8. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

alarms

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

alarms({params}, callback(ret))

params

deviceID:

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

callback(ret)

ret:

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

示例代码

  1. var uSDK = api.require('uSDK');
  2. uSDK.alarms({
  3. deviceID : 'DC330D5739D5'
  4. },function(ret) {
  5. if (ret) {
  6. alert(JSON.stringify(ret));
  7. }
  8. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

state

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

state({params}, callback(ret))

params

deviceID:

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

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. state : '已连接' //字符串类型;设备连接状态
  3. // 取值范围:
  4. // '未知'
  5. // '未连接'
  6. // '连接中'
  7. // '已连接'
  8. // '就绪'
  9. // '离线'
  10. }

示例代码

  1. var uSDK = api.require('uSDK');
  2. uSDK.state({
  3. deviceID : 'DC330D5739D5'
  4. },function(ret) {
  5. if (ret) {
  6. alert(JSON.stringify(ret));
  7. }
  8. });

可用性

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对象
  • 内部字段:
  1. {
  2. success : 'Y' //字符串类型;成功
  3. }

err:

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

示例代码

  1. var uSDK = api.require('uSDK');
  2. uSDK.writeAttribute({
  3. deviceID : 'DC330D5739D5',
  4. name : '2000ZZ',
  5. value : '',
  6. timeoutInterval : 120
  7. },function(ret, err) {
  8. if (ret) {
  9. alert(JSON.stringify(ret));
  10. } else {
  11. alert(JSON.stringify(err));
  12. }
  13. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

executeOperation

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

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

params

deviceID:

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

operationName:

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

cmdList:

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

timeoutInterval:

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

callback(ret, err)

ret:

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

err:

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

示例代码

  1. var uSDK = api.require('uSDK');
  2. uSDK.executeOperation({
  3. deviceID : 'DC330D5739D5',
  4. operationName : 'getAllProperty',
  5. cmdList : [],
  6. timeoutInterval : 120
  7. },function(ret, err) {
  8. if (ret) {
  9. alert(JSON.stringify(ret));
  10. } else {
  11. alert(JSON.stringify(err));
  12. }
  13. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本