|
|
@@ -75,6 +75,8 @@ AI 调用接口时应按以下规则判断结果:
|
|
|
| 原始 S7 读取 | `POST` | `/api/dc-gateway/s7/read` | 读取一段 S7 地址数据,只返回语义化 `communication`。 |
|
|
|
| S7 点位读取并转换 | `POST` | `/api/dc-gateway/s7/read_points` | 按点位定义读取 S7 数据,并返回转换后的业务值和 `communication`。 |
|
|
|
| S7 连接扫描 | `POST` | `/api/dc-gateway/s7/connect_scan` | 只传 IP,扫描可用的 `rock`、`slot`、`tsap_conn_type` 组合。 |
|
|
|
+| BACnet 点位读取 | `POST` | `/api/dc-gateway/bacnet/read_points` | 按 BACnet 对象读取 `present-value`。 |
|
|
|
+| BACnet 点位搜索 | `POST` | `/api/dc-gateway/bacnet/search_points` | 读取设备 `object-list`,返回常见点位对象信息和值。 |
|
|
|
|
|
|
## 网关接口目录
|
|
|
|
|
|
@@ -83,6 +85,7 @@ AI 调用接口时应按以下规则判断结果:
|
|
|
| 通用部分 | 请求格式、返回格式、HTTP 状态码、健康检查。 |
|
|
|
| Modbus 网关接口 | Modbus TCP 通用设备字段、地址规则、功能码、原始读取、点位读取并转换。 |
|
|
|
| S7 网关接口 | S7 TCP 通用设备字段、地址字段、语义化通信记录、原始读取、点位读取并转换、连接扫描。 |
|
|
|
+| BACnet 网关接口 | BACnet/IP 通用设备字段、对象类型、点位读取、点位搜索。 |
|
|
|
|
|
|
## Modbus 通用设备字段
|
|
|
|
|
|
@@ -986,6 +989,203 @@ curl -X POST http://127.0.0.1:8000/api/dc-gateway/s7/connect_scan \
|
|
|
}'
|
|
|
```
|
|
|
|
|
|
+## BACnet 网关接口说明
|
|
|
+
|
|
|
+### BACnet 网关目标
|
|
|
+
|
|
|
+BACnet 网关用于通过 HTTP 直连 BACnet/IP 设备,当前支持点位读取和点位搜索。底层使用 `BAC0`,读取点位时固定读取对象的 `present-value`。
|
|
|
+
|
|
|
+### BACnet 通用设备字段
|
|
|
+
|
|
|
+以下字段用于描述要连接的 BACnet/IP 设备,出现在 `/bacnet/read_points` 和 `/bacnet/search_points` 请求体的顶层。
|
|
|
+
|
|
|
+| 字段 | 类型 | 必填 | 默认值 | 允许值或范围 | 含义 |
|
|
|
+|---|---|---:|---|---|---|
|
|
|
+| `ip` | string | 是 | 无 | 合法 IPv4 或 IPv6 地址 | BACnet/IP 设备地址。 |
|
|
|
+| `bacnet_device_id` | integer | 是 | 无 | `0..4194303` | BACnet 设备对象实例号。 |
|
|
|
+| `port` | integer | 否 | `47808` | `1..65535` | BACnet/IP UDP 端口。 |
|
|
|
+
|
|
|
+响应中的设备信息固定包含:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "device_type": "BACnet/IP",
|
|
|
+ "ip": "192.168.75.240",
|
|
|
+ "port": 47808,
|
|
|
+ "bacnet_device_id": 12345
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### BACnet 对象类型
|
|
|
+
|
|
|
+请求中的 `object_type` 支持常见写法,例如 `AnalogInput`、`analogInput`、`analog-input`。响应统一返回 `AnalogInput` 这类格式。
|
|
|
+
|
|
|
+常见点位对象类型:
|
|
|
+
|
|
|
+| 响应值 | BACnet 含义 |
|
|
|
+|---|---|
|
|
|
+| `AnalogInput` | 模拟输入 |
|
|
|
+| `AnalogOutput` | 模拟输出 |
|
|
|
+| `AnalogValue` | 模拟值 |
|
|
|
+| `BinaryInput` | 二进制输入 |
|
|
|
+| `BinaryOutput` | 二进制输出 |
|
|
|
+| `BinaryValue` | 二进制值 |
|
|
|
+| `MultiStateInput` | 多状态输入 |
|
|
|
+| `MultiStateOutput` | 多状态输出 |
|
|
|
+| `MultiStateValue` | 多状态值 |
|
|
|
+
|
|
|
+### 接口:BACnet 点位读取
|
|
|
+
|
|
|
+#### 基本信息
|
|
|
+
|
|
|
+| 项 | 值 |
|
|
|
+|---|---|
|
|
|
+| 方法 | `POST` |
|
|
|
+| 路径 | `/api/dc-gateway/bacnet/read_points` |
|
|
|
+| 完整地址 | `http://127.0.0.1:8000/api/dc-gateway/bacnet/read_points` |
|
|
|
+| Content-Type | `application/json` |
|
|
|
+| 用途 | 按 BACnet 对象读取 `present-value`。 |
|
|
|
+
|
|
|
+MCP 工具 `bacnet.point_collect_test` 会调用该接口并透传响应。
|
|
|
+
|
|
|
+#### 请求体结构
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "ip": "192.168.75.240",
|
|
|
+ "bacnet_device_id": 12345,
|
|
|
+ "port": 47808,
|
|
|
+ "points": [
|
|
|
+ {
|
|
|
+ "object_type": "AnalogInput",
|
|
|
+ "object_id": 1
|
|
|
+ }
|
|
|
+ ]
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+`points` 字段说明:
|
|
|
+
|
|
|
+| 字段 | 类型 | 必填 | 默认值 | 允许值或范围 | 含义 |
|
|
|
+|---|---|---:|---|---|---|
|
|
|
+| `points` | object[] | 是 | 无 | 至少 1 个点位 | BACnet 点位对象列表。 |
|
|
|
+| `points[].object_type` | string | 是 | 无 | 合法 BACnet 对象类型写法 | BACnet 对象类型。 |
|
|
|
+| `points[].object_id` | integer | 是 | 无 | `0..4194303` | BACnet 对象实例号。 |
|
|
|
+
|
|
|
+#### 成功返回示例
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "code": 0,
|
|
|
+ "msg": "success",
|
|
|
+ "data": {
|
|
|
+ "device": {
|
|
|
+ "device_type": "BACnet/IP",
|
|
|
+ "ip": "192.168.75.240",
|
|
|
+ "port": 47808,
|
|
|
+ "bacnet_device_id": 12345
|
|
|
+ },
|
|
|
+ "points": [
|
|
|
+ {
|
|
|
+ "object_type": "AnalogInput",
|
|
|
+ "object_id": 1,
|
|
|
+ "present_value": 12.3
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 失败返回示例
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "code": 1,
|
|
|
+ "msg": "No response from BACnet device",
|
|
|
+ "data": {
|
|
|
+ "device": {
|
|
|
+ "device_type": "BACnet/IP",
|
|
|
+ "ip": "192.168.75.240",
|
|
|
+ "port": 47808,
|
|
|
+ "bacnet_device_id": 12345
|
|
|
+ },
|
|
|
+ "points": []
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 接口:BACnet 点位搜索
|
|
|
+
|
|
|
+#### 基本信息
|
|
|
+
|
|
|
+| 项 | 值 |
|
|
|
+|---|---|
|
|
|
+| 方法 | `POST` |
|
|
|
+| 路径 | `/api/dc-gateway/bacnet/search_points` |
|
|
|
+| 完整地址 | `http://127.0.0.1:8000/api/dc-gateway/bacnet/search_points` |
|
|
|
+| Content-Type | `application/json` |
|
|
|
+| 用途 | 读取设备 `object-list`,返回常见点位对象基础信息和值。 |
|
|
|
+
|
|
|
+MCP 工具 `bacnet.point_search` 会调用该接口并透传响应。未知 `object_type` 和 `object_id` 时,建议先调用该工具搜索点位,再调用 `bacnet.point_collect_test` 读取目标点位。
|
|
|
+
|
|
|
+#### 请求体结构
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "ip": "192.168.75.240",
|
|
|
+ "bacnet_device_id": 12345,
|
|
|
+ "port": 47808
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 成功返回示例
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "code": 0,
|
|
|
+ "msg": "success",
|
|
|
+ "data": {
|
|
|
+ "device": {
|
|
|
+ "device_type": "BACnet/IP",
|
|
|
+ "ip": "192.168.75.240",
|
|
|
+ "port": 47808,
|
|
|
+ "bacnet_device_id": 12345
|
|
|
+ },
|
|
|
+ "points": [
|
|
|
+ {
|
|
|
+ "name": "Zone Temperature",
|
|
|
+ "description": "Room temperature",
|
|
|
+ "object_type": "AnalogInput",
|
|
|
+ "object_id": 1,
|
|
|
+ "present_value": 24.5
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+搜索每个点位时读取以下属性:
|
|
|
+
|
|
|
+| 返回字段 | BACnet 属性 |
|
|
|
+|---|---|
|
|
|
+| `name` | `object-name` |
|
|
|
+| `description` | `description` |
|
|
|
+| `present_value` | `present-value` |
|
|
|
+
|
|
|
+单个点位的 `description` 或 `present_value` 读取失败时,该字段返回 `null`,不会中断整个搜索。设备连接或 `object-list` 读取失败时,接口返回 `code=1`。
|
|
|
+
|
|
|
+#### 调用示例
|
|
|
+
|
|
|
+```bash
|
|
|
+curl -X POST http://127.0.0.1:8000/api/dc-gateway/bacnet/search_points \
|
|
|
+ -H "Content-Type: application/json" \
|
|
|
+ -d '{
|
|
|
+ "ip": "192.168.75.240",
|
|
|
+ "bacnet_device_id": 12345,
|
|
|
+ "port": 47808
|
|
|
+ }'
|
|
|
+```
|
|
|
+
|
|
|
## AI 调用决策指南
|
|
|
|
|
|
AI 或自动化程序选择接口时遵循以下规则:
|
|
|
@@ -998,6 +1198,8 @@ AI 或自动化程序选择接口时遵循以下规则:
|
|
|
| 需要查看 S7 语义化连接和原始字节 | `POST /api/dc-gateway/s7/read` | 返回 S7 连接、读取、断开的 `communication`,不解析为业务值。 |
|
|
|
| 需要得到 S7 点位业务值 | `POST /api/dc-gateway/s7/read_points` | 返回 `points[].value`,自动按 S7 类型转换。 |
|
|
|
| 不确定 S7 连接参数 | `POST /api/dc-gateway/s7/connect_scan` | 扫描可用的 `rock`、`slot`、`tsap_conn_type` 组合。 |
|
|
|
+| 需要搜索 BACnet 设备点位 | `POST /api/dc-gateway/bacnet/search_points` | 读取设备 `object-list`,返回常见点位对象。 |
|
|
|
+| 需要读取 BACnet 点位当前值 | `POST /api/dc-gateway/bacnet/read_points` | 固定读取 BACnet 对象的 `present-value`。 |
|
|
|
|
|
|
AI 构造请求时必须区分两个地址:
|
|
|
|
|
|
@@ -1006,6 +1208,7 @@ AI 构造请求时必须区分两个地址:
|
|
|
| 网关服务器地址 | `http://127.0.0.1:8000` | HTTP API 服务地址,用于拼接请求 URL。 |
|
|
|
| Modbus 设备地址 | 请求体 `ip` 和 `port` | 实际被读取的 Modbus TCP 设备地址。 |
|
|
|
| S7 设备地址 | 请求体 `ip`、`port`、`rock`、`slot`、`tsap_conn_type` | 实际被读取的 S7 TCP 设备连接参数。 |
|
|
|
+| BACnet 设备地址 | 请求体 `ip`、`port`、`bacnet_device_id` | 实际被读取的 BACnet/IP 设备参数。 |
|
|
|
|
|
|
AI 构造 `/modbus/read_points` 点位时应按以下步骤:
|
|
|
|
|
|
@@ -1026,6 +1229,13 @@ AI 构造 `/s7/read_points` 点位时应按以下步骤:
|
|
|
6. 如果读取布尔位,设置 `type=bool` 并填写 `bit=0..7`;非布尔点不要传 `bit`。
|
|
|
7. 发送请求后检查响应体 `code`,不要只检查 HTTP 状态码。
|
|
|
|
|
|
+AI 构造 `/bacnet/read_points` 点位时应按以下步骤:
|
|
|
+
|
|
|
+1. 如果不知道点位对象,先调用 `/bacnet/search_points` 或 MCP 工具 `bacnet.point_search` 获取 `object_type` 和 `object_id`。
|
|
|
+2. 设置设备字段 `ip`、`bacnet_device_id`,`port` 不传时默认为 `47808`。
|
|
|
+3. 在 `points` 中填入 `object_type` 和 `object_id`,`object_type` 可使用 `AnalogInput`、`analogInput`、`analog-input` 等写法。
|
|
|
+4. 发送请求后检查响应体 `code`,不要只检查 HTTP 状态码。
|
|
|
+
|
|
|
|
|
|
|
|
|
# 2. 模方登录接口
|
|
|
@@ -2018,6 +2228,251 @@ MCP 工具 `collector.s7_point_create` 接收 `points` 数组并逐个调用本
|
|
|
| 同一设备下 `point_id` 重复 | `{"state":2,"state_info":"point_id 重复, point_id: {point_id}"}` |
|
|
|
| 数据库更新失败 | `{"state":2,"state_info":"点位更新失败"}` |
|
|
|
|
|
|
+## BACnet 创建设备与创建点位接口文档
|
|
|
+
|
|
|
+### 1. 创建 BACnet 设备
|
|
|
+
|
|
|
+#### 基本信息
|
|
|
+
|
|
|
+- URL:`/api/collector/device`
|
|
|
+- 方法:`POST`
|
|
|
+- 处理函数:`DeviceHandler.POST`
|
|
|
+- 请求结构:`handler.DeviceOrGroup`
|
|
|
+
|
|
|
+MCP 工具 `collector.bacnet_device_create` 接收 `devices` 数组并逐个调用本接口。MCP 固定传 `type=bacnet`、`device_type=1`,其中 `device_type=1` 表示 BACnet ASP 设备。全部创建设备调用完成后,MCP 会调用设备列表接口匹配 `device_id`,匹配到多个时选择最大 `id`。
|
|
|
+
|
|
|
+#### 请求字段
|
|
|
+
|
|
|
+| 字段 | 类型 | 必填 | 默认/行为 | 含义 |
|
|
|
+|---|---|---|---|---|
|
|
|
+| `type` | string | 是 | MCP 固定 `bacnet` | 设备协议类型。 |
|
|
|
+| `device_type` | int | 是 | MCP 固定 `1` | BACnet 设备类型,`1=ASP`。 |
|
|
|
+| `name` | string | 是 | 空字符串会导致创建失败 | 设备名称。 |
|
|
|
+| `ip` | string | 是 | 空字符串会导致创建失败 | BACnet/IP 设备地址。 |
|
|
|
+| `port` | int | 否 | MCP 默认 `47808` | BACnet/IP UDP 端口。 |
|
|
|
+| `bacnet_device_id` | int | 是 | `0..4194303` | BACnet 设备对象实例号。 |
|
|
|
+| `bacnet_net` | int | 否 | MCP 默认 `0` | BACnet 网络号。ASP 设备通常为 `0`。 |
|
|
|
+| `asp_ip` | string | 否 | MCP 默认空字符串 | RP 设备关联 ASP 地址;MCP 当前固定 ASP 设备,通常为空。 |
|
|
|
+| `group_id` | int | 否 | MCP 默认 `0` | 设备分组 ID。 |
|
|
|
+| `timeout` | int | 否 | MCP 默认 `3` | 超时时间。 |
|
|
|
+| `is_persistent` | bool | 否 | MCP 默认 `false` | 是否持久化。 |
|
|
|
+| `alarm_interval` | int | 否 | MCP 默认 `90` | 告警间隔。 |
|
|
|
+| `collect_interval` | int | 否 | MCP 默认 `5` | 采集周期。 |
|
|
|
+
|
|
|
+#### 请求示例
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "type": "bacnet",
|
|
|
+ "device_type": 1,
|
|
|
+ "name": "bacnet_1",
|
|
|
+ "ip": "192.168.75.240",
|
|
|
+ "port": 47808,
|
|
|
+ "bacnet_device_id": 12345,
|
|
|
+ "bacnet_net": 0,
|
|
|
+ "asp_ip": "",
|
|
|
+ "group_id": 0,
|
|
|
+ "timeout": 3,
|
|
|
+ "is_persistent": false,
|
|
|
+ "alarm_interval": 90,
|
|
|
+ "collect_interval": 5
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 成功响应
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 0,
|
|
|
+ "state_info": "成功"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 2. 编辑 BACnet 设备
|
|
|
+
|
|
|
+#### 基本信息
|
|
|
+
|
|
|
+- URL:`/api/collector/bacnet/device/edit`
|
|
|
+- 方法:`POST`
|
|
|
+- 处理函数:`bacnetDeviceEdit`
|
|
|
+- 请求结构:`ReqEditDevice`
|
|
|
+
|
|
|
+MCP 工具 `collector.bacnet_device_edit` 会把入参 `bacnet_device_id` 映射为该旧接口的 `device_id` 字符串,并固定 `type=1`。编辑前设备不能处于已连接状态;若已连接,请先调用 `collector.device_disconnect`,并传 `device_type=bacnet`。
|
|
|
+
|
|
|
+#### 请求字段
|
|
|
+
|
|
|
+| 字段 | 类型 | 必填 | 默认/行为 | 含义 |
|
|
|
+|---|---|---|---|---|
|
|
|
+| `ori_id` | int | 是 | binding 必填 | 原设备 ID。 |
|
|
|
+| `type` | int | 是 | MCP 固定 `1` | BACnet 设备类型,`1=ASP`。 |
|
|
|
+| `name` | string | 是 | 空字符串会导致编辑失败 | 设备名称。 |
|
|
|
+| `ip` | string | 是 | 空字符串会导致编辑失败 | BACnet/IP 设备地址。 |
|
|
|
+| `device_id` | string | 是 | MCP 由 `bacnet_device_id` 转换 | BACnet 设备对象实例号。 |
|
|
|
+| `port` | int | 否 | MCP 默认 `47808` | BACnet/IP UDP 端口。 |
|
|
|
+| `net` | int | 否 | MCP 默认 `0` | BACnet 网络号。 |
|
|
|
+| `asp_ip` | string | 否 | MCP 默认空字符串 | RP 设备关联 ASP 地址。 |
|
|
|
+| `device_group_id` | int | 否 | MCP 默认 `0` | 设备分组 ID。 |
|
|
|
+| `timeout` | int | 否 | MCP 默认 `3` | 超时时间。 |
|
|
|
+| `is_persistent` | bool | 否 | MCP 默认 `false` | 是否持久化。 |
|
|
|
+| `alarm_interval` | int | 否 | MCP 默认 `90` | 告警间隔。 |
|
|
|
+| `collect_interval` | int | 否 | MCP 默认 `5` | 采集周期。 |
|
|
|
+
|
|
|
+#### 请求示例
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "ori_id": 1,
|
|
|
+ "type": 1,
|
|
|
+ "name": "bacnet_edited",
|
|
|
+ "ip": "192.168.75.241",
|
|
|
+ "device_id": "12345",
|
|
|
+ "port": 47808,
|
|
|
+ "net": 0,
|
|
|
+ "asp_ip": "",
|
|
|
+ "device_group_id": 0,
|
|
|
+ "timeout": 3,
|
|
|
+ "is_persistent": false,
|
|
|
+ "alarm_interval": 90,
|
|
|
+ "collect_interval": 5
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 成功响应
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 0,
|
|
|
+ "state_info": "成功"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 3. 创建 BACnet 采集点位
|
|
|
+
|
|
|
+#### 基本信息
|
|
|
+
|
|
|
+- URL:`/api/collector/bacnet/point/add_collect_point`
|
|
|
+- 方法:`POST`
|
|
|
+- 处理函数:`bacnetPointAddBatch`
|
|
|
+- 请求结构:`ReqBacnetPointsAddBatch`
|
|
|
+
|
|
|
+MCP 工具 `collector.bacnet_point_create` 接收扁平 `points` 数组并逐个调用本接口。每个 MCP 点位必须自带 `device_id`,MCP 会包装为 `{device_id, points:[...]}`。
|
|
|
+
|
|
|
+#### 请求字段
|
|
|
+
|
|
|
+| 字段 | 类型 | 必填 | 默认/行为 | 含义 |
|
|
|
+|---|---|---|---|---|
|
|
|
+| `device_id` | int | 是 | 设备不存在返回失败 | 所属 BACnet 设备 ID。 |
|
|
|
+| `points` | object[] | 是 | 至少 1 个点位 | 要创建的点位数组。 |
|
|
|
+| `points[].object_type` | string | 是 | 空字符串会导致采集异常 | BACnet 对象类型,如 `AnalogInput`。 |
|
|
|
+| `points[].object_id` | int | 是 | `0..4194303` | BACnet 对象实例号。 |
|
|
|
+| `points[].name` | string | 建议传 | MCP 可用 `object_name` 补齐 | 点位名称。 |
|
|
|
+| `points[].object_name` | string | 是 | MCP 可用 `name` 补齐 | BACnet 对象名。 |
|
|
|
+| `points[].point_id` | string | 否 | MCP 默认空字符串 | 外部点位标识。 |
|
|
|
+| `points[].priority` | int/null | 否 | MCP 默认 `null` | 写值优先级。 |
|
|
|
+| `points[].units` | string | 否 | MCP 默认空字符串 | 单位。 |
|
|
|
+| `points[].value_type` | int | 否 | MCP 默认 `0` | BACnet PresentValue 类型。常见值:`1=Boolean`、`2=Unsigned`、`3=Signed`、`4=Real`、`5=Double`、`6=Enumerated`。 |
|
|
|
+| `points[].group_id` | int | 否 | MCP 默认 `0` | 点位分组 ID。 |
|
|
|
+| `points[].scale_ratio` | float64 | 否 | MCP 默认 `1` | 缩放系数。 |
|
|
|
+| `points[].value_offset` | float64 | 否 | MCP 默认 `0` | 值偏移。 |
|
|
|
+| `points[].describe` | string | 否 | MCP 默认空字符串 | 点位描述。 |
|
|
|
+
|
|
|
+#### 请求示例
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "device_id": 1,
|
|
|
+ "points": [
|
|
|
+ {
|
|
|
+ "object_type": "AnalogInput",
|
|
|
+ "object_id": 1,
|
|
|
+ "name": "zone_temperature",
|
|
|
+ "object_name": "zone_temperature",
|
|
|
+ "point_id": "AI_TEMP",
|
|
|
+ "priority": null,
|
|
|
+ "units": "degC",
|
|
|
+ "value_type": 4,
|
|
|
+ "group_id": 0,
|
|
|
+ "scale_ratio": 1,
|
|
|
+ "value_offset": 0,
|
|
|
+ "describe": "Zone temperature"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 成功响应
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 0,
|
|
|
+ "state_info": "成功"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 4. 编辑 BACnet 采集点位
|
|
|
+
|
|
|
+#### 基本信息
|
|
|
+
|
|
|
+- URL:`/api/collector/bacnet/point/edit`
|
|
|
+- 方法:`POST`
|
|
|
+- 处理函数:`bacnetPointEdit`
|
|
|
+- 请求结构:`ReqBacnetPointEdit`
|
|
|
+
|
|
|
+MCP 工具 `collector.bacnet_point_edit` 使用 `ori_id` 表示原点位 ID,并映射为该接口的 `id` 字段。`ori_id` 对应 `collector.device_points` 返回的 `data.point[].id`。
|
|
|
+
|
|
|
+#### 请求字段
|
|
|
+
|
|
|
+| 字段 | 类型 | 必填 | 默认/行为 | 含义 |
|
|
|
+|---|---|---|---|---|
|
|
|
+| `id` | int | 是 | binding 必填 | 要编辑的原采集点位 ID。 |
|
|
|
+| `object_type` | string | 是 | 空字符串会导致采集异常 | BACnet 对象类型。 |
|
|
|
+| `object_id` | int | 是 | `0..4194303` | BACnet 对象实例号。 |
|
|
|
+| `name` | string | 建议传 | MCP 可用 `object_name` 补齐 | 点位名称。 |
|
|
|
+| `object_name` | string | 是 | MCP 可用 `name` 补齐 | BACnet 对象名。 |
|
|
|
+| `point_id` | string | 否 | MCP 默认空字符串 | 外部点位标识。 |
|
|
|
+| `priority` | int/null | 否 | MCP 默认 `null` | 写值优先级。 |
|
|
|
+| `units` | string | 否 | MCP 默认空字符串 | 单位。 |
|
|
|
+| `value_type` | int | 否 | MCP 默认 `0` | BACnet PresentValue 类型。 |
|
|
|
+| `group_id` | int | 否 | MCP 默认 `0` | 点位分组 ID。 |
|
|
|
+| `scale_ratio` | float64 | 否 | MCP 默认 `1` | 缩放系数。 |
|
|
|
+| `value_offset` | float64 | 否 | MCP 默认 `0` | 值偏移。 |
|
|
|
+| `describe` | string | 否 | MCP 默认空字符串 | 点位描述。 |
|
|
|
+| `invalid_values` | string | 否 | MCP 默认空字符串 | 无效值列表,多个值用逗号分隔。 |
|
|
|
+| `valid_range_start` | number/null | 否 | MCP 默认 `null` | 合法范围最小值。 |
|
|
|
+| `valid_range_end` | number/null | 否 | MCP 默认 `null` | 合法范围最大值。 |
|
|
|
+
|
|
|
+#### 请求示例
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "id": 101,
|
|
|
+ "object_type": "AnalogInput",
|
|
|
+ "object_id": 1,
|
|
|
+ "name": "zone_temperature_edited",
|
|
|
+ "object_name": "zone_temperature_edited",
|
|
|
+ "point_id": "AI_TEMP_EDITED",
|
|
|
+ "priority": null,
|
|
|
+ "units": "degC",
|
|
|
+ "value_type": 4,
|
|
|
+ "group_id": 0,
|
|
|
+ "scale_ratio": 1,
|
|
|
+ "value_offset": 0,
|
|
|
+ "describe": "Edited zone temperature",
|
|
|
+ "invalid_values": "",
|
|
|
+ "valid_range_start": null,
|
|
|
+ "valid_range_end": null
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 成功响应
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "state": 0,
|
|
|
+ "state_info": "成功"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
## 连接/断开设备接口
|
|
|
|
|
|
### 基本信息
|