upLogicEngineModule 基本属性和相关接口
模块概述
upLogicEngineModule模块提供网器设备相关操作,包含设备上报状态获取,命令下发过程;
通过upLogicEngineModule模块获取的设备状态带有读写状态、取值范围、下发方式等属性状态;
通过upLogicEngineModule模块下发命令时,逻辑引擎会辅助计算;
在实际使用过程中,初始化时,可调用 getBaseInfoPromise、getInitialAttributeListPromise、getAttributeListPromise和getCautionsPromise方法获取设备状态,方便初始化页面
随后调用attachPromise方法订阅设备,获取最新设备数据,做后续状态订阅,刷新页面UI状态
方法列表
- getBaseInfoPromise (获取基本信息)
- getInitialAttributeListPromise (获取初始化属性列表)
- getAttributeListPromise (获取属性列表)
- getAttributeByNamePromise (通过属性名称获取指定属性)
- getCautionsPromise (获取告警信息)
- attachPromise (订阅设备状态信息)
- detachPromise (取消订阅设备状态信息)
- calculatePromise (计算单命令)
- calculateAllPromise (计算组命令)
- operatePromise (下发命令)
- attachLazy (只添加设备状态变化的监听器,不做查询设备全属性状态的操作)
- getDeviceBusinessFunctionList (查询设备业务功能列表的方法)
- startDeviceBusinessFunction(开启设备业务功能的方法)
- modifyBusinessFunction (修改业务功能的属性。)
- getBusinessFunctionCachedAttributes (查询当前启用的业务功能缓存的属性)
- executeBusinessFunction (执行业务功能命令的方法)
公共属性
属性名 |
数据类型 |
说明 |
connection |
Stirng |
设备连接状态(UNCONNECT,OFFLINE,CONNECTING,CONNECTED,READY;READY认为是在线状态,其他都是离线状态) |
deviceId |
String |
设备mac地址(数字与字母组合串) |
deviceType |
String |
设备类别 |
model |
String |
设备型号 |
typeId |
String |
设备typeId |
onlineStateV2 |
String |
设备融合在离线状态(OFFLINE,ONLINE_NOT_READY,ONLINE_READY) |
属性名 |
数据类型 |
说明 |
UNCONNECT |
Stirng |
设备未连接 |
OFFLINE |
Stirng |
设备离线 |
CONNECTING |
Stirng |
设备连接中 |
CONNECTED |
Stirng |
设备已连接 |
READY |
Stirng |
设备准备就绪(只有此状态认为设备在线,剩下都为离线) |
属性名 |
数据类型 |
说明 |
code |
Array |
属性code码 |
defaultValue |
Stirng |
属性默认值 |
desc |
Stirng |
属性描述 |
invisible |
Boolean |
属性是否隐藏 |
name |
Stirng |
属性名 |
operationType |
Stirng |
属性下发方式 |
readable |
Boolean |
属性是否可读 |
value |
Stirng |
属性值 |
valueRange |
Object |
属性取值范围 |
writable |
Boolean |
属性是否可写 |
属性名 |
数据类型 |
说明 |
name |
Stirng |
告警名称 |
code |
Stirng |
告警code码 |
desc |
Stirng |
告警描述 |
clear |
Boolean |
告警清楚标识 |
属性名 |
数据类型 |
说明 |
name |
Stirng |
业务功能属性的名称 |
desc |
Stirng |
业务功能属性的描述,易于人们阅读的文字描述,也可用于界面显示。 |
desc1 |
Stirng |
业务功能属性的描述,自定义字段1。 |
desc2 |
Stirng |
业务功能属性的描述,自定义字段2。 |
desc3 |
Stirng |
业务功能属性的描述,自定义字段3。 |
desc4 |
Stirng |
业务功能属性的描述,自定义字段4。 |
detailDesc |
Stirng |
业务功能属性的详细描述,易于人们阅读的文字描述,也可用于界面显示。 |
alias |
string |
业务功能属性的别名。 |
cmdPara |
CmdPara |
属性命令参数类 |
属性名 |
数据类型 |
说明 |
cmdName |
Stirng |
命令的名称 |
attrNameList |
array |
命令名称集 |
属性名 |
数据类型 |
说明 |
name |
Stirng |
命令的名称 |
valueType |
Stirng |
业务功能对属性的取值范围修改分为三种1:固定值2:设备上报3:用户填写。 |
defaultValue |
Stirng |
属性的默认值。 |
valueRange |
Object |
属性的可取值的信息对象。 |
属性名 |
数据类型 |
说明 |
name |
Stirng |
属性名称 |
value |
Stirng |
属性值 |
模块变更记录
V3.7.0
- 数据模型变更:
- BusinessAttr 中新增字段:desc1,desc2,desc3,desc4
- DataStep新增字段:unit
V3.0.0
- 方法变更:
- 模块名由logicEngineModule修改为upLogicEngineModule
- operatePromise方法新增第二个入参commands,可直接使用operatePromise下发指令
V3.2.0
- 逻辑引擎模块未定义的retCode编码按照通用数据规定变为990001,操作失败retCode变为000001,非法参数错误retCode变为000002
V3.7.0
- 新增接口:
attachLazy (只添加设备状态变化的监听器,不做查询设备全属性状态的操作)
getDeviceBusinessFunctionList (查询设备业务功能列表的方法)
startDeviceBusinessFunction(开启设备业务功能的方法)
modifyBusinessFunction (修改业务功能的属性。)
getBusinessFunctionCachedAttributes (查询当前启用的业务功能缓存的属性)
executeBusinessFunction (执行业务功能命令的方法)
方法说明
getBaseInfoPromise (获取基本信息)
getBaseInfoPromise(params)
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
是 |
是 |
是 |
APP版本 |
5.0.0 及以上 |
5.3.0 及以上 |
6.12.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
属性名 |
数据类型 |
说明 |
connection |
String |
设备连接状态(UNCONNECT,OFFLINE,CONNECTING,CONNECTED,READY;READY认为是在线状态,其他都是离线状态) |
deviceId |
String |
设备mac地址 |
deviceType |
String |
设备类别 |
model |
String |
设备型号 |
typeId |
String |
设备typeId |
示例
uplusapi.upLogicEngineModule.getBaseInfoPromise('0008228FDEB9').then((result) => {
console.log('result',result);
},(err) =>{
console.log('err',err);
});
getInitialAttributeListPromise (获取初始化属性列表)
getInitialAttributeListPromise(params)
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
是 |
是 |
是 |
APP版本 |
5.0.0 及以上 |
5.3.0 及以上 |
6.12.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
{
"retCode":"000000",
"retInfo":"操作成功",
"retData":[dataObject]
}
示例
uplusapi.upLogicEngineModule.getInitialAttributeListPromise('0008228FDEB9').then((result) => {
console.log('result',result);
},(err) =>{
console.log('err',err);
});
getAttributeListPromise (获取属性列表)
getAttributeListPromise(params)
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
是 |
是 |
是 |
APP版本 |
5.0.0 及以上 |
5.3.0 及以上 |
6.12.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
{
"retCode":"000000",
"retInfo":"操作成功",
"retData":[dataObject]
}
示例
uplusapi.upLogicEngineModule.getAttributeListPromise('0008228FDEB9').then((result) => {
console.log('result',result);
},(err) =>{
console.log('err',err);
});
getAttributeByNamePromise (通过属性名称获取指定属性)
getAttributeByNamePromise(params)
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
是 |
是 |
是 |
APP版本 |
5.0.0 及以上 |
5.3.0 及以上 |
6.12.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
name |
String |
是 |
设备属性名 |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
{
"retCode":"000000",
"retInfo":"操作成功",
"retData":data
}
示例
uplusapi.upLogicEngineModule.getAttributeByNamePromise('0008228FDEB9','holidayMode').then((result) => {
console.log('result',result);
},(err) =>{
console.log('err',err);
});
getCautionsPromise (获取告警信息)
getCautionsPromise(params)
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
是 |
是 |
是 |
APP版本 |
5.0.0 及以上 |
5.3.0 及以上 |
6.12.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
{
"retCode":"000000",
"retInfo":"操作成功",
"retData":data
}
示例
uplusapi.upLogicEngineModule.getCautionsPromise('0008228FDEB9').then((result) => {
console.log('result',result);
},(err) =>{
console.log('err',err);
});
attachPromise (连接逻辑引擎)
attachPromise(params)
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
是 |
是 |
是 |
APP版本 |
5.0.0 及以上 |
5.3.0 及以上 |
6.12.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
deviceChangeListener |
Function |
是 |
监听函数 |
deviceChangeListener监听函数回调参数
每次监听函数触发时,四个参数不一定全部返回,设备无告警时,cautions不返回,设备未就绪时,attributes无返回
参数名 |
说明 |
mac |
当前设备mac地址 |
baseInfo |
设备基本信息 |
attributes |
设备属性信息 |
cautions |
设备告警信息 |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
无
示例
uplusapi.upLogicEngineModule.attachPromise('0008228FDEB9', (mac, baseInfo, attributes, cautions)=>{
console.log('mac',mac);
console.log('baseInfo',baseInfo);
console.log('attributes',attributes);
console.log('cautions',cautions);
});
detachPromise (断开逻辑引擎)
detachPromise(params)
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
是 |
是 |
是 |
APP版本 |
5.0.0 及以上 |
5.3.0 及以上 |
6.12.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
无
示例
uplusapi.upLogicEngineModule.detachPromise('0008228FDEB9').then((result) => {
console.log('result',result);
},(err) =>{
console.log('err',err);
});
calculatePromise (计算单命令)
calculatePromise(params)
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
是 |
是 |
是 |
APP版本 |
5.0.0 及以上 |
5.3.0 及以上 |
6.12.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
name |
String |
是 |
单命令属性名 |
value |
String |
是 |
单命令属性值 |
错误返回 retCode说明:
retCode编码 |
retInfo说明 |
120001 |
操作无效 |
120002 |
操作超时 |
120003 |
JSON转换错误 |
120004 |
逻辑引擎不存在 |
120005 |
逻辑对象属性错误 |
120007 |
逻辑引擎未准备好 |
正确返回 retData说明:
无
示例
uplusapi.upLogicEngineModule.calculatePromise('0008228FDEB9', 'healthMdoe', 'true').then((result) => {
console.log('result',result);
},(err) =>{
console.log('err',err);
});
calculateAllPromise (计算组命令)
calculateAllPromise(params)
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
是 |
是 |
是 |
APP版本 |
5.0.0 及以上 |
5.3.0 及以上 |
6.12.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
commands |
Array |
否 |
下发命令数组 |
commands 参数说明:
属性名 |
数据类型 |
是否必填 |
说明 |
name |
String |
是 |
属性名 |
value |
String |
是 |
属性值 |
错误返回 retCode说明:
retCode编码 |
retInfo说明 |
120001 |
操作无效 |
120002 |
操作超时 |
120003 |
JSON转换错误 |
120004 |
逻辑引擎不存在 |
120005 |
逻辑对象属性错误 |
120007 |
逻辑引擎未准备好 |
正确返回 retData说明:
无
示例
uplusapi.upLogicEngineModule.calculateAllPromise('0008228FDEB9',[{name:'healthMdoe',value:'true'}]).then((result) => {
console.log('result',result);
},(err) =>{
console.log('err',err);
});
operatePromise (下发命令)
operatePromise(params)
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
是 |
是 |
是 |
APP版本 |
5.0.0 及以上 |
5.3.0 及以上 |
6.12.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
commands |
Array |
否 |
下发命令数组; |
commands 参数说明:
属性名 |
数据类型 |
是否必填 |
说明 |
name |
String |
是 |
属性名 |
value |
String |
是 |
属性值 |
错误返回 retCode说明:
retCode编码 |
retInfo说明 |
120001 |
操作无效 |
120002 |
操作超时 |
120003 |
JSON转换错误 |
120004 |
逻辑引擎不存在 |
120005 |
逻辑对象属性错误 |
120007 |
逻辑引擎未准备好 |
正确返回 retData说明:
无
示例
uplusapi.upLogicEngineModule.operatePromise('0008228FDEB9',[{name:'healthMdoe',value:'true'}]).then((result) => {
console.log('result',result);
},(err) =>{
console.log('err',err);
});
attachLazy (只添加设备状态变化的监听器,不做查询设备全属性状态的操作)
attachLazy(params)
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
否 |
否 |
是 |
APP版本 |
/ |
/ |
6.23.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
deviceChangeListener |
Function |
是 |
监听函数 |
deviceChangeListener监听函数回调参数
每次监听函数触发时,四个参数不一定全部返回,设备无告警时,cautions不返回,设备未就绪时,attributes无返回
参数名 |
说明 |
mac |
当前设备mac地址 |
baseInfo |
设备基本信息 |
attributes |
设备属性信息 |
cautions |
设备告警信息 |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
无
示例
uplusapi.upLogicEngineModule.attachLazy('0008228FDEB9', (mac, baseInfo, attributes, cautions)=>{
console.log('mac',mac);
console.log('baseInfo',baseInfo);
console.log('attributes',attributes);
console.log('cautions',cautions);
});
getDeviceBusinessFunctionList (查询设备业务功能列表的方法)
getDeviceBusinessFunctionList(params)
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
否 |
否 |
是 |
APP版本 |
/ |
/ |
6.23.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
{
"retCode":"000000",
"retInfo":"操作成功",
"retData":BusinessAttr[]
}
getBusinessFunctionCachedAttributes (查询当前启用的业务功能缓存的属性)
getBusinessFunctionCachedAttributes(params)
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
否 |
否 |
是 |
APP版本 |
/ |
/ |
6.23.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
{
"retCode":"000000",
"retInfo":"操作成功",
"retData":LeDeviceAttribute[]
}
示例
uplusapi.upLogicEngineModule.getBusinessFunctionCachedAttributes('2C37C50086C0').then((result) => {
console.log("getBusinessFunctionCachedAttributes result",result);
}).catch((err) => {
console.log("getBusinessFunctionCachedAttributes err",err);
});
startDeviceBusinessFunction(开启设备业务功能的方法)
startDeviceBusinessFunction(params)
说明:该方法用于开启设备业务功能, 如果已启动某业务功能.再启动其他业务功能, 且清除命令缓存为false, 启动失败
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
否 |
否 |
是 |
APP版本 |
/ |
/ |
6.23.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
name |
String |
是 |
要开启的业务功能名称 |
clean |
boolean |
是 |
是否清理之前的命令缓存 |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
无
示例
uplusapi.upLogicEngineModule.startDeviceBusinessFunction('2C37C50086C0','name',true).then((result) => {
console.log("startDeviceBusinessFunction result",result);
}).catch((err) => {
console.log("startDeviceBusinessFunction err",err);
});
modifyBusinessFunction (修改业务功能的属性)
modifyBusinessFunction(params)
说明:启用某个业务功能后可以根据该方法对业务功能配置的属性的值进行修改
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
否 |
否 |
是 |
APP版本 |
/ |
/ |
6.23.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
name |
String |
是 |
要修改的属性对象的名字 |
value |
String |
是 |
要修改的属性对象的值 |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
无
示例
uplusapi.upLogicEngineModule.modifyBusinessFunction('2C37C50086C0','name','value').then((result) => {
console.log("modifyBusinessFunction result",result);
}).catch((err) => {
console.log("modifyBusinessFunction err",err);
});
executeBusinessFunction (执行业务功能命令的方法)
executeBusinessFunction(params)
说明:该方法先计算要执行的业务功能的属性信息,然后将命令下发给设备,业务功能通过该接口控制设备。
适用性
容器 |
cordova |
APICloud |
Nebula |
支持情况 |
否 |
否 |
是 |
APP版本 |
/ |
/ |
6.23.0 及以上 |
params 输入参数:
属性名 |
数据类型 |
是否必填 |
说明 |
mac |
String |
是 |
设备mac地址 |
错误返回 retCode说明:
按照通用
正确返回 retData说明:
无
示例
uplusapi.upLogicEngineModule.executeBusinessFunction('2C37C50086C0').then((result) => {
console.log("executeBusinessFunction result",result);
}).catch((err) => {
console.log("executeBusinessFunction err",err);
});
常见问题
- 常见的设备类H5页面的初始化流程:
- H5页面进行初始化时,需要设备数据(连接状态,设备属性,告警信息)渲染UI组件,请调用getBaseInfoPromise、getInitialAttributeListPromise、getAttributeListPromise和getCautionsPromise 方法进行主动查询,拿到需要的设备数据后,渲染出乎首屏页面
- 设备和前端H5页面的状态同步,可以通过attachPromise方法建立订阅连接,此处需要注意的是:attachPromise方法订阅成功后,不会马上回调设备数据,需要等到建立订阅连接后,设备主动上报,才能收到设备最新数据;attachPromise回调的baseInfo,attributes,cautions 参数只在发生变化后才有参数值返回,此参数状态如未发生改变,则为undefined
- 设备控制下发流程:
- 前端进行命令下发,需要先调用计算命令接口(calculatePromise或calculateAllPromise),计算接口回调成功后,方可调用operatePromise接口,将命令下发到设备
- calculatePromise或calculateAllPromise如何选择:需要根据我们所要控制的设备功能属性对应的operationType字段来区分选择,当operationType字段为‘I’时,代表此功能属性为单命令下发,请使用calculatePromise接口进行计算;当operationType字段为‘G’时,代表此功能属性为组命令下发,请使用calculateAllPromise接口进行计算;当operationType字段为‘IG’时,代表此功能属性为单命令、组命令下发皆可,两种计算接口都可使用
- 当设备功能属性的operationType字段为‘IG’时,只下发一个功能指令并使用calculateAllPromise计算接口进行计算,调用operatePromise进行命令下发,实际是采用单命令计算方法进行计算