4.3.8 Darstellung von (mehreren) Schaltzuständen in Grafana

Beschreibung: Beispiel zur übersichtlichen Darstellung von mehreren Zeitverläufen mit 0/1 Werten

Kategorie: Grafana

Link zu diesem Beitrag: Alles auswählen

[url=https://forum.timberwolf.io/app.php/kb/viewarticle?a=57&sid=79b6756f5c536d01ceed86e6dbbac01c]Knowledge Base - 4.3.8 Darstellung von (mehreren) Schaltzuständen in Grafana[/url]

Nachfolgend wird ein Beispiel zur Darstellung eines Schaltzustandes mit 0/1 gezeigt. Um die Werte nicht oben und unten kleben zu lassen, wird unter "Axes" als Y-Min -0.5 und Y-Max 1.5 angegeben und die Decimals auf 0 gestellt. Unter dem Reiter "Display" ist die Option Staircase wichtig, damit die harten Stufen entstehen.

Bild

Bild

Bei der Darstellung von mehreren Schaltzuständen mit 0/1 als möglichen Wert überlagern sich mehrere Diagrammlinien, so dass werder eine saubere Darstellung noch die Lesbarkeit des Diagrammes gegeben ist.

Mittels math() werden die Werte einfach Multipliziert und Y-Max ist auf 3.5 hochgesetzt. Damit hat der Graph wieder Aussagekraft:

Bild

Im folgenden Screenshot sind noch die genauen Einstellungen zu sehen:

Bild

Eine weitere Möglichkeit ist die Verwendung von "math(*0.8 + n)" mit [n=0,1,2,3,...]. Damit kann man einen Offset erzeugen, damit die Grafen getrennt sind.

Bild

Eine Besonderheit bei Schaltzuständen ist die Thematik, dass meist nur in unregelmäßigen Abständen Werte in der Datenbank gespeichert sind. Dadurch fehlt in der Diagrammansicht oft die Diagrammlinie seit dem letztem Zustand bzw. auf der rechten Seite des Diagrammes (siehe grüne Linie im Diagramm unten). Dazu sind im Moment foldende Lösungen bekannt:
  • Zyklisches Senden auch von Statuswerten (wird von ElabNet auch so empfohlen), dies bringt in Logiken die Schwierigkeit mit sich, dass man in der Logik erkennen muss, ob sich der Wert auch geändert hat.
  • Workaround: Anpassung der Query in Grafana
Der Workaround funktioniert wie folgt:
  • Ursprüngliche Query:
    SELECT "Val" FROM "KNX_LINE1" WHERE ("GA" = '24/4/203') AND $timeFilter
  • Workaround Query:
    SELECT "Val" FROM "KNX_LINE1" WHERE ("GA" = '24/4/203') AND time > now() - 1w and time < now() limit 1000
Der Trick ist, den Abfragezeitraum, der bei Grafana in der Variablen $timeFilter gegeben ist, zu verändern. Dadurch werden auch Werte außerhalb des Zeitfensters zurückgeliefert und Grafana zeigt die Linien richtig an. Den Zeitraum kann man sich natürlich entsprechend anpassen. Diese Query lässt sich aber nur eingeben, wenn man mittels "Toggle Edit Mode", die textbasierte Eingabe verwendet. Sowohl die Einstellungen als auch das Ergebnis (die gelbe Linie) sind im Bild unten sichtbar.

Vorsicht: Wenn man wieder auf Maskeneingabe zurück änderst, kann das nicht mehr dargestellt werden und die Eingabe geht verloren.

Bild

Danke an Thomas alias "Dante" and S. Kolbinger für ihre Beiträge in:
viewtopic.php?p=1419#p1419 (Schaltzustände darstellen)
viewtopic.php?f=26&t=256 (Diagrammlinie fortsetzen)