NEWS
ioBroker -> influxDB2 -> Individuelle Grafana Tabelle
-
Moin zusammen,
ich bin jetzt schon einiger Zeit (2 Jahre?) daran eine Tabelle in Grafana zu erstellen die meinen Anforderungen entspricht, aber jedes Mal hoffungslos gescheitert.
Heute bin ich im Mindset wieder ein Stück weiter gekommen, aber die Lösung fehlt weiterhin. Ich bin sogar inzwischen bereit dafür Geld auszugeben wenn jemand die Lösung kennt.
Bisher habe ich, u.a. aufgrund der Beiträge in diesem Forum versucht die Lösung im Grafana zu finden. Nun glaube ich das ich an anderer Stelle, in der influxDB etwas tun muss.
Was möchte ich? Ich möchte in Grafana eine Tabelle haben die z.B. 4 Spalten enthält. 1: Verbraucher 2:AktuellerVerbrauch 3:Verbrauch2023 4:Kosten2023
In den Zeilen befinden sich dann die ganzen Verbraucher (Trockner, Lampen, Herd usw.) die ich im Haus messe.Wo laufen die Werte auf? Egal ob Modbus, Shelly, Homematic usw., alles läuft im ioBroker auf. Von dort aus werden die gewünschten Daten in eine InfluxDB2 geschrieben. Von dort aus werden die Daten in Grafana visualisiert.
Soweit so gut und ich habe schon geniale Übersichten in Grafana gebaut, ABER an den Tabellen scheitere ich bisher. Immer wieder habe ich Tipps bekommen das "Transform" in Grafana die Lösung ist... war es aber bisher nicht.
Ich meine nun die Ursache gefunden zu haben. Alle die immer Tabellen hatten so wie ich sie wollte, die haben in ihren Querys z.B. das measurement "Trockner" abgefragt und aus dieser Abfrage dann "aktuelle Leistung:365W" "Jahresverbrauch:250kWh" usw. bekommen.
Leider funktioniert das im Zusammenhang mit ioBroker eben nicht. Für jedes measurement gibt es genau einen Wert (value) zurück, mehr nicht. Auf das Problem, bzw. das es ein Problem ist habe ich soeben in diesem Video bei Minute 15:53 gesehen: https://www.youtube.com/watch?v=nhDKa72QoNQ
Meine jahrelangen Versuche die Herausforderung im Grafana direkt zu lösen sehe ich daher als Weg in die falsche Richtung an. ioBroker kann man auch nicht dazu bringen die Werte anders in die InfluxDB2 zu schreiben.
Ich vermute nun das ich quasi in der InfluxDB eine Art Abfrage entwickeln muss die sich aus den gewünschten Einzelwerten einen String zusammenbaut mit dem ich dann (wie alle anderen) ganz normale Tabellen bauen kann.
Ich hoffe ich konnte das Problem ausreichend beschreiben und hoffentlich meine letzte große Herausforderung endlich mit eurer Hilfe lösen. Wie geschrieben bin ich sogar bereit für die Lösung bzw. einen bei mir funktionieren Beispielstring Geld zu bezahlen das mich das Thema Monat für Monat mehr frustriert.
Danke.
-
@brenner-0 sagte in ioBroker -> influxDB2 -> Individuelle Grafana Tabelle:
Was möchte ich? Ich möchte in Grafana eine Tabelle haben die z.B. 4 Spalten enthält. 1: Verbraucher 2:AktuellerVerbrauch 3:Verbrauch2023 4:Kosten2023
Stelle mal bitte Beispieldaten für 2 Verbraucher bereit. Was ist mit "aktueller Verbrauch" gemeint, Momentanverbrauch? Errechnen sich die Kosten mit einem fixen Wert über's ganze Jahr?
In den Zeilen befinden sich dann die ganzen Verbraucher (Trockner, Lampen, Herd usw.) die ich im Haus messe.
Sind die Verbraucher/Measurements alle einzeln benennbar oder irgendwie dynamisch zu ermitteln?
-
Hallo Marc. Danke für deine Rückmeldung.
Alle Werte die ich verwende sind bereits im ioBroker vorhanden und kommen dort entweder nativ an und werden verwendet oder ich berechne sie im ioBroker und schreibe sie in einen Datenpunkt.
Eine Standardquery im Grafana sieht so aus, hier als Beispiel für den heutigen Wasserverbrauch:
from(bucket: "iobroker")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "0_userdata.0.DP.Wasser_VNB.Verbrauch_heute_Liter")
|> filter(fn: (r) => r["_field"] == "value")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")oder hier für die Kosten 2023 für Wasser:
from(bucket: "iobroker")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "0_userdata.0.DP.Wasser_VNB.Verbrauch_2023_Euro")
|> filter(fn: (r) => r["_field"] == "value")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")Als einfachstes Beispiel möchte ich dann eine Tabelle haben:
Medium | Aktuell | Heute | Jahr2023
Wasser | 5 l/min | 212 L | 14.039 L
Gas | 21 kW | 5 m3 | 4.439 m3
Strom | 751W | 14 kWh | 14.424 kWh -
Tut mir leid, mit diesen (Teil-)Informationen bis ich jetzt nicht viel schlauer geworden. Wenn ich das richtig verstehe, liegen die anzuzeigenden Informationen auch 1:1 in den ioBroker-Datenpunkten, es muss nichts errechnet bzw. kumuliert werden. Vielleicht wäre es dann besser, die Daten per Simple-API und http-Plugin direkt nach Grafana zu bringen, ohne den InfluxDB Umweg. Das habe ich aber auch noch nicht gemacht.
@dp20eic, hattest du so etwas nicht schon mal irgendwo erklärt? -
@marc-berg Exakt. Wie geschrieben liegen die Daten fertig im ioBroker und somit auch in der InfluxDB.
-
@marc-berg sagte in ioBroker -> influxDB2 -> Individuelle Grafana Tabelle:
hattest du so etwas nicht schon mal irgendwo erklärt?
Moin,
erklärt, hm, weiß nicht, aber es gibt da vielleicht ein Plugin. Ich muss mich aber auch erst einmal an die Problematik machen, um das zu verstehen.
Wenn es ein Export der Daten geben würde, als CSV oder so, nicht nur eine Abfrage, sondern, wie liegen die Daten der Medien, Gas, Wasser,
ScheiStrom in der DB vor.VG
BerndP.S.: ohne es jetzt nachvollzogen zu haben, wenn die Abfragen das gewünschte Ergebnis liefer, dann könnte man da sicherlich was mit Transformation machen
-
@dp20eic sagte in ioBroker -> influxDB2 -> Individuelle Grafana Tabelle:
@marc-berg sagte in ioBroker -> influxDB2 -> Individuelle Grafana Tabelle:
hattest du so etwas nicht schon mal irgendwo erklärt?
Moin,
erklärt, hm, weiß nicht, aber es gibt da vielleicht ein Plugin. Ich muss mich aber auch erst einmal an die Problematik machen, um das zu verstehen.
Wenn es ein Export der Daten geben würde, als CSV oder so, nicht nur eine Abfrage, sondern, wie liegen die Daten der Medien, Gas, Wasser,
ScheiStrom in der DB vor.VG
BerndP.S.: ohne es jetzt nachvollzogen zu haben, wenn die Abfragen das gewünschte Ergebnis liefer, dann könnte man da sicherlich was mit Transformation machen
Wow, wie hast du denn diese grafische Transform Ansicht erzeugt. Die Optionen fehlen bei mir komplett.
Ja, wenn es eine Datenreihe geben würde pro Gerät wäre es ganz simpel mit Transform die benötigte Tabelle zu visualieren. Das Problem (Verweis auf den Videoabschnitt im ersten Beitrag) ist aber das ioBroker immer nur einen Wert pro Datenpunkt in die influxDB schreibt.
-
@brenner-0 sagte in ioBroker -> influxDB2 -> Individuelle Grafana Tabelle:
Wow, wie hast du denn diese grafische Transform Ansicht erzeugt. Die Optionen fehlen bei mir komplett.
Moin,
ich denke, dass ich ganz aktuelle Software einsetze, Du hast da vielleicht noch eine ältere Version in Gebrauch
Wie schon gesagt, ich kann mit Beschreibungen, oder irgendwelche YT Videos, nicht viel anfangen.
VG
Bernd -
@dp20eic 9.4.7. Wird mal wieder ein Zeit meinen Raspi zu sichern und das Update durchzuführen.
Leider wird es das Problem mit den Tabellen nicht lösen. Nicht das ich doch noch eine zweite Datenbank aufsetzen muss die ich dann "Tabellenkompatibel" befülle um sie dann in Grafana ordentlich darstellen zu können.
-
Hmmm, mir kam gerade die Idee einen Datenpunkt als array zu definieren und zu befüllen. Keine Ahnung ob Influx und anschließend Grafana etwas damit anfangen können, aber ein Versuch ist es wert. Das Array würde ich dann im ioB mittels Blockly befüllen wollen.