Appearance
数据接口
数据接口是第三方向平台调用,所以需要携带认证方式参数,URL 当中需要携带 ?appKey=xxx×tamp=xxx&signature=xxx。
数据接口可以使用 API 在线文档 进行查看。
3.1 查询区域列表
返回所有区域。
请求方式: POST /openapi/query/regions
请求体参数: 无
响应示例:
json
{
"code": 200,
"message": "success",
"data": [
{
"regionId": 1,
"regionName": "一级区域",
"parentId": 0,
"parentName": null,
"remark": "备注"
}
],
"timestamp": 1732694400000
}响应参数:
| 参数 | 数据类型 | 示例 | 描述 |
|---|---|---|---|
| regionId | Long | 719943688798277 | 区域 ID |
| regionName | String | 一级区域 | 区域名称 |
| parentId | Long | 719943688798270 | 父区域 ID |
| parentName | String | 顶级区域 | 父区域名称 |
| remark | String | 备注 | 备注 |
3.2 查询设备列表
请求方式: POST /openapi/query/device/list
请求体参数:
json
{
"regionIds": [1, 2],
"deviceIds": [1, 2],
"businessIds": [1, 2],
"page": 1,
"size": 10
}根据查询参数,查询设备列表。单页最多 1000 个设备。如果设备不多的情况,可以一次性查询全部。
请求参数:
| 参数 | 数据类型 | 示例 | 必填 | 描述 |
|---|---|---|---|---|
| regionIds | 整型 List | [1, 2] | 否 | 区域 ID 集合,可以单个 |
| deviceIds | 整型 List | [1, 2] | 否 | 设备 ID 集合,可以单个 |
| businessIds | 整型 List | [1, 2] | 否 | 行业 ID 集合,可以单个 |
| page | Integer | 1 | 是 | 分页参数 |
| size | Integer | 10 | 是 | 分页参数 |
响应示例:
json
{
"code": 200,
"message": "success",
"data": [
{
"deviceId": 123,
"businessId": "IMEI123456",
"deviceName": "设备 001",
"productId": 1,
"productName": "4G 终端",
"regionId": 1,
"regionName": "一级区域",
"onlineStatus": 1,
"alarmStatus": 0,
"activeTime": "2025-01-01 10:00:00",
"offlineTime": "2025-11-27 16:00:00",
"remark": "备注"
}
],
"timestamp": 1732694400000
}响应参数:
| 参数 | 数据类型 | 示例 | 描述 |
|---|---|---|---|
| deviceId | Long | 719943688798277 | 设备 ID |
| businessId | String | IMEI123456 | 行业 ID |
| deviceName | String | 设备 001 | 设备名称 |
| productId | Long | 719943688798271 | 产品 ID |
| productName | String | 4G 终端 | 产品名称 |
| regionId | Long | 719943688795245 | 区域 ID |
| regionName | String | 一级区域 | 区域名称 |
| onlineStatus | Integer | 0 | 在线状态,0-在线,1-离线 |
| alarmStatus | Integer | 0 | 告警状态,0-正常,1-告警 |
| activeTime | String | 2025-01-01 14:00:00 | 激活时间 |
| offlineTime | String | 2025-01-01 14:00:00 | 离线时间,如果设备在线,为空串 |
| remark | String | 备注 | 备注 |
3.3 查询单个设备信息
请求方式: GET /openapi/query/device/{deviceId}
路径参数: deviceId — 设备 ID
响应示例: 同"查询设备列表"中的单个设备对象。
3.4 查询设备实时数据
请求方式: POST /openapi/query/device/list/realtime
请求体参数:
json
{
"regionIds": [1, 2],
"deviceIds": [1, 2],
"businessIds": [1, 2],
"page": 1,
"size": 10
}根据查询参数,返回单个或者多个设备的实时数据。单页最多 1000 个设备。如果设备不多的情况,可以一次性查询全部。
请求参数:
| 参数 | 数据类型 | 示例 | 必填 | 描述 |
|---|---|---|---|---|
| regionIds | 整型 List | [1, 2] | 否 | 区域 ID 集合,可以单个 |
| deviceIds | 整型 List | [1, 2] | 否 | 设备 ID 集合,可以单个 |
| businessIds | 整型 List | [1, 2] | 否 | 行业 ID 集合,可以单个 |
| page | Integer | 1 | 是 | 分页参数 |
| size | Integer | 10 | 是 | 分页参数 |
响应示例:
json
{
"code": 200,
"message": "success",
"data": {
"deviceId": 123,
"deviceName": "设备 001",
"businessId": "IMEI123456",
"regionId": 1,
"regionName": "一级区域",
"onlineStatus": 1,
"metrics": [
{
"meteId": "1555",
"meteName": "温度",
"value": "25.5",
"sValue": "25.5",
"unit": "℃",
"time": "2024-11-27 16:00:00"
},
{
"meteId": "12125",
"meteName": "湿度",
"value": "60",
"sValue": "60",
"unit": "%",
"time": "2024-11-27 16:00:00"
}
],
"timestamp": 1732694400000
},
"timestamp": 1732694400000
}响应参数:
| 参数 | 数据类型 | 示例 | 描述 |
|---|---|---|---|
| deviceId | Long | 719943688798277 | 设备 ID |
| businessId | String | IMEI123456 | 行业 ID |
| deviceName | String | 设备 001 | 设备名称 |
| productId | Long | 719943688798271 | 产品 ID |
| productName | String | 产品名称 | 产品名称 |
| regionId | Long | 719943688795245 | 区域 ID |
| regionName | String | 区域名称 | 区域名称 |
| onlineStatus | Integer | 0 | 在线状态,0-在线,1-离线 |
| metrics | List | 属性量列表 | |
| ├─ meteId | String | 1855521 | 量 ID |
| ├─ meteName | String | 温度 | 量名称 |
| ├─ value | String | 26.5 | 实时值 |
| ├─ unit | String | ℃ | 单位 |
| ├─ dataType | String | 2 | 数据类型:0-字符串 1-整型 2-浮点 3-枚举 |
| ├─ time | String | 2025-01-01 14:00:00 | 时间 |
| └─ sValue | String | 26.5 | 翻译之后的实时值。枚举类型为翻译后的值,字符串类型与 value 等值 |
3.5 批量查询所有设备实时数据
一次性返回 AppKey 权限范围内所有设备的实时数据,是 3.6 查询单个设备实时数据 的批量改进版,不分页。
调用逻辑:
- 若传递了
deviceIds(或businessIds),则按设备查询; - 否则若传递了
regionIds,则查询这些区域(含子区域)下的设备; - 若都不传递,则查询当前 AppKey 授权区域(含子区域)下的所有设备。
设备数量限制
设备数量最多 5000 个。若命中的设备超过 5000 个,接口会直接返回错误,请通过传递区域 ID 列表或设备 ID 列表缩小查询范围。
请求方式: POST /openapi/query/device/realtime/all
请求体参数: 可选,不传则查询 AppKey 授权范围内的全部设备。
json
{
"regionIds": [1, 2],
"deviceIds": [1, 2],
"businessIds": ["IMEI123456"]
}请求参数:
| 参数 | 数据类型 | 示例 | 必填 | 描述 |
|---|---|---|---|---|
| regionIds | 整型 List | [1, 2] | 否 | 区域 ID 集合,可以单个 |
| deviceIds | 整型 List | [1, 2] | 否 | 设备 ID 集合,可以单个 |
| businessIds | 字符串 List | ["IMEI123456"] | 否 | 行业 ID 集合,可以单个 |
响应示例:
json
{
"code": 200,
"message": "success",
"data": [
{
"deviceId": 123,
"deviceName": "设备 001",
"businessId": "IMEI123456",
"regionId": 1,
"regionName": "一级区域",
"onlineStatus": 1,
"metrics": [
{
"meteId": "1555",
"meteName": "温度",
"value": "25.5",
"sValue": "25.5",
"unit": "℃",
"time": "2024-11-27 16:00:00"
}
],
"timestamp": 1732694400000
}
],
"timestamp": 1732694400000
}响应参数: 数据为实时数据数组,单个元素结构同 3.4 查询设备实时数据。
错误响应示例(设备超过 5000 个):
json
{
"code": 500,
"message": "设备数量为6000,超过最大限制5000,请传递区域ID列表或设备ID列表缩小查询范围",
"timestamp": 1732694400000
}3.6 查询单个设备实时数据
请求方式: GET /openapi/query/device/realtime/{deviceId}
路径参数: deviceId — 设备 ID
响应示例:
json
{
"code": 200,
"message": "success",
"data": {
"deviceId": 123,
"deviceName": "设备 001",
"businessId": "IMEI123456",
"regionId": 1,
"regionName": "一级区域",
"onlineStatus": 1,
"metrics": [
{
"meteId": "1555",
"meteName": "温度",
"value": "25.5",
"sValue": "25.5",
"unit": "℃",
"time": "2024-11-27 16:00:00"
},
{
"meteId": "12125",
"meteName": "湿度",
"value": "60",
"unit": "%",
"time": "2024-11-27 16:00:00"
}
]
},
"timestamp": 1732694400000
}响应参数: 同 3.4 查询设备实时数据。
3.7 获取设备的在线状态
请求方式: POST /openapi/query/device/onlinestatus/list
请求体参数:
json
{
"regionIds": [1, 2],
"deviceIds": [1, 2],
"businessIds": [1, 2],
"page": 1,
"size": 10
}根据查询参数,返回单个或者多个设备的在线状态。单页最多 1000 个设备。如果设备不多的情况,可以一次性查询全部。
请求参数:
| 参数 | 数据类型 | 示例 | 必填 | 描述 |
|---|---|---|---|---|
| regionIds | 整型 List | [1, 2] | 否 | 区域 ID 集合,可以单个 |
| deviceIds | 整型 List | [1, 2] | 否 | 设备 ID 集合,可以单个 |
| businessIds | 整型 List | [1, 2] | 否 | 行业 ID 集合,可以单个 |
| page | Integer | 1 | 是 | 分页参数 |
| size | Integer | 10 | 是 | 分页参数 |
响应示例:
json
{
"code": 200,
"message": "success",
"data": {
"deviceId": 123,
"deviceName": "设备 001",
"businessId": "IMEI123456",
"onlineStatus": 1
},
"timestamp": 1732694400000
}响应参数:
| 参数 | 数据类型 | 示例 | 描述 |
|---|---|---|---|
| deviceId | Long | 719943688798277 | 设备 ID |
| businessId | String | IMEI123456 | 行业 ID |
| deviceName | String | 设备 001 | 设备名称 |
| onlineStatus | Integer | 0 | 设备状态,0-在线,1-离线 |
3.8 查询实时告警数据
请求方式: POST /openapi/query/device/alarm/list
请求体参数:
json
{
"regionIds": [1, 2],
"deviceIds": [1, 2],
"businessIds": [1, 2]
}根据查询参数,返回单个或者多个设备的实时告警。此接口不分页,一次查询全部实时告警。
请求参数:
| 参数 | 数据类型 | 示例 | 必填 | 描述 |
|---|---|---|---|---|
| regionIds | 整型 List | [1, 2] | 否 | 区域 ID 集合,可以单个 |
| deviceIds | 整型 List | [1, 2] | 否 | 设备 ID 集合,可以单个 |
| businessIds | 整型 List | [1, 2] | 否 | 行业 ID 集合,可以单个 |
响应示例:
json
{
"code": 200,
"message": "success",
"data": [
{
"alarmId": 456,
"deviceId": 123,
"deviceName": "设备 001",
"businessId": "IMEI123456",
"regionId": 1,
"regionName": "一级区域",
"meteId": "80015551",
"meteName": "压力过低",
"level": 1,
"value": "155",
"sValue": "155",
"alarmTime": "2025-11-27 16:00:00"
}
],
"timestamp": 1732694400000
}响应参数:
| 参数 | 数据类型 | 示例 | 描述 |
|---|---|---|---|
| alarmId | Long | 15454521 | 告警 ID,告警恢复时以此 ID 为主键 |
| deviceId | Long | 719943688798277 | 设备 ID |
| businessId | String | IMEI123456 | 行业 ID |
| deviceName | String | 设备 001 | 设备名称 |
| regionId | Long | 719943688795245 | 区域 ID |
| regionName | String | 一级区域 | 区域名称 |
| meteId | String | 1545451 | 告警量 ID |
| meteName | String | 温度过低 | 告警量名称 |
| level | Integer | 1 | 告警等级 1 2 3 4 |
| value | String | 22.5 | 实时值 |
| sValue | String | 22.5 | 翻译之后的实时值。枚举类型为翻译后的值,字符串类型与 value 等值 |
| alarmTime | String | 2025-11-27 16:00:00 | 告警时间 |
3.9 查询单个设备历史告警
历史告警较多,所以单个设备查询历史告警。
请求方式: POST /openapi/query/device/alarms/history
请求体参数:
json
{
"deviceId": 1,
"businessId": "IMEI123456",
"alarmLevel": 1,
"alarmStatus": 0,
"isRecovered": 0,
"startTime": "2025-11-01 00:00:00",
"endTime": "2025-11-27 23:59:59",
"page": 1,
"size": 20
}请求参数:
| 参数 | 数据类型 | 示例 | 必填 | 描述 |
|---|---|---|---|---|
| deviceId | Long | 1 | 否 | 设备 ID |
| businessId | String | IMEI123456 | 否 | 行业 ID,行业 ID 和设备 ID 必填其一 |
| alarmLevel | Integer | 1 | 否 | 告警级别:1-严重 2-重要 3-一般 |
| alarmStatus | Integer | 0 | 否 | 告警状态:0-未处理 1-已处理 2-已忽略 |
| isRecovered | Integer | 0 | 否 | 是否已恢复:0-未恢复 1-已恢复 |
| startTime | String | 2025-11-01 00:00:00 | 否 | 开始时间(格式 yyyy-MM-dd HH:mm:ss) |
| endTime | String | 2025-11-27 23:59:59 | 否 | 结束时间(格式 yyyy-MM-dd HH:mm:ss) |
| page | Integer | 1 | 否 | 分页页码,从 1 开始,默认 1 |
| size | Integer | 20 | 否 | 每页大小,默认 20,最大 100 |
响应示例:
json
{
"code": 200,
"message": "success",
"data": [
{
"alarmId": 456,
"deviceId": 123,
"deviceName": "设备 001",
"businessId": "IMEI123456",
"regionId": 1,
"regionName": "一级区域",
"meteId": "80015551",
"meteName": "压力过低",
"level": 1,
"value": "155",
"sValue": "155",
"alarmTime": "2025-11-27 16:00:00",
"state": "END",
"closeTime": "2025-11-27 18:00:00"
},
{
"alarmId": 457,
"deviceId": 123,
"deviceName": "设备 001",
"businessId": "IMEI123456",
"regionId": 1,
"regionName": "一级区域",
"meteId": "80015551",
"meteName": "压力过低",
"level": 1,
"value": "155",
"sValue": "155",
"alarmTime": "2025-11-27 16:00:00",
"state": "BEGIN",
"closeTime": ""
}
],
"timestamp": 1732694400000
}响应参数:
| 参数 | 数据类型 | 示例 | 描述 |
|---|---|---|---|
| alarmId | Long | 15454521 | 告警 ID,告警恢复时以此 ID 为主键 |
| deviceId | Long | 719943688798277 | 设备 ID |
| businessId | String | IMEI123456 | 行业 ID |
| deviceName | String | 设备 001 | 设备名称 |
| regionId | Long | 719943688795245 | 区域 ID |
| regionName | String | 一级区域 | 区域名称 |
| meteId | String | 1545451 | 告警量 ID |
| meteName | String | 温度过低 | 告警量名称 |
| level | Integer | 1 | 告警等级 1 2 3 4 |
| value | String | 22.5 | 实时值 |
| sValue | String | 22.5 | 翻译之后的实时值。枚举类型为翻译后的值,字符串类型与 value 等值 |
| alarmTime | String | 2025-11-27 16:00:00 | 告警时间 |
| state | String | BEGIN | BEGIN 是告警中,END 是已关闭 |
| closeTime | String | 2025-11-27 18:00:00 | 恢复时间,如果是 END 才会有 closeTime |
3.10 查询产品列表(物模型)
查询产品列表,每个产品包含其物模型(属性量定义)。
物模型不是返回平台全部产品,而是根据当前 AppKey 授权区域下关联的设备,对这些设备所属的产品去重后,再获取这些产品对应的物模型。说明:
- 仅返回 AppKey 授权范围内设备实际使用到的产品(已去重),不会返回无关产品。
- 物模型中的告警量(meteType=1)对外不返回,仅包含采集量、控制量、配置量、阈值量等。
请求方式: GET /openapi/query/product/list
请求参数: 无
响应示例:
json
{
"code": 200,
"message": "success",
"data": [
{
"productId": 744000000001000,
"productName": "门磁",
"onlinePeriod": 1440,
"thingModel": [
{
"meteId": "1",
"meteName": "门磁状态",
"unit": "",
"dataType": 3,
"meteType": 0,
"enumValues": [
{ "name": "门磁关门", "value": "0" },
{ "name": "门磁打开", "value": "1" }
],
"level": 0,
"decimalPoint": 1
},
{
"meteId": "2",
"meteName": "电池电压",
"unit": "",
"dataType": 2,
"meteType": 0,
"level": 0,
"decimalPoint": 1
}
]
}
],
"timestamp": 1764749697528
}响应参数:
| 参数 | 数据类型 | 示例 | 描述 |
|---|---|---|---|
| productId | Long | 744000000001000 | 产品 ID |
| productName | String | 门磁 | 产品名称 |
| onlinePeriod | Long | 1440 | 断线监测周期(分钟) |
| thingModel | List | 物模型(属性量定义)列表 | |
| ├─ meteId | String | 1 | 量 ID |
| ├─ meteName | String | 门磁状态 | 量名称 |
| ├─ unit | String | ℃ | 单位,无单位时为空串 |
| ├─ dataType | Integer | 3 | 数据类型:0-字符串,1-整型,2-浮点,3-枚举 |
| ├─ meteType | Integer | 0 | 量类型:0-采集量,2-控制量,3-配置量,4-阈值量(告警量 1 不返回) |
| ├─ level | Integer | 1 | 告警等级:1 2 3 4,非告警量为 0 |
| ├─ decimalPoint | Integer | 2 | 小数点位数:1-4 位 |
| ├─ enumValues | List | 枚举值定义,仅 dataType=3(枚举)时有值,否则为空数组 | |
| ├─ name | String | 门磁关门 | 枚举显示名称 |
| └─ value | String | 0 | 枚举原始值 |