01 Produktionsstatus-Dashboard

Produktionsstatus-Dashboard mit konstantem Variablen-Ansatz.

In diesem Tutorial baust du ein Dashboard, das den aktuellen Produktionsstatus zweier Maschinen nebeneinander zeigt. Konstante Variablen speichern die Maschinen-UUIDs, alle Daten kommen über die ENLYZE API:

Was du lernst

  • Konstante Variablen für feste Maschinenkonfigurationen

  • Maschinennamen über die API holen statt hartcodieren

  • Laufende Aufträge mit JSONata erkennen

  • OEE-Kennzahlen aus Production Runs anzeigen

  • Multi-Maschinen-Layout mit Side-by-Side-Panels

Voraussetzungen


Wann konstante Variablen?

In Variablen und Fortgeschrittene Variablen hast du Query-Variablen mit Dropdown-Auswahl erstellt. Für Shopfloor-Displays oder Statusmonitore, die immer dieselben Maschinen zeigen, ist ein Dropdown unnötig.

Konstante Variablen lösen diesen Fall:

  • Feste Konfiguration: Die Maschinen-UUIDs stehen direkt in den Variable-Settings

  • Versteckt: Hide: Variable blendet sie aus, da Nutzende sie nicht ändern sollen

  • Einziger Konfigurationspunkt: Um eine Maschine zu tauschen, änderst du nur die Variable statt jede Query einzeln


Konstante Variablen erstellen

Erstelle ein neues Dashboard und lege zwei konstante Variablen an:

Name
Typ
Wert
Hide

machine1

Constant

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

Variable

machine2

Constant

f5c0b9d4-e89e-43ad-b81c-16bd5cbe3646

Variable

Die UUIDs findest du in der ENLYZE Web App oder über den machines-Endpoint.


Maschinennamen anzeigen

Statt den Maschinennamen als weitere Konstante zu speichern, holst du ihn über die API. So bleibt der Name aktuell, wenn er in ENLYZE umbenannt wird.

Erstelle ein Stat-Panel mit diesen Einstellungen:

Einstellung
Wert

URL

machines/${machine1}

Root selector

(leer)

Unter Value options > Fields wähle name aus dem Dropdown. So zeigt das Panel nur den Maschinennamen an.

Stat-Panel mit API-Query für den Maschinennamen

Das Pattern kennst du aus Variablen: Die API gibt ein JSON-Objekt mit allen Feldern der Maschine zurück. Über den Field-Selektor zeigt das Panel nur das name-Feld an.

Konfiguriere das Panel:

  • Color mode: None

  • Text mode: Value

  • Transparent: Aktivieren (für ein sauberes Layout ohne Panel-Rahmen)


Laufenden Auftrag erkennen

Der production-runs-Endpoint gibt Aufträge nach Startzeit sortiert zurück. Der neueste Auftrag steht an Position [0]. Hat er keinen end-Zeitpunkt, läuft er noch.

Status-Indikator

Erstelle ein Stat-Panel:

Einstellung
Wert

URL

production-runs

Query Params

machine=${machine1}, start=${__from:date:iso}, end=${__to:date:iso}

Root selector

$.data[0].end = null ? "Running" : "Completed"

Der Root Selector ist ein JSONata-Ausdruck: Wenn end des neuesten Auftrags null ist, gibt er "Running" zurück, sonst "Completed".

Unter Value Mappings zwei Einträge erstellen:

Wert
Anzeige
Farbe

Running

Running

Grün

Completed

Completed

Blau

Setze Color mode auf Background.

Laufender Auftrag

Erstelle ein zweites Stat-Panel für die Auftragsnummer:

Einstellung
Wert

URL

production-runs

Query Params

machine=${machine1}, start=${__from:date:iso}, end=${__to:date:iso}

Root selector

$.data[0].production_order

Status-Indikator und laufender Auftrag

OEE des letzten Auftrags

Der production-runs-Endpoint liefert OEE-Kennzahlen pro Auftrag mit. Erstelle vier Stat-Panels für OEE, Availability, Performance und Quality.

