DALI(照明控制)驱动
概述
DALI(Digital Addressable Lighting Interface,IEC 62386)是建筑照明控制的标准协议。 一条 DALI 总线上可连接 64 个 short address(或 16 个 group、16 个 scene)的灯具 / 传感器 / 照度控制器,通过 broadcast / group / individual 级别的命令控制开关、调光和色温(DT8)。
| 项目 | 值 |
|---|---|
opc_type | DALI |
| 实现类 | plantpulse.driver.protocol.dali.DALI_Driver |
| 库 | (无 —— stub) |
| read | ⛔ stub(返回 "") |
| write | ⛔ stub |
| 安全 | 不适用(总线层面的物理访问) |
DALI 在 plantpulse-edge-driver.jar 中仅存在形式上的 stub。
调用 read() 时返回空字符串,不会有任何流量发送到实际的 DALI 总线。
如需实际的 DALI 灯具监控 / 控制,请采用下文的替代运行方式。
为什么 native 实现较为困难
PlantPulse Edge 是运行在普通 PC / 工控机 / Linux 服务器上的 Java 应用程序, 并不具备可直接连接 DALI 物理总线的接口。
进行 DALI 通信必须另行配备 DALI master / gateway 硬件。
| 硬件类别 | 示例产品 | 上位接口 |
|---|---|---|
| USB DALI master | Lunatone DALI USB、Tridonic DALI USB | USB(厂商 SDK) |
| 工业级 DALI gateway | Tridonic DALI-2 SCI、Helvar 422 / 510、Lunatone DALI-2 IoT | Ethernet(Modbus TCP / BACnet/IP / REST / OPC UA) |
| 楼宇自动化控制器内置 | Siemens DXR、Schneider SE8000 | BACnet/IP |
| Wireless mesh | Casambi、Silvair、Zigbee→DALI | 云端 / MQTT / REST |
受电气与时序约束,PC 直接在 DALI 总线上产生位信号实际上不可行; 未通过 DALI-2 认证的自研实现,在建筑照明系统中往往无法合法使用。
替代运行方式
大多数商用 DALI gateway 都提供转换为标准工业协议的接口。 只需在 PlantPulse 现有驱动中选择一种进行注册即可。
| DALI gateway 提供的上位接口 | 使用的 PlantPulse 驱动 | 页面 |
|---|---|---|
| OPC UA Server | OPCUA | OPC-UA |
| Modbus TCP | MODBUS | Modbus |
| BACnet/IP | (建议通过网关转换为内部协议 → Modbus/OPCUA) | — |
| REST / JSON API | HTTP | HTTP |
| MQTT(Casambi 等 wireless) | (MQTT 输入使用 Sparkplug 或外部 broker) | Sparkplug B |
推荐配置示例(Tridonic DALI-2 SCI / Lunatone DALI-2 IoT)
后续 native 实现时的考量事项
若自研实现进入评估阶段,应对以下方案进行评估。
| 方案 | 依赖 | 难度 |
|---|---|---|
| Lunatone DALI USB SDK 绑定 | 仅限 Windows 的 DLL + JNA | 中 |
| Helvar Designer Net(Router 422 over Ethernet) | 私有 TCP 协议(文档有限) | 中高 |
| DALI-2 over IP(DiiA D4i 推进中) | 标准未确定 | 高 |
| OPC UA Companion Spec for Lighting | 标准制定中(OPC Foundation) | 高(可通过 OPCUA 驱动解决) |
DALI 在标准层面已形成成熟的 gateway 转换模型。通过网关厂商提供的 OPC UA / Modbus TCP / REST 接口集成到 PlantPulse 是最稳定的方式, 新增 native 驱动的优先级较低。
stub 注册(仅供测试)
stub 驱动本身也可以完成 OPC 注册,但不会采集到数据。
curl -X POST http://<edge-host>/api/v1/opc \
-H "Content-Type: application/json" \
-d '{
"opc_id": "OPC_DALI_STUB",
"opc_type": "DALI",
"opc_name": "DALI stub",
"opc_agent_ip": "192.168.0.0",
"opc_agent_port": "0",
"site_id": "SITE_00001",
"auto_collect": false,
"timecycle": 5000,
"tag_list": []
}'