# Java API使用说明
罗万智联平台提供的Java SDK,可帮助开发人员通过Java程序更便捷地操作罗万智联平台。开发人员只需添加LowanIot提供相关SDK依赖Jar包安装到本地即可。
使用罗万智联平台实现设备完整的通信链接,lowaniot提供一套关于应用、设备、操作管理等OpenAPI。帮助快速开发应用,满足场景业务需求,并且可以通过动态下发指令至设备端,实现对设备的远程控制。
# 验签流程
注意
平台需要对API调用方进行资源权限校验,使用API时,http body需要统一使用SignatureRequest
请求类。
所有SignatureRequest
所携带数据封装类需实现Serializable
接口。
SignatureRequest
认证请求,参数对比:
字段名称 | 字段说明 | 备注 |
---|---|---|
appId | 应用唯一标识 | ${appId} |
secretKey | 对应appId核心密钥 | ${secretKey} |
nonce | 随机数 | 例:447459660 |
timestamp | 请求时间戳 | 例:1640400530274 |
signature | 密文签名 | 例:k92hiUU7B2D3TzxKyej66Jh9sPLIdY5lU8jnEl0AVG0= |
data | 业务数据 | 例:标准的JSON格式,封装类需实现Serializable接口 |
# 使用说明:
# 1.安装SDK
安装LowanIot 提供Jar包,添加到项目本地依赖。
api-sign-core
api-sign-client
# 2.业务数据封装
- 业务数据封装类需实现
Serializable
接口
业务数据封装类样例:
/**
* @title: DefaultSignatureData.java
* <p>
* 业务数据封装类
*/
@Getter
@Setter
public class DefaultSignatureData implements Serializable {
private String name;
private Integer age;
private Byte sex;
}
# 3.创建客户端请求
SignatureClient
提供静态方法create()
,入参AppId,SecretKey可获得SignatureClient
实例SignatureClient
实例调用signatureRequest()
方法,入参业务数据(标准JSON格式),得到SignatureRequest
请求实例
创建客户端请求样例:
注意
此示例引用okhttp提供SDK依赖
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.9.0</version>
</dependency>
/**
* @title: CreateClient.java
* <p>
* 创建客户端示例代码
*/
@Slf4j
public class CreateClient {
public static final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(8000, TimeUnit.MILLISECONDS)
.readTimeout(8000, TimeUnit.MILLISECONDS)
.build();
public static final MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
// client
public static void main(String[] args) {
DefaultSignatureData defaultSignatureData = new DefaultSignatureData();
defaultSignatureData.setName("张三");
defaultSignatureData.setAge(18);
defaultSignatureData.setSex((byte) 0);
SignatureClient signatureClient = SignatureClient.create("${AppId}", "${SecretKey}");
SignatureRequest<DefaultSignatureData> signatureRequest =
signatureClient.signatureRequest(defaultSignatureData);
// 请求对象 signatureRequest
String body = JSONObject.toJSONString(signatureRequest);
try {
RequestBody requestBody = RequestBody.create(mediaType, body);
// 发送请求
Request.Builder builder =
new Request.Builder().url("https://api.lowaniot.com/openapi/test").post(requestBody);
Response response = okHttpClient.newCall(builder.build()).execute();
// 响应结果
String result = response.body().string();
log.info("result: {}", result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
# 4.http body样例:
{
"appId": "${appId}",
"nonce": -1854528745,
"timestamp": 1640669970000,
"signature": "QKct7fIv7qUjTHlAVEsLIN47BakVxffTzhVjPaSgRPw=",
"data": {
"name": "张三",
"age": 18,
"sex": 0
}
}
# 5.响应数据样例:
{
"code": 200,
"msg": "成功",
"data": {
"name": "张三",
"age": 18,
"sex": "男",
"address": "浙江省杭州市"
}
}
以上阅读完毕可对接平台提供API。
注:以下API中的请求业务数据均为验签http body中的Data内容
# 设备管理相关API
# 新增、更新设备
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/devinfo/save/update
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
appid | String | 是 | 应用编码 |
tenantCode | String | 是 | 租户编码 |
productCode | String | 是 | 产品编码 |
devAddr | String | 是 | 设备编号 |
deviceName | String | 是 | 设备名称 |
devGroupType | Byte | 是 | 设备类型分类 1=采集通讯模块 2=采集通讯模块子设备 3=直连设备 |
communAddr | String | 否 | 通讯地址,当devGroupType=2时必填 |
location | JSON | 否 | 设备位置{“longitude”:“纬度”,"latitude":“经度”} |
extendInfo | JSON | 是 | 设备扩展信息 |
# extendInfo描述:
# Lora设备
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
mode | String | 是 | LORA设备:A, B, C |
appKey | String | 是 | appKey |
nwkKey | String | 是 | nwkKey |
macVersion | String | 是 | L2版本1.0.0 |
rfRegion | String | 是 | 等同于4.0 "BAND" 字段 |
regParamVersion | String | 否 | RP版本 |
fPort | Number | 是 | LoraWAN 端口号 |
timezone | Number | 否 | 设备所在时区偏移量 单位分钟 例:东八区为480 |
deviceNo | String | 否 | 设备号;通信组帧所需要的设备号参数信息 |
# 直连设备
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
mode | String | 是 | 直连设备:client/server |
ip | String | 是 | mode=server时的IP地址 |
port | String | 是 | mode=server时的端口号 |
电信NB设备
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
deviceNo | String | 是 | 设备号;通信组帧所需要的设备号参数信息 |
operator | String | 是 | 操作者,默认值为hzlaison |
deviceId | String | 否 | 创建成功后,同步电信平台的deviceId,方便设备更新,删除时传参 |
autoObserver | Number | 是 | 是否开启自动订阅;0-订阅;1-不订阅;默认0 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应信息 |
data | JSON | 否 | 响应数据 |
# 请求业务数据示例:
{
"location": {
"longitude": 1,
"latitude": 1
},
"communAddr": "",
"deviceName": "",
"tenantCode": "",
"appid": "",
"productCode": "",
"remark": "",
"devAddr": "",
"devGroupType": 0,
"extendInfo": {
"mode": "client",
"ip": "203.195.***.***",
"port": 18080
},
"extendInfo": {
"mode": "A",
"nwkKey": "",
"appKey": "",
"macVersion": "",
"rfRegion": "",
"regParamVersion": ""
}
}
# 响应示例
{
"code": 200,
"msg": "成功",
"data": {
"deviceId": ""
}
}
# 查询设备信息列表(分页)
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/devinfo/page
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
curPage | Number | 是 | 当前页,值为0时表示不分页 |
pageSize | Number | 是 | 页码容量 |
appid | String | 否 | 应用编码 |
tenantCode | String | 否 | 租户编码 |
productCode | String | 否 | 产品编码 |
devAddr | String | 否 | 设备编号;电信NB设备为IMEI号 |
deviceName | String | 否 | 设备名称 |
devGroupType | Byte | 否 | 设备类型分类 1=采集通讯模块 2=采集通讯模块子设备 3=直连设备 |
communAddr | String | 否 | 通讯地址, 当devGroupType=2时必填 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应信息 |
data | JSON | 否 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
curPage | Number | 是 | 当前页码 |
pageSize | Number | 是 | 页容量 |
total | Number | 是 | 总数量 |
rows | JSON | 是 | 行数据记录 |
# rows描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
appid | String | 是 | 应用编码 |
productCode | String | 是 | 产品编码 |
productName | String | 否 | 应用名称 |
tenantCode | String | 是 | 租户编码 |
deviceId | String | 是 | 平台生成的设备编号 |
deviceName | String | 是 | 设备名称 |
devAddr | String | 是 | 设备地址 |
devGroupType | Byte | 是 | 设备类型分类 1=采集通讯模块 2=采集通讯模块子设备 3=直连设备 |
communAddr | String | 否 | 通讯地址, 当devGroupType=2时必填 |
extendInfo | JSON | 是 | 设备扩展信息 |
location | JSON | 否 | 设备位置{“longitude”:“纬度”,"latitude":“经度”} |
devStatus | Number | 是 | 设备状态: 0=未激活 1=离线 2=在线 |
extendInfo描述
Lora设备
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
mode | String | 是 | LORA设备class模式:A, B, C |
appKey | String | 是 | appKey |
nwkKey | String | 是 | OTAA 入网时,nwkKey与appKey相同 |
macVersion | String | 是 | L2版本 如 1.0.0 |
rfRegion | String | 是 | 频段:如EU868、AU915、CN470 |
regParamVersion | String | 否 | RP版本;如1.0.1 |
deviceNo | String | 否 | 设备号;通信组帧所需要的设备号参数信息 |
timezone | Number | 否 | 设备所在时区偏移量 单位分钟 例:东八区为480 |
fPort | Number | 是 | LoraWAN 端口号 |
直连设备
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
mode | String | 是 | 直连设备:client/server |
ip | String | 是 | mode=server时的IP地址 |
port | String | 是 | mode=server时的端口号 |
电信NB设备
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
deviceNo | String | 是 | 设备号 |
operator | String | 是 | 操作者,默认值为hzlaison |
deviceId | String | 否 | 创建成功后,同步电信平台的deviceId,方便设备更新,删除时传参 |
autoObserver | Number | 是 | 是否开启自动订阅;0-订阅;1-不订阅;默认0 |
# 请求示例:
{
"curPage": 0,
"pageSize": 1,
"communAddr": "",
"deviceName": "",
"tenantCode": "",
"appid": "",
"productCode": "",
"remark": "",
"devAddr": "",
"devGroupType": null
}
# 响应示例:
{
"code": 200,
"msg": "成功",
"data": {
"curPage": 1,
"pageSize": 50,
"total": 1,
"rows": [
{
"deviceId": "b5jrlm4k4jk0",
"deviceName": "00000056840963",
"tenantCode": "uhc4epeayo",
"appid": "181n98joqo",
"productCode": "4l3edjve2o",
"devAddr": "00000056840963",
"devGroupType": 2,
"communAddr": "c00d65013e00a1a1",
"extendInfo": {
"mode": "client",
"port": 18080,
"ip": "203.195.***.***"
},
"location": {
"latitude": 1,
"longitude": 1
},
"devStatus": 0,
"remark": "新增测试",
"createBy": null,
"updateBy": null,
"createTime": "15:55:38",
"updateTime": "15:59:26",
"productName": ""
}
]
}
}
# 删除设备
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/devinfo/delete
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
deviceId | String | 是 | 设备编码 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
# 请求示例:
{
"deviceId": "testDeviceId"
}
# 响应示例:
{
"code": 200,
"msg": "成功"
}
# 设备分组管理相关API
# 查询设备分组(包含子分组)
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/groupinfo/query/tree
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
appid | String | 否 | 应用ID |
tenantCode | String | 是 | 租户编码 |
parentGroupCode | String | 是 | 父分组编码,如果为顶级分组,填写0 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
data | Array | 否 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
id | Number | 是 | pk |
appid | String | 是 | 应用ID |
tenantCode | String | 是 | 租户编码 |
groupCode | String | 是 | 分组编码 |
groupName | String | 是 | 分组名称 |
parentGroupCode | String | 是 | 父分组编码 |
location | JSON | 否 | 设备位置{“longitude”:“纬度”,"latitude":“经度”} |
createTime | String | 是 | yyyy-MM-dd HH:mm:ss |
children | Array | 否 | data子分组 |
# 请求示例:
{
"appid": "${appid}",
"parentGroupCode": ""
}
# 响应示例:
{
"code": 200,
"msg": "成功",
"data": [
{
"id": 21,
"appid": "tz89uf25mo",
"tenantCode": "0",
"groupCode": "bc06238138084cf4844b",
"groupName": "浙江省",
"parentGroupCode": "0",
"location": null,
"children": [
{
"id": 22,
"appid": "tz89uf25mo",
"tenantCode": "0",
"groupCode": "3f3d70a7cc114b2bbd38",
"groupName": "杭州市",
"parentGroupCode": "bc06238138084cf4844b",
"location": {
"latitude": "10000.12",
"longitude": "5555.23"
},
"children": [
{
"id": 24,
"appid": "tz89uf25mo",
"tenantCode": "0",
"groupCode": "3aaaf694ca2b427bb9a6",
"groupName": "西湖区",
"parentGroupCode": "3f3d70a7cc114b2bbd38",
"location": null,
"children": null,
"createTime": "2021-12-20 15:50:09"
}
],
"createTime": "2021-12-20 14:45:39"
}
],
"createTime": "2021-12-20 14:45:26"
}
]
}
# 查询设备分组(不包含子分组)(分页)
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/groupinfo/query/page
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
curPage | Number | 是 | 当前页 |
pageSize | Number | 是 | 页容量 |
tenantCode | String | 是 | 租户编码 |
parentGroupCode | String | 是 | 父分组编码,如果为顶级分组,填写0 |
appid | String | 否 | 应用ID |
groupName | String | 否 | 分组编码 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
data | Array | 否 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
id | Number | 是 | pk |
appid | String | 是 | 应用ID |
tenantCode | String | 是 | 租户编码 |
groupCode | String | 是 | 分组编码 |
groupName | String | 是 | 分组名称 |
parentGroupCode | String | 是 | 父分组编码,如果为顶级分组,填写0 |
location | JSON | 否 | 位置信息{“longitude”:“纬度”,"latitude":“经度”} |
# 请求示例:
{
"curPage": 1,
"pageSize": 1,
"appid": "",
"groupName": "",
"parentGroupCode": ""
}
# 响应示例:
{
"code": 200,
"msg": "成功",
"data": {
"rows": [
{
"id": 16,
"appid": "mziluxhc00",
"tenantCode": "0",
"groupCode": "f38a747cde894e0ba973",
"groupName": "测试一级分组2",
"parentGroupCode": "0",
"location": null,
"createBy": "admin",
"updateBy": "admin",
"createTime": "2021-12-13 13:49:22",
"updateTime": "2021-12-13 13:49:22"
},
{
"id": 17,
"appid": "nkk61x1jwg",
"tenantCode": "0",
"groupCode": "6fd1734888bf47f0a3ae",
"groupName": "测试一级分组",
"parentGroupCode": "0",
"location": null,
"createBy": "admin",
"updateBy": "admin",
"createTime": "2021-12-13 13:48:35",
"updateTime": "2021-12-13 13:48:35"
}
],
"total": 10,
"": ""
}
}
# 创建设备分组
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/groupinfo/create
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
appid | String | 是 | 应用ID |
groupName | String | 是 | 分组名称 |
tenantCode | String | 是 | 租户编码 |
parentGroupCode | String | 是 | 父分组编码,如果为顶级分组,填写0 |
locationConvert | String | 否 | 分组中心点经纬度信息{“longitude”:“纬度”,"latitude":“经度”} |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应信息 |
data | JSON | 否 | 响应数据 |
# 请求示例:
{
"appid": "",
"groupName": "",
"parentGroupCode": "",
"tenantCode":""
"locationConvert": ""
}
# 响应示例:
{
"code": 200,
"msg": "成功",
"data": null
}
# 查看分组详情
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/groupinfo/query/detail
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
groupCode | String | 是 | 分组编码 |
tenantCode | String | 是 | 租户编码 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
data | JSON | 否 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
id | Number | 是 | pk |
appid | String | 是 | 应用ID |
tenantCode | String | 是 | 租户编码 |
groupCode | String | 是 | 分组编码 |
groupName | String | 是 | 分组名称 |
parentGroupCode | String | 是 | 父分组编码,如果为顶级分组,默认为0 |
location | JSON | 否 | 位置信息{“longitude”:“纬度”,"latitude":“经度”} |
createTime | String | 是 | 创建时间 |
deviceTotal | Number | 否 | 设备总数 |
deviceActivate | Number | 否 | 已激活状态设备数 |
currentOnline | Number | 否 | 当前在线设备数 |
# 请求业务数据样例:
{
"groupCode": "${groupCode}"
}
# 响应样例:
{
"code": 200,
"msg": "成功",
"data": {
"id": 2,
"appid": "16eel9m1vk",
"tenantCode": "0",
"groupCode": "111",
"groupName": "test二级分组",
"parentGroupCode": "0",
"location": null,
"createTime": null,
"deviceTotal": 1,
"deviceActivate": 0,
"currentOnline": 0
}
}
# 删除分组(包含子分组)
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/groupinfo/remove
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
groupCode | String | 是 | 分组编码 |
tenantCode | String | 是 | 租户编码 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应信息 |
# 请求业务数据样例:
{
"groupCode": "${groupCode}"
}
# 响应样例:
{
"code": 200,
"msg": "成功"
}
# 设备与分组绑定
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/devgroup/bind/batch
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
appid | String | 是 | 应用ID |
groupCode | String | 是 | 分组编码 |
deviceIds | Array | 是 | 设备ID集合 |
tenantCode | String | 是 | 租户编码 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
data | JSON | 否 | 响应数据 |
# 请求业务数据样例:
{
"appid": 001,
"groupCode": 101,
"deviceIds": [
1,
2,
3
]
}
# 响应样例:
{
"code": 200,
"msg": "成功",
"data": null
}
# 查看分组下绑定全部设备
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/devgroup/query/binddev/list
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
appid | String | 否 | 应用ID |
groupCode | String | 否 | 分组编码 |
tenantCode | String | 是 | 租户编码 |
devGroupType | Byte | 否 | 设备类型分类 1=采集通讯模块 2=采集通讯模块子设备 3=直连设备 |
deviceId | String | 否 | 设备编码 |
deviceName | String | 否 | 设备名称 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
data | Array | 否 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
appid | String | 是 | 应用ID |
tenantCode | String | 是 | 租户编码 |
groupCode | String | 是 | 分组编码 |
deviceId | String | 是 | 设备ID |
deviceName | String | 是 | 设备名称 |
devGroupType | Byte | 是 | 设备类型分类 1=采集通讯模块 2=采集通讯模块子设备 3=直连设备 |
devStatus | Byte | 是 | 设备状态:0=未激活1=离线2=在线 |
productName | String | 是 | 产品名称 |
location | JSON | 否 | 位置信息{“longitude”:“纬度”,"latitude":“经度”} |
lastOnlineTime | String | 否 | 最后在线时间 |
# 请求业务数据样例:
{
"appid": "",
"groupCode": "",
"devGroupType": 1,
"deviceId": "",
"deviceName": ""
}
# 响应样例:
{
"code": 200,
"msg": "成功",
"data": [
{
"curPage": 1,
"pageSize": 15,
"appid": "10000",
"tenantCode": "0",
"groupCode": "999",
"deviceId": "1001",
"deviceName": "测试1",
"devGroupType": 1,
"devStatus": 1,
"productName": "LoRaWAN通讯模块1",
"location": {
"address": "浙江省杭州市上城区四季青街道景昙路8-26号银泰百货",
"latitude": 30.260386,
"longitude": 120.205663
},
"lastOnlineTime": null,
"needPage": true
}
],
"success": true
}
# 解绑分组下绑定设备
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/devgroup/remove/binddev
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
groupCode | String | 是 | 分组编码 |
deviceIds | Array | 是 | 设备编码数据 |
tenantCode | String | 是 | 租户编码 |
# 响应内容:
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
# 请求业务数据样例:
{
"groupCode": "",
"deviceIds": [
1,
2,
3
]
}
# 响应样例:
{
"code": 200,
"msg": "成功"
}
# 计划管理相关API
# 创建计划
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/plan/createplan
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
appid | String | 是 | 应用ID |
tenantCode | String | 是 | 租户编码 |
productCode | String | 是 | 产品编码 |
planName | String | 是 | 计划名称,最长字符长度varchar(30) |
awaitExecuteTask | Number | 否 | 是否缓存任务;-1 不缓存;0 缓存至ns(LoraWAN);1 缓存至协议层(LoraWAN);2 设备上线后下发 |
pri | Number | 是 | 优先级1-5 5=最高优先级 1=最低优先级 |
timeout | Number | 是 | 计划下发到任务模块的超时时间 |
devs | JSON | 是 | 设备范围 |
crontab | JSON | 是 | 计划执行时间规则设定 |
orders | JSON | 是 | 执行计划内容 |
# devs描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
itemType | Number | 是 | 指定dev_array的内容含义类型,0=设备编号1=设备组号2=拓展参数 |
devList | String | 是 | itemType=0时,为设备deviceId itemType=1时,为设备devGroup |
devParams | JSON | 是 | itemType=2时有值 |
# devParams描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
groupCodes | String | 是 | 设备分组 |
# crontab描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
starttime | Number | 是 | 为0时为实时计划 其他为计划首次执行的时间 单位s |
freq | Number | 是 | 频率 Int 非0 |
count | Number | 是 | 执行次数, Int 0:为无限循环 |
unit | Number | 是 | 单位 Int 0:分 1:时 2:日 3:月 5:秒 6:周 |
repairConf | JSON | 是 | 补操作,补抄配置 |
# repairConf描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
repairCount | Number | 是 | 补抄次数,repairCount=0时,不需补抄 |
repairIntervalTime | Number | 是 | 补操作时间间隔 |
repairTimeUnit | Number | 是 | 补操作时间间隔的单位,0=分 1=时 2=日 |
# orders描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
type | String | 是 | readProperty-读取属性、 writeProperty-写属性、 functionInvoke-方法调用 |
dataKey | String | 是 | 属性 |
invokeId | Number | 否 | 当awaitExecuteTask 为0 时,必填,范围1-7 |
params | String | 否 | 业务扩展参数,格式json方式 eg. { "data":"abcdefghijklmn", "mode":"xxxx", "from":"2019-05-05 00:00:00", "to":"2019-05-06 00:00:00", "cType":"TCP/Bridge", "载波通道(4G)" : "TCP", "载波通道(2.4G)": "Bridge", "LoRa通道 ": "LoRa", "pn":"1,2,3" //当抄读设备为集中器时,pn值为集中器下需要抄读的电表的pn值编号 } |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
data | JSON | 是 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
planid | String | 是 | 计划ID |
mqTopic | String | 是 | /${appid}/plan/${planid} |
# 请求业务数据样例:
{
"appid": "5c59j03g1s",
"tenantCode": "0",
"productCode": "5ba9upyrcw",
"planName": "设备调试",
"pri": 1,
"timeout": 60,
"awaitExecuteTask":1,
"devs": {
"devList": [
"00956906000129e7"
],
"itemType": 0
},
"crontab": {
"starttime": 0,
"freq": 1,
"count": 1,
"unit": 0,
"repairConf": {
"repairCount": 0,
"repairIntervalTime": 0,
"repairTimeUnit": 0
}
},
"orders": [
{
"type": "readProperty",
"dataKey": "dateTime"
}
]
}
# 响应样例:
{
"code": 200,
"msg": "",
"data": {
"planid": "计划id唯一标识",
"mqTopic": "/P002/plan/45a7919581764a18ba3e40a25ff26c12"
}
}
# 修改计划
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/plan/modifyplan
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
planid | String | 是 | 计划ID |
appid | String | 是 | 应用ID |
tenantCode | String | 是 | 租户编码 |
productCode | String | 是 | 产品编码 |
planName | String | 是 | 计划名称 |
pri | Number | 是 | 优先级1-5 5=最高优先级 1=最低优先级 |
timeout | Number | 是 | 计划下发到任务模块的超时时间 单位s |
devs | JSON | 是 | 设备范围 |
crontab | JSON | 是 | 计划执行时间规则设定 |
orders | JSON | 是 | 执行计划内容 |
# devs描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
itemType | Number | 是 | 指定dev_array的内容含义类型,0=设备编号1=设备组号2=拓展参数 |
devList | String | 是 | itemType=0时,为设备deviceId itemType=1时,为设备devGroup |
devParams | JSON | 是 | itemType=2时有值 |
# devParams描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
groupCodes | String | 是 | 设备分组 |
# crontab描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
starttime | Number | 是 | 为0时为实时计划 其他为计划首次执行的时间 单位s |
freq | Number | 是 | 频率 Int 非0 |
count | Number | 是 | 执行次数, Int 0:为无限循环 |
unit | Number | 是 | 单位 Int 0:分 1:时 2:日 3:月 5:秒 6:周 |
repairConf | JSON | 是 | 补操作,补抄配置 |
# repairConf描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
repairCount | Number | 是 | 补抄次数,repairCount=0时,不需补抄 |
repairIntervalTime | Number | 是 | 补操作时间间隔 |
repairTimeUnit | Number | 是 | 补操作时间间隔的单位,0=分 1=时 2=日 |
# orders描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
type | String | 是 | readProperty-读取属性、 writeProperty-写属性、 functionInvoke-方法调用 |
dataKey | String | 是 | 属性 |
params | String | 否 | 业务扩展参数,格式json方式 eg. { "data":"abcdefghijklmn", "mode":"xxxx", "from":"2019-05-05 00:00:00", "to":"2019-05-06 00:00:00", "cType":"TCP/Bridge", "载波通道(4G)" : "TCP", "载波通道(2.4G)": "Bridge", "LoRa通道 ": "LoRa", "pn":"1,2,3" //当抄读设备为集中器时,pn值为集中器下需要抄读的电表的pn值编号 } |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
# 请求业务数据样例:
{
"pri": 3,
"crontab": {
"starttime": 150000000,
"freq": 1,
"unit": 1,
"count": 10,
"repairConf": {
"repairIntervalTime": 5,
"repairTimeUnit": 0,
"repairCount": 5
}
},
"appid": "P002",
"planName": "计划名称",
"orders": [
{
"params": "操作参数",
"type": "",
"dataKey": 0
}
],
"tenantCode": "",
"productCode": "",
"timeout": 30,
"devs": {
"itemType": 2,
"devList": [
"1804448F0020",
"vcaddr003",
"999999999989"
],
"devParams": {
"groupCodes": ""
}
},
"planid": ""
}
# 响应样例:
{
"code": 200,
"msg": ""
}
# 删除计划
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/plan/deleteplan
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
appid | String | 是 | 应用ID |
planid | String | 是 | 计划ID |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
# 请求业务数据样例:
{
"appid": "P001",
"planid": "P001_2019121218000000****"
}
# 响应样例:
{
"code": "200",
"msg": "计划删除成功"
}
# 修改计划状态
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/plan/modifyplanstatus
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
appid | String | 是 | 应用ID |
planid | String | 是 | 计划ID |
status | Number | 是 | 任务状态 0=暂停 1=激活 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
# 请求业务数据样例:
{
"planid": "154280159****",
"status": 0,
"appid": "P001"
}
# 响应样例:
{
"code": "200",
"msg": "停止计划成功"
}
# 查询计划列表(分页)
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/plan/listplaninfo
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
curPage | Number | 是 | 当前页 |
pageSize | Number | 是 | 页码容量 |
tenantCode | String | 是 | 租户编码 |
appid | String | 否 | 应用ID |
productCode | String | 否 | 产品编码 |
planid | String | 否 | 计划ID |
planName | String | 否 | 计划名称 |
planStatus | Number | 否 | 0=暂停 1=激活 3=执行完成 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
data | JSON | 否 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
curPage | Number | 是 | 当前页 |
pageSize | Number | 是 | 页码容量 |
total | Number | 是 | 总记录数 |
rows | Array | 是 | 页内容 |
# rows描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
tenantCode | String | 是 | 租户编码 |
productCode | String | 是 | 产品编码 |
planid | String | 是 | 计划ID |
appid | String | 是 | 应用ID |
planName | String | 是 | 计划名称 |
itemType | Number | 是 | 指定dev_array的内容含义类型,0=设备编号1=设备组号2=拓展参数 |
devArray | String | 否 | itemType=0时,为设备deviceId itemType=1时,为设备devGroup 多个元素通过逗号隔开 |
devParams | JSON | 否 | itemType=2时有值 |
starttime | Number | 是 | 为0时为实时计划 其他为计划首次执行的时间 单位s |
freq | Number | 是 | 频率 Int 非0 |
unit | Number | 是 | 单位 Int 0:分 1:时 2:日 3:月 5:秒 6:周 |
count | Number | 是 | 执行次数, Int 0:为无限循环 |
pri | Number | 是 | 优先级 |
alreadyTimes | Number | 是 | 已执行次数 |
lastExecuteTime | String | 否 | 上次执行时间 |
planStatus | Number | 是 | 任务状态0=停止,1=激活 |
orders | Array | 是 | 计划执行内容 |
repairIntervalTime | String | 是 | 补操作时间间隔 |
repairTimeUnit | Number | 是 | 补操作时间间隔的单位,0=分 1=时 2=日 |
repairCount | Number | 是 | 补抄次数,repairCount=0时,不需补抄 |
timeout | Number | 是 | 超时时间 |
createBy | String | 否 | 创建者 |
updateBy | String | 否 | 更新者 |
createTime | String | 否 | 创建时间 |
updateTime | String | 否 | 更新时间 |
devParams描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
groupCodes | String | 是 | 设备分组 |
orders描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
dataKey | String | 是 | 数据项 |
type | String | 是 | 数据项类型 readProperty-读取属性、 writeProperty-写属性、 functionInvoke-方法调用 |
params | String | 否 | 数据项参数 |
# 请求业务数据样例:
{
"appid": "",
"planName": "",
"planid": "",
"curPage": 1,
"pageSize": 15,
"tenantCode": "",
"productCode": "4l3edjve2o",
"planStatus": 1
}
# 响应样例:
{
"code": 200,
"msg": "成功",
"data": {
"curPage": 1,
"pageSize": 1,
"total": 22,
"rows": [
{
"planid": "P034_2021121619001139000031",
"appid": "P034",
"tenantCode": "uhc4epeayo",
"productCode": "4l3edjve2o",
"planName": "校时",
"itemType": 0,
"devArray": "b5qom9qaw4cg",
"devParams": {
"groupCodes": ""
},
"starttime": 1639652414,
"freq": 1,
"unit": 0,
"count": 1,
"pri": 1,
"alreadyTimes": 1,
"lastExecuteTime": "2021-12-16T19:00:14",
"planStatus": 3,
"orders": [
{
"dataKey": "3132",
"type": "readProperty",
"params": {}
}
],
"repairTimeUnit": 0,
"repairCount": 0,
"timeout": 180,
"createBy": "system",
"updateBy": "system",
"createTime": "2021-12-16T19:02:17",
"updateTime": "2021-12-16T19:02:17",
"repairIntervalTime": ""
}
]
}
}
# 查询计划的基本信息配置
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/plan/getplaninfo
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
planid | String | 是 | 计划ID |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
data | JSON | 否 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
planid | String | 是 | 计划ID |
appid | String | 是 | 应用ID |
tenantCode | String | 是 | 租户编码 |
productCode | String | 是 | 产品编码 |
planName | String | 是 | 计划名称 |
itemType | Number | 是 | 指定dev_array的内容含义类型,0=设备编号1=设备组号2=拓展参数 |
devArray | String | 否 | itemType=0时,为设备deviceId itemType=1时,为设备devGroup 多个元素通过逗号隔开 |
devParams | JSON | 否 | itemType=2时有值 |
starttime | Number | 是 | 为0时为实时计划 其他为计划首次执行的时间 单位s |
freq | Number | 是 | 频率 Int 非0 |
unit | Number | 是 | 单位 Int 0:分 1:时 2:日 3:月 5:秒 6:周 |
count | Number | 是 | 执行次数, Int 0:为无限循环 |
pri | Number | 是 | 优先级 |
alreadyTimes | Number | 是 | 已执行次数 |
lastExecuteTime | String | 否 | 上次执行时间 |
planStatus | Number | 是 | 任务状态0=停止,1=激活 |
orders | Array | 是 | 计划执行内容 |
repairIntervalTime | String | 是 | 补操作时间间隔 |
repairTimeUnit | Number | 是 | 补操作时间间隔的单位,0=分 1=时 2=日 |
repairCount | Number | 是 | 补抄次数,repairCount=0时,不需补抄 |
timeout | Number | 是 | 超时时间 |
createBy | String | 否 | 创建者 |
updateBy | String | 否 | 更新者 |
createTime | String | 否 | 创建时间 |
updateTime | String | 否 | 更新时间 |
# devParams描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
groupCodes | String | 是 | 设备分组 |
# orders描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
dataKey | String | 是 | 数据项 |
type | String | 是 | 数据项类型 readProperty-读取属性、 writeProperty-写属性、 functionInvoke-方法调用 |
params | String | 否 | 数据项参数 |
# 请求业务数据样例:
{
"planid": "",
"appid": ""
}
# 响应样例:
{
"code": 200,
"msg": "成功",
"data": {
"planid": "P034_2021121619001139000031",
"appid": "P034",
"tenantCode": "uhc4epeayo",
"productCode": "4l3edjve2o",
"planName": "校时",
"itemType": 0,
"devArray": "b5qom9qaw4cg",
"devParams": {
"groupCodes": ""
},
"starttime": 1639652414,
"freq": 1,
"unit": 0,
"count": 1,
"pri": 1,
"alreadyTimes": 1,
"lastExecuteTime": "2021-12-16T19:00:14",
"planStatus": 3,
"orders": [
{
"dataKey": "3132",
"type": "readProperty",
"params": {}
}
],
"repairTimeUnit": 0,
"repairCount": 0,
"timeout": 180,
"createBy": "system",
"updateBy": "system",
"createTime": "2021-12-16T19:02:17",
"updateTime": "2021-12-16T19:02:17",
"repairIntervalTime": ""
}
}
# 查询计划批次列表(分页)
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/plan/listplanbatch
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
curPage | Number | 是 | 当前页 |
pageSize | Number | 是 | 每页大小,如果传0表示不分页 |
appid | String | 是 | 应用ID |
planid | String | 否 | 计划ID |
planName | String | 否 | 计划名称 |
startTime | String | 否 | 起始时间 |
endTime | String | 否 | 终止时间 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
data | JSON | 否 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
curPage | Number | 是 | 当前页 |
pageSize | Number | 是 | 页码容量 |
total | Number | 是 | 总记录数 |
rows | Array | 是 | 页内容 |
# rows描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
planid | String | 是 | 计划ID |
batchId | Number | 是 | 批次ID |
planName | String | 是 | 计划名称 |
successRate | String | 是 | 成功率 |
taskitemTotal | Number | 是 | 计划抄表数 |
alreadyTotal | Number | 是 | 已抄表数量 |
successTotal | Number | 是 | 成功抄表数 |
failTotal | Number | 是 | 失败抄表数 |
startTime | String | 是 | 计划开始时间 |
compTime | String | 否 | 计划完成时间 为空时,代表计划批次还未执行完成 |
createTime | String | 是 | 单位 Int 0:分 1:时 2:日 3:月 5:秒 6:周 |
# 请求业务数据样例:
{
"planid": "P002_2019060517222477119",
"planName": "计划一",
"startTime": "",
"endTime": "",
"curPage": 1,
"pageSize": 10,
"appid": "P001"
}
# 响应样例:
{
"code": 200,
"msg": "成功",
"data": {
"total": 2,
"curPage": 1,
"pageSize": 15,
"rows": [
{
"planid": "P002_2019060517522900292",
"batchId": 2,
"taskitemTotal": 2011,
"successTotal": 2011,
"failTotal": 0,
"createTime": "2021-12-16T19:00:14",
"compTime": "2021-12-16T19:00:14",
"successRate": "100.00%",
"alreadyTotal": 1,
"startTime": "2021-12-16T19:00:14",
"planName": ""
}
]
}
}
# 查询某批次下所有任务执行详情(分页)
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/plan/listtasklog
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
curPage | Number | 是 | 当前页 |
pageSize | Number | 是 | 页元素大小 |
appid | String | 是 | 应用ID |
planid | String | 是 | 计划ID |
batchId | Number | 是 | 批次ID |
taskid | String | 否 | 任务号 |
devAddr | String | 否 | 设备地址 |
startTime | String | 是 | 计划开始时间 yyyy-MM-dd HH:mm:ss |
endTime | String | 是 | 计划的结束时间 yyyy-MM-dd HH:mm:ss |
codes | String | 否 | code码 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应消息 |
data | JSON | 否 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
curPage | Number | 是 | 当前页 |
pageSize | Number | 是 | 页码容量 |
total | Number | 是 | 总记录数 |
rows | Array | 是 | 页内容 |
# rows描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
devAddr | String | 是 | 设备地址 |
taskid | String | 是 | 任务号 |
status | Number | 是 | 状态0=初始化1=抄表成功2=抄表失败 |
createTime | String | 是 | 创建时间 |
startTime | Number | 是 | 开始时间 |
endTime | Number | 是 | 结束时间 |
codes | Number | 是 | code码 |
# 请求业务数据样例:
{
"startTime": "2020-04-02 10:00:00",
"endTime": "2020-04-02 11:02:00",
"codes": "00,01",
"planid": "P002_2019060517222477119",
"batchId": 1,
"taskid": "2019061123411091899",
"devAddr": "000014064890",
"curPage": 1,
"pageSize": 10,
"appid": "P001"
}
# 响应样例:
{
"code": 200,
"msg": "成功",
"data": {
"total": 1,
"pageSize": 10,
"pageNum": 1,
"rows": [
{
"startTime": "2019-08-26 03:00:33",
"endTime": "2019-08-26 03:00:33",
"devAddr": "125435346",
"taskid": "547567345235423",
"status": 2,
"createTime": "2019-08-26 03:00:33",
"code": ""
}
]
}
}
code码 | 描述 |
---|---|
00 | 成功 |
01 | 部分成功 |
02 | 失败 |
03 | 影子设备已存在 |
04 | 影子设备参数错误 |
90 | offline |
91 | 忙 |
92 | 抄表命令格式错误 |
93 | 影子设备类型不支持 |
94 | 影子设备无需控制 |
95 | 影子设备不存在 |
96 | 连接拒绝 |
99 | 超时 |
50 | 计划模块触发超时机制 多个code通过逗号隔开 |
# 查询任务执行结果集返回明细
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/plan/gettasklog
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
planid | String | 是 | 计划ID |
batchId | Number | 是 | 批次ID |
devAddr | String | 否 | 设备地址 |
taskid | Number | 否 | 任务号 大于210000000000000000L |
appid | String | 是 | 应用ID |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应信息 |
data | JSON | 否 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
devAddr | String | 是 | 设备地址 |
taskid | String | 是 | 任务号 |
status | Number | 是 | 任务执行状态1=成功,2=失败 |
readData | JSON | 是 | 任务执行结果集返回 |
createTime | String | 否 | 执行结果返回时间 |
# 请求业务数据样例:
{
"taskid": "taskid",
"planid": "计划id",
"batchId": "批次号",
"devAddr": "设备地址"
}
# 响应样例:
{
"code": "200",
"msg": "",
"data": {
"devAddr": "DZG10000000001",
"taskid": "2020011408060588089",
"status": "状态",
"readData": [
{
"cmd": "00010000",
"cgcode": "1015",
"response": {
"unit": "kWh",
"value": "70505.06",
"initdata": "06050507"
}
}
],
"createTime": ""
}
}
# 获取产品物模型
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/plan/getobjectmodel
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
productCode | String | 是 | 产品编码 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应信息 |
data | JSON | 否 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
properties | JSON | 否 | 属性 |
events | JSON | 否 | 事件 |
functions | JSON | 否 | 功能 |
# properties描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
dataKey | String | 是 | 数据项 |
dataName | String | 是 | 数据项名称 |
dataType | String | 是 | 数据项类型 |
accessType | Number | 是 | 读写 1=读写 2=只读 |
# events描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
dataKey | String | 是 | 数据项 |
dataName | String | 是 | 数据项名称 |
dataType | String | 是 | 数据项类型 |
accessType | Number | 是 | 读写 1=读写 2=只读 |
eventType | Number | 是 | event_type=1 信息 event_type=2 告警 event_type=3 故障 |
# 请求业务数据样例:
{
"productCode": ""
}
# 响应样例:
{
"code": 200,
"msg": "成功",
"data": {
"properties": {
"dataKey": "Ua",
"dataName": "A相电压",
"dataType": "float",
"accessType": 2
},
"events": {
"dataKey": "",
"dataName": "",
"dataType": "",
"accessType": "",
"eventType": 1
},
"functions": {}
}
}
# 查询ns缓存队列
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/lora/queue/list
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
dev_eui | String | 是 | 设备地址 |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应信息 |
data | JSON | 否 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
dev_eui | String | 否 | 设备地址 |
status | Number | 否 | 是否正在上下行 |
items | JSON | 否 | 缓存任务 |
# item描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
task_id | String | 否 | 设备地址 |
plan_id | String | 否 | 计划id |
dev_eui | Number | 否 | 设备地址 |
f_port | JSON | 否 | 端口 |
confirmed | bool | 否 | 是否需要回复 |
data | String | 否 | base64格式数据帧 |
# 请求业务数据样例:
{
"dev_eui":"00956906000129e7"
}
# 响应样例:
{
"dev_eui": "00956906000129e7", //dev_eui id
"status": 0, // 未在上下行可发送任务 1 正在上下行
"items": [
{
"task_id": "45132erere234", // taskId
"plan_id": "xxxxxxxxx",
"dev_eui": "00956906000129e7", //dev_eui id
"f_port": 10, // 下发 固定格式 客户的水表固定
"confirmed": true, // 是否需要回复
"data": "AAD+/miqqqqqqqpoCgAAAQIIAAACq/uJFg==" // base64 格式数
},
{
"task_id": "45132erere231",
"plan_id": "xxxxxxxxx",
"dev_eui": "00956906000129e7",
"f_port": 10,
"confirmed": true,
"data": "AAD+/miqqqqqqqpoCgAAARAAAAAEysF2Fg=="
},
{
"task_id": "45132erere235",
"plan_id": "xxxxxxxxx",
"dev_eui": "00956906000129e7",
"f_port": 10,
"confirmed": true,
"data": "AAD+/miqqqqqqqpoCgAAAQAHAAAHfEGiFg=="
},
{
"task_id": "45132erere230",
"plan_id": "xxxxxxxxx",
"dev_eui": "00956906000129e7",
"f_port": 10,
"confirmed": true,
"data": "AAD+/miqqqqqqqpoCgAAAQsFAAAGxSTWFg=="
}
]
}
# 删除ns缓存队列
# 请求方式:POST
# URL:https://api.lowaniot.com/openapi/lora/queue/delete
# 请求业务数据
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
dev_eui | String | 否 | dev_eui不为空时,删除指定设备缓存 dev_eui为空时,删除计划下所有设备的缓存 |
task_id | String | 否 | 任务id |
plan_id | String | 是 | 计划id |
# 响应内容
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
code | Number | 是 | 响应编码 |
msg | String | 是 | 响应信息 |
data | JSONArray | 否 | 响应数据 |
# data描述
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
dev_eui | String | 否 | 设备地址 |
task_id | Number | 否 | 是否正在上下行 |
plan_id | String | 是 | 计划id |
flag | bool | 否 | 是否删除成功 true成功 false 失败 |
# 请求业务数据样例:
// 请求body
{
"dev_eui":"00956906000129e7", // 指定devEUI
"task_id":"45132erere234", // taskId
"plan_id":"xxxxxxxxxx"
}
# 响应样例:
{
"dev_eui": "00956906000129e7", // 设备 dev_eui
"task_id": "45132erere230", // 删除的任务id
"plan_id":"xxxxxxxxxx",
"flag": true // 是否删除成功 true成功 false 失败
}
# Java SDK Demo
Java SDK提供Demo,供您参考使用。单击查看Java SDK Demo (opens new window)。