02 OEE-Dashboard
OEE-Dashboard mit dem productivity-metrics-Endpoint.
In diesem Tutorial erstellst du ein Abteilungs-Dashboard mit aggregierten OEE-Kennzahlen, Produktionsstatus aller Maschinen und einer Abteilungsübersicht:

Was du lernst
POST-Requests mit dem
productivity-metrics-Endpoint konfigurierenVersteckte Zeitvariablen mit 10-Minuten-Ausrichtung erstellen
OEE-Metriken als Tabelle mit Farbskala anzeigen
Maschinenaktivität als State Timeline visualisieren
Gewichtete OEE-Aggregation für Abteilungsübersichten berechnen
Voraussetzungen
ENLYZE API abfragen und Variablen abgeschlossen
Verständnis von Transformationen (Tutorial 3.2)
10-Minuten-Ausrichtung
Der productivity-metrics-Endpoint erfordert Zeitbereiche, die auf 10-Minuten-Intervalle ausgerichtet sind (Minuten: 0, 10, 20, 30, 40, 50; Sekunden und Millisekunden: 0).
Wenn Nutzende in Grafana z.B. "Last 7 days" auswählen, enthalten die Zeitwerte beliebige Sekunden. Erstelle zwei versteckte Query-Variablen, die die Zeitwerte automatisch runden.
Zeitvariablen erstellen
Erstelle ein neues Dashboard und lege unter Settings > Variables zwei Variablen an:
Name
start
end
Type
Query
Query
Data source
ENLYZE API
ENLYZE API
Hide
Variable
Variable
Refresh
On time range change
On time range change
Source
Inline
Inline
Data
{"time": ${__from}}
{"time": ${__to}}
Root Selector (JSONata, für beide Variablen identisch):
Der Ausdruck rechnet den Zeitstempel in Millisekunden um, rundet auf das nächste 10-Minuten-Intervall ab und wandelt zurück in ein ISO-Datum.

Für einfachere Dashboards reicht auch die Rundung auf volle Stunden: ${__from:date:YYYY-MM-DDTHH:00:00}+00:00. Die 10-Minuten-Rundung ist aber genauer und funktioniert mit allen Endpunkten der ENLYZE API.
OEE nach Maschine (Tabelle)
Die Tabelle zeigt OEE, Availability, Performance und Quality für jede Maschine der Abteilung.
POST-Request konfigurieren
Erstelle ein Table-Panel und konfiguriere die erste Query:
Type
JSON
Parser
Backend
Method
POST
URL
machines/141e0927-62b3-4e76-8398-ad82d20f397f/productivity-metrics
Body type
Raw
Body content type
application/json
Body:

Achte darauf, dass der Body content type auf application/json steht (nicht text/plain). Andernfalls antwortet die API mit HTTP 422.
Columns und Computed Columns
Setze den Root Selector auf $.data und füge unter Parsing options & Result fields folgende Columns hinzu:
productivity.score
productivity
Number
availability.score
availability
Number
performance.score
performance
Number
quality.score
quality
Number
Füge zwei Computed Columns hinzu, um die Maschine zu identifizieren:
"141e0927-62b3-4e76-8398-ad82d20f397f"
machine_uuid
String
"Kiefel"
Machine
String
Weitere Maschinen
Wiederhole die Query für jede Maschine der Abteilung (Macchi, Alpine, Reifenhäuser, W&H Varex). Ändere jeweils die UUID in der URL und in den Computed Columns.
Transformationen
Merge bringt alle Queries in eine gemeinsame Tabelle
Organize fields blendet
machine_uuidaus und benennt die Spalten um (productivity → OEE, availability → Availability usw.)
Visuelle Gestaltung
Konfiguriere die Tabelle unter Standard options:
Unit: Percent (0.0-1.0)
Color scheme: Continuous - RdYlGr
Min: 0, Max: 1
Erstelle Field Overrides für die Spalten OEE, Availability, Performance und Quality:
Cell type: Gauge (basic, color display)
Aktiviere den Table Footer mit Calculation Mean für die Abteilungsdurchschnitte.
Füge unter Value mappings einen Eintrag hinzu:
Type: Special > Null
Display text: NO DATA
Color: Text