OEE-Panel

Einstellung
Wert

URL

production-runs

Query Params

machine=${machine1}, start=${__from:date:iso}, end=${__to:date:iso}

Root selector

$.data

Klappe Parsing options & Result fields auf und füge eine Column hinzu:

Selector
Title
Type

productivity.score

Productivity

Number

Konfiguriere das Panel:

  • Unit: Percent (0.0-1.0)

  • Color mode: Background

  • Thresholds: Rot (Basis), Gelb (0.6), Grün (0.8)

  • Value Mapping: null → "NO DATA" (Grau)

Warum Columns statt Root Selector?

Es wäre naheliegend, den Score direkt im Root Selector zu extrahieren, z.B. $.data[0].productivity.score. Das funktioniert, solange die API Daten zurückliefert. Läuft eine Maschine im gewählten Zeitraum jedoch nicht, ist $.data ein leeres Array. Der Zugriff auf [0] schlägt dann fehl und Grafana zeigt einen Fehler statt eines leeren Panels.

Die Lösung: Setze den Root Selector auf $.data und extrahiere den Wert über eine Column (productivity.score). Gibt es keine Daten, liefert die Column null zurück. Diesen null-Wert kannst du dann mit einem Value Mapping als "NO DATA" anzeigen.

Weitere OEE-Panels

Erstelle nach dem gleichen Muster Panels für:

Panel
Root selector
Column Selector

Availability

$.data

availability.score

Performance

$.data

performance.score

Quality

$.data

quality.score

Konfiguriere für alle Panels ein Value Mapping für null → "NO DATA" in Grau. Nicht alle Maschinen liefern Qualitätsdaten, und Maschinen ohne Produktion im gewählten Zeitraum zeigen für alle Kennzahlen "NO DATA".

OEE-Kennzahlen des letzten Auftrags

Auftragsdetails-Tabelle

Zeige die letzten Aufträge mit OEE-Details als Tabelle.

Erstelle ein Table-Panel:

Einstellung
Wert

URL

production-runs

Query Params

machine=${machine1}, start=${__from:date:iso}, end=${__to:date:iso}

Root selector

$.data

Füge unter Parsing options & Result fields Columns hinzu:

Selector
Title
Type

production_order

Order

String

start

Start

Timestamp

productivity.score

OEE

Number

quantity_yield.value

Yield

Number

Konfiguriere einen Field Override für die OEE-Spalte:

  • Unit: Percent (0.0-1.0)

  • Min: 0, Max: 1

  • Cell type: Gauge (basic)

  • Color scheme: Continuous - RdYlGr

Production Runs Tabelle mit OEE als Gauge-Zelle

Zweite Maschine hinzufügen

Dupliziere alle Panels der ersten Maschine und ersetze ${machine1} durch ${machine2} in jeder Query. Positioniere die Panels nebeneinander: Linke Seite (x=0, Breite 12) für Machine 1, rechte Seite (x=12, Breite 12) für Machine 2.

circle-info

Für Dashboards mit vielen Maschinen ist das manuelle Duplizieren unpraktisch. Nutze stattdessen das Repeat-Pattern aus Fortgeschrittene Variablen, um Panels automatisch für jede Maschine zu wiederholen.


Tipps

  • Auto-Refresh: Für Shopfloor-Displays ein Aktualisierungsintervall von 30 Sekunden bis 1 Minute einstellen (oben rechts neben der Zeitauswahl).

  • Laufende Aufträge: Die API gibt Aufträge nach Startzeit sortiert zurück. $.data[0] ist immer der neueste Auftrag im gewählten Zeitraum.

  • Weitere Maschinen: Für jede zusätzliche Maschine eine Konstante hinzufügen und die Panels duplizieren. Ab drei oder mehr Maschinen lohnt sich das Repeat-Pattern aus Fortgeschrittene Variablen.


Nächste Schritte

  • OEE-Dashboard — Aggregierte OEE-Berichte mit dem productivity-metrics-Endpoint erstellen

Zuletzt aktualisiert