BACnet 读
x/bacnetRead组件:v0.37.0+ BACnet/IP 楼宇自控协议客户端,读取对象属性(analog/binary/multi-state 的 present-value 等),结果以统一契约 iot_points.Data 列表写回 msg.Data,成功走 Success 链、失败走 Failure 链。
需要额外引入扩展库: rulego-components-iot (opens new window)
# 配置
| 字段 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| server | string | 设备地址 host:port,BACnet/IP 默认端口 47808 | 127.0.0.1:47808 |
| timeout | int | 请求超时(秒) | 5 |
| points | array | 默认点位表(addr=对象地址)。若 msg.Data 带点位列表则优先使用(按需读) | 见下方 |
# 点位表字段
| 字段 | 说明 | 示例 |
|---|---|---|
| name | 点位名称 | 送风温度 |
| addr | 对象地址:对象类型:实例[:属性],属性缺省 present-value | analog-input:0、ai:1、device💯object-name |
| type | 数据类型(可选,读取时类型由响应自带) | FLOAT32 |
| scale | 工程量缩放系数,工程量 = raw × scale + offset | 0.1 |
| offset | 工程量偏移量 | 0 |
对象类型支持全名(analog-input)、缩写(ai/ao/av/bi/bo/bv/msi/mso/msv)或数字;属性同理(present-value/pv/description/object-name/units 或数字)。
各字段支持 ${msg.xx} / ${metadata.xx} 模板。
# 采集模型
多点采集时按对象分组,发起一次 ReadPropertyMultiple 请求批量读取(N 个点位 1 次往返,BACnet 高效采集的标准方式);单点读取或设备不支持 RPM 时自动回退到逐点 ReadProperty。支持应用数据类型:布尔(binary 对象)、枚举(multi-state)、无符号/有符号整数、浮点 real/double、字符串等。单点失败标 error 继续,连接级失败自动重连重试。
# 输入/输出
- 输入(可选):
msg.Data带点位列表 JSON 则优先使用(动态采集) - 输出:
[{"name","value","timestamp","error"}](timestamp 为纳秒;error 仅单点失败时存在)
[
{"name": "送风温度", "value": 21.5, "timestamp": 1789999999000000000},
{"name": "风机", "value": true, "timestamp": 1789999999000000000}
]
1
2
3
4
2
3
4
# 示例
定时采集(前置 schedule 端点):
{
"id": "bacnet_read",
"type": "x/bacnetRead",
"configuration": {
"server": "192.168.1.10:47808",
"timeout": 5,
"points": [
{"name": "送风温度", "addr": "analog-input:0", "scale": 0.1},
{"name": "风机", "addr": "bi:1"},
{"name": "模式", "addr": "multistate-value:2"}
]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
按需读(msg.Data 带点位列表,优先于配置):
[{"name": "设备名", "addr": "device:100:object-name"}]
1
# 关联组件
- 写入:x/bacnetWrite
- 统一采集入口:x/iotRead(driver=bacnet)
- 转时序点落盘:x/tsdbWrite(配置 measurement)
在 GitHub 上编辑此页 (opens new window)
上次更新: 2026/08/05, 01:52:29