Seite 1 von 2

Nullwerte NICHT in Durchschnitt (AVRG) mit eingehen

Verfasst: 19. Apr 2023 08:24
von PeterA
Hallo zusammen,

über MQTT bekomme ich den momentanen Leistungswert von der Solaranlage.
Dieser Wert wird über rr4dj persistiert.
Nun möchte ich hierrüber einen Jahresmittelwert bilden wie z.B. so:

Code: Alles auswählen

Leitung_Solar_Aktuell_Avrg.postUpdate(Leitung_Solar_Aktuell.averageSince(now.minusDays(365)).intValue)
Aaaaber es gibt nun mal auch Zeiten wo die Solaranlage 0 Watt erzeugt. Diese Nullwerte verfälschen mir dann den Mittelwert.

Kann man den Mittelwert OHNE Nullwerte bilden lassen ?

Gruß Peter

Re: Nullwerte NICHT in Durchschnitt (AVRG) mit eingehen

Verfasst: 19. Apr 2023 11:01
von EmptySoft
Was verfälscht ist, ist Ansichtssache :) .Wenn der Wert null ist (nicht 0), sollte er nicht im Mittelwert berücksichtigt werden.

Re: Nullwerte NICHT in Durchschnitt (AVRG) mit eingehen

Verfasst: 19. Apr 2023 11:14
von PeterA
Ja das in openHab "NULL" und "null" und "0" Unterschiedliche Dinge sind ist schon klar. :)

Es soll halt nur der Mittelwert gebildet wenn die Leistung "über" 0 Watt liegt...
Das Problem liegt aber eher darin das auch die 0 Werte in der DB Landen.

Gruß
Peter

Re: Nullwerte NICHT in Durchschnitt (AVRG) mit eingehen

Verfasst: 19. Apr 2023 15:34
von EmptySoft
das könntest via transform ändern (bitte selber suchen, weiß ich nicht auswendig)

Re: Nullwerte NICHT in Durchschnitt (AVRG) mit eingehen

Verfasst: 19. Apr 2023 16:01
von PeterA
??
Verstehe ich gerade nicht.

Es kommt ja ein Zahlenwert "0" rein.
Und zwar dann wenn die Solaranlage nichts Produziert und das verfälscht halt den Mittelwert.

Gruß
Peter

Re: Nullwerte NICHT in Durchschnitt (AVRG) mit eingehen

Verfasst: 20. Apr 2023 00:35
von udo1toni
Nein, der Durchschnittswert wird durch die 0-Werte nicht verfälscht.
Nehmen wird an, Du hast im letzten Jahr 3,650 MWh Strom produziert (so ein Zufall aber auch), dann ist der Tagesdurchschnitt 10 kWh. Und in dieser Region sollte der aus der Datenbank errechnete Durchschnitt dann auch liegen. Es spielt dabei keine Rolle, wie viele 0-Werte über welche Zeiträume dabei waren.
Der Stundendurchschnittswert eines Tages, an dem insgesamt 24 kWh produziert wurden, beträgt 1 kWh, ob nun zwei Stunden lang zwölf kW Leistung anlagen oder acht Stunden lang drei kW. Im Gegenteil, wenn Du die 0-Werte nicht berücksichtigst, wird die Berechnung verfälscht.

Ich kenne die Innereien von rrd4j nicht, aber ich gehe davon aus, dass die Durchschnittswerte in einer optimierten Version ermittelt werden, z.B. alle Messwerte des Zeitraums nach Größe sortieren und anschließend mit der Häufigkeit multiplizieren, die Produkte addieren und die Summe durch die Gesamtzahl der Messwerte dividieren, Bei rrd4j muss man natürlich die verschiedenen Auflösungen berücksichtigen, aber das passiert ohnehin alles innerhalb rrd4j, openHAB erfragt lediglich die Werte.

Falls Du nicht nur eine Anzeige der aktuellen Leistung hast, sondern (wie ich) auch die absoluten Zählerstände, wie viele kWh nun tatsächlich geflossen sind, so wäre dieser Zählerstand (bzw. die Differenz zwischen den beiden Grenzzeitpunkten) die schnellste und einfachste Art, den Durchschnitt zu berechnen (und Dich davon zu überzeugen, dass rrd4j die richtigen Werte liefert - oder auch nicht).

Re: Nullwerte NICHT in Durchschnitt (AVRG) mit eingehen

Verfasst: 20. Apr 2023 07:12
von PeterA
Alles klar Udo,

das Verstehe ich. Danke für die Erklärung.

Mir geht es nicht um den Jahresertrag sondern um die aktuelle (momentane) Watt Leistung die Erzeugt wird.
Hier möchte ich den Jahresdurchschnitt wissen ABER nur von der Watt Leistung die auch Erzeugt wird.
Deswegen dachte ich wenn keine Leistung Erzeugt wird soll das nicht mit einfließen....

Gruß
Peter

Re: Nullwerte NICHT in Durchschnitt (AVRG) mit eingehen

Verfasst: 20. Apr 2023 09:41
von EmptySoft
deswegen meinte ich, der Wert ist Ansichtssache. Ich sehe es so wie udo1toni, aber PeterA möchte den Durchschnitt der Leistung sehen, wenn er etwas produziert hat.

Wegen transform, Du kannst openHAB sagen, dass er per transform ankommende Werte zuerst bearbeiten und dann speichern soll, hiermit kannst Du 0 auf null transformieren. Ob der Durchschnittswert in der rrdj4 sich mit null verändert weiß ich nicht (ich verwende MySQL als Persitence)

Re: Nullwerte NICHT in Durchschnitt (AVRG) mit eingehen

Verfasst: 20. Apr 2023 10:26
von udo1toni
Ja, das wird so über die eingebauten Funktionen aber nicht gehen.

Letztlich müsstest Du über den gesamten Messbereich alle Werte untersuchen, und zwar zeitlich sortiert, beginnend mit dem frühesten Wert. Sobald Du auf einen Nicht-Null-Wert stößt, musst Du Dir den Zeitpunkt merken, sobald Du danach auf einen Nullwert stößt, musst Du als Unterroutine die Zeitspanne zwischen dem aktuellen Zeitpunkt (-1) bis zum ersten Nichtnullwert betrachten und den Durchschnitt bestimmen. Diesen Durchschnittswert musst Du zusammen mit der Dauer des Zeitraums abspeichern. Das musst Du nun mit dem restlichen Zeitraum genauso machen. Anschließend musst Du die Durchschnittswerte mit ihren Zeiträumen multiplizieren, die Produkte summieren und die Summe durch die Summe der Zeitraumlängen teilen.

Und dann hast Du eine Zahl, die nichts aussagt. (also, außer, dass sie viel höher ist als die echte Durchschnittsproduktion).
Ich kann den Gedanken dahinter verstehen, möchte aber eher zu einem Diagramm raten, in dem Du die abgegebenen Leistung über die Zeit aufträgst, ohne Durchschnittswert. In openHAB3 kannst Du solche Charts sogar so bauen, dass Werte aus einem Vergleichszeitraum überlagert werden (also z.B. eine Wochenansicht mit der Vorwoche als Vergleich). Und wenn Du jetzt zu Recht fragst, wie das geht, muss ich auch erst nachschauen, ich hab aber mal entsprechenden Code im englischen Forum gefunden und auch erfolgreich ausprobiert, es aber bei mir nicht in Gebrauch...

Re: Nullwerte NICHT in Durchschnitt (AVRG) mit eingehen

Verfasst: 20. Apr 2023 10:37
von PeterA
Danke Udo für die Erläuterung!

Gruß
Peter