Nicht alle Maschinen liefern Qualitätsdaten. Im Demo-Account ist Quality für alle Maschinen 1 (100 %). Das null-Mapping sorgt dafür, dass Maschinen ohne Daten im gewählten Zeitraum "NO DATA" statt eines Fehlers zeigen.
Maschinenaktivität (State Timeline)
Die State Timeline zeigt auf einen Blick, wann welche Maschine in Produktion war und wann sie stillstand.
ENLYZE-Datenquelle verwenden
Erstelle ein State Timeline-Panel mit der ENLYZE-Datenquelle (nicht ENLYZE API). Erstelle für jede Maschine eine Query und wähle jeweils die Variable Durchsatz aus.
Konfiguriere Field Overrides für jede Query (nach Frame refID), um die Maschine als Display Name anzuzeigen (z.B. "Kiefel", "Macchi" usw.).
Value Mappings
Erstelle zwei Range-Mappings, um den Durchsatzwert in einen Betriebsstatus umzuwandeln:
-1000
1
STILLSTAND
Rot
1
10000
IN PRODUKTION
Grün
Die Logik: Liegt der Durchsatz bei 0 oder nahe 0, steht die Maschine. Liegt er über 1, produziert sie.

Abteilungsübersicht
Vier Stat-Panels zeigen die aggregierten OEE-Kennzahlen der gesamten Abteilung: OEE, Availability, Performance und Quality.
OEE und Availability (Mittelwert)
Erstelle ein Stat-Panel für den Department OEE. Konfiguriere 5 Queries (eine pro Maschine) mit denselben POST-Requests wie in der Tabelle, aber mit anderem Root Selector und Columns:
Root Selector:
$.dataColumn:
productivity.scoreals "OEE" (Number)
Füge eine Merge-Transformation hinzu. Unter Value options > Calculation wähle Mean.
Konfiguriere:
Color mode: Background
Unit: Percent (0.0-1.0)
Thresholds: Rot (Basis), Gelb (0.6), Grün (0.8)
Value Mapping:
null→ "NO DATA"
Erstelle ein zweites Panel für Availability nach dem gleichen Muster, mit Column availability.score.
Performance und Quality (gewichtet)
Für Performance und Quality reicht ein einfacher Mittelwert nicht aus. Wenn Maschinen unterschiedlich lange laufen, müssen die Werte nach Availability gewichtet werden.
Formel:
Erstelle ein Stat-Panel für Performance. Die 5 Queries verwenden einen JSONata Root Selector:
Jede Query liefert die Availability und das gewichtete Produkt (Availability x Performance).
Transformationen:
Merge fasst alle Queries zusammen
Reduce mit Mode Reduce fields und Calculation Sum summiert beide Spalten
Add field from calculation mit Mode Binary operation:
weighted_perf / avail, Alias "Performance", Replace all fields aktiviert
Für Quality folge dem gleichen Muster mit diesem Root Selector:
Der $exists-Fallback stellt sicher, dass Maschinen ohne Qualitätsdaten als Quality = 1 (100 %) gewertet werden.

Die gewichtete Aggregation stellt sicher, dass Maschinen mit hoher Verfügbarkeit stärker in die Abteilungskennzahlen einfließen als Maschinen, die kaum liefen. Mehr zur OEE-Berechnung findest du in der ENLYZE-Dokumentation.
Tipps
10-Minuten-Variablen: Die versteckten
start- undend-Variablen funktionieren in jedem Dashboard, das denproductivity-metrics-Endpoint nutzt. Kopiere sie bei Bedarf in andere Dashboards.production-runs vs. productivity-metrics: Verwende
production-runs(GET, Tutorial 4.2) für OEE pro Auftrag. Verwendeproductivity-metrics(POST) für aggregierte Schicht- oder Tagesberichte.422 Unprocessable Entity: Die Zeitwerte sind nicht korrekt ausgerichtet. Prüfe die versteckten Variablen und stelle sicher, dass der Body content type auf
application/jsonsteht.Einzelne Maschine: Für ein Dashboard mit Live-Status einer einzelnen Maschine siehe Produktionsstatus-Dashboard.
Nächste Schritte
Stillstandsauswertung — Maschinenstillstände analysieren und visualisieren
Zuletzt aktualisiert