|
|
@@ -640,11 +640,56 @@ http://192.168.75.110:32080
|
|
|
- 示例
|
|
|
|
|
|
```
|
|
|
-header = {
|
|
|
- "Authorization": "TOKEN"
|
|
|
-}
|
|
|
+ header = {
|
|
|
+ "Authorization": "TOKEN"
|
|
|
+ }
|
|
|
```
|
|
|
|
|
|
+### 通用状态枚举
|
|
|
+
|
|
|
+以下状态枚举适用于汇采内的所有设备类型,不限于 Modbus。创建设备和创建点位时接口会写入初始状态,调用方通常不需要传;查询设备列表、连接设备、查询点位列表等接口会返回这些状态字段。
|
|
|
+
|
|
|
+设备 `status` 表示设备连接状态:
|
|
|
+
|
|
|
+| 值 | 英文状态 | 含义 | 典型场景 |
|
|
|
+|---:|---|---|---|
|
|
|
+| `1` | `disconnected` | 未连接 | 设备未执行连接、已断开,或连接失败后回到未连接状态。 |
|
|
|
+| `2` | `connected` | 已连接 | 设备连接成功。注意这不等同于正在采集。 |
|
|
|
+| `3` | `error` | 连接异常 | 设备连接过程或连接状态异常。 |
|
|
|
+
|
|
|
+设备 `running_status` 表示采集状态,不表示 TCP/串口等底层连接是否成功:
|
|
|
+
|
|
|
+| 值 | 英文状态 | 含义 | 典型场景 |
|
|
|
+|---:|---|---|---|
|
|
|
+| `0` | `idle` | 未采集 | 设备尚未开始采集、已停止采集,或刚连接但没有采集任务运行。 |
|
|
|
+| `1` | `running` | 采集中 | 设备正在执行采集任务。 |
|
|
|
+| `2` | `error` | 采集异常 | 采集过程中发生异常,例如读取点位失败、通信异常或采集任务报错。 |
|
|
|
+
|
|
|
+设备 `connect_status` 表示最近一次连接/通信检测状态:
|
|
|
+
|
|
|
+| 值 | 英文状态 | 含义 | 典型场景 |
|
|
|
+|---:|---|---|---|
|
|
|
+| `0` | `idle` | 未检测或空闲 | 尚未进行连接检测,或设备当前处于空闲状态。 |
|
|
|
+| `1` | `normal` | 连接正常 | 最近一次连接或通信状态正常。 |
|
|
|
+| `2` | `abnormal` | 连接异常 | 最近一次连接或通信状态异常。 |
|
|
|
+
|
|
|
+点位 `status` 表示点位采集状态:
|
|
|
+
|
|
|
+| 值 | 英文状态 | 含义 | 典型场景 |
|
|
|
+|---:|---|---|---|
|
|
|
+| `0` | `idle` | 未采集 | 点位尚未采集或设备未运行采集任务。 |
|
|
|
+| `1` | `working` | 采集正常 | 点位最近一次采集正常。 |
|
|
|
+| `2` | `error` | 采集异常 | 点位最近一次采集失败或转换失败。 |
|
|
|
+
|
|
|
+状态字段关系说明:
|
|
|
+
|
|
|
+| 字段 | 表示对象 | 说明 |
|
|
|
+|---|---|---|
|
|
|
+| `status` | 设备连接状态 | 判断设备是否已连接。 |
|
|
|
+| `running_status` | 设备采集状态 | 判断设备是否正在采集或采集是否异常。 |
|
|
|
+| `connect_status` | 最近连接/通信检测状态 | 判断最近一次连接或通信是否正常。 |
|
|
|
+| 点位 `status` | 单个点位采集状态 | 判断某个点位最近一次采集是否正常。 |
|
|
|
+
|
|
|
## Modbus 创建设备与创建点位接口文档
|
|
|
|
|
|
### 枚举汇总
|
|
|
@@ -730,22 +775,6 @@ header = {
|
|
|
|
|
|
说明:`func_code` 为 `1` 或 `2` 时采集结果按布尔/0-1 处理;`func_code` 为 `3` 或 `4` 且 `type=bool` 时会从寄存器中按 `bit` 取某一位。
|
|
|
|
|
|
-- 状态枚举
|
|
|
-
|
|
|
-接口创建时会写入初始状态,调用方通常不需要传。
|
|
|
-
|
|
|
-| 字段 | 值 | 含义 |
|
|
|
-|---|---:|---|
|
|
|
-| 设备 `status` | 1 | disconnected,未连接 |
|
|
|
-| 设备 `status` | 2 | connected,已连接 |
|
|
|
-| 设备 `status` | 3 | error,异常 |
|
|
|
-| 设备 `running_status` | 0 | idle,未采集 |
|
|
|
-| 设备 `running_status` | 1 | running,采集中 |
|
|
|
-| 设备 `running_status` | 2 | error,运行异常 |
|
|
|
-| 点位 `status` | 0 | idle,未采集 |
|
|
|
-| 点位 `status` | 1 | working,采集正常 |
|
|
|
-| 点位 `status` | 2 | error,采集异常 |
|
|
|
-
|
|
|
### 1. 创建设备
|
|
|
|
|
|
#### 基本信息
|
|
|
@@ -842,7 +871,123 @@ header = {
|
|
|
|---|---|
|
|
|
| Query 绑定失败、JSON 绑定失败、`type` 缺失、连接类型无效、底层客户端初始化失败、数据库写入失败等 | `{"state":2,"state_info":"失败"}` |
|
|
|
|
|
|
-### 2. 创建采集点位
|
|
|
+### 2. 编辑设备
|
|
|
+
|
|
|
+#### 基本信息
|
|
|
+
|
|
|
+- URL:`/api/collector/modbus/device/edit`
|
|
|
+- 方法:`POST`
|
|
|
+- 处理函数:`EditModbusDevice`
|
|
|
+- 请求结构:`ReqEditModbusDevice`
|
|
|
+- 主要用途:编辑已存在的 Modbus 设备连接参数、采集周期、设备分组和持久化配置。
|
|
|
+
|
|
|
+#### 重要说明
|
|
|
+
|
|
|
+- 该接口是 Modbus 专用旧接口,和通用创建设备接口 `/api/collector/device` 的字段名不完全一致。
|
|
|
+- 该接口是全量更新语义,未传字段会按 Go 零值写入,例如 `timeout` 变为 `0`、`is_persistent` 变为 `false`、`address_offset` 变为 `0`。编辑前建议先查询设备详情或设备列表,基于原配置修改后整包提交。
|
|
|
+- 编辑前设备不能处于已连接状态。若设备 `status=2`,接口返回 `先停止设备采集,再编辑设备`。应先调用连接/断开设备接口将设备断开。
|
|
|
+- 请求字段 `type` 在本接口中表示 Modbus 连接类型,取值与前文 Modbus 设备连接类型枚举一致;不是通用创建设备接口里的协议字符串 `type="modbus"`。
|
|
|
+- 编辑成功后接口会移除内存中的旧设备并重新加载设备对象,设备状态会回到未连接状态。
|
|
|
+
|
|
|
+#### 请求字段
|
|
|
+
|
|
|
+| 字段 | 类型 | 必填 | 默认/行为 | 含义 |
|
|
|
+|---|---|---|---|---|
|
|
|
+| `ori_id` | int | 是 | 缺失或为 `0` 返回 `设备不存在` | 要编辑的原设备 ID。 |
|
|
|
+| `type` | int | 是 | 缺失时为 `0`,后续连接可能因连接类型无效失败 | Modbus 连接类型。`1` TCP,`2` RTU,`3` UDP,`4` RTU OVER TCP,`5` RTU OVER UDP。 |
|
|
|
+| `name` | string | 是 | 绑定时必填;保存前会 `strings.TrimSpace` | 设备名称。 |
|
|
|
+| `ip` | string | TCP/UDP 类连接必填 | 会 `strings.TrimSpace` | 设备 IP。`type` 不为 `2` 时为空会返回 `选择Modbus TCP类型时,IP不能为空`。 |
|
|
|
+| `port` | int | TCP/UDP 类连接必填 | 缺失时为 `0` | 设备端口。`type` 为 `1`、`3`、`4`、`5` 时用于组装连接 URL。 |
|
|
|
+| `slave_id` | int | 是 | Go binding 的 `required` 对数字零值敏感,缺失或为 `0` 会绑定失败 | Modbus 从站 ID/Unit ID。 |
|
|
|
+| `serial_port` | string | RTU 必填 | 会 `strings.TrimSpace` | 串口名。`type=2` 时为空会返回 `选择Modbus RTU类型时,串口不能为空`。 |
|
|
|
+| `timeout` | int | 建议必填 | 缺失时会写入 `0`,编辑接口不自动补 `3` | 超时时间,单位秒。 |
|
|
|
+| `byte_order` | int | 建议必填 | 缺失时会写入 `0` | 字节序,见 `byte_order` 枚举。 |
|
|
|
+| `word_order` | int | 建议必填 | 缺失时会写入 `0` | 字序,见 `word_order` 枚举。 |
|
|
|
+| `is_persistent` | bool | 否 | 缺失时会写入 `false` | 是否持久化设备。 |
|
|
|
+| `baud_rate` | int | RTU 建议必填 | 缺失时会写入 `0` | 串口波特率,例如 `9600`。 |
|
|
|
+| `data_bit` | int | RTU 建议必填 | 缺失时会写入 `0` | 串口数据位,见 `data_bit` 枚举。 |
|
|
|
+| `parity` | int | RTU 建议必填 | 传 `0` 会按 Even 转换 | 串口校验位,见 `parity` 枚举。 |
|
|
|
+| `stop_bit` | int | RTU 建议必填 | 缺失时会写入 `0` | 串口停止位,见 `stop_bit` 枚举。 |
|
|
|
+| `mode` | int | 否 | 缺失时会写入 `0` | 模式字段,当前主要保存配置。 |
|
|
|
+| `address_offset` | int | 否 | 缺失时会写入 `0` | 地址偏移。实际读点时使用 `点位 address - 设备 address_offset`。 |
|
|
|
+| `retry_times` | int | 否 | 缺失时会写入 `0` | 读取失败重试次数。 |
|
|
|
+| `device_group_id` | int | 否 | 缺失时会写入 `0` | 父设备分组 ID。`0` 表示顶层设备。 |
|
|
|
+| `alarm_interval` | int | 否 | 缺失时会写入 `0` | 告警间隔。 |
|
|
|
+| `collect_interval` | int | 否 | 缺失时会写入 `0` | 采集周期。 |
|
|
|
+
|
|
|
+#### 请求示例:编辑 Modbus TCP 设备
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "ori_id": 1,
|
|
|
+ "type": 1,
|
|
|
+ "name": "modbus_tcp_1_edited",
|
|
|
+ "ip": "127.0.0.1",
|
|
|
+ "port": 5502,
|
|
|
+ "slave_id": 1,
|
|
|
+ "timeout": 3,
|
|
|
+ "byte_order": 1,
|
|
|
+ "word_order": 1,
|
|
|
+ "is_persistent": true,
|
|
|
+ "device_group_id": 0,
|
|
|
+ "alarm_interval": 0,
|
|
|
+ "collect_interval": 5,
|
|
|
+ "address_offset": 0,
|
|
|
+ "retry_times": 0,
|
|
|
+ "mode": 0
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 请求示例:编辑 Modbus RTU 设备
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "ori_id": 1,
|
|
|
+ "type": 2,
|
|
|
+ "name": "modbus_rtu_1_edited",
|
|
|
+ "serial_port": "COM3",
|
|
|
+ "slave_id": 1,
|
|
|
+ "timeout": 3,
|
|
|
+ "baud_rate": 9600,
|
|
|
+ "data_bit": 8,
|
|
|
+ "parity": 2,
|
|
|
+ "stop_bit": 1,
|
|
|
+ "byte_order": 1,
|
|
|
+ "word_order": 1,
|
|
|
+ "is_persistent": true,
|
|
|
+ "device_group_id": 0,
|
|
|
+ "alarm_interval": 0,
|
|
|
+ "collect_interval": 5,
|
|
|
+ "address_offset": 0,
|
|
|
+ "retry_times": 0,
|
|
|
+ "mode": 0
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 成功响应
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 0,
|
|
|
+ "state_info": "操作成功",
|
|
|
+ "data": null
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 主要失败响应
|
|
|
+
|
|
|
+| 场景 | 响应 |
|
|
|
+|---|---|
|
|
|
+| JSON 绑定失败、`name` 缺失、`slave_id` 缺失或为零等 | `{"state":2,"state_info":"无效参数"}` |
|
|
|
+| `ori_id` 缺失或为 `0` | `{"state":2,"state_info":"设备不存在"}` |
|
|
|
+| RTU 设备未传 `serial_port` | `{"state":2,"state_info":"选择Modbus RTU类型时,串口不能为空"}` |
|
|
|
+| TCP/UDP 类设备未传 `ip` | `{"state":2,"state_info":"选择Modbus TCP类型时,IP不能为空"}` |
|
|
|
+| 查询原设备失败 | `{"state":2,"state_info":"检测设备状态失败"}` |
|
|
|
+| 原设备不存在 | `{"state":2,"state_info":"设备ID不合法"}` |
|
|
|
+| 设备仍处于已连接状态 | `{"state":2,"state_info":"先停止设备采集,再编辑设备"}` |
|
|
|
+| 数据库更新失败 | `{"state":2,"state_info":"编辑失败"}` |
|
|
|
+
|
|
|
+### 3. 创建采集点位
|
|
|
|
|
|
#### 基本信息
|
|
|
|
|
|
@@ -955,12 +1100,369 @@ header = {
|
|
|
| 同一设备下 `point_id` 重复 | `{"state":2,"state_info":"point_id 重复, point_id: {point_id}"}` |
|
|
|
| 数据库插入失败 | `{"state":2,"state_info":"新增失败"}` |
|
|
|
|
|
|
+### 4. 编辑采集点位
|
|
|
+
|
|
|
+#### 基本信息
|
|
|
+
|
|
|
+- URL:`/api/collector/modbus/point/edit_collect_point`
|
|
|
+- 方法:`POST`
|
|
|
+- 处理函数:`modbusPointEdit`
|
|
|
+- 请求结构:`ReqModbusPointEdit`
|
|
|
+- 主要用途:编辑已存在的 Modbus 采集点位,包括点位名称、`point_id`、地址、功能码、数据类型、缩放和合法值范围。
|
|
|
+
|
|
|
+#### 重要说明
|
|
|
+
|
|
|
+- 该接口是全量更新语义,除 `ori_id` 外的点位配置应按完整点位对象提交。未传字段会按 Go 零值写入,例如 `group_id=0`、`value_offset=0`、`bit=0`、`invalid_values=""`。
|
|
|
+- `ori_id` 是要编辑的采集点位内部 ID,对应查询设备点位列表返回的 `data.point[].id`。
|
|
|
+- 编辑点位不会迁移点位所属设备。请求结构虽然继承了 `device_id` 字段,但处理逻辑会从原点位读取 `DeviceID`,并继续保存到原设备下。
|
|
|
+- `point_id` 允许为空字符串;非空时会检查同一设备下是否重复,检查时会排除当前 `ori_id` 对应的原点位。
|
|
|
+- 编辑成功后会更新数据库、设备内存点位缓存和通用点位缓存。点位状态会重置为未采集状态。
|
|
|
+
|
|
|
+#### 请求字段
|
|
|
+
|
|
|
+| 字段 | 类型 | 必填 | 默认/行为 | 含义 |
|
|
|
+|---|---|---|---|---|
|
|
|
+| `ori_id` | int | 是 | 无默认值 | 要编辑的原采集点位 ID。 |
|
|
|
+| `name` | string | 是 | 绑定时必填;保存前会 `strings.TrimSpace` | 点位名称。 |
|
|
|
+| `point_id` | string | 否 | 空字符串允许 | 外部点位标识。非空时,同一设备下不能重复。 |
|
|
|
+| `device_id` | int | 否 | 编辑逻辑不使用该字段 | 请求结构继承字段。编辑时点位仍归属原设备,不会按该字段迁移。 |
|
|
|
+| `scale_ratio` | float64 | 是 | Go binding 的 `required` 对数字零值敏感,建议传非 `0`,常用 `1` | 缩放系数。寄存器数值采集时先乘以该系数。 |
|
|
|
+| `value_offset` | float64 | 否 | Go 零值 `0` | 值偏移。寄存器采集结果乘 `scale_ratio` 后再加该偏移。 |
|
|
|
+| `describe` | string | 否 | 空字符串 | 点位描述,保存到 `description`。 |
|
|
|
+| `invalid_values` | string | 否 | 空字符串解析为空数组 | 无效值列表,逗号分隔,例如 `"-9999,9999"`。接口会逐项解析为 float64,无法解析则返回无效参数。 |
|
|
|
+| `valid_range_start` | number/null | 否 | `null` | 合法范围最小值。采集值小于该值时跳过写入。 |
|
|
|
+| `valid_range_end` | number/null | 否 | `null` | 合法范围最大值。采集值大于该值时跳过写入。 |
|
|
|
+| `type` | string | 否,但采集必须有效 | 无显式默认值 | 点位数据类型,见数据类型枚举。 |
|
|
|
+| `address` | int | 是 | Go 零值 `0` | Modbus 地址。实际读取地址为 `address - 设备 address_offset`。 |
|
|
|
+| `func_code` | int | 是 | Go 零值 `0` 会导致后续采集功能码无效 | Modbus 功能码,见 `func_code` 枚举。 |
|
|
|
+| `group_id` | int | 否 | Go 零值 `0` | 点位分组 ID。 |
|
|
|
+| `bit` | int | `type=bool` 且读寄存器时需要 | Go 零值 `0` | 位下标。`func_code=3/4` 且 `type=bool` 时,从寄存器值中取 `(value >> bit) & 1`。建议范围 `0` 到 `15`。 |
|
|
|
+
|
|
|
+#### 请求示例:编辑保持寄存器 uint16 点位
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "ori_id": 101,
|
|
|
+ "name": "holding_register_uint16_edited",
|
|
|
+ "point_id": "HR_UINT16_EDITED",
|
|
|
+ "describe": "编辑后的保持寄存器 uint16 示例",
|
|
|
+ "func_code": 3,
|
|
|
+ "address": 10,
|
|
|
+ "type": "uint16",
|
|
|
+ "scale_ratio": 1,
|
|
|
+ "value_offset": 0,
|
|
|
+ "group_id": 0,
|
|
|
+ "invalid_values": "",
|
|
|
+ "valid_range_start": null,
|
|
|
+ "valid_range_end": null,
|
|
|
+ "bit": 0
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 请求示例:编辑寄存器位点 bool
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "ori_id": 102,
|
|
|
+ "name": "alarm_bit_4",
|
|
|
+ "point_id": "ALARM_BIT_4",
|
|
|
+ "describe": "保持寄存器第 4 位报警",
|
|
|
+ "func_code": 3,
|
|
|
+ "address": 20,
|
|
|
+ "type": "bool",
|
|
|
+ "bit": 4,
|
|
|
+ "scale_ratio": 1,
|
|
|
+ "value_offset": 0,
|
|
|
+ "group_id": 0,
|
|
|
+ "invalid_values": "",
|
|
|
+ "valid_range_start": null,
|
|
|
+ "valid_range_end": null
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 成功响应
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 0,
|
|
|
+ "state_info": "成功",
|
|
|
+ "data": null
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 主要失败响应
|
|
|
+
|
|
|
+| 场景 | 响应 |
|
|
|
+|---|---|
|
|
|
+| JSON 绑定失败、`ori_id` 缺失、`name` 缺失、`scale_ratio` 缺失或为零等 | `{"state":2,"state_info":"无效参数"}` |
|
|
|
+| `invalid_values` 中存在非数字项 | `{"state":2,"state_info":"无效参数"}` |
|
|
|
+| 原点位不存在或查询失败 | `{"state":2,"state_info":"校验失败"}` |
|
|
|
+| 同一设备下 `point_id` 重复 | `{"state":2,"state_info":"point_id 重复, point_id: {point_id}"}` |
|
|
|
+| 数据库更新失败 | `{"state":2,"state_info":"编辑失败"}` |
|
|
|
+
|
|
|
+## 连接/断开设备接口
|
|
|
+
|
|
|
+### 基本信息
|
|
|
+
|
|
|
+- URL:`/api/collector/common/device/set_connect_status`
|
|
|
+- 方法:`POST`
|
|
|
+- 请求体:`application/json`
|
|
|
+- 普通响应类型:JSON
|
|
|
+- 主要用途:连接或断开指定采集设备。该接口是通用设备接口,Modbus 设备调用时 `type` 传 `modbus`。
|
|
|
+
|
|
|
+### 请求字段
|
|
|
+
|
|
|
+| 字段 | 类型 | 必填 | 默认/行为 | 含义 |
|
|
|
+|---|---|---|---|---|
|
|
|
+| `id` | int | 是 | Go 零值 `0` | 设备 ID。接口会从采集器内存中按 ID 查找设备。 |
|
|
|
+| `status` | int | 是 | Go 零值 `0` 会进入非法状态逻辑 | 要设置的设备连接状态。`1` 表示断开,`2` 表示连接。 |
|
|
|
+| `type` | string | 建议传 | 当前处理逻辑不直接使用该字段 | 设备协议类型。Modbus 设备传 `modbus`,其他可传 `s7`、`bacnet`、`ethernet-ip`、`opc-ua`、`opc-da`、`snmp`、`iec104`。 |
|
|
|
+
|
|
|
+### status 取值
|
|
|
+
|
|
|
+| 值 | 含义 | 接口行为 |
|
|
|
+|---:|---|---|
|
|
|
+| `1` | disconnected,断开连接 | 调用设备断开逻辑,成功后设备 `status` 通常为 `1`,`running_status` 通常为 `0`。 |
|
|
|
+| `2` | connected,连接设备 | 调用设备连接逻辑,成功后设备 `status` 通常为 `2`,`running_status` 取决于设备采集状态。 |
|
|
|
+| 其他 | 非法状态 | 返回失败响应,通常为 `{"state":2,"state_info":"操作设备失败"}`。 |
|
|
|
+
|
|
|
+### 请求示例:连接 Modbus 设备
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "id": 1,
|
|
|
+ "type": "modbus",
|
|
|
+ "status": 2
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 请求示例:断开 Modbus 设备
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "id": 1,
|
|
|
+ "type": "modbus",
|
|
|
+ "status": 1
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 成功响应
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 0,
|
|
|
+ "state_info": "",
|
|
|
+ "data": {
|
|
|
+ "status": 2,
|
|
|
+ "running_status": 0,
|
|
|
+ "msg": ""
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 成功响应字段说明
|
|
|
+
|
|
|
+| 字段 | 类型 | 含义 |
|
|
|
+|---|---|---|
|
|
|
+| `state` | int | 业务状态码。成功时为 `0`。 |
|
|
|
+| `state_info` | string | 状态描述。该接口成功时通常为空字符串。 |
|
|
|
+| `data.status` | int | 操作后的设备连接状态,见设备 `status` 枚举。 |
|
|
|
+| `data.running_status` | int | 操作后的设备运行状态,见 `running_status` 枚举。 |
|
|
|
+| `data.msg` | string | 连接失败时可能返回底层错误消息;成功时通常为空字符串。 |
|
|
|
+
|
|
|
+### 失败响应示例
|
|
|
+
|
|
|
+请求体无法绑定或字段类型错误:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 2,
|
|
|
+ "state_info": "无效参数",
|
|
|
+ "data": null
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+设备不存在或不在当前采集器内存中:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 2,
|
|
|
+ "state_info": "查询详情失败",
|
|
|
+ "data": null
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+连接设备时发现点位标识与其他运行设备重复:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 2,
|
|
|
+ "state_info": "point_id: AI_TEMP_01 在运行的设备中已存在",
|
|
|
+ "data": null
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+设备连接或断开失败:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 2,
|
|
|
+ "state_info": "操作设备失败",
|
|
|
+ "data": {
|
|
|
+ "status": 1,
|
|
|
+ "running_status": 0,
|
|
|
+ "msg": ""
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+## 查询设备点位列表接口
|
|
|
+
|
|
|
+### 基本信息
|
|
|
+
|
|
|
+- URL:`/api/collector/common/device/get_collect_point`
|
|
|
+- 方法:`POST`
|
|
|
+- 请求体:`application/json`
|
|
|
+- 普通响应类型:JSON
|
|
|
+- 主要用途:查询指定设备当前内存中的采集点位列表。该接口是通用设备点位接口,Modbus 设备调用时 `type` 传 `modbus`。
|
|
|
+
|
|
|
+### 请求字段
|
|
|
+
|
|
|
+| 字段 | 类型 | 必填 | 默认/行为 | 含义 |
|
|
|
+|---|---|---|---|---|
|
|
|
+| `id` | int | 是 | Go 零值 `0` | 设备 ID。 |
|
|
|
+| `type` | string | 是 | 空字符串会返回无效参数 | 设备协议类型。查询 Modbus 点位固定传 `modbus`。 |
|
|
|
+| `group_id` | int | 否 | `0` | 点位分组 ID。为 `0` 时返回该设备下全部点位;非 `0` 时只返回该分组下点位。 |
|
|
|
+
|
|
|
+### type 取值
|
|
|
+
|
|
|
+| 值 | 含义 |
|
|
|
+|---|---|
|
|
|
+| `modbus` | Modbus 设备点位。 |
|
|
|
+| `s7` | S7 设备点位。 |
|
|
|
+| `bacnet` | BACnet 设备点位。 |
|
|
|
+| `ethernet-ip` | EtherNet/IP 设备点位。 |
|
|
|
+| `opc-ua` | OPC UA 设备点位。 |
|
|
|
+| `opc-da` | OPC DA 设备点位。 |
|
|
|
+| `snmp` | SNMP 设备点位。 |
|
|
|
+| `iec104` | IEC104 设备点位。 |
|
|
|
+
|
|
|
+### 请求示例:查询 Modbus 设备全部点位
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "id": 1,
|
|
|
+ "type": "modbus",
|
|
|
+ "group_id": 0
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 请求示例:查询指定点位分组
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "id": 1,
|
|
|
+ "type": "modbus",
|
|
|
+ "group_id": 100
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### Modbus 成功响应示例
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 0,
|
|
|
+ "state_info": "",
|
|
|
+ "data": {
|
|
|
+ "point": [
|
|
|
+ {
|
|
|
+ "id": 101,
|
|
|
+ "point_id": "HR_UINT16",
|
|
|
+ "name": "holding_register_uint16",
|
|
|
+ "address": 10,
|
|
|
+ "type": "uint16",
|
|
|
+ "device_id": 1,
|
|
|
+ "status": 1,
|
|
|
+ "describe": "保持寄存器 uint16 示例",
|
|
|
+ "function_code": 3,
|
|
|
+ "present_value": 123,
|
|
|
+ "scale_ratio": 1,
|
|
|
+ "value_offset": 0,
|
|
|
+ "group_id": 0,
|
|
|
+ "bit": 0,
|
|
|
+ "update_time": "2026-06-16T10:03:00+08:00",
|
|
|
+ "invalid_values": "",
|
|
|
+ "valid_range_start": null,
|
|
|
+ "valid_range_end": null
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "total": 1
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### Modbus 成功响应字段说明
|
|
|
+
|
|
|
+| 字段 | 类型 | 含义 |
|
|
|
+|---|---|---|
|
|
|
+| `state` | int | 业务状态码。成功时为 `0`。 |
|
|
|
+| `state_info` | string | 状态描述。该接口成功时通常为空字符串。 |
|
|
|
+| `data.point` | object[] | 点位列表。 |
|
|
|
+| `data.total` | int | 本次返回的点位数量。传 `group_id` 过滤时为过滤后的数量。 |
|
|
|
+| `data.point[].id` | int | 采集点位内部 ID。 |
|
|
|
+| `data.point[].point_id` | string | 外部点位标识。创建点位时未传则可能为空字符串。 |
|
|
|
+| `data.point[].name` | string | 点位名称。 |
|
|
|
+| `data.point[].address` | int | Modbus 点位地址,采集时实际读取地址为 `address - 设备 address_offset`。 |
|
|
|
+| `data.point[].type` | string | Modbus 点位数据类型,例如 `bool`、`uint16`、`float32`。 |
|
|
|
+| `data.point[].device_id` | int | 所属设备 ID。 |
|
|
|
+| `data.point[].status` | int | 点位采集状态,见点位 `status` 枚举。 |
|
|
|
+| `data.point[].describe` | string | 点位描述。 |
|
|
|
+| `data.point[].function_code` | int | Modbus 功能码,见 `func_code` 枚举。 |
|
|
|
+| `data.point[].present_value` | number | 当前内存中的点位最新值。设备未采集或未刷新时可能为 `0`。 |
|
|
|
+| `data.point[].scale_ratio` | number | 缩放系数。 |
|
|
|
+| `data.point[].value_offset` | number | 值偏移。 |
|
|
|
+| `data.point[].group_id` | int | 点位分组 ID。 |
|
|
|
+| `data.point[].bit` | int | 位下标。寄存器布尔点位使用;非位点通常为 `0`。 |
|
|
|
+| `data.point[].update_time` | string | 点位更新时间,Go JSON time/RFC3339 格式。 |
|
|
|
+| `data.point[].invalid_values` | string | 无效值列表字符串,多个值用逗号分隔;没有配置时为空字符串。 |
|
|
|
+| `data.point[].valid_range_start` | number/null | 合法范围最小值。 |
|
|
|
+| `data.point[].valid_range_end` | number/null | 合法范围最大值。 |
|
|
|
+
|
|
|
+### 失败响应示例
|
|
|
+
|
|
|
+请求体无法绑定或 `type` 不支持:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 2,
|
|
|
+ "state_info": "无效参数",
|
|
|
+ "data": null
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+设备不存在或不在当前采集器内存中:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 2,
|
|
|
+ "state_info": "设备ID不合法",
|
|
|
+ "data": null
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 注意事项
|
|
|
+
|
|
|
+- 该接口返回的是设备内存对象中的点位,不是每次直接查询数据库。
|
|
|
+- Modbus 点位响应字段中的 `function_code` 对应创建点位接口请求字段 `func_code`。
|
|
|
+- Modbus 点位响应字段中的 `type` 对应创建点位接口请求字段 `type`,底层内部字段名为 `data_type`。
|
|
|
+- `present_value` 是当前内存最新值;如果设备未连接、未采集或点位未刷新,不能仅凭该字段判断设备实时可用性。
|
|
|
+
|
|
|
## 查询设备列表接口
|
|
|
|
|
|
### 基本信息
|
|
|
|
|
|
- URL:`/api/collector/device`
|
|
|
-- 方法:`GET
|
|
|
+- 方法:`GET`
|
|
|
- 请求参数位置:Query String
|
|
|
- 普通响应类型:JSON
|
|
|
- 主要用途:查询当前采集器内存中的设备列表,并按设备分组、点位分组组织成树形结构。
|