OEE-Dashboard mit aggregierten Metriken

OEE-Dashboard mit aggregierten Metriken in Grafana erstellen.

Was du lernst

  • Den productivity-metrics-POST-Endpoint für aggregierte OEE-Daten nutzen

  • Die 10-Minuten-Ausrichtung für Zeitbereiche beachten

  • Versteckte Zeitvariablen erstellen, die auf gültige Intervalle runden

  • Abteilungsübersichtstabellen mit mehreren Maschinen erstellen

  • Gauge-Zellen und kontinuierliche Farbskalen zur Visualisierung einsetzen

Voraussetzungen

  • Tutorials 4.1-4.4 abgeschlossen

  • Verständnis von Infinity-POST-Requests

  • Vertrautheit mit Dashboard-Variablen


Überblick

Der productivity-metrics-Endpoint liefert aggregierte OEE-Kennzahlen für frei wählbare Zeitbereiche:

  • Produktivität (OEE) – Gesamtanlageneffektivität

  • Verfügbarkeit – Laufzeit vs. Stillstand

  • Leistung – Ist-Output vs. Soll-Output

  • Qualität – Gutmenge vs. Ausschuss

Welchen Endpoint wann verwenden

Endpoint
Methode
Geeignet für

production-runs

GET

OEE pro Auftrag, flexible Zeitbereiche

productivity-metrics

POST

Aggregierte OEE über definierte Zeiträume (Schichten, Tage, Wochen)

Verwende production-runs (Tutorial 4.2) für:

  • Schnelle Queries mit ${__from:date:iso} und ${__to:date:iso}

  • OEE pro Auftrag

  • Einfache Dashboards

Verwende productivity-metrics (dieses Tutorial) für:

  • Aggregierte Metriken über Schichten oder eigene Zeiträume

  • Abteilungsübergreifende Zusammenfassungen

  • Wenn du mehr Kontrolle über die Zeitausrichtung brauchst


Die 10-Minuten-Ausrichtung

Wichtig: Der productivity-metrics-Endpoint erfordert Zeitbereiche mit 10-Minuten-Ausrichtung:

Anforderung
Gültig
Ungültig

Minuten

0, 10, 20, 30, 40, 50

5, 15, 23, 47

Sekunden

0

30, 59

Mikrosekunden

0

123000

Gültige Beispiele:

  • 2024-01-15T08:00:00.000Z

  • 2024-01-15T14:30:00.000Z

  • 2024-01-15T09:10:00.000Z

Ungültige Beispiele:

  • 2024-01-15T08:05:00.000Z (Minuten nicht ausgerichtet)

  • 2024-01-15T14:30:45.000Z (Sekunden nicht null)

Warum das wichtig ist

Wenn Nutzende in Grafana Zeitbereiche auswählen, enthalten die Werte oft beliebige Sekunden und Millisekunden:

  • Jemand klickt auf "Last 8 hours" um 14:37:23 -> ${__from} = 1705323443000

  • Das ergibt 2024-01-15T06:37:23.000Znicht 10-Minuten-ausgerichtet!

Lösung: Erstelle versteckte Variablen, die Zeitwerte auf gültige Intervalle runden.


Zeitausgerichtete Variablen erstellen

Option A: Auf volle Stunden runden (einfachste Variante)

Nutze Grafanas Datumsformatierung, um auf volle Stunden zu runden:

Variable
Wert

Name

start_aligned

Type

Constant oder Query

Value

${__from:date:YYYY-MM-DDTHH:00:00}+00:00

Ergebnis: 2024-01-15T06:00:00+00:00 (immer gültig)

Allerdings aktualisieren sich konstante Variablen nicht, wenn der Zeitbereich geändert wird.

Option B: Auf 10-Minuten-Intervalle runden (fortgeschritten)

Erstelle eine Query-Variable mit Inline-Daten und JSONata:

Variable: start

Einstellung
Wert

Name

start

Type

Query

Hide

Variable (versteckt)

Refresh

On time range change

Query-Konfiguration:

Einstellung
Wert

Source

Inline

Data

{"time": ${__from}}

Root selector

Siehe JSONata unten

JSONata für 10-Minuten-Rundung:

