# 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