Grafanas Zeitbereich in API-Abfragen verwenden
Aufträge mit OEE-Kennzahlen abfragen
API-Antworten mit JSONata transformieren
Stillstände zur Analyse abfragen
Voraussetzungen
Tutorial 4.1 (Einführung in Infinity) abgeschlossen
Verständnis von GET-Anfragen und JSONPath
Im vorherigen Tutorial hast du gelernt, einfache GET-Anfragen zu stellen. Jetzt geht es um:
Dynamische Zeitbereiche - Grafanas Zeitauswahl mit API-Abfragen verbinden
Aufträge - Aufträge mit integrierten OEE-Kennzahlen abfragen
Antwort-Transformation - Verschachtelte Daten mit JSONata extrahieren und umstrukturieren
Stillstände - Maschinenstillstände abfragen
Dynamische Zeitbereiche
Fest codierte Daten sind für echte Dashboards nicht praktikabel. Verbinde Queries mit Grafanas Zeitauswahl.
Grafana-Zeitvariablen
Grafana stellt eingebaute Variablen für den ausgewählten Zeitbereich bereit:
Variable
Beschreibung
Beispielwert
Startzeit (Millisekunden)
Diese Variablen aktualisieren sich automatisch, wenn die Zeitauswahl im Dashboard geändert wird.
Aufträge (Production Runs)
Der Production-Runs-Endpunkt liefert nicht nur Auftragsinformationen, sondern auch OEE-Kennzahlen pro Auftrag.
Inhalte eines Auftrags
Jeder Auftrag enthält:
uuid, machine, product, production_order
quantity_total, quantity_yield, quantity_scrap
productivity, availability, performance, quality
average_throughput, maximum_run_speed
Query-Parameter
Nach Maschinen-UUID filtern
Aufträge ab diesem Zeitpunkt (ISO-Format)
Aufträge bis zu diesem Zeitpunkt (ISO-Format)
Nach Produkt-UUID filtern
Nach externer Produkt-ID filtern
Erste zeitgefilterte Query
Erstelle ein Panel, das Aufträge für den ausgewählten Zeitbereich anzeigt.
Schritt 1: Panel erstellen
Erstelle ein neues Panel mit Table-Visualisierung
Wähle die Infinity Data Source
Schritt 2: Query konfigurieren
Schritt 3: Zeitgefilterte URL einfügen
Verwende Grafanas Zeitvariablen in den URL-Query-Parametern:
[SCREENSHOT: Infinity query with time variables in URL]
Schritt 4: Root Selector setzen
Schritt 5: Zeitfilter testen
Setze den Dashboard-Zeitbereich auf "Last 7 days"
Prüfe, ob das Panel Aufträge für diesen Zeitraum anzeigt
Wechsle auf "Last 30 days"
Überprüfe, ob mehr Aufträge erscheinen
[SCREENSHOT: Production runs table with time picker]
Antwortstruktur verstehen
Die Production-Runs-Antwort enthält verschachtelte OEE-Daten:
OEE-Kennzahlen und Mengen sind verschachtelte Objekte. Mit JSONata lassen sich diese Werte extrahieren.
Verschachtelte Werte mit JSONata extrahieren
JSONata ist eine leistungsfähige Abfragesprache zur Transformation von JSON-Daten. Sie bietet mehr Möglichkeiten als JSONPath und ermöglicht es, Daten umzustrukturieren.
Einfache Extraktion
Um OEE-Werte aus Aufträgen zu extrahieren, verwende diesen Root Selector:
Ergebnis:
production_order
start
end
productivity
availability
performance
quality
[SCREENSHOT: Clean production runs table with OEE scores]
JSONata-Grundlagen
Zugriff auf das data-Array
Zugriff auf verschachtelte Eigenschaft
Jedes Element transformieren
Einzelnen Wert extrahieren:
Mengenwerte extrahieren:
Fehlende Daten behandeln:
Werte berechnen:
Spalten für bessere Darstellung hinzufügen
Statt alles mit JSONata umzustrukturieren, kannst du auch Columns in der Infinity-Query verwenden, um bestimmte Felder auszuwählen.
Schritt 1: Spalten hinzufügen
Scrolle zum Abschnitt Columns und füge hinzu:
[SCREENSHOT: Columns configuration]
Unter Field overrides die Formatierung festlegen:
Override für Felder mit Muster /score$/ (Regex):
Override für das Feld "Yield":
Unit: Entsprechend deiner Daten (z. B. kg, m)
OEE in Tabellen visualisieren
Für OEE-Werte bieten Gauge-Zellen eine gute Visualisierung:
Füge einen Override für Felder mit Muster /score$/ hinzu
Setze Cell type auf Gauge
Setze Min auf 0, Max auf 1
Füge Schwellenwerte hinzu:
[SCREENSHOT: Production runs table with gauge cells]
Farbiger Hintergrund
Alternativ lässt sich ein farbiger Hintergrund verwenden:
Setze Cell type auf Colored background
Füge dieselben Schwellenwerte hinzu
Setze Color mode auf Background (gradient)
Stat-Panels für Einzelwerte
Den OEE des letzten Auftrags als Stat-Panel anzeigen:
Schritt 1: Stat-Panel erstellen
Neues Panel mit Stat-Visualisierung hinzufügen
Infinity-Query für Production Runs konfigurieren
Schritt 2: Einzelwert extrahieren
Mit JSONata den Productivity-Score des letzten Auftrags abrufen:
Root Selector:
Schritt 3: Darstellung konfigurieren
Rot < 0.6, Gelb < 0.8, Grün >= 0.8
[SCREENSHOT: OEE stat panel]
Maschinenstillstände zur Analyse abfragen.
downtimes?machine={uuid}&start=${__from:date:iso}&end=${__to:date:iso}
Query-Parameter
Nach Maschinen-UUID(s) filtern
Stillstände ab diesem Zeitpunkt
Stillstände bis zu diesem Zeitpunkt
Beispiel: Aktuelle Stillstände
Stillstandsdauer berechnen
Mit JSONata die Dauer in Minuten berechnen:
Aufträge mehrerer Maschinen zusammenführen
Computed Columns verwenden
Beim Abfragen mehrerer Maschinen eine Spalte mit dem Maschinennamen hinzufügen:
Query A (Kiefel):
URL: production-runs?machine=141e0927-62b3-4e76-8398-ad82d20f397f&start=${__from:date:iso}&end=${__to:date:iso}
Unter Computed columns hinzufügen:
Selector: "Kiefel" (literaler String in Anführungszeichen)
Query B (Macchi):
URL: production-runs?machine=cc0d2dcb-564b-48cd-a342-71765a536058&start=${__from:date:iso}&end=${__to:date:iso}
Unter Computed columns hinzufügen:
Ergebnisse zusammenführen
Füge eine Merge-Transformation hinzu, um beide Queries in einer Tabelle zu vereinen.
[SCREENSHOT: Multi-machine production runs table]
Mit Produktdaten verknüpfen
Aufträge enthalten ein product-Feld mit einer UUID, aber nicht den Produktnamen oder die externe ID. Um die externe Produkt-ID (aus deinem ERP/MES) anzuzeigen, musst du die Daten mit dem Products-Endpunkt verknüpfen.
Die Production-Runs-Antwort enthält nur:
Du möchtest aber anzeigen:
Verwende mehrere Queries und Grafanas Join-Transformation.
Schritt 1: Zwei Queries erstellen
Query A (Aufträge):
production-runs?machine=141e0927-62b3-4e76-8398-ad82d20f397f&start=${__from:date:iso}&end=${__to:date:iso}
Spalten hinzufügen:
Query B (Produkte):
Spalten hinzufügen:
Wichtig: Das Join-Feld muss in beiden Queries denselben Spaltennamen haben (product_uuid).
[SCREENSHOT: Two queries configured for join]
Wechsle zum Tab Transform
Füge die Transformation Join by field hinzu
[SCREENSHOT: Join transformation configuration]
Schritt 3: Mit Organize aufräumen
Füge die Transformation Organize fields hinzu, um:
Die doppelte Spalte product_uuid auszublenden
Spalten in der gewünschten Reihenfolge anzuordnen
Order
Product ID
Product Name
Start
OEE
[SCREENSHOT: Final joined table with product information]
Nur Zeilen mit Übereinstimmungen in beiden Queries
Alle Zeilen aus beiden Queries
Alle Zeilen der ersten Query, Übereinstimmungen aus der zweiten
Alle Zeilen der zweiten Query, Übereinstimmungen aus der ersten
Für Aufträge + Produkte empfiehlt sich OUTER oder LEFT, damit alle Aufträge erhalten bleiben, auch wenn Produktdaten fehlen.
Fehlerbehandlung und Debugging
Endpunkt und Maschinen-UUID überprüfen
ISO 8601-Format verwenden
Keine Daten im Zeitbereich
Verschachtelte Objekte in Tabelle
Fehlende Spaltenextraktion
Columns hinzufügen oder JSONata verwenden
Debugging-Tipps
Network Tab prüfen
Browser-DevTools öffnen (F12)
Request-URL und Antwort prüfen
Zuerst mit Table testen
Immer mit Table-Visualisierung beginnen
Rohdatenstruktur ist leichter erkennbar
Erst nach funktionierender Datenabfrage zu anderen Visualisierungen wechseln
Root Selector vereinfachen
Dann JSONata-Transformationen hinzufügen
Debug-Transformation verwenden
Debug-Transformation hinzufügen
Zeigt genau, welche Daten Grafana erhält
Praktische Übung
Erstelle ein Produktionsübersichts-Dashboard:
Auftragstabelle
Aufträge der Kiefel-Maschine abfragen
Nach Dashboard-Zeitbereich filtern
Extrahieren: Auftrag, Start, Ende, OEE-Werte, Yield
OEE als Gauge-Zellen darstellen
Statistik des letzten Auftrags
Vier Stat-Panels: Productivity, Availability, Performance, Quality
Aus dem letzten Auftrag mit $.data[0] extrahieren
Schwellenwerte für Farbkodierung verwenden
Stillstandstabelle
Stillstände derselben Maschine und desselben Zeitbereichs abfragen
Start, Ende und berechnete Dauer anzeigen
Zusammenfassung
Du hast gelernt, Produktionsdaten mit dynamischen Zeitbereichen abzufragen:
${__from:date:iso} und ${__to:date:iso} in URL-Parametern verwenden
Aufträge mit integrierten OEE-Kennzahlen abfragen
Verschachtelte Werte mit JSONata extrahieren
OEE mit Gauge-Zellen und Stat-Panels visualisieren
Stillstände abfragen und analysieren
Nächste Schritte
Weiter mit:
Variable
Format
Anwendungsfall
JSONata-Kurzübersicht
Prüfen, ob Feld existiert
Wichtige Endpunkte
Endpunkt
Methode
Beschreibung
Stillstandsaufzeichnungen