02 ENLYZE API abfragen
API-Abfragen für Produktionsdaten, OEE-Kennzahlen und Datenverknüpfungen in Grafana.
In diesem Tutorial lernst du, Produktionsdaten mit dynamischen Zeitbereichen abzufragen, OEE-Kennzahlen zu extrahieren und Daten aus mehreren Queries zu verknüpfen:

Was du lernst
Grafanas Zeitbereich in API-Abfragen verwenden
Aufträge mit OEE-Kennzahlen abfragen
Verschachtelte JSON-Werte mit JSONata extrahieren
Daten mehrerer Maschinen zusammenführen
Aufträge mit Produktdaten verknüpfen (Join)
Voraussetzungen
Einführung in die ENLYZE API abgeschlossen
Verständnis von GET-Anfragen und Root Selector
$.data
Dynamische Zeitbereiche
In der Einführung hast du feste Endpunkte abgefragt. Für Produktionsdaten brauchst du einen dynamischen Zeitbereich, der sich mit Grafanas Zeitauswahl aktualisiert.
${__from:date:iso}
Startzeit im ISO-Format
${__to:date:iso}
Endzeit im ISO-Format
Diese Variablen werden automatisch durch den aktuellen Zeitbereich des Dashboards ersetzt.
Aufträge abfragen
Der production-runs-Endpunkt liefert Produktionsaufträge inklusive OEE-Kennzahlen.
Query konfigurieren
Erstelle ein neues Panel mit der Visualisierung Table
Wähle die Data Source ENLYZE API
Konfiguriere die Query:
Type
JSON
Parser
Backend
Source
URL
Format
Table
Method
GET
URL
production-runs
Klappe Headers, Request params auf und füge unter URL Query Params hinzu:
machine
141e0927-62b3-4e76-8398-ad82d20f397f
start
${__from:date:iso}
end
${__to:date:iso}
Setze den Root selector auf
$.data
Konfiguriere Query-Parameter immer über die Grafana-Oberfläche unter Headers, Request params statt sie direkt in die URL zu schreiben. Das ist übersichtlicher und vermeidet Encoding-Probleme.

Die Tabelle zeigt die rohe API-Antwort. OEE-Kennzahlen wie productivity, availability und performance sind verschachtelte Objekte. Im nächsten Schritt extrahierst du diese Werte.
Verschachtelte Werte mit JSONata extrahieren
JSONata erlaubt es, verschachtelte Werte direkt im Root Selector zu extrahieren und umzustrukturieren. Ersetze $.data durch:

Jede Zeile enthält jetzt die extrahierten OEE-Scores und die produzierte Menge (Yield).
JSONata-Grundlagen
$.data
Zugriff auf das data-Array
field.subfield
Verschachtelte Eigenschaft
{ "name": value }
Neues Objekt erstellen
Spalten konfigurieren (Columns)
Statt JSONata kannst du auch die Columns-Funktion der Infinity-Query verwenden. Klappe Parsing options & Result fields auf und füge unter Columns hinzu:
production_order
Order
String
start
Start
Timestamp
end
End
Timestamp
productivity.score
OEE
Number
availability.score
Availability
Number
performance.score
Performance
Number
quality.score
Quality
Number
quantity_yield.value
Yield
Number
OEE-Werte farblich hervorheben
Für die OEE-Spalten bieten sich farbige Zellen an. Füge einen Field override für Felder mit Regex /OEE|Availability|Performance|Quality/ hinzu:
Unit: Percent (0.0-1.0)
Min: 0, Max: 1
Cell type: Color background
Value mappings: Farbabstufungen von Rot (< 60 %) über Orange und Gelb bis Grün (> 95 %) sowie
null→ "NO DATA" in Grau

Bei Maschinen ohne Qualitätsdaten zeigt die Quality-Spalte "NO DATA" an. Der OEE (Productivity) wird in diesem Fall aus Availability und Performance berechnet. Mehr dazu in der OEE-Dokumentation.
OEE als Stat-Panel
Den OEE des letzten Auftrags kannst du auch als Stat-Panel darstellen:
Erstelle ein neues Panel mit Stat-Visualisierung
Konfiguriere die gleiche
production-runs-Query mit den Query Params wie obenSetze den Root Selector auf
$.data[0].productivity.scoreUnit auf Percent (0.0-1.0), Color mode auf Background
Thresholds: Rot (Basis), Gelb (0.6), Grün (0.8)

Erstelle nach dem gleichen Muster weitere Panels für Availability ($.data[0].availability.score), Performance ($.data[0].performance.score) und Quality ($.data[0].quality.score). Für Quality konfiguriere ein Value Mapping für null → "NO DATA", da nicht alle Maschinen Qualitätsdaten liefern.
Aufträge mehrerer Maschinen zusammenführen
Um Aufträge mehrerer Maschinen in einer Tabelle anzuzeigen, konfiguriere zwei Queries mit jeweils einer eigenen Computed Column für den Maschinennamen.
Query A (Kiefel):
URL
production-runs
Query Params
machine = 141e0927-..., start = ${__from:date:iso}, end = ${__to:date:iso}
Unter Computed columns: Selector "Kiefel", Title Machine
Query B (Macchi):
URL
production-runs
Query Params
machine = cc0d2dcb-..., start = ${__from:date:iso}, end = ${__to:date:iso}
Unter Computed columns: Selector "Macchi", Title Machine
Füge eine Merge-Transformation hinzu, um beide Queries in einer Tabelle zu vereinen.

Mit Produktdaten verknüpfen
Aufträge enthalten nur eine Produkt-UUID. Um den Produktnamen anzuzeigen, verknüpfe die Daten mit dem products-Endpunkt.
Zwei Queries erstellen
Query A (Aufträge):
URL
production-runs
Query Params
machine = 141e0927-..., start = ${__from:date:iso}, end = ${__to:date:iso}
Columns: production_order → Order, product → product_uuid, start → Start, productivity.score → OEE
Query B (Produkte):
URL
products
Root selector
$.data
Columns: uuid → product_uuid, external_id → Product ID, name → Product Name
Wichtig: Das Join-Feld muss in beiden Queries denselben Spaltennamen haben (product_uuid).
Join-Transformation
Wechsle zum Tab Transform
Füge Join by field hinzu: Mode INNER, Field product_uuid
Optional: Organize fields hinzufügen, um
product_uuidauszublenden


Stillstände
Maschinenstillstände lassen sich über den downtimes-Endpunkt abfragen:
URL
downtimes
Query Params
machine = {uuid}, start = ${__from:date:iso}, end = ${__to:date:iso}
Root selector
$.data
Die API liefert neben Start- und Endzeitpunkt auch den Stillstandsgrund und dessen Kategorie. Nutze Columns, um die relevanten Felder zu extrahieren:
uuid
Downtime ID
String
start
Start
Timestamp
end
End
Timestamp
reason.name
Reason
String
reason.category
Category
String
Tipps
Immer mit Table testen: Rohdaten sind in Tabellen leichter zu lesen. Erst nach funktionierender Query zu anderen Visualisierungen wechseln.
Query Params nutzen: Konfiguriere Parameter über die Grafana-Oberfläche statt sie direkt in die URL zu schreiben.
Root Selector schrittweise aufbauen: Mit
$.databeginnen, Datenstruktur überprüfen, dann JSONata ergänzen.Leere Daten: Zeitbereich erweitern oder prüfen, ob die Maschine im gewählten Zeitraum lief.
Nächste Schritte
Mit Variablen arbeiten — Dropdowns für Standort- und Maschinenauswahl erstellen
Zuletzt aktualisiert