« Forum für Sonstiges  |

Frage zu Grafana Visualisierung - Änderung zum Vortag

Teilen: facebook    whatsapp    email
  •  kraweuschuasta
  •   Gold-Award
26.10. - 3.11.2022
16 Antworten | 5 Autoren 16
16
NAbend,

Ich schreib täglich den Stand des Wärmepumpen Drehstomzählers  in eine InfluxDB
In Grafana möcht ich den täglichen Verbrauch darstellen.

Jetzt hab ich natürlich das Problem, daß der Energieverbrauch ja aufsummiert wird, bei allen Andren Werten habe ich den Momentanwert.

D.h. ich muss de Differenz zum Vortag bilden.
In Grafana schaffe ichs nur, die Differenz zum letzten Datenwert zu bilden (mit non_negative_difference), aber nicht zum letzten Wert des Vortages.

=> Weiß wer eine Möglichkeit, die Differenz zum Vortagswert (von mir aus zu einem bestimmten Zeitpunkt) zu bilden?

Die Werte (heute die ersten male reingeschrieben)  in der InfluxDB schauen so aus - falls hilfreich:
time                           value
----                           -----
2022-10-26T15:31:14.768161954Z   140.843
2022-10-26T15:34:07.564108313Z   140.845
2022-10-26T15:40:03.110374641Z   140.85
2022-10-26T15:40:26.735360746Z   140.85
2022-10-26T15:43:51.11861958Z     140.852
2022-10-26T16:05:47.972400812Z   140.865
2022-10-26T16:11:08.166463027Z   140.869
2022-10-26T17:57:12.297906935Z   140.936
2022-10-26T18:00:36.854005359Z   140.938

Ich würd halt gerne täglich die Werte aus dem gleichen oder ähnlichen Zeitbereich nehmen - werd täglich alle  Werte um 00:01:00 in die Influx DB schießen, ansonsten alle 5 oder alle 10 Minuten.

Danke & LG
Wolfgang

  •  heinzi00
  •   Gold-Award
