EZF Wiki/Integrations and API
Article · EN

EZF API — JSON, TSV and error handling

HTTP request examples, luminaire IDs, NVG diagnostics and error codes.

Scope

This guide covers the local Web Master/EZ2 interface, schema ges-v2. All four GET requests are read only. Use Modbus IP to control tests. 192.168.1.50 is an example controller address.

System status in JSON

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

Selected response fields for one luminaire without faults:

{
  "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"]
}

This illustrates the format; actual values depend on the installation. The response also includes NVG counters, the error dictionary path and status scope. mapping_complete=true does not mean optional measurements or timestamps are available.

HEX flag State
0001 Normal state / luminaire snapshot
0002 Global inhibition
0004 General fault
0008 Functional test
0010 Duration test
0100 Search
0200 Initialisation or configuration

Flags may occur together. Evaluate them alongside error_codes. An installation with no configured luminaires is faulty or unconfirmed.

TSV list

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

Example: tabs separate columns; preserve empty columns.

adresse geraetetyp  gruppe  ueberwachung    schaltungsart   betriebszeit    letzte_testdauer    fehlercode  ortstext    aktualisiert_am
196618  AW  0   1   DS  LTM_3H      0000    Corridor    

The header and each record contain ten fields. Do not split on arbitrary whitespace, as this loses empty fields. The Web Master guide explains the columns. Do not equate ueberwachung=0 with communication loss.

Individual luminaire diagnostics

Use the ID from the first TSV column:

curl --fail --max-time 10 "http://192.168.1.50/data/luminaire.php?id=196618"

Example for a standard AirBus luminaire at physical address 10:

{"id":196618,"channel":3,"physical_address":10,"error_code":"0000","nvg":null}

For NVG, nvg contains led1, led2, mains, input_l1, input_l2, maintained1, maintained2 and communication_error. LED values: 0 off, 1 on, 2 blinking, 3 fault. With communication_error=true, the other NVG values are the last received snapshot, not confirmed live data.

Error dictionary

curl --fail --max-time 10 http://192.168.1.50/data/errorcodes.php

Keep codes as four-character hexadecimal strings, including leading zeros.

Code Meaning
0000 No fault in the states read
0400 No communication with luminaire
F001 LED light source fault
F002 Battery missing or disconnected
F003 LED fault and missing battery
F004 Control gear overtemperature
F011 / F012 / F013 NVG: LED1 / LED2 / both outputs faulty
F100 General controller fault or no configured luminaires
FFFE Unconfirmed state or incomplete diagnostic data

Fxxx codes belong to the EZF adapter. Add their descriptions to the integration system. A single luminaire code cannot describe every simultaneous fault; also use NVG details.

Responses and polling

HTTP Meaning Client action
200 Response available Check format and status codes
400 Invalid ID or channel Correct the parameter using the TSV list
403 Luminaire API disabled Enable data sharing on the controller
404 Luminaire not found Refresh the inventory
503 Data unavailable or response exceeds the limit Display unavailable current data and check the controller

Use timeouts and limited retries with delays. Set the polling interval during commissioning. Do not run an unlimited request loop. Never display an error, empty response or cached old state as a current OK result.

In this release, the TSV limit is 24576 bytes. Exceeding it returns HTTP 503, not a truncated list with HTTP 200. Reads from separate endpoints are not a single atomic report.

Integration checks

Check successful reads, disabled luminaire API, invalid and nonexistent IDs, and connection loss. Compare fault interpretation with the controller display. Tools and simulators let you prepare the client without a connected device.

EZF Wiki · Wiedza pod ręką.