Dieses JSONata:

  1. Nimmt den Millisekunden-Zeitstempel von Grafana

  2. Rundet auf die nächsten 10 Minuten ab (600000 ms = 10 min)

  3. Wandelt zurück ins ISO-Format um

Variable: end

Erstelle eine zweite Variable mit derselben Konfiguration, aber verwende ${__to} statt ${__from}:

Einstellung
Wert

Name

end

Data

{"time": ${__to}}

Root selector

Gleiches JSONata wie oben

[SCREENSHOT: Hidden time variable configuration]


Productivity Metrics abfragen

Einfacher POST-Request

Der productivity-metrics-Endpoint erfordert einen POST-Request mit Zeitbereichen:

URL:

Method: POST

Body:

Infinity-Query-Konfiguration

Einstellung
Wert

Type

JSON

Parser

Backend

Source

URL

URL

machines/${machine}/productivity-metrics

Method

POST

Body content type

application/json

Body

Siehe oben

Root selector für die Extraktion der Werte:

Hinweis: Qualität existiert nicht bei allen Maschinen, daher wird standardmäßig 1 verwendet, wenn der Wert fehlt.

[SCREENSHOT: POST request configuration in Infinity]


Abteilungsübergreifende OEE-Tabelle erstellen

Eine Abteilungsübersicht zeigt alle Maschinen in einer Tabelle mit OEE-Werten nebeneinander.

Schritt 1: Mehrere Maschinen-Queries erstellen

Erstelle für jede Maschine eine separate Query (Query A, B, C usw.):

Query A (Kiefel):

Einstellung
Wert

URL

machines/141e0927-62b3-4e76-8398-ad82d20f397f/productivity-metrics

Method

POST

Body

{"datetime_ranges": [{"start": "${start}", "end": "${end}"}]}

Root selector

JSONata für Werte (siehe oben)

Füge Computed Columns hinzu, um die Maschine zu identifizieren:

Selector
Title
Type

"141e0927-62b3-4e76-8398-ad82d20f397f"

machine_uuid

String

"Kiefel"

Machine

String

Hinweis: Der Selector verwendet String-Literale in Anführungszeichen, um feste Werte einzufügen.

Query B (Macchi):

Gleiche Konfiguration mit:

  • URL: machines/cc0d2dcb-564b-48cd-a342-71765a536058/productivity-metrics

  • Computed Columns: "cc0d2dcb-..." und "Macchi"

Für alle weiteren Maschinen der Abteilung wiederholen.

[SCREENSHOT: Multiple queries with computed columns]

Schritt 2: Merge-Transformation hinzufügen

Transformationen kombinieren die verschiedenen Query-Ergebnisse:

  1. Auf den Transform-Tab klicken

  2. Transformation hinzufügen -> Merge

Damit werden alle Maschinen-Queries in einer einzigen Tabelle zusammengeführt.

[SCREENSHOT: Merge transformation result]

Schritt 3: Spalten organisieren

Füge eine weitere Transformation hinzu, um die Tabelle aufzuräumen:

  1. Transformation hinzufügen -> Organize fields

  2. Ausblenden: machine_uuid (nur intern zum Filtern benötigt)

  3. Umbenennen:

    • productivity -> OEE

    • availability -> Verfügbarkeit

    • performance -> Leistung

    • quality -> Qualität

  4. Reihenfolge: Machine, OEE, Verfügbarkeit, Leistung, Qualität

[SCREENSHOT: Organize fields configuration]


Visuelle Gestaltung

Gauge-Zellen für OEE-Spalten

Stelle jede Score-Spalte als Gauge dar:

  1. Field overrides öffnen

  2. Override hinzufügen -> Fields with name -> OEE

  3. Eigenschaft hinzufügen -> Cell type -> Gauge

  4. Mode -> Basic setzen

Für Verfügbarkeit, Leistung und Qualität wiederholen.

Kontinuierliche Farbskala

Verwende einen Rot-Gelb-Grün-Farbverlauf für sofortiges visuelles Feedback:

  1. Unter Defaults (Standard options):

    • Color scheme -> Continuous - RdYlGr (From thresholds)

    • Oder Field Overrides für einzelne Spalten verwenden

  2. Min = 0, Max = 1 setzen

  3. Thresholds konfigurieren (bei Threshold-basierten Farben):

    • 0: Rot

    • 0.6: Gelb

    • 0.8: Grün

