Web Master · Modbus IP · API · Werkzeuge | 1.1 | 06.11.2026
Web Master liest den Zustand der Zentrale und der Leuchten über die lokale HTTP-API des EZ2-Adapters, Schema ges-v2. Diese Schnittstelle dient der Überwachung. Das Starten von Tests wird unter Modbus IP beschrieben.
/data/systeminfo.php und /lumlist.php prüfen./data/errorcodes.php in das Wörterbuch übernehmen.192.168.1.50 ist nur eine Beispieladresse. Die Dienste gehören in ein vertrauenswürdiges Überwachungsnetz. Diese lokale Schnittstelle benötigt keinen Token; sie darf nicht direkt aus dem Internet erreichbar sein.
| GET-Anfrage | Format | Verwendung |
|---|---|---|
/data/systeminfo.php |
JSON | Anlagenzustand, Zähler und Datenschema |
/lumlist.php |
TSV, 10 Spalten | Bestand und Leuchtenzustände |
/data/errorcodes.php |
JSON | Fehlerwörterbuch |
/data/luminaire.php?id=196618 |
JSON | Einzelne Leuchte einschließlich NVG-Diagnose |
Vollständige Beispiele und HTTP-Fehlerbehandlung: EZF API.
Die Leuchten-ID ist Kanal × 65536 + physische Adresse. Kanäle: 1 = BUS1, 2 = BUS2, 3 = AirBus. Die physische Adresse 10 ergibt 65546, 131082 beziehungsweise 196618. Das Feld adresse vollständig speichern und nicht auf 16 Bit begrenzen.
Nach einem Wechsel von einer älteren Integration mit reinen physischen Adressen den Bestand neu synchronisieren. Alte Datensätze nach dem Verfahren des Web Masters entfernen, damit keine Duplikate entstehen. Ein Kanalwechsel ändert die ID.
| Spalte | Bedeutung |
|---|---|
| adresse | Eindeutige Kanal-/Adress-ID |
| geraetetyp | AW, PIKTO, KOMBI, NVG oder UNKNOWN |
| gruppe | In der Zentrale gespeicherte Gruppennummer |
| ueberwachung | 1 = überwacht, 0 = einzeln von der Überwachung ausgeschlossen |
| schaltungsart | DS = Dauerschaltung, BS = Bereitschaftsschaltung; gegebenenfalls leer |
| betriebszeit | LTM_1H / LTM_2H / LTM_3H / LTM_8H; gegebenenfalls leer |
| letzte_testdauer | Leer, wenn keine gemessene Dauer des letzten Tests verfügbar ist |
| fehlercode | Vier hexadezimale Zeichen |
| ortstext | Standortbeschreibung |
| aktualisiert_am | Leer, wenn kein Zeitpunkt der letzten Aktualisierung verfügbar ist |
Leere Felder weder durch null noch durch das aktuelle Datum ersetzen. Die eingestellte Autonomiezeit ist kein gemessenes Ergebnis des letzten Tests. Bei NVG wird die Schaltungsart nur angegeben, wenn beide Ausgänge übereinstimmen. Bei Kommunikationsverlust bleiben Schaltungsart und Betriebszeit leer.
Der lokale Simulator unterstützt die Vorbereitung. Zur Abnahme gehören eine reale Zentrale und der vorgesehene Web Master. Siehe Programme und Downloads.
Die EZF-Zentrale ist Modbus-TCP-Server; GLT/BMS oder Tester sind Clients. Diese Beschreibung gilt für Registertabelle v1 ab Firmware 10.38.
| Parameter | Wert |
|---|---|
| Host | Aktuelle IP-Adresse der Zentrale |
| Port | 502 |
| MBAP Protocol ID | 0 |
| Gleichzeitige Clients | Maximal 2 |
| Lesen | FC03 oder FC04, 1–125 Register |
| Befehl schreiben | FC16, genau 7 Register ab 0x0100 |
| Wort | 16 Bit, Big Endian |
| uint32 | Höherwertiges Wort zuerst |
| Adressen | Nullbasiert, ohne Präfix 4xxxx |
Eine Verbindung ohne Datenverkehr kann nach 3 Sekunden geschlossen werden. Der Client muss sie erneut öffnen können. Modbus besitzt keine Authentifizierung; den Zugriff auf ein vertrauenswürdiges Überwachungsnetz begrenzen.
0x455A, Register 1 die Version der Registertabelle 1 liefern.TCP, RTU und die Freigabe von Ferntests sind standardmäßig ausgeschaltet. In Leuchtenergebnissen bezeichnet TCP auch den Betriebsdauertest; dies ist vom Netzwerktransport Modbus TCP zu unterscheiden.
| HEX-Adresse (dezimal) | Wörter | Inhalt |
|---|---|---|
| 0x0000 (0) | 2 | Signatur und Version der Registertabelle |
| 0x0002 (2) | 1 | Zustandsflags der Zentrale |
| 0x0007 (7) | 1 | Ferntests erlaubt: 0/1 |
| 0x0008 (8) | 2 | Laufzeit seit Start in Sekunden |
| 0x0010 (16) | 2 | Kennung des aktuellen Starts |
| 0x0020 (32) | 16 | Seriennummer als ASCII, 2 Zeichen je Wort |
| 0x0100 (256) | 8 | Letzter Auftrag und Zustand |
| 0x0200 (512) | 16 | AirBus-Gruppe A; B=0x0210, C=0x0220, D=0x0230 |
Register 0x0002: Bit 0 Störung, 1 Kommunikationsfehler, 2 Sperre, 3 Suche, 4 Initialisierung/Konfiguration, 5 FRAM-Speicherfehler. Register 0 nicht als 40001 eingeben, außer der Client rechnet die 4xxxx-Notation ausdrücklich in eine nullbasierte Adresse um.
BUS1 beginnt bei 0x1000 (200 Slots), BUS2 bei 0x3000 (200), AirBus bei 0x5000 (500). Ein Slot umfasst 16 Wörter. Adresse von Slot i, ab 1 gezählt: Basis + 16 × (i−1). Der Slot ist eine Listenposition, nicht die physische Leuchtenadresse. Ein leerer Slot enthält ausschließlich null.
| Offset im Slot | Inhalt |
|---|---|
| 0 / 1 / 2 | Kanal / physische Adresse / vorhanden 0 oder 1 |
| 3–7 | Statusbytes D1–D5 |
| 8 / 9 | TF / Betriebsdauertest: 0 unbekannt, 1 läuft, 2 OK, 3 Fehler |
| 10 | Kommunikationsfehler 0/1 |
| 11 / 12 | Leuchtentyp / Gruppe |
| 13 | NVG: LED1 in Bits 0–1, LED2 in Bits 8–9; sonst 0xFFFF |
| 14 | Leuchtensperre 0/1 |
| 15 | Bestätigtes AirBus-Ergebnis: 0 OK; Bits 0x20 Akku/Dauer, 0x40 LED/Strom, 0x80 Kommunikation |
0xFFFF im Ergebnis bedeutet unbekannt, veraltet oder drahtgebundene Leuchte — kein positives Ergebnis. Bei gemeldetem FRAM-Fehler können Zustände unbestätigt sein, obwohl eine Liste lesbar ist. Ein aktueller Lesezugriff ersetzt keinen archivierten Prüfbericht.
Zuerst lesen. Danach Ferntests lokal freigeben und im Tester Schreibzugriff, Seriennummer sowie den einzelnen Befehl bestätigen. Diese Registertabelle unterstützt die Steuerung von AirBus-Leuchten und -Gruppen. BUS1/BUS2 dienen der Überwachung; ein Teststart für drahtgebundene Leuchten liefert Ausnahme 01.
FC16 schreibt ab 0x0100 genau sieben Wörter:
| Wörter | Bedeutung |
|---|---|
| 0–1 | Nichtnull, aufsteigende Auftrags-ID uint32 |
| 2 | 1 = TF, 2 = Betriebsdauer, 3 = STOP |
| 3 | 0 = einzelne AirBus-Leuchte, 1 = AirBus-Gruppe |
| 4–5 | Leuchten-UID oder Gruppe 0–3 (A–D) |
| 6 | Bestätigungswert 0xA55A |
Beispiel: TF für AirBus 42, UID=196650, Auftrag 1:
0000 0001 0001 0000 0003 002A A55A.
UID = Kanal × 65536 + Adresse. Vor dem Senden die aktuelle UID prüfen. Ein gemeinsames übergeordnetes System sollte Auftrags-IDs für beide Transportwege vergeben. Eine identische ID mit identischem Befehl startet keinen zweiten Test; veränderter Inhalt mit derselben ID ist ein Fehler.
Nach Annahme von FC16 0x0100–0x0107 lesen. Zustand 1 = Warteschlange, 2 = angenommen/läuft, 3 = Ergebnisse gesammelt, 4 = abgelehnt, 5 = STOP angenommen. Zustand 3 bedeutet nicht, dass alle Leuchten bestanden haben. Leuchtenergebnisse und Gruppenzähler auswerten. Zustand 5 bestätigt nicht den Empfang von STOP durch jede Leuchte. Nach einem Neustart Startkennung und aktuellen Zustand lesen; alte Befehle nicht automatisch erneut ausführen.
| Ausnahme | Bedeutung | Maßnahme |
|---|---|---|
| 01 | Funktion nicht unterstützt | FC und unterstützten Kanal prüfen |
| 02 | Ungültige Adresse | Nullbasierte Adresse und Bereich prüfen |
| 03 | Ungültige Daten | 7 Wörter, ID, UID und Bestätigungswert prüfen |
| 04 | Gerätefehler / Daten nicht verfügbar | Meldungen der Zentrale prüfen; kein OK anzeigen |
| 06 | Beschäftigt | Befehl wurde nicht angenommen; dieselbe ID darf erneut gesendet werden |
Bei Verbindungsproblemen IP, Port, TCP-Freigabe, Neustart, Firewall und Clientlimit prüfen. TX/RX-Telegramme und JSON-/CSV-Export im Tester sichern.
RTU verwendet dieselbe Registertabelle: 19200 Bit/s, 8E1, Adresse 1–247, standardmäßig 1. Dafür ist ein freier BUS1 oder BUS2 ohne gespeicherte Leuchten erforderlich. Modbus RTU und EZF-Leuchtenprotokoll nicht auf demselben Port mischen. Broadcast-Adresse 0 führt keine Befehle aus.
Diese Anleitung beschreibt die lokale Web-Master-/EZ2-Schnittstelle, Schema ges-v2. Vier GET-Anfragen sind ausschließlich lesend. Zum Starten von Tests Modbus IP verwenden. 192.168.1.50 ist eine Beispieladresse.
macOS / Linux:
curl --fail --max-time 10 http://192.168.1.50/data/systeminfo.php
Windows PowerShell:
Invoke-RestMethod -Uri "http://192.168.1.50/data/systeminfo.php" -TimeoutSec 10
Ausgewählte Antwortfelder für eine Leuchte ohne Fehler:
{
"systemtype": "EZ2",
"status_codes": ["0001"],
"error_codes": ["0000"],
"mapping_complete": true,
"luminaire_count": 1,
"communication_error_count": 0,
"fault_count": 0,
"error_schema": "ges-v2",
"address_schema": "channel16-address16-decimal",
"optional_unavailable": ["letzte_testdauer", "aktualisiert_am"]
}
Dieses Beispiel zeigt das Format. Tatsächliche Werte hängen von der Anlage ab. Die Antwort enthält außerdem NVG-Zähler, Fehlerwörterbuch und Statusumfang. mapping_complete=true bestätigt nicht die Verfügbarkeit optionaler Messwerte oder Zeitangaben.
| HEX-Flag | Zustand |
|---|---|
| 0001 | Normalzustand / Leuchtendaten |
| 0002 | Globale Sperre |
| 0004 | Allgemeine Störung |
| 0008 | Funktionstest |
| 0010 | Betriebsdauertest |
| 0100 | Suche |
| 0200 | Initialisierung oder Konfiguration |
Mehrere Flags können gleichzeitig gelten. Immer gemeinsam mit error_codes auswerten. Eine Anlage ohne konfigurierte Leuchten ist gestört beziehungsweise unbestätigt.
curl --fail --max-time 10 http://192.168.1.50/lumlist.php -o oprawy.tsv
Windows PowerShell:
Invoke-WebRequest -Uri "http://192.168.1.50/lumlist.php" -OutFile "oprawy.tsv" -TimeoutSec 10
$oprawy = Import-Csv -Path "oprawy.tsv" -Delimiter "`t"
$oprawy | Format-Table adresse, geraetetyp, fehlercode, ortstext
Beispiel: Tabulatoren trennen die Spalten; leere Spalten bleiben erhalten.
adresse geraetetyp gruppe ueberwachung schaltungsart betriebszeit letzte_testdauer fehlercode ortstext aktualisiert_am
196618 AW 0 1 DS LTM_3H 0000 Flur
Kopfzeile und Datensätze haben jeweils zehn Felder. Nicht nach beliebigen Leerzeichen aufteilen, sonst gehen leere Felder verloren. Die Web-Master-Anleitung erklärt die Spalten. ueberwachung=0 ist nicht gleichbedeutend mit Kommunikationsverlust.
Die ID aus der ersten TSV-Spalte verwenden:
curl --fail --max-time 10 "http://192.168.1.50/data/luminaire.php?id=196618"
Beispiel für eine normale AirBus-Leuchte mit Adresse 10:
{"id":196618,"channel":3,"physical_address":10,"error_code":"0000","nvg":null}
Bei NVG enthält nvg die Felder led1, led2, mains, input_l1, input_l2, maintained1, maintained2 und communication_error. LED-Werte: 0 aus, 1 an, 2 blinkend, 3 Fehler. Bei communication_error=true sind die übrigen NVG-Werte der zuletzt empfangene Zustand und keine Bestätigung des aktuellen Zustands.
curl --fail --max-time 10 http://192.168.1.50/data/errorcodes.php
Codes als vierstellige HEX-Zeichenfolgen einschließlich führender Nullen erhalten.
| Code | Bedeutung |
|---|---|
| 0000 | Kein Fehler in den gelesenen Zuständen |
| 0400 | Keine Kommunikation mit der Leuchte |
| F001 | LED-Lichtquellenfehler |
| F002 | Akku fehlt oder ist getrennt |
| F003 | LED-Fehler und fehlender Akku |
| F004 | Übertemperatur des Betriebsgeräts |
| F011 / F012 / F013 | NVG: Fehler LED1 / LED2 / beide Ausgänge |
| F100 | Allgemeiner Anlagenfehler oder keine konfigurierten Leuchten |
| FFFE | Zustand unbestätigt oder Diagnosedaten unvollständig |
Fxxx sind Codes des EZF-Adapters. Beschreibungen in das Integrationssystem übernehmen. Ein einzelner Leuchtencode beschreibt nicht alle gleichzeitigen Fehler; zusätzliche NVG-Diagnose auswerten.
| HTTP | Bedeutung | Verhalten des Clients |
|---|---|---|
| 200 | Antwort verfügbar | Format und Statuscodes prüfen |
| 400 | ID oder Kanal ungültig | Parameter anhand der TSV-Liste korrigieren |
| 403 | Leuchten-API deaktiviert | Datenfreigabe in der Zentrale einschalten |
| 404 | Leuchte nicht gefunden | Bestand aktualisieren |
| 503 | Daten nicht verfügbar oder Antwort zu groß | Fehlende aktuelle Daten anzeigen und Zentrale prüfen |
Timeout und begrenzte Wiederholungen mit Verzögerung vorsehen. Das Abfrageintervall bei der Inbetriebnahme festlegen. Keine unbeschränkte Abfrageschleife verwenden. Fehler, leere Antworten und alte Zustände niemals als aktuelles OK darstellen.
Die TSV-Liste ist in dieser Version auf 24576 Bytes begrenzt. Bei Überschreitung wird HTTP 503 statt einer abgeschnittenen Liste mit HTTP 200 geliefert. Getrennte Endpunktabfragen bilden keinen atomaren Gesamtbericht.
Erfolgreiches Lesen, deaktivierte Leuchten-API, ungültige und nicht vorhandene IDs sowie Verbindungsverlust prüfen. Die Fehlerdarstellung mit dem Display der Zentrale vergleichen. Werkzeuge und Simulatoren ermöglichen die Vorbereitung ohne angeschlossene Zentrale.
Die Dateien stehen direkt in der Wiki bereit. Ein GitHub-Konto ist nicht erforderlich.
| Material | Download |
|---|---|
| Modbus IP Tester 1.0.2 — Windows | Windows-ZIP |
| Modbus IP Tester 1.0.2 — Mac Apple Silicon | arm64-ZIP |
| Modbus IP Tester 1.0.2 — Mac Intel | x86_64-ZIP |
| API — Browsertester und Simulatoren für Windows/macOS | API-Werkzeuge |
| Integrationshandbuch offline — Deutsch | HTML · PDF |
| Datenbeispiele und Registertabelle | ZIP |
| Prüfsummen der Programme | SHA-256 |
| Prüfsummen der übersetzten Handbücher | SHA-256 |
Auf dem Mac unter Apple-Menü → Über diesen Mac prüfen: Apple M… = Apple Silicon; Intel-Prozessor = Intel-Paket. Der Tester installiert keine Firmware.
EZF-Modbus-Tester.exe aus dem entpackten Verzeichnis starten; Begleitdateien beibehalten.EZF-Modbus-Tester.app aus dem passenden Paket öffnen.Version 1.0.2 ist weder mit Developer ID signiert noch notarisiert. Falls macOS sie blockiert, die Freigabe dieser einzelnen Anwendung unter Datenschutz und Sicherheit prüfen. Keine systemweiten Schutzfunktionen deaktivieren. BUILD.txt nennt die kompilierte Architektur.
127.0.0.1, Port 1502 einstellen.EZFDEMO0001.Der Simulator bildet Kommunikation und Beispielantworten ab. Er prüft weder physische Busleitungen noch Funk oder Akkukapazität.
Simulator stoppen oder trennen, IP-Adresse der Zentrale und Port 502 eintragen. Mit Seriennummer und Listenvergleich beginnen. Ferntests erfordern eine eigene Freigabe in der Zentrale und die Bestätigung jedes Befehls im Tester. Steuerbefehle werden nicht automatisch wiederholt.
API-Paket entpacken. Es enthält den HTML-Tester und fertige Simulatoren für Windows und beide Mac-Architekturen. Die ursprüngliche Startdatei README_KLIENT_PL.html ist polnisch; die vollständigen Startschritte stehen hier auf Deutsch:
1. Windows: Windows/EZF_API_Simulator.exe starten. Mac: App aus macOS-AppleSilicon oder macOS-Intel öffnen.
2. http://127.0.0.1:8765/ öffnen, Szenario und Seriennummer wählen und übernehmen.
3. API-Tester öffnen, danach API prüfen wählen. Der vorhandene API-Tester und REST-Simulator haben eine deutsche Oberfläche.
4. Systemzustand, TSV-Liste, Fehlerwörterbuch und einzelne Leuchte prüfen.
5. Für die reale Zentrale deren Adresse als API-Basis eintragen und erneut lesen.
Alternativ Webmaster_API_Tester_DE.html öffnen. Bei Einschränkungen lokaler Dateien den vom Simulator über HTTP bereitgestellten Tester verwenden oder die curl-/PowerShell-Beispiele aus EZF API nutzen. Keine globalen Browserschutzfunktionen deaktivieren. Das Schließen des Browsers beendet den Simulator nicht; Simulator beenden verwenden. Die Programme sind nicht signiert/notarisiert. serial_number und simulator=true sind Simulatorzusätze, keine Felder der realen Zentrale.
Die Zentralensimulatoren enthalten EZF 10.107 klassisch, METRO 10.109 und den R6-Vergleich. Sie dienen der Bedienerschulung und stellen keinen Modbus- oder REST-Server bereit.
Version von Zentrale und Tester, Betriebssystem, Ereigniszeit, HTTP-/Modbus-Meldung sowie Telegramme oder Export beifügen. Passwörter und Zugangsdaten entfernen. Angeben, ob der Fehler im Simulator, an der realen Zentrale oder im vorgesehenen Web Master auftritt.