Skip to content

BACnet 插件

BACnet 插件实现了 BACnet 协议,用于与楼宇自动化设备进行通信,支持设备发现、数据采集和远程控制。

  • BACnet IP:支持 BACnet/IP 协议
  • 设备发现:自动发现网络中的 BACnet 设备
  • 批量采集:将相同采集周期的点位合并批量读取
  • 定时采集:支持自定义采集间隔
  • 读写操作:支持读取和写入 BACnet 对象属性
  • 虚拟模式:支持虚拟模式(测试用)
  • 多设备映射:单个 BACnet 对象可映射到多个物模型设备

连接配置位于 config.jsonconnections 字段下:

{
"plugin": "bacnet",
"connections": {
"bacnet-network-1": {
"mode": "ip",
"interface": "eth0",
"localIp": "192.168.1.100",
"localSubnet": 24,
"localPort": 47808,
"virtual": false
}
}
}
参数类型默认值说明
modestringip连接模式(目前仅支持 ip
interfacestring-网络接口名称(如 eth0
localIpstring-本地 IP 地址
localSubnetint-子网掩码位数
localPortint47808BACnet 端口
virtualboolfalse是否启用虚拟模式

点位配置基于通用点位定义,并添加 BACnet 协议扩展参数。

点位的基础参数请参考设备配置指南

在通用点位基础上,BACnet 插件支持以下扩展参数:

{
"name": "temperature",
"description": "温度",
"valueType": "float",
"readWrite": "R",
"objectType": "analogInput",
"instance": 1001,
"defaultPriority": 16,
"defaultNull": false,
"duration": "5s"
}
参数类型必填说明
objectTypestringBACnet 对象类型(如 analogInputanalogOutputbinaryInput 等)
instanceint对象实例号
defaultPriorityint写入时的默认优先级(默认 16)
defaultNullbool是否默认写入 null 值
durationstring采集周期,默认 1s

BACnet 设备需要在 properties 中配置网络参数:

属性类型必填说明
deviceIdstringBACnet 设备 ID 或其他标识

常用的 BACnet 对象类型:

对象类型说明常用属性
analogInput模拟输入Present Value
analogOutput模拟输出Present Value
analogValue模拟值Present Value
binaryInput二进制输入Present Value
binaryOutput二进制输出Present Value
binaryValue二进制值Present Value
multistateInput多状态输入Present Value
multistateOutput多状态输出Present Value
multistateValue多状态值Present Value

插件自动将相同采集周期的点位合并为采集组:

  • 相同 duration 的点位分为一组
  • 每组最多包含 15 个对象(避免请求过大)
  • 减少网络请求次数,提高采集效率

单个 BACnet 对象可以映射到多个物模型设备:

{
"objects": [
{
"id": {
"type": "analogInput",
"instance": 1001
},
"points": {
"device-001": "temperature",
"device-002": "temp_sensor"
}
}
]
}

启用 virtual 或全局虚拟模式时:

  • 不实际连接 BACnet 网络
  • 可通过 Lua 脚本模拟数据读写(当前未完全实现)
  • 用于测试配置和协议解析

以下参数未配置时使用默认值:

  • duration1s
  • localPort:47808
  • defaultPriority:16
  • 插件入口:plugins/bacnet/plugin.go
  • 核心实现:plugins/bacnet/internal/plugin.go
  • 连接器:plugins/bacnet/internal/connector.go
  • 适配器:plugins/bacnet/internal/adapter.go