Seite 1 von 1

Einschlatzeiten pro Zeiteinheit auswerten

Verfasst: 28. Jan 2024 18:16
von yustbeyourself
Hi,
gibt es eine möglichkeit auswertungen von schaltzuständen in abhängigkeit von zeitabschnitten zu machen. und diese dann in einer rule darauf zu reagieren.

Auswertung BINÄRER werte:
ich möchte wissen wie lange heute das Fenster bereits geöffnet war (wurde schon gelüftet) egal in wievielen zeitabschnitten?
wie lange war der längste zeitraum wo das fenster ununterbrochen geöffnet war?

Auswertung ANALOGER werte:
ich habe die leistung die ein gerät aktuell verbraucht, diese wird geloggt (ich sehe die kurve in der analyse)
wie kann ich abfragen wie viel kwh z.b eine gerät verbraucht hat in der zeit von XX.XX.XXXX XX:XX bis YY.YY.YYYY YY:YY. Mann müste ja die fläche der kurfe ausrechnen?

Re: Einschlatzeiten pro Zeiteinheit auswerten

Verfasst: 29. Jan 2024 09:37
von udo1toni
Also, möglich ist beides, aber eben auch nicht ganz einfach.

Binärer Zustand: meine Herangehensweise wäre, dafür zu sorgen, dass die Zustände als 1 und 0 vorliegen - also meinetwegen Fenster offen = 1, Fenster geschlossen = 0.
Der Zustand wird nun persistiert, und zwar am besten mit rrd4j und der Strategy everyMinute (die ist ohnehin zwingend).
Jetzt kann ich für einen beliebigen Zeitraum den Durchschnittswert auslesen, z.B.

Code: Alles auswählen

val dtStart = now.with(LocalTime.MIDNIGHT)
val dtEnd = now
val nDauer=Duration.between(dtStart,dtEnd).toMinutes
val nPercent = Fenster.avarageBetween(dtStart,dtEnd)
val nMinutes = nPercent * nDauer
logInfo("dauer","von {} bis {} ({} Minuten) war das Fenster {} % ({} Minuten) geöffnet.", dtStart, dtEnd, nDauer, nPercent, nMinutes)
Code ungetestet :) aber in der Theorie sollte das gehen. Der Wert ist natürlich nur angenähert.
Alternativ, da der Wert im Beispiel minütlich als 1 oder 0 gespeichert wird, könnte man auch alle Werte im Zeitraum einfach summieren:

Code: Alles auswählen

val nMinutes = Fenster.sumBetween(dtStart,dtEnd)
Man könnte auch eine Art "Betriebsstundenzähler" realisieren, der streng monoton wachsend die Öffnungsdauer aufsummiert, dann kann man mittels

Code: Alles auswählen

val nMinutes = Fenster.deltaBetween(dtStart,dtEnd)
bestimmen, wie die Differenz der beiden Werte lautet. Allerdings wird man vermutlich immer einen gültigen Bezugswert zu Beginn und Ende des Zeitraumes benötigen.

Schwieriger wird es bei der Energiemenge, wie Du schon richtig erkannt hast, müsste man das Integral der Leistung über die Zeit bestimmen. Mit vermutlich ordentlich Abweichung sollte aber auch hier ein Durchschnittswert helfen, wie schon mit dem "digitalen" Zustand, nur jetzt mit Durchschnittsleistung mal Zeit.
Wie hoch die Abweichung vom Realwert tatsächlich ist, kommt wohl vor allem darauf an, wie dynamisch die Leistung entnommen wird. rrd4j berechnet seine Durchschnittswerte tatsächlich unter Berücksichtigung der Zeitabschnitte, so dass die Werte auch mit einer Strategy everyMinute, everyChange näherungsweise korrekt sein sollten.

Re: Einschlatzeiten pro Zeiteinheit auswerten

Verfasst: 11. Mär 2024 07:05
von Ariee43
Visit the website for the ultimate battle royal experience. Download the game https://ff-advanceservers.com/, explore immersive gameplay, and join millions worldwide in intense, fast-paced action. Survive, be the last one standing, and embrace the excitement of Free Fire!