You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

238 lines
9.6 KiB
Markdown

2 months ago
# IoT 数据上报接口文档
## 基本信息
| 项目 | 说明 |
|------|------|
| 协议 | HTTP/1.1 |
| 方法 | POST |
| Content-Type | application/json; charset=UTF-8 |
---
## 接口地址
```
POST /api/iot/data/report
```
一次请求查询**所有库点**的设备数据,按库点位置分组。
---
## 响应参数
### Body
```json
{
"code": 0,
"message": "ok",
"data": [
{
"deviceName": "非动碰盘点1号巷道盘点系统",
"time": "2026-06-26 09:30:00",
"warehouseRunStatus": 3,
"warehouseNetworkStatus": 1,
"leftScannerNetworkStatus": 1,
"leftScannerScanResult": 1,
"leftDepthScannerNetworkStatus": 1,
"leftDepthScannerScanResult": 1,
"rightScannerNetworkStatus": 1,
"rightScannerScanResult": 1,
"rightDepthScannerNetworkStatus": 1,
"rightDepthScannerScanResult": 1,
"cameraNetworkStatus": 1,
"cameraErrorCode": 0,
"apNetworkStatus": 1,
"SRMNumber": "001",
"cpeNetworkStatus": 1,
"visionControllerNetworkStatus": 1,
"communicationData": {
"header": "KC",
"type": "E",
"data": {
"SRMNumber": "001",
"cmdName": "E1",
"taskId": "1ff",
"fromDirection": 2,
"fromColumn": 7,
"fromRow": 3,
"fromSeparation": 1,
"fromSide": 1,
"toSide": 1,
"toDirection": 1,
"toColumn": 8,
"toRow": 2,
"toSeparation": 1,
"warnCode": "",
"code": "123",
"trayCode": "1234",
"lotnum": "12342",
"typeNum": "000",
"quantity": 30,
"checkRlt": 1
}
}
},
{
"deviceName": "一号仓库动碰盘点系统",
"time": "2026-06-26 09:30:00",
"tofDevice01RunStatus": 1,
"tofDevice02RunStatus": 1,
"tofDevice03RunStatus": 1,
"tofDevice04RunStatus": 1,
"camera3dNetworkStatus": 1,
"camera3dErrorCode": 0,
"industrialCamera1ErrorCode": 0,
"industrialCamera1NetworkStatus": 1,
"industrialCamera2ErrorCode": 0,
"industrialCamera2NetworkStatus": 1,
"industrialCamera3ErrorCode": 0,
"industrialCamera3NetworkStatus": 1,
"industrialCamera4ErrorCode": 0,
"industrialCamera4NetworkStatus": 1,
"industrialCamera5ErrorCode": 0,
"industrialCamera5NetworkStatus": 1,
"industrialCamera6ErrorCode": 0,
"industrialCamera6NetworkStatus": 1,
"inventoryServerOnlineStatus": 1,
"communicationData": {
"header": "KC",
"type": "SC",
"data": {
"cmdName": "SC01",
"taskId": "1ff",
"code": "123",
"trayCode": "1234",
"lotnum": "12342",
"typeNum": "000",
"quantity": 30,
"checkRlt": "1"
}
}
}
]
}
```
### 顶层字段
| 字段 | 类型 | 说明 |
|------|------|------|
| code | int | 状态码,0=成功 |
| message | String | 状态描述 |
| data | Array | 库点数据数组,每项为一个库点的扁平 JSON 对象 |
---
## 库点一:非动碰盘点1号巷道盘点系统
| 所属设备 | 字段名 | 类型 | 说明 |
|----------|--------|------|------|
| 库点基本信息_名称 | deviceName | String | 库点名称 |
| 库点基本信息_采样时间 | time | String | 采样时间,格式 `yyyy-MM-dd HH:mm:ss` |
| 库点运行状态_运行状态 | warehouseRunStatus | int | 1=随行中,2=盘点中,3=无任务待机 |
| 库点运行状态_网络状态 | warehouseNetworkStatus | int | 1=在线,2=离线 |
| 左侧扫码枪_网络状态 | leftScannerNetworkStatus | int | 1=在线,2=离线 |
| 左侧扫码枪_扫码结果 | leftScannerScanResult | int | 1=成功,2=未识别 |
| 左深度扫码枪_网络状态 | leftDepthScannerNetworkStatus | int | 1=在线,2=离线 |
| 左深度扫码枪_扫码结果 | leftDepthScannerScanResult | int | 1=成功,2=未识别 |
| 右侧扫码枪_网络状态 | rightScannerNetworkStatus | int | 1=在线,0=离线 |
| 右侧扫码枪_扫码结果 | rightScannerScanResult | int | 1=成功,2=未识别 |
| 右深度扫码枪_网络状态 | rightDepthScannerNetworkStatus | int | 1=在线,0=离线 |
| 右深度扫码枪_扫码结果 | rightDepthScannerScanResult | int | 1=成功,2=未识别 |
| 摄像头_网络状态 | cameraNetworkStatus | int | 1=在线,2=离线 |
| 摄像头_错误代码 | cameraErrorCode | int | 见表《摄像头状态码》 |
| AP_网络状态 | apNetworkStatus | int | 1=在线,2=离线 |
| CPE_网络状态 | cpeNetworkStatus | int | 1=在线,2=离线 |
| 视觉控制器_网络状态 | visionControllerNetworkStatus | int | 1=在线,2=离线 |
| 通信_业务数据 | communicationData | Object | 堆垛机通信协议包,见下表 |
### communicationData 子字段
| 路径 | 类型 | 说明 |
|------|------|------|
| header | String | 发送方标识,昆船发送"KC" |
| type | String | 模式:A=心跳 B=任务模式 C=动作 D=报警 E=盘点 |
| data.SRMNumber | String | 巷道标识符 |
| data.cmdName | String | 指令名称:B1=开始随行;C1=取货到位;C2=取货完成;C3=送货到位;C4=送货完成;B2=随行完成;E1=开始盘点;SC01=站台盘点;SC02=站台盘点完成 |
| data.taskId | String | 任务单号 |
| data.fromSide | int | 来源侧:1=库内,2=库外 |
| data.fromDirection | int | 来源方向:1=左,2=右 |
| data.fromColumn | int | 来源列 |
| data.fromRow | int | 来源行 |
| data.fromSeparation | int | 来源深度:1=浅,2=深(双伸货架外侧时传2) |
| data.toSide | int | 目的侧:1=库内,2=库外 |
| data.toDirection | int | 目的方向:1=左,2=右 |
| data.toColumn | int | 目的列 |
| data.toRow | int | 目的行 |
| data.toSeparation | int | 目的深度:1=浅,2=深(双伸货架外侧时传2) |
| data.warnCode | String | type=D 时传,告警标识符,多个用逗号分隔 |
| data.code | String | 货架货物标识(空货物传"") |
| data.trayCode | String | 托盘标识(没托盘传"") |
| data.lotnum | String | 盘点批次(新批次会重置所有货位为未盘点) |
| data.typeNum | String | 品规编号 |
| data.quantity | int | 货物数量 |
| data.checkRlt | int | 盘点结果:0=盘点失败,1=盘点正确 |
---
## 库点二:一号仓库动碰盘点系统
| 所属设备 | 字段名 | 类型 | 说明 |
|----------|--------|------|------|
| 库点基本信息_名称 | deviceName | String | 库点名称 |
| 库点基本信息_采样时间 | time | String | 采样时间,格式 `yyyy-MM-dd HH:mm:ss` |
| TOF设备-01_运行状态 | tofDevice01RunStatus | int | 1=在线,2=离线 |
| TOF设备-02_运行状态 | tofDevice02RunStatus | int | 1=在线,2=离线 |
| TOF设备-03_运行状态 | tofDevice03RunStatus | int | 1=在线,2=离线 |
| TOF设备-04_运行状态 | tofDevice04RunStatus | int | 1=在线,2=离线 |
| 3D相机_网络状态 | camera3dNetworkStatus | int | 1=在线,2=离线 |
| 3D相机_故障代码 | camera3dErrorCode | int | 见表《3D相机状态码》 |
| 1号工业相机_故障代码 | industrialCamera1ErrorCode | int | 见表《工业相机状态码》 |
| 1号工业相机_网络状态 | industrialCamera1NetworkStatus | int | 1=在线,2=离线 |
| 2号工业相机_故障代码 | industrialCamera2ErrorCode | int | 见表《工业相机状态码》 |
| 2号工业相机_网络状态 | industrialCamera2NetworkStatus | int | 1=在线,2=离线 |
| 3号工业相机_故障代码 | industrialCamera3ErrorCode | int | 见表《工业相机状态码》 |
| 3号工业相机_网络状态 | industrialCamera3NetworkStatus | int | 1=在线,2=离线 |
| 4号工业相机_故障代码 | industrialCamera4ErrorCode | int | 见表《工业相机状态码》 |
| 4号工业相机_网络状态 | industrialCamera4NetworkStatus | int | 1=在线,2=离线 |
| 5号工业相机_故障代码 | industrialCamera5ErrorCode | int | 见表《工业相机状态码》 |
| 5号工业相机_网络状态 | industrialCamera5NetworkStatus | int | 1=在线,2=离线 |
| 6号工业相机_故障代码 | industrialCamera6ErrorCode | int | 见表《工业相机状态码》 |
| 6号工业相机_网络状态 | industrialCamera6NetworkStatus | int | 1=在线,2=离线 |
| 盘点服务器_在线状态 | inventoryServerOnlineStatus | int | 1=在线,0=离线 |
| 通信_站台业务数据 | communicationData | Object | 站台盘点通信协议包,见下表 |
### communicationData 子字段
| 路径 | 类型 | 说明 |
|------|------|------|
| header | String | 发送方标识,昆船发送"KC" |
| type | String | 模式:SC=站台盘点 |
| data.cmdName | String | 指令名称:SC01=站台盘点;SC02=站台盘点完成 |
| data.taskId | String | 任务号 |
| data.code | String | 条码 |
| data.trayCode | String | 托盘码 |
| data.lotnum | String | 批次号 |
| data.typeNum | String | 品规编号 |
| data.quantity | int | 货物数量 |
| data.checkRlt | String | 盘点结果:0=盘点失败,1=盘点正确 |
---
## 注意事项
1. 响应顶层 `data` 为数组,每项为一个库点的扁平 JSON 对象
2. 每个库点对象中,设备状态直接作为字段,不再嵌套 `devices` 数组
3. 各库点共享同一个 `time` 采样时间
4. 设备状态字段统一为 **int** 类型(1=在线/正常,0/2=离线/异常,视具体字段而定)
5. 通信业务数据为嵌套 **Object**,包含堆垛机/站台的完整协议包
6. 不同库点的字段集合不同(非动碰库点有扫码枪和堆垛机通信,动碰盘点系统有TOF和工业相机和站台通信)
7. 扫码枪分为普通扫码枪和深度扫码枪,左右各两个,共4个扫码枪
---
> 版本: v3.0 | 更新: 2026-07-03