DALI-Treiber (Beleuchtungssteuerung)
Überblick
DALI (Digital Addressable Lighting Interface, IEC 62386) ist das Standardprotokoll für die Beleuchtungssteuerung in Gebäuden. An einem DALI-Bus werden 64 Short Addresses (bzw. 16 Groups, 16 Scenes) von Leuchten, Sensoren und Lichtreglern angeschlossen; Schalten, Dimmen und Farbtemperatur (DT8) werden über Broadcast-, Group- oder Individual-Befehle gesteuert.
| Position | Wert |
|---|---|
opc_type | DALI |
| Implementierungsklasse | plantpulse.driver.protocol.dali.DALI_Driver |
| Bibliothek | (keine — stub) |
| read | ⛔ stub (gibt "" zurück) |
| write | ⛔ stub |
| Sicherheit | nicht zutreffend (physischer Zugang auf Busebene) |
DALI existiert innerhalb von plantpulse-edge-driver.jar nur als formaler stub.
Beim Aufruf von read() wird eine leere Zeichenkette zurückgegeben; es fließt kein Datenverkehr zum tatsächlichen DALI-Bus.
Wenn Sie DALI-Leuchten wirklich überwachen oder steuern müssen, verwenden Sie die unten beschriebenen alternativen Betriebsarten.
Warum eine native Implementierung schwierig ist
PlantPulse Edge ist eine Java-Anwendung, die auf handelsüblichen PCs, Industrie-PCs oder Linux-Servern läuft und über keine Schnittstelle verfügt, mit der eine direkte Anbindung an den physischen DALI-Bus möglich wäre.
Für die DALI-Kommunikation ist zwingend eine separate DALI-Master- bzw. Gateway-Hardware erforderlich.
| Hardwarekategorie | Beispielprodukte | Übergeordnete Schnittstelle |
|---|---|---|
| USB-DALI-Master | Lunatone DALI USB, Tridonic DALI USB | USB (Hersteller-SDK) |
| Industrielles DALI-Gateway | Tridonic DALI-2 SCI, Helvar 422 / 510, Lunatone DALI-2 IoT | Ethernet (Modbus TCP / BACnet/IP / REST / OPC UA) |
| In Gebäudeautomationsreglern integriert | Siemens DXR, Schneider SE8000 | BACnet/IP |
| Wireless Mesh | Casambi, Silvair, Zigbee→DALI | Cloud / MQTT / REST |
Dass ein PC die Bitsignale auf dem DALI-Bus direkt erzeugt, ist aufgrund elektrischer und zeitlicher Randbedingungen praktisch unmöglich, und Eigenimplementierungen ohne DALI-2-Zertifizierung dürfen in Gebäudebeleuchtungsanlagen häufig nicht legal eingesetzt werden.
Alternative Betriebsarten
Die meisten kommerziellen DALI-Gateways stellen eine auf Standard-Industrieprotokolle umgesetzte Schnittstelle bereit. Sie wählen einfach einen der vorhandenen PlantPulse-Treiber aus und registrieren ihn.
| Vom DALI-Gateway bereitgestellte übergeordnete Schnittstelle | Zu verwendender PlantPulse-Treiber | Seite |
|---|---|---|
| OPC UA Server | OPCUA | OPC-UA |
| Modbus TCP | MODBUS | Modbus |
| BACnet/IP | (Umsetzung im Gateway auf Modbus/OPCUA empfohlen) | — |
| REST / JSON API | HTTP | HTTP |
| MQTT (Casambi u. a. wireless) | (MQTT-Eingang über Sparkplug oder externen Broker) | Sparkplug B |
Empfohlenes Aufbaubeispiel (Tridonic DALI-2 SCI / Lunatone DALI-2 IoT)
Zu beachten bei einer späteren nativen Implementierung
Falls eine Eigenimplementierung geprüft wird, sind folgende Optionen zu bewerten.
| Option | Abhängigkeit | Schwierigkeit |
|---|---|---|
| Anbindung des Lunatone DALI USB SDK | Windows-spezifische DLL + JNA | mittel |
| Helvar Designer Net (Router 422 over Ethernet) | proprietäres TCP-Protokoll (Doku begrenzt) | mittel-hoch |
| DALI-2 over IP (DiiA D4i in Arbeit) | Standard noch nicht final | hoch |
| OPC UA Companion Spec for Lighting | Standard in Arbeit (OPC Foundation) | hoch (über OPCUA-Treiber lösbar) |
Bei DALI hat sich normseitig das Gateway-Umsetzungsmodell etabliert. Die Integration in PlantPulse über die vom Gateway-Hersteller bereitgestellten OPC UA-, Modbus TCP- oder REST-Schnittstellen ist am stabilsten; die Priorität für einen nativen Treiber ist entsprechend niedrig.
stub-Registrierung (nur zu Testzwecken)
Auch für den stub-Treiber ist die OPC-Registrierung als solche möglich, es werden jedoch keine Daten erfasst.
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": []
}'