Ich will einen realistischen Mittelwert aus der Datenbank lesen. Mit "avg" liest der mir ja nur den Mittelwert der gespeicherten werden. Wenn aber der Wert für sagen wir mal 20 h auf 100 steht und für 4 Stunden auf 0, hätte ich wohl auch nur einen Mittelwert von 50. Mich interessiert aber der zeitabhängige Mittelwert. Wie bekomme ich den ermittelt, ohne alle paar Minuten den Wert wieder in die Datenbank zu schreiben?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Mittelwert Database
Einklappen
X
-
Moin Cannon ,
die Query im database plugin sieht folgendermaßen aus:
Das heißt, dass die Einzelwerte in jedem Abtastintervall mit ihrer jeweiligen Dauer gewichtet werden. Mit Abtastintervall wird die Dauer des Beobachtungszeitraums (plot.period -> duration) geteilt durch die Anzahl der Werte (plot.period -> count) bezeichnet. Das Ergebins Deines Beispiels ist 83,33, wenn das Abtastintervall = 24 h ist.Code:'avg': 'MIN(time), ' + self._precision_query('AVG(val_num * duration) / AVG(duration)'),
Gruß
Wolfram
-
Wie geil ist das denn. Da ist wohl an alles gedacht wurden. Großen Respekt für das plugin.Zitat von wvhn Beitrag anzeigenDas heißt, dass die Einzelwerte in jedem Abtastintervall mit ihrer jeweiligen Dauer gewichtet werden.
Ich schaue mir das noch mal im Verlauf der Daten an.
Vielleicht kann ich noch eine Frage ergänzen. Wie bekomme ich die Werte des heutigen Tages angezeigt, also quasi nur ab Mitternacht?
Kommentar
-
Ich find's im Code nicht. Zumindest nicht in der aktuellen Master-Version.Zitat von aldaris Beitrag anzeigenBy passing 'day', the plot is shown from 0:00 until 24:00 on the day starting after tmin. Set tmin to '24h' or '1d' for today, '48h' or '2d' for yesterday and so on.
Was ist gemeint mit By passing 'day' ? Denn normerweise geben '24h' und '1d' wirklich 24 Stunden an, laut Doku zumindest. Sicher, dass du SmartHomeNG und nicht die SmartVISU meinst?
Kommentar
-
Habs jetzt hingebastelt. Hier mal ein Beispiel, wer evtl. mal die Werte seit Mitternacht (also nur heute) braucht:
P.S.:Code:jetzt = sh.now() minuten_seit_mitternacht = jetzt.hour * 60 + jetzt.minute soc_level_min_heute = sh.Zentral.Energie.Speicher.SOC.db('min', str(minuten_seit_mitternacht) + 'i') soc_level_max_heute = sh.Zentral.Energie.Speicher.SOC.db('max', str(minuten_seit_mitternacht) + 'i') soc_level_avg_heute = sh.Zentral.Energie.Speicher.SOC.db('avg', str(minuten_seit_mitternacht) + 'i')
Danke dennoch für die Mühe!Zitat von aldaris Beitrag anzeigenHi, sry, mein Fehler.Zuletzt geändert von Cannon; 04.11.2024, 22:34.
Kommentar
-
Ja wohl auch ein Weg. Sollte dann aber auch so gehen - zumindest in der Theorie:Zitat von Onkelandy Beitrag anzeigendas hier könnte hilfreich sein: https://smarthomeng.github.io/dev_do...zeitdaten.html
Code:soc_level_min_heute = sh.Zentral.Energie.Speicher.SOC.db('min', sh.minute.since.midnight.dbstr()) soc_level_max_heute = sh.Zentral.Energie.Speicher.SOC.db('max', sh.minute.since.midnight.dbstr()) soc_level_avg_heute = sh.Zentral.Energie.Speicher.SOC.db('avg', sh.minute.since.midnight.dbstr())
- Likes 1
Kommentar


Kommentar