Skip to content

1. BACnet ​

注意:BACnet 功能只在TKG(网关运行TKL)和TKE(边缘侧服务器)支持,云平台不支持BACnet

若用户的 BMS(楼宇管理系统)需要正式部署,通常需提供标准的 BACnet 点表文件,以便于系统集成与调试。在生成点表前,需要在物模型中配置 BACnet 字段。

  1. 进入 运维管理 → BACnet 模块。
  2. 点击增量生成 按钮。
  3. 在弹出的窗口中选择目标物模型。
  4. 确认后,为已绑定所选物模型且开启 BACnet 的设备生成对应字段点表。

生成后的点表包含:对象类型、对象实例号、对象名称、属性描述、数据类型、单位、读写权限等关键信息,可用于交付给第三方系统进行对接。

手动新增对象 ​

字段必填与约束
Eui必填,选择要映射的设备。
data_from2.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 写入成功不等于设备已执行,应核对设备回复或后续遥测。

启动与变更点表 ​

  1. 由系统管理员在系统配置允许 BACnet。
  2. 在目标设备上开启 BACnet;遥测按物模型配置字段,属性来源也可直接新增对象。
  3. 在本页生成或维护点表,核对 EUI、物模型、字段、对象类型和对象 ID;写控制点应绑定 RPC。
  4. 在系统管理 → 服务器配置 → BACnet填写网络与设备参数,点击“提交”后点击“重启”,检查运行状态和错误信息。
  5. 用 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 的设备,不会自动为全部设备生成状态对象。

配置只读在线状态点位 ​

  1. 在目标设备基础信息开启 notify_offline="TRUE" 并设置实际心跳,确认检测状态来源。
  2. 手动新增 BACnet 对象,选择真实设备 EUI 和未冲突的对象 ID/名称,来源填 server_attrs,字段填 _online,类型选 binaryInput,单位选 noUnits。
  3. 保存点表并确认运行服务同步成功,再用 BMS 检查上线、超时离线和恢复。保持前述服务权限、启动和组织实例限制。

关键字段片段如下,创建时还需填写 EUI、对象标识等必填字段:

json
{
  "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 失败或设备反馈原值时,后续属性通知可回推真实缓存值。写入被接受、设备执行成功和属性持久化完成必须分别验收。