[SCREENSHOT: Color scale configuration]

Unit-Konfiguration

Stelle die Einheit auf Prozent:

Einstellung
Wert

Unit

Percent (0.0-1.0)

Decimals

1

Min

0

Max

1

Tabellenfuß mit Durchschnittswerten

Zeige Abteilungsdurchschnitte im Tabellenfuß an:

  1. Unter Table-Optionen:

    • Show table footer -> An

    • Calculation -> Mean

Damit wird der durchschnittliche OEE aller Maschinen am unteren Rand angezeigt.

[SCREENSHOT: Table with gauge cells and footer]


Vollständiges Beispiel: Abteilungsübersicht

Variablen

Name
Typ
Konfiguration

site

Query

Sites-Endpoint, Anzeige Name/UUID

start

Query (versteckt)

Inline mit 10-Minuten-Rundung (JSONata)

end

Query (versteckt)

Inline mit 10-Minuten-Rundung (JSONata)

Panel-Konfiguration

Visualisierung: Table

Queries: Eine pro Maschine mit Computed Columns für den Namen

Transformationen:

  1. Merge

  2. Organize fields (UUID ausblenden, Spalten umbenennen)

Field Config:

  • Unit: percentunit

  • Color mode: continuous-RdYlGr

  • Min: 0, Max: 1

Overrides:

  • OEE, Verfügbarkeit, Leistung, Qualität: Cell type = Gauge

Optionen:

  • Footer: Anzeige mit Mean-Berechnung

  • Cell height: Small

  • Sort: Nach Maschinenname (aufsteigend)


Vergleich: Production Runs vs. Productivity Metrics

Merkmal
production-runs
productivity-metrics

Methode

GET

POST

Zeitformat

Beliebiges ISO-Datetime

10-Minuten-ausgerichtet

OEE-Ebene

Pro Auftrag

Aggregiert über den Zeitbereich

Einrichtungsaufwand

Einfach

Erfordert ausgerichtete Zeitvariablen

Mehrere Zeitbereiche

Nicht unterstützt

Unterstützt (Array von Bereichen)

Geeignet für

Schnelle Dashboards

Schichtberichte, Tageszusammenfassungen

Wann welchen Endpoint verwenden:

  • Einfache Dashboards mit Zeitauswahl: production-runs mit ${__from:date:iso} verwenden

  • Schichtbasierte Berichte: productivity-metrics mit ausgerichteten Zeitvariablen verwenden

  • Historische Vergleiche: productivity-metrics mit mehreren datetime_ranges verwenden


Praktische Übung

Erstelle ein abteilungsübergreifendes OEE-Dashboard mit:

  1. Variablen:

    • Standort-Dropdown

    • Versteckte start- und end-Variablen mit 10-Minuten-Rundung

  2. OEE-Tabelle:

    • Queries für 5 Maschinen (Kiefel, Macchi, Alpine, Reifenhauser, W&H Varex)

    • Merge-Transformation

    • Gauge-Zellen mit RdYlGr-Farbskala

    • Tabellenfuß mit Durchschnittswerten

  3. Zusammenfassungs-Stats:

    • Abteilungsdurchschnitt OEE (einzelnes Stat-Panel)

    • Berechnung mit denselben Queries und Reduce-Transformation


Zusammenfassung

Du hast gelernt, OEE-Dashboards mit aggregierten Metriken zu erstellen:

  • Der productivity-metrics-Endpoint erfordert 10-Minuten-ausgerichtete Zeitbereiche

  • Versteckte Variablen mit JSONata erstellen, um Zeiten automatisch zu runden

  • Mehrere Queries mit Computed Columns für Multi-Maschinen-Tabellen verwenden

  • Merge-Transformation zum Zusammenführen der Ergebnisse anwenden

  • Gauge-Zellen und kontinuierliche Farbskalen zur Gestaltung einsetzen

  • Abteilungsdurchschnitte mit dem Tabellenfuß anzeigen


Wie es weitergeht

Fahre fort mit:


Kurzreferenz

JSONata für 10-Minuten-Rundung

POST-Request-Body

JSONata für OEE-Extraktion

Computed Column für Maschinennamen

Selector
Title
Type

"Machine Name Here"

Machine

String

Field Overrides für Gauge-Zellen

Zuletzt aktualisiert