uSDK
startSDK stopSDK configDevice stopConfigDevice getDeviceList connect disconnect attributes alarms state writeAttribute executeOperation
概述
uSDK 封装了uSDK4.0,可以实现的功能包括智能设备配置入网、搜索、状态查询、控制、接收报警等。
路由器环境设置
目前海尔智能设备只能匹配2.4g频段路由,才能正常工作和使用,暂不支持5g频段。
路由无线网络基本设置
由于当前市场上路由品牌和手机品牌丰富多样,手机和路由联合工作时容易存在兼容性问题(如11bgn mixed模式),导致手机、路由、海尔智能设备不能正常协同工作(始终无法配置成功、始终不能发现U+只能设备后者配置成功率时高时低),这时可以参考如下截图对路由设置进行更改。 注意:SSID号不建议使用中文,建议使用英文和数字。因为中文符涉及到编解码问题,当APP、路由器编解码机制不同时,将导致设备无法配置成功。
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及更高版本