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=6103a1c3934586cf252aa8d2f3d6c784]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.
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:
Im folgenden Screenshot sind noch die genauen Einstellungen zu sehen:
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.
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
- 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
Vorsicht: Wenn man wieder auf Maskeneingabe zurück änderst, kann das nicht mehr dargestellt werden und die Eingabe geht verloren.
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)