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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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