NEWS
Darstellung der Stundenwerte in Addition
-
Hallo, ich möchte den täglichen Einspeisewert an Strom (Watt!!!) berechnen. ich bekomme alle 10sek einen Wert und habe diesen per flux als watt je Stunde berechnet:
from(bucket: "testung")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "einspeisung_neu_130324")
|> filter(fn: (r) => r["_field"] == "einspeisung_hm")
|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
|> yield(name: "werte")Sieht dann so aus:
Jetzt will ich aber als Tabelle die zusammengerechneten Werte haben.
Rechne ich alle geloggten Werte zusammen, stimmt das Ergebnis natürlich nicht, ebenso wie difference(), da der Einspeise-Watt-Wert ja schankt.hat jmd eine idee?
-
@oekomat sagte in Darstellung der Stundenwerte in Addition:
täglichen Einspeisewert an Strom (Watt!!!) berechnen
Strom misst man in Ampere und Leistung wäre Watt. Oder meinst Du die Energie? Das wären Wattstunden (Wh)?!
Wenn Du nur die Leistung hast, dann musst Du das Integral bilden um die Einspeisung in Wh zu errechnen:
https://docs.influxdata.com/flux/v0/stdlib/universe/integral/ -
@haus-automatisierung
ich habe die Leistung, habe es mittels o.g. Berechnung als Wh umgerechnet und möchte die Anzeige aber als Addition der stündlichen Werte. -
@oekomat sagte in Darstellung der Stundenwerte in Addition:
ich habe die Leistung, habe es mittels o.g. Berechnung als Wh umgerechnet
Das funktioniert so aber nicht / ist ungenau.
mean() returns the average of non-null values in a specified column from each input table.
Die Werte sind also nicht gewichtet soweit ich weiß. Und nicht in zeitlichen Bezug gesetzt. Das heißt, dass z.B. bei zwei Werten (1000 und 10) dann eben 505 rauskommt. Und das, obwohl die 1000 Watt eventuell nur für 10 Sekunden genutzt wurden und die 10 Watt für den restlichen Tag.
Daher der Hinweis auf das Integral.
@oekomat sagte in Darstellung der Stundenwerte in Addition:
möchte die Anzeige aber als Addition der stündlichen Werte.
Am Ende einfach
|> sum()
aufrufen. -
das Risiko gehe ich ein, dass es nur zu 99 stimmt.
Die Werte sendet der Wechselrichter alle 10 sek. einmal über mqtt an nodered und von dort lasse ich sie in influx einlesen. Sollte einmal kein Wert kommen, weil z.b. keine Einspeisung, lasse ich eine 0 schreiben. Damit hab ich aktuell immer einen gleichen Intervall und eine gleiche Gewichtung. Falls mean, die 0-Werte auch dann nicht berücksichtigt, kann ich fiktiv auch 0,01 schreiben lassen.
So hier klappt es schon mal:
from(bucket: "testung")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "einspeisung_neu_130324")
|> filter(fn: (r) => r["_field"] == "einspeisung_hm")
|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
|> sum()
|> yield(name: "werte")Jetzt hab ich den Wert in der DB. Optimal wäre es, den noch z.B. per mqtt ans Smart Home senden zu können, damit dort damit gerechnet werden kann.
-
zu früh gefreut. Während es in influx gut aussieht. Bekomme ich in grafana
keine saubere Anzeige. Kann ich das irgendwie beheben?
-
from(bucket: "testung")
|> range(start: -12h)
|> filter(fn: (r) => r["_measurement"] == "einspeisung_neu_130324")
|> filter(fn: (r) => r["_field"] == "einspeisung_hm")
|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
|> sum()
|> group()
|> yield(name: "werte") -
Hallo, leider wird mit meines Code kein Bardiagramm mit täglichen Werten erzeugt. Irgendwie muss das doch auch möglich sein, kann mir da jmd einen Tipp geben?