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?
Einschlatzeiten pro Zeiteinheit auswerten
Moderator: seppy
-
- Beiträge: 10
- Registriert: 28. Dez 2019 01:24
- udo1toni
- Beiträge: 14850
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Einschlatzeiten pro Zeiteinheit auswerten
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 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:
Man könnte auch eine Art "Betriebsstundenzähler" realisieren, der streng monoton wachsend die Öffnungsdauer aufsummiert, dann kann man mittels
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.
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)
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)
Code: Alles auswählen
val nMinutes = Fenster.deltaBetween(dtStart,dtEnd)
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.
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.1, LXC), mit openHABian eingerichtet
-
- Beiträge: 1
- Registriert: 10. Feb 2024 15:06
Re: Einschlatzeiten pro Zeiteinheit auswerten
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!