27.10.2022  (#1)
Schreibe jeden Tag um Mitternacht den Wert in die Influx DB als Tageswert und vergleiche dann immer diese Werte.

1
  •  chrismo
  •   Gold-Award
27.10.2022  (#2)

zitat..
kraweuschuasta schrieb: D.h. ich muss de Differenz zum Vortag bilden.
In Grafana schaffe ichs nur, die Differenz zum letzten Datenwert zu bilden (mit non_negative_difference), aber nicht zum letzten Wert des Vortages.

Du kannst die NON_NEGATIVE_DERIVATIVE() Funktion nutzen, der man auch eine Periode (also z.B.: 24h für tägliche Änderungen) mitgeben kann.

Eine andere Möglichkeit ist die SPREAD() Funktion, die einem die Differenz zw. ersten und letztem Wert liefert, in Kombination mit GROUP_BY () (wieder 24h bzw. 1d).


1
  •  kraweuschuasta
  •   Gold-Award
27.10.2022  (#3)
Hi

zitat..
heinzi00 schrieb: Schreibe jeden Tag um Mitternacht den Wert in die Influx DB als Tageswert und vergleiche dann immer diese Werte.

das wär mein Plan B gewesen, danke!

Wollte es nich ein bissl eleganter machen, wenn möglich...


zitat..
chrismo schrieb:
Eine andere Möglichkeit ist die SPREAD() Funktion, die einem die Differenz zw. ersten und letztem Wert liefert, in Kombination mit GROUP_BY () (wieder 24h bzw. 1d).

Danke, werd ich versuchen!

LG




1


  •  taliesin
  •   Gold-Award
27.10.2022  (#4)

2022/20221027304595.png
Ich rechne meine heating-dailies aus dem Gesamtpelletsverbrauch (in kg) wie oben um.
last() -> difference() --> math(*4.9) ... weil 4.9kWh/kg Pellets
groupby time(1d)
... die rote Linie wird aus der Brennerleistung generiert ... der Unterschied ist der Wirkungsgrad (oder so).

1
  •  kraweuschuasta
  •   Gold-Award
28.10.2022  (#5)
Danke füs Beispiel!

das impliziert aber, daß ich die von der WP WP [Wärmepumpe] verbrauchte Energie nur 1x täglich auslese..

LG

1
  •  taliesin
  •   Gold-Award
28.10.2022  (#6)
Nein, ich lese meine Daten alle 20s. Das group-by macht die Selektion, d.h. gruppiere die Daten für einen Tag, nimm den letzten Datensatz daraus und daraus die Differenz zwischen 2 Werten.

1
  •  kraweuschuasta
  •   Gold-Award
28.10.2022  (#7)
Oh cool, danke!!
muss ich ausprobieren...
LG

1
  •  Casemodder
  •   Gold-Award
28.10.2022  (#8)
Bin zwar kein Grafana Experte aber meinst du so eine Darstellung? Bei mir ist das auch im Grunde "nur" ein Zählerstand und die Differenz der Tage wird hier angezeigt:


2022/20221028430627.jpg


2022/20221028449826.jpg

1
  •  chrismo
  •   Gold-Award
28.10.2022  (#9)

zitat..
taliesin schrieb: d.h. gruppiere die Daten für einen Tag, nimm den letzten Datensatz daraus und daraus die Differenz zwischen 2 Werten.

Oder einfach die dafür gedachte SPREAD Funktion emoji

"spread() returns the difference between the minimum and maximum values in a specified column."

Bei steigenden Reihen, wie Zählerständen, also Differenz des ersten zum letzten.




1
  •  kraweuschuasta
  •   Gold-Award
28.10.2022  (#10)
Hi,
Ja sowas in der Art, die genaue Darstellung ist ja nebensächlich...

Mich würd (am Meisten) interessieren, wie man das am gscheitesten löst, wenn ich sagen wir 5x täglich die Energiewerte ausles, aus denen ich dann den ältesten raussuch um dem 00:00:00 wert am nächsten zu kommen, für einen möglichst nahen 24 Std intervall....

Oder denk ich zu kompliziert?

Lg

1
  •  taliesin
  •   Gold-Award
28.10.2022  (#11)

zitat..
kraweuschuasta schrieb: 5x täglich die Energiewerte ausles

Bei so wenig Werten würde ich aus Gründen der Genauigkeit tatsächlich den Wert am Ende des Tages interpolieren (zwischen dem letzten am Vortag und dem ersten des aktuellen Tags) und separat in die Datenbank schreiben, warum liest du so selten?

zitat..
chrismo schrieb: Oder einfach die dafür gedachte SPREAD Funktion

Kannte ich nicht, aber stimmt natürlich, geht genauso ... gerade probiert.


1
  •  kraweuschuasta
  •   Gold-Award
1.11.2022  (#12)
nAbend,
danke an Alle, habs hinbekommen, teilweise bissl Sucherei, bis ma Alles findet 😄

links mit last() und difference(), rechts mit mean() und difference()
die Linke Seite zeigt dir richtigen Werte an (hab heut 3x spaßhalber die Energiewerte manuell in die InfluxDB geschossen)


2022/20221101906791.png

zitat..
taliesin schrieb: warum liest du so selten?

Die Energie(gesamt) les ich nur 1x täglich aus, reicht ma um den Tageswert der verbrauchten Energie zu bestimmen.
Alle anderen Werte les ich alle 10 Minuten aus (ist mom eine Teststellung, vll. erhöhe ich noch auf alle 5 Min) daweil reichts.
Will unnötige Datenmengen vermeiden, die eh keinen Interessieren. Ob die WP WP [Wärmepumpe] jetzt 8 oder 10 Minuten mit 900W rennt, ist ma im Moment wurscht, da interessiert mich der Momentanwert. Und für den Energieverbrauch reicht ma der Tagesverbrauch.

LG Wolfgang


1
  •  taliesin
  •   Gold-Award
1.11.2022  (#13)

zitat..
kraweuschuasta schrieb: Will unnötige Datenmengen vermeiden

Gerade nochmal geschaut. Ich logge seit über 2 Jahren ca. 60 Einzelwerte im 20s-Takt in eine influxdb, die jetzt 1.1GB groß ist, also zu sehr fürchten muss man sich da nicht emoji

mean() -> difference() nimmt halt den Mittelwert aller Werte im group-by Intervall, vermutlich nicht was du willst. spread() ist bei monoton wachsenden Werten die elegantere Variante.


1
  •  kraweuschuasta
  •   Gold-Award
3.11.2022  (#14)
Hi

zitat..
taliesin schrieb: mean() -> difference() nimmt halt den Mittelwert aller Werte im group-by Intervall, vermutlich nicht was du willst. spread() ist bei monoton wachsenden Werten die elegantere Variante.

Hmmmmm habs mit 3 Beispielen nachgerechnet, spread liefert teilweise falsche Werte - wenn mehr als ein Wert pro Tag gelogged wird - last() difference() liefert richtge Werte.

schaut jetzt so aus und passt für mich:


2022/20221103131010.png
[EDIT] das gelbe Herzrythmusgestörte ist die Leistungsaufnahme Gesamt bzw. auf L1 - normalerweise gleich....

und bissl Temperaturanzeigespass an den  Rohren im Heizraum


2022/20221103315479.png

zitat..
taliesin schrieb: Ich logge seit über 2 Jahren ca. 60 Einzelwerte im 20s-Takt in eine influxdb

ca.10 Werte im 10 Minutentakt, seit 1 Monat => 11MB 😁

LG Wolfgang

1
  •  taliesin
  •   Gold-Award
3.11.2022  (#15)

zitat..
kraweuschuasta schrieb: seit 1 Monat => 11MB

Und das ist wichtig, weil du noch eine 25 Jahre alte 80MB Festplatte verbaut hast 🤣


1
  •  kraweuschuasta
  •   Gold-Award
3.11.2022  (#16)

zitat..
taliesin schrieb: , weil du noch eine 25 Jahre alte 80MB Festplatte verbaut hast

Sooo schlimm ists nicht, ist sogar eine 1TB mobile usb HDD. Allerdings Second (First) hand....

Und überhaupt, sooo alt bin ich noch(!!) Nicht!
Ich hab schon mit einer 170MB Platte begonnen, und einem 386er mit 4 MB RAM.
Kacke... das ist knapp 29 Jahre her 😵‍💫😵💫😵💫

Aber ernsthaft, sehe absolut keinen Sinn drin, die Werte öfter abzufragen, Temperaturen sowieso nicht, weil viel zu träge, und Energie reicht 1x pro Tag und die Leistungen reichen mir mit 10 Min Genauigkeit ...

LG

1


Beitrag schreiben oder Werbung ausblenden?
Einloggen

 Kostenlos registrieren [Mehr Infos]

Nächstes Thema: Festool: Günstige Bezugsquelle?