UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

[Gelöst] Dashboards, Zeitserien und Grafana Variablen

Diskussionen über Zeitserien, Logging und Auswertung mit Grafana
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS, CometVisu, Grafana, Edomi oder eine andere Software beteiligt ist, dann auch immer deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
tofele
Reactions:
Beiträge: 26
Registriert: Mo Dez 17, 2018 5:17 am
Hat sich bedankt: 12 Mal
Danksagung erhalten: 47 Mal

Dashboards, Zeitserien und Grafana Variablen

#1

Beitrag von tofele »

Nachdem ich nun von Wiregate auf Timberwolf migriert habe mache ich mit Grafana und Zeitserien vertraut. Nun habe ich folgende Problemstellung.

Ich habe mehrere Räume, die mit 1W Sensoren identisch ausgestattet sind. Nennen wir sie mal Kind 1, Kind 2 und Kind 3. Nun habe ich mir ein Dashboard mit diversen Panels für Kind1 erstellt, anfänglich noch alles mit der Bezeichnung hardcodiert, also z.B. "Kind 1 Temperatur" und "Kind 1 Luftfeuchtigkeit". Sagen wir mal ich habe in allen Panels insgesamt 4 Zeitserien referenziert.

Wie bekomme ich jetzt dieses Dashboard schnell und einfach dupliziert für Kind 2 und Kind 3 und allfällige weitere Räume?

Variante 1: Ich kann für jedes Kind ein Dashboard erstellen, also das Dashboard für Kind 1 kopieren (sprich unter anderem Namen abspeichern) und alle Titel, Achsen und Metriken manuell umbenennen. Mühsam!

Variante 2: Ich erstelle für das Dashboard eine Grafana Custom Variable namens $Raum, mit mehreren möglichen Werten "Kind 1", "Kind 2" und "Kind 3".

Bild

In allen Bezeichnungen setze ich jetzt die Variable ein, also z.B. "$Raum Temperatur" statt "Kind 1 Temperatur".

Bild
Bild

Jetzt habe ich statt einem Dashboard pro Kind nur ein Dashboard mit ein Dropdown mit allen Kinderzimmern:

Bild

Wenn ich jetzt im Dropdown auf "Kind 2" wechsle, dann dann passen sich alle Bezeichnungen dynamisch an. Nice!

Bild

So weit, so gut. Der Haken ist jedoch, dass die Zeitserien in den Metriken immer noch hardcodiert sind, also sich mit dem Raum nicht ändern. Ich habe ja 4 Serien pro Raum und diese möchte ich auch dynamisch ändern. Also bei Kind 1 wäre die erste Zeitserie für die Temperatur z.B. TS00013, für Kind 2 aber TS00011. Jetzt habe ich eine zweite Variable für die erste Zeitserie erstellt, "$Temp_Tuer", die die Zeitserien in der gleichen Reihenfolge referenziert wie die Variable "$Raum", also "TS00013" und "TS00011".

Bild

Diese Variable kann ich jetzt bei den Metrics beim FROM verwenden:

Bild

Und ich sehe die Variable als zusätzliches Dropdown:

Bild

Das Problem ist nun, dass diese Variablen unabhängig voneinander sind. Die Raumbezeichnung kann ich ändern, z.B. auf "Kind 2", aber die Zeitserien bleiben wo sie sind, nämlich hardcodiert bei Kind 1 (hier TS00013).

Bild

Wenn ich nun 4 Zeitserien habe, gibt das 4 unabhängige Variablen, die ich alle manuell im Dropdown wechseln müsste. Mühsam. Was ich will, ist nur ein Dropdown mit der Raumbezeichnung, welches dann im Hintergrund Werte für die Variablen für die Zeitserien auch entsprechend anpasst. Wenn ich also "Kind 2" wähle sollte auch der Wert für $Temp_Tuer im Beispiel auf TS00011 wechseln.

Gibt es dazu eine Lösungsvariante? Kann Grafana sowas? Also so eine Art Hash Array mit dem $Raum als Index? "$Raum" wäre dann quasi die Mastervariable und die anderen Variable folgen dieser. Gibt es unter euch Grafana Spezialisten, die hier helfen können?

Oder noch besser, jede Zeitserie hat ja auch eine Objekt ID mit freiem Text, z.B. "TS-Kind 1 Türe temp", also z.B. so hier:

Bild

Wenn ich diese nun in Grafana referenzieren könnte statt mit "TS00013", dann könnte man bei den Metriken einfach "TS-$Raum Türe temp" statt "TS000013" oder "$Temp_Tuer" verwenden. Das wäre am saubersten, finde ich, da es nur eine Variable und ein Dropdown benötigt. Ist sowas möglich oder geplant?

Das Grundübel ist hier, dass Grafana die Zeitserien über die anonymen DB Namen referenziert ...

Ganz high end wäre es dann evtl. sogar wenn man in Grafana Zeitserien mit Tags selektieren könnte und die Werte der Tags über Grafana Variablen gesetzt werden. Aber das ist dann vielleicht gar etwas viel verlangt ...

Danke
Tom

Hinzugefügt nach 31 Minuten 29 Sekunden:
Habe gerade etwas gefunden, das evtl. in diese Richtung geht: https://grafana.com/docs/features/datas ... y-variable. Funktioniert aber vermutlich nicht, da die TWS InfluxDB wohl die Objekt IDs nicht speichert. Sonst wäre dann wohl eine Query Variable in etwa so hier möglich:

SHOW TAG VALUES WITH KEY = "TSname" WHERE objectID =~ /$Raum Türe temp/

Also woanders suchen ...
Zuletzt geändert von tofele am Fr Mai 31, 2019 6:49 pm, insgesamt 1-mal geändert.
TWS 950Q [3.0 IP5.1], timberwolf270, VPN offen, Reboot erlaubt

gbglace
Reactions:
Beiträge: 3585
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1253 Mal
Danksagung erhalten: 1649 Mal

#2

Beitrag von gbglace »

Ja leider funktionieren geschachtelte Variablen nicht bei den Custom-Variablen nur beim Typ Querry.
Dann müsste es aber wirklich noch einen Zugriff auf die anderen Spalten der TWS-DB geben um nicht nur mit der originären Objekt ID arbeiten zu können.

Hinzugefügt nach 47 Sekunden:
Aber der erste Teil der Frage ist schon so gut wie nen Artikel in der KB geschrieben.
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

Ersteller
tofele
Reactions:
Beiträge: 26
Registriert: Mo Dez 17, 2018 5:17 am
Hat sich bedankt: 12 Mal
Danksagung erhalten: 47 Mal

#3

Beitrag von tofele »

gbglace hat geschrieben: Fr Mai 31, 2019 6:29 pm Ja leider funktionieren geschachtelte Variablen nicht bei den Custom-Variablen nur beim Typ Query.
Dann müsste es aber wirklich noch einen Zugriff auf die anderen Spalten der TWS-DB geben um nicht nur mit der originären Objekt ID arbeiten zu können.
Ich hab mich inzwischen etwas mehr in das Thema eingelesen und scheint wirklich Lesezugriff auf die anderen Spalten nötig zu sein, sofern vorhanden. Mal schauen ob und wie sich @StefanW hierzu äussert ...
gbglace hat geschrieben: Fr Mai 31, 2019 6:29 pm Aber der erste Teil der Frage ist schon so gut wie nen Artikel in der KB geschrieben.
Ja, aber macht erst dann in der KB Sinn wenn wir hierzu eine Lösung haben ... dann kann ich den Rest noch ergänzen ...
TWS 950Q [3.0 IP5.1], timberwolf270, VPN offen, Reboot erlaubt

Dante
Reactions:
Beiträge: 157
Registriert: So Aug 12, 2018 10:42 am
Hat sich bedankt: 8 Mal
Danksagung erhalten: 78 Mal

#4

Beitrag von Dante »

Ich denke in der Influx-DB werden die anderen Spalten nicht verfügbar sein. Einerseits um die Datenbanken klein zu halten und nur Werte zu speichern, andererseits würde man die Spalten sonst vermutlich auch über Grafana nutzen können.

Als mittel-/langfristigige Lösung sehe ich hier die angedachte REST-API für die LE - diese sollte auch so grundlegende Abfragen zu Timeseries / GAs / Objekten / etc. zulassen. Darüber könnte man die Daten dann per JSON abfragen und für JSON gibt es widerrum Plugins für Grafana um diese Daten als Data Source zu verwenden.
=> Daher vll. als Feature Request formulieren...
Viele Grüße,
Thomas

timberwolf146 / Timberwolf Server 2500 Indian Gold + PBM / Version 1.6.0 IP3 (Wartungs-VPN offen / Reboot jederzeit möglich)

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#5

Beitrag von Robosoc »

:clap: Ich bin zu 100% der gleichen Meinung und bin auch bereits bei meinen ersten 3 Stunden in Grafana über genau das Thema gestolpert. Ich glaube, dass dies dann am Ende wirklich viele TWS-Nutzer interessieren wird.

Ich persönliche würde mir auch wünschen, dass die Beschreibung / Description der TS aus dem TWS in Grafana nutzbar gemacht werden.

Ich habe mir zunächst beholfen, in dem ich in Grafana die Grafik nicht anhand der TimeSeries, sondern vom KNX-Logger (KNX-LINE27) hole. Über die Custom Variable in Grafana kann man dann in der Metrics-Auswahl die Variable beeinflussen. In meinem Fall sind die Variablen dann aber auch nur Nummern. Ich nutze das sogar Zweidimmensional: 4 Stockwerke und jeder Raum ist dann im Uhrzeigersinn durchnummeriert (0=Flur; 1=Erster Raum,...). Dieses Vorgehen habe ich damals irgendwo als Vorschlag gelesen (KNX-Forum oder Info Seite, ich weiß es nicht mehr...war für mich Goldwert)

R32 ist dann beispielsweise der zweite Raum im 3 OG. Diese 3-stelligen Codes sind bei mir bei fast allen 1-Wire-Geräte und KNX-GA's verwendet, und dazu Habe ich die Hauptadressen in der GA den Geschossen zugeteilt: Hinter 3/4/2x verbirgt sich dann quasi folgende Logik
3// = 3. OG
/4/ = Heizungsadressen
//2x = im zweiten Raum

Und deshalb kann ich glücklicher Weise auch zweidimmensional über das gesamte Haus Grafana-Auswertungen mit KNX-GAs erstellen. Zum Beispiel:
SELECT mean("Val") FROM "autogen"."KNX_LINE27" WHERE ("GA" = '[[OG]]/4/[[Raum]]0') AND $timeFilter GROUP BY time($__interval) fill(previous)
Bin mir nicht mehr sicher, ob das nur im EditMode Ging, aber ich bekomme es gerade nicht mehr umgeschaltet, also wahrscheinlich schon.

Vg,
Sven
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

S. Kolbinger
Elaborated Networks
Reactions:
Beiträge: 588
Registriert: Mi Aug 15, 2018 11:34 am
Hat sich bedankt: 82 Mal
Danksagung erhalten: 558 Mal

#6

Beitrag von S. Kolbinger »

Eine abgewandelte Variante von:
tofele hat geschrieben: Fr Mai 31, 2019 5:41 pm Variante 1: Ich kann für jedes Kind ein Dashboard erstellen, also das Dashboard für Kind 1 kopieren (sprich unter anderem Namen abspeichern) und alle Titel, Achsen und Metriken manuell umbenennen. Mühsam!
sollte hier nicht unerwähnt bleiben.

Man kann Dashboards auch exportieren und wieder importieren.
Das exportierte Dashboard wird als JSON-File abgespeichert.
Das lässt sich leicht in einem Texteditor mit Search/Replace (oder auch per Skript, wer es öfter braucht) ändern.
Danach kann man das geänderte File wieder importieren (Hinweis: Am Ende die Zeile mit "uid": löschen, damit das ursprüngliche Dashboard nicht ersetzt wird).

Ich gebe zu, es ist nicht ganz so elegant, wie die Methode mit Custom Variablen oder gar dynamisch erzeugten Dashboards, aber eine sehr pragmatische Lösungen.
Gruß,
Stefan K.
Antworten

Zurück zu „Zeitserien, Logging & Grafana“