1. BACnet
注意:BACnet 功能只在TKG(网关运行TKL)和TKE(边缘侧服务器)支持,云平台不支持BACnet
若用户的 BMS(楼宇管理系统)需要正式部署,通常需提供标准的 BACnet 点表文件,以便于系统集成与调试。在生成点表前,需要在物模型中配置 BACnet 字段。
- 进入 运维管理 → BACnet 模块。
- 点击增量生成 按钮。
- 在弹出的窗口中选择目标物模型。
- 确认后,为已绑定所选物模型且开启 BACnet 的设备生成对应字段点表。
生成后的点表包含:对象类型、对象实例号、对象名称、属性描述、数据类型、单位、读写权限等关键信息,可用于交付给第三方系统进行对接。
手动新增对象
| 字段 | 必填与约束 |
|---|---|
| Eui | 必填,选择要映射的设备。 |
| data_from | 2.00.085 起可自由输入来源,默认 telemetry_data。 |
| thing_model | 仅遥测来源必填;属性来源无需选择,后端保存为空字符串。 |
| field_name | 必填;遥测选对应物模型字段,属性来源填写属性路径。 |
| object_type | 当前新增初值为 analogOutput,应按点位实际读写用途选择。 |
| object_id | 必填,界面允许 0–4194303。 |
| object_name | 必填,提供集成方可识别的对象名称。 |
| default_value | 初值 0,当前输入框下限 0。 |
| units | 对象单位,初值 noUnits;物模型字段使用 unit,选择时映射。 |
| cov_increment | 必填,初值 0,输入下限 0;表示变化通知阈值。 |
| description、RPC | 可选;有写控制需求时检查关联 RPC。 |
列表提供“增量生成”“重排 object id”及导入/导出入口。2.00.077 前端已移除“应用点表”按钮;配套后端在点表保存、删除、导入、增量生成或重排后,会自动同步正在运行的 BACnet 服务。保存点表不会启动已停止的服务;需在服务配置中单独启动。重排会改变集成方使用的对象标识,应同步更新交付点表。云端可见配置页面并不表示云端提供现场 BACnet 服务,部署条件仍见本页开头。
内置 BACnet/IP 服务(2.00.077 起)
平台内置 BACnet/IP 服务,无需单独安装桥接服务。支持六类对象:analogInput、analogOutput、analogValue、binaryInput、binaryOutput、binaryValue,以及 COV(数值变化)订阅通知。Input 对象只读;Output/Value 可写,实际设备控制需配置 RPC。
设备启用 BACnet 且完成物模型与点位映射后,新遥测会直接同步到 BACnet 对象。BMS 写入可写对象时,后端通过点位绑定的设备 RPC 下发;BACnet 写入成功不等于设备已执行,应核对设备回复或后续遥测。
启动与变更点表
- 由系统管理员在系统配置允许 BACnet。
- 在目标设备上开启 BACnet;遥测按物模型配置字段,属性来源也可直接新增对象。
- 在本页生成或维护点表,核对 EUI、物模型、字段、对象类型和对象 ID;写控制点应绑定 RPC。
- 在系统管理 → 服务器配置 → BACnet填写网络与设备参数,点击“提交”后点击“重启”,检查运行状态和错误信息。
- 用 BMS 客户端核对发现、读值、COV 和写控制,再导出点表交付。
点表保存、删除、导入、增量生成和重排会自动同步正在运行的服务;无需“应用点表”。修改服务监听参数后仍需“提交”并“重启”。点表同步异常会记录错误并重试,应核对最终状态及 BMS 读值,不能只看保存成功提示。
同一进程只运行一个组织的 BACnet 服务
在另一个组织启动 BACnet,会停止之前组织的实例;不能在同一进程内靠不同端口同时运行多个组织。仅切换浏览器中的组织而不启动服务,不会触发替换。
程序启动时会尝试恢复最近处于运行/重启状态的组织服务,服务异常退出后会自动重试;手动停止或全局禁用后不会自动复活。删除组织会清理对应运行实例和重试。重新允许 BACnet 后,需手动点击“重启”。
相关功能变化见系统升级。
属性来源与在线状态映射(2.00.085)
对象列表、编辑器、物模型 BACnet 字段配置、按物模型生成对象及 Excel 导入导出支持 data_from。来源是自由字符串(数据库 varchar(32)),不是固定枚举;可选建议值 telemetry_data、server_attrs、shared_attrs,也可输入其他来源。不要与设备自身表示 LoRaWAN 等接入方式的同名字段混用。
data_from | 取值与配置 |
|---|---|
telemetry_data | 默认来源;旧记录、旧物模型配置和未传来源的请求保持遥测语义。thing_model 必填,从 device.telemetry_data[thing_model] 取字段 |
server_attrs | 从 device.server_attrs 取属性路径;无需选择物模型,后端将 thing_model 保存为 "" |
shared_attrs | 从 device.shared_attrs 取属性路径;thing_model 保存为 "" |
| 其他字符串 | 从设备对应的自有属性取路径;thing_model 保存为 "",来源不存在则使用 default_value |
属性路径可填 _online、status.value 等点号路径。遥测先精确匹配完整字段名,再按路径读取,兼容原有带点字段。未知来源、缺失、null、空字符串或空白值回退 default_value;数值 0 和布尔 false 保留,之后按对象类型转换。默认值不能作为设备真实状态的证据。
对象业务唯一键为 (eui, data_from, thing_model, field_name)。物模型 BACnet 字段用“来源 + 字段名”组合 key,兼容旧 key;不同来源同名字段可共存,不要只按字段名去重。对象编辑器提交 units,选择物模型字段时从该字段的 unit 映射,不能混用两个字段名。
直接新增属性对象不要求物模型;按物模型生成仍只覆盖已绑定所选物模型且开启 BACnet 的设备,不会自动为全部设备生成状态对象。
配置只读在线状态点位
- 在目标设备基础信息开启
notify_offline="TRUE"并设置实际心跳,确认检测状态来源。 - 手动新增 BACnet 对象,选择真实设备 EUI 和未冲突的对象 ID/名称,来源填
server_attrs,字段填_online,类型选binaryInput,单位选noUnits。 - 保存点表并确认运行服务同步成功,再用 BMS 检查上线、超时离线和恢复。保持前述服务权限、启动和组织实例限制。
关键字段片段如下,创建时还需填写 EUI、对象标识等必填字段:
{
"data_from": "server_attrs",
"thing_model": "",
"field_name": "_online",
"object_type": "binaryInput",
"units": "noUnits",
"default_value": 0
}默认 0 不证明检测结果为离线:属性缺失也可能返回此值。关闭通知后 _online 可能冻结为最后状态;API online 与检测器的心跳回退、截止边界和开关语义不同,详见设备状态口径。
属性更新与写入反馈
缓存新增/替换、消息活动、RPC 属性修改和属性持久化排队触发属性通知,包括时间轮判离线。管理器按来源读取,只更新当前运行组织且过滤未变化值;不额外产生通用 server_attrs MQTT 转发。
Input 对象只读。Output/Value 保留 RPC 写控制:按绑定列表逐个调用,参数为 { _eui, [field_name]: value },调用来源为 bacnet_server。点号路径在参数中是字面量键,不自动展开为嵌套对象。主线程同步缓存值时抑制 Worker 写入回调,避免递归 RPC;RPC 失败或设备反馈原值时,后续属性通知可回推真实缓存值。写入被接受、设备执行成功和属性持久化完成必须分别验收。