Produktionsstatus-Dashboard

Produktionsstatus-Dashboard mit der ENLYZE API erstellen.

Was du lernst

  • Eine Produktionsübersicht für mehrere Maschinen erstellen

  • Aktuelle Auftragsinformationen anzeigen

  • Laufende und abgeschlossene Aufträge mit JSONata erkennen

  • Status-Indikator-Panels erstellen

  • Row Repeat für dynamische Maschinenbereiche nutzen

Voraussetzungen

  • Tutorial 4.2 (ENLYZE API abfragen) abgeschlossen

  • Tutorial 4.3 (Variablen verwenden) abgeschlossen

  • Verständnis des production-runs-Endpoints und von JSONata


Überblick

Ein Produktionsstatus-Dashboard gibt Maschinenbedienenden und Verantwortlichen einen schnellen Überblick über:

  • Aktuelle Produktion – Welches Produkt läuft auf welcher Maschine

  • Produktionskennzahlen – OEE, Durchsatz, Menge

  • Auftragsstatus – Laufend oder abgeschlossen

  • Zeitinformationen – Wann hat der Auftrag begonnen/geendet

In diesem Tutorial baust du ein Dashboard, das mehrere Maschinen nebeneinander zeigt.


Dashboard-Design

Informationshierarchie

Ebene
Inhalt
Panel-Typ

Übersicht

Alle Maschinen auf einen Blick

Tabelle oder Stat-Panels

Pro Maschine

Aktueller Auftrag im Detail

Stat + Tabelle

Detail

Vollständige Auftragshistorie

Tabelle mit allen Aufträgen

Layout-Optionen

Option A: Spalten nebeneinander

  • Jede Maschine in einer Spalte

  • Geeignet für 2-4 Maschinen

  • Einfacher Vergleich

Option B: Übereinander gestapelte Zeilen

  • Jede Maschine in einer Zeile

  • Besser für 5+ Maschinen

  • Row Repeat möglich

In diesem Tutorial verwenden wir Option A.


Laufenden Auftrag erkennen

Die zentrale Logik: Wenn ein Auftrag keinen end-Zeitpunkt hat, läuft er noch.

JSONata zur Erkennung laufender Aufträge

Damit wird jedem Auftrag ein boolesches Feld is_ongoing hinzugefügt.

Nur den aktuellen Auftrag abrufen

Um nur laufende Aufträge zu erhalten:

Oder den neuesten Auftrag abrufen (ob laufend oder nicht):

Die API gibt Aufträge standardmäßig nach Startzeit sortiert zurück (neueste zuerst).


Dashboard aufbauen

Schritt 1: Variablen erstellen

Erstelle zuerst Standort- und Maschinenvariablen (wie in Tutorial 4.3 gelernt).

Für ein fest definiertes Multi-Maschinen-Dashboard kannst du alternativ konstante Variablen verwenden:

Name
Typ
Wert

machine1_uuid

Constant

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

machine1_name

Constant

Kiefel

machine2_uuid

Constant

cc0d2dcb-564b-48cd-a342-71765a536058

machine2_name

Constant

Macchi

Setze Hide auf "Variable", damit die Variablen für Nutzende unsichtbar bleiben.

[SCREENSHOT: Constant variables configuration]


Maschinenstatus-Bereich

Maschinenüberschrift erstellen

Verwende ein Text-Panel, um den Maschinennamen anzuzeigen:

  1. Panel hinzufügen -> Text-Visualisierung auswählen

  2. Mode auf HTML setzen

  3. Inhalt:

[SCREENSHOT: Text panel with machine name]

Aktuelles Produkt

Zeige an, welches Produkt gerade produziert wird:

Query:

Einstellung
Wert

URL

production-runs?machine=${machine1_uuid}&start=${__from:date:iso}

Root selector

$.data[0].production_order

Panel-Einstellungen:

Einstellung
Wert

Visualization

Stat

Text mode

Value

Color mode

None

[SCREENSHOT: Current product stat panel]

Auftragsstatus-Indikator

Erstelle einen visuellen Indikator für den Auftragsstatus (laufend vs. abgeschlossen):

Query:

Einstellung
Wert

URL

production-runs?machine=${machine1_uuid}&start=${__from:date:iso}

Root selector

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

Panel-Einstellungen:

Einstellung
Wert

Visualization

Stat

Color mode

Background

Value Mappings:

  • "Running" -> Grün

  • "Completed" -> Blau

[SCREENSHOT: Run status indicator]


OEE-Schnellübersicht

Zeige OEE-Kennzahlen für den letzten Auftrag an.

Produktivitäts-Stat

Einstellung
Wert

URL

production-runs?machine=${machine1_uuid}&start=${__from:date:iso}&end=${__to:date:iso}

Root selector

$.data[0].productivity.score

Unit

Percent (0.0-1.0)

Min

0

Max

1

Thresholds

Rot < 0.6, Gelb < 0.8, Grün >= 0.8

Wiederhole das Gleiche für Verfügbarkeit, Leistung und Qualität mit:

  • $.data[0].availability.score

  • $.data[0].performance.score

  • $.data[0].quality.score

[SCREENSHOT: OEE stat panels row]


Auftragsdetails-Tabelle

Zeige weitere Details zu den letzten Aufträgen an.

Query-Konfiguration

Einstellung
Wert

URL

production-runs?machine=${machine1_uuid}&start=${__from:date:iso}&end=${__to:date:iso}

Root selector

Siehe JSONata unten

JSONata für detaillierte Auftragsinformationen:

Spaltenkonfiguration

Selector
Titel
Typ

order

Auftrag

String

start

Start

Timestamp

end

Ende

String

oee

OEE

Number

yield

Ertrag

Number

Field Overrides

  1. Start-Feld: Unit = dateTimeAsIso

  2. OEE-Feld: Unit = percentunit, Min = 0, Max = 1, Cell type = Gauge

[SCREENSHOT: Production runs table]


Multi-Maschinen-Layout

Für die zweite Maschine duplizieren

  1. Alle Panels der Maschine 1 auswählen

  2. Kopieren (Strg+C)

  3. Einfügen (Strg+V)

  4. Jedes Panel bearbeiten und ${machine2_uuid} sowie ${machine2_name} einsetzen

  5. In der zweiten Spalte positionieren

Zeilen zur Organisation nutzen

Erstelle einklappbare Zeilen pro Maschine:

  1. Ein Row-Panel hinzufügen

  2. Titel auf ${machine1_name} setzen

  3. Maschinen-Panels in die Zeile ziehen

  4. Für Maschine 2 wiederholen

[SCREENSHOT: Multi-machine layout with rows]


Fortgeschritten: Row Repeat

Für Dashboards mit vielen Maschinen kannst du Row Repeat verwenden, um automatisch einen Bereich pro Maschine zu erzeugen.

Schritt 1: Maschinenvariable erstellen

Erstelle eine Multi-Value-Variable, die alle Maschinen zurückgibt:

Einstellung
Wert

Name

machine

Type

Query

URL

machines

Root selector

$.data

Columns

name, uuid

Multi-value

Aktiviert

Include All

Aktiviert

Schritt 2: Row Repeat konfigurieren

  1. Eine Zeile mit Panels für eine Maschine erstellen

  2. Auf den Zeilentitel klicken -> Row options

  3. Repeat for auf machine setzen

  4. Repeat direction auf Vertical setzen

[SCREENSHOT: Row repeat configuration]

Schritt 3: Variable in Panels verwenden

Verwende in der Query jedes Panels ${machine} als Maschinen-UUID:

Die Zeile (mit allen Panels) wird für jede ausgewählte Maschine wiederholt.


Produktnamen verknüpfen

Wie in Tutorial 4.2 gelernt, kannst du production-runs mit products verknüpfen, um Produktnamen anzuzeigen:

Query A (Aufträge):

Query B (Produkte):

Transformationen:

  1. Join by field: product_uuid, Mode: Outer

  2. Organize fields: product_uuid ausblenden, Spalten neu anordnen


Vollständiges Dashboard-Layout

Hier ist das empfohlene Layout für ein Dashboard mit 2 Maschinen:

Jede Spalte ist 12 Einheiten breit (halbe Dashboard-Breite).

[SCREENSHOT: Complete production status dashboard]


Auto-Refresh für Live-Monitoring

Für Shopfloor-Displays aktiviere Auto-Refresh:

  1. Auf die Zeitauswahl klicken

  2. Aktualisierungsintervall wählen (z. B. 30s, 1m, 5m)

  3. Oder in den Dashboard-Einstellungen -> General -> Auto refresh festlegen

Empfohlene Intervalle:

  • Shopfloor-Display: 30s - 1m

  • Büro-Monitoring: 5m

  • Historische Analyse: Aus


Praktische Übung

Baue ein Produktionsstatus-Dashboard mit:

  1. Zwei Maschinenbereichen (Kiefel und Macchi)

  2. Pro Maschine:

    • Maschinennamen-Header

    • Aktueller Auftrag (Stat-Panel)

    • Auftragsstatus-Indikator (laufend/abgeschlossen)

    • Vier OEE-Stat-Panels

    • Tabelle der letzten Aufträge mit Produktnamen

  3. Dashboard-Einstellungen:

    • Zeitbereich: Letzte 7 Tage

    • Auto-Refresh: 1 Minute


Zusammenfassung

Du hast gelernt, ein Produktionsstatus-Dashboard zu bauen:

  • Konstante Variablen für feste Maschinenkonfigurationen verwenden

  • Laufende Aufträge mit JSONata erkennen ($not($exists(end)))

  • Status-Indikatoren mit Value Mappings erstellen

  • OEE-Kennzahlen aus Aufträgen anzeigen

  • Multi-Maschinen-Ansichten mit Zeilen organisieren

  • Row Repeat für dynamische Maschinenbereiche nutzen


Wie es weitergeht

Fahre fort mit:

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


Kurzreferenz

Laufende Aufträge erkennen

JSONata
Beschreibung

$not($exists($.data[0].end))

Prüfen, ob der letzte Auftrag noch läuft

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

Statustext

$filter($.data, function($v){ $not($exists($v.end)) })

Nur laufende Aufträge filtern

Konstante Variablen

Einstellung
Wert

Type

Constant

Hide

Variable

Query

Der feste Wert

Produktionsstatus-Query

Row Repeat-Einstellungen

Einstellung
Wert

Repeat for

Variablenname

Repeat direction

Vertical

Max per row

1 (für Zeilen in voller Breite)

Zuletzt aktualisiert