Seite 4 von 4

Re: [gelöst] Differenz zwischen zwei Daten in Tagen

Verfasst: 8. Jan 2023 19:15
von Florian.Reinartz
Moin Zusammen,
hallo Udo,

vielleicht hat Du noch mal die Muße mir kurz zu helfen.

Du hattest mir zu Beginn dieses Treads bei der Berechnung der Messdauer geholfen die mein Sonoff POW Daten sammelt.
Das Ergebnis sah so aus:

Code: Alles auswählen

rule "Beginn der Messung Tasmota 032"
    when
        //Time cron "*/30 * * * * ?" or
        Time cron "0 0 * * * ?" or
        Item Tasmota032_Waschmaschine_Messbeginn received update or
        Item Tasmota032_Waschmaschine_Messbeginn changed
    then
        val vDiffNext_Tasmota032 = LocalDate.now.getDayOfYear() - (Tasmota032_Waschmaschine_Messbeginn.state as DateTimeType).getZonedDateTime.getDayOfYear()
        Tasmota032_Waschmaschine_Messdauer.postUpdate(vDiffNext_Tasmota032)
end
und hat bis zum 31.12.2022 auch gut funktioniert.
Nun haben wir 2023 und die Formale mit getDayOfYear funktioniert nicht mehr bzw. ich bekomme negative Zahlen weil der Tag der Inbetriebnahme in der Zukunft liegt. Vor alem der Tages-Durchschnitt ist bei den aktuellen Strompreisen echt unfreundlich.
Bild

Gibt es eine Alternative das vollständige Datum zu vergleichen oder muss ich im Ende jedes Jahr 365 Tage anddieren ... für ein Schaltjahr 366...
Gibt es da eine "einfache" möglichkeit?

Der Inhalt des Items Tasmota032_Waschmaschine_Messbeginn sieht so aus:
2022-01-04T12:15:27.000+0100

Nutze die "Formel" in zwischen für sehr viele Geräte :o

Danke und Gruß
Florian

Re: [gelöst] Differenz zwischen zwei Daten in Tagen

Verfasst: 8. Jan 2023 23:06
von int5749
Florian.Reinartz hat geschrieben: 8. Jan 2023 19:15 Moin Zusammen,

……

und hat bis zum 31.12.2022 auch gut funktioniert.
Nun haben wir 2023 und die Formale mit getDayOfYear funktioniert nicht mehr bzw. ich bekomme negative Zahlen weil der Tag der Inbetriebnahme in der Zukunft liegt.
Hi,

Also DayOfYear is ja der Tag eines Jahres und hat nix mit der Jahreszahl zu tun, somit wird dies nur innerhalb des gleichen Jahres klappen. Ein wenig Google hat mir einen Thread im englischen Forum gebracht.

Probier mal

Code: Alles auswählen


val vDiffNext_Tasmota032 = Duration.between((Tasmota032_Waschmaschine_Messbeginn.state as DateTimeType).zonedDateTime).toDays(), now + 1}


Re: [gelöst] Differenz zwischen zwei Daten in Tagen

Verfasst: 9. Jan 2023 03:00
von udo1toni
Ich verstehe vor allem nicht, warum Du eine dermaßen lange Messung nutzt.

Re: [gelöst] Differenz zwischen zwei Daten in Tagen

Verfasst: 9. Jan 2023 07:19
von int5749
udo1toni hat geschrieben: 9. Jan 2023 03:00 Ich verstehe vor allem nicht, warum Du eine dermaßen lange Messung nutzt.
Dies kommt noch hinzu, wobei das Verhalten bei dieser Formel ja auch bei einer 2 Tage langen Messung auftreten würde, sofern dies von Sylvester bis Neujahr gehen würde. Wäre dann zwar nach einem Tag "korrigiert" aber dennoch "unschön".

Re: [gelöst] Differenz zwischen zwei Daten in Tagen

Verfasst: 14. Jan 2023 02:51
von Florian.Reinartz
Moin Zusammen,

bezüglich
udo1toni hat geschrieben: 9. Jan 2023 03:00 Ich verstehe vor allem nicht, warum Du eine dermaßen lange Messung nutzt.
Die Messung mach mein Sonoff POW mit Tasmota, es belastet also nicht mein openHAB.
Ich versuche heraus zu finden warum wir in einem 4-Personen-Haushalt so viel Strom verbrauchen.
Nun habe ich mehrere Messgeräte installiert um Stromfresser zu finden.
Die Heizung verbraucht in der Heizperiode z.B. mehr als im Sommer und dazu kommt noch dass nicht jeder Winter gleich ist. Umgekehrt verhält es sich mit dem Pool, der ist im Winter außer Betrieb. Lass ich ihn im Herbst einfach weiter laufen in der Hoffnung, dass es noch mal warm wird oder ist jeder Tag viel Geld. Das Aquarium hat eh einen hohen Verbrauch aber liegt es am Licht oder mehr an der elektr. Heizung...
Wie verändert sich der Strombedarf des Aquariums über das Jahr (Dunkle Jahreszeit, Kälte, Hitze im Sommer).
Eine Messung über ein paar Tage oder Wochen spiegelt also keine echten Durchschnitte wieder.
Über vieviel Geld reden wir hier hier eigentlich??? Was verbrauch ein Trochner im Jahr oder pro Ladung...

So habe ich z.B. heraus gefunden, das unser Kühlschrank im Jahr etwa 250 EUR Strom verbrauch hat (Der neue Kühlschrank verbraucht nur 20% der Energie).

Der Sonoff POW stellt mir die Info zur Verfügung seit wann er Daten sammelt und der Gesamtverbrauch kommt ebenfalls vom Sonoff POW.
OpenHAB soll nur Tagesdurchschnitt ermitteln.

Leider funktioniert die Methode von int5749 nicht und ich erkenne den Fehler nicht:
int5749 hat geschrieben: 8. Jan 2023 23:06 Hi,

Also DayOfYear is ja der Tag eines Jahres und hat nix mit der Jahreszahl zu tun, somit wird dies nur innerhalb des gleichen Jahres klappen. Ein wenig Google hat mir einen Thread im englischen Forum gebracht.

Probier mal

Code: Alles auswählen


val vDiffNext_Tasmota032 = Duration.between((Tasmota032_Waschmaschine_Messbeginn.state as DateTimeType).zonedDateTime).toDays(), now + 1}

Vielleicht hat jemand noch eine Idee.

Danke und Gruß
Florian

Re: [gelöst] Differenz zwischen zwei Daten in Tagen

Verfasst: 14. Jan 2023 14:44
von udo1toni
Wozu man Langzeitmessungen macht ist hier jedem klar :) Es ging eher um die Sinnhaftigkeit der Formel als solcher.

In openHAB ist es so, dass Du die Daten schon in einer Datenbank in openHAB vorliegen haben musst, um mit historischen Daten rechnen zu können. Es mag sein, dass Du den POW gezielt nach Daten fragen kannst, aber der Aufwand dafür ist immens und openHAB stellt keinerlei Funktionen dafür bereit, Du musst also alles zu Fuß machen, das heißt, Du musst für Start- und Zielzeitpunkt die Abfrage bestimmen, anschließend die Abfrage in den POW schicken und dann die Differenz ausrechnen (oder vielleicht liefert der POW die auch direkt), aber die Daten müssen alle einzeln ermittelt werden. Du wirst keine Grafik dafür bekommen.
Wenn die Daten hingegen von openHAB persistiert sind, kannst Du Dir eine grafische Darstellung des Verbrauchs über die Zeit anschauen, für einen "beliebigen" Zeitraum (innerhalb der durch openHAB vorgegebenen Grenzen), Du kannst Dir Maps ausgeben lassen (in denen Du z.B. eine Wochentagsabhängigkeit erkennen kannst, oder auch eine Monatsabhängigkeit, und das alles ohne eine Zeile Programmcode zu schreiben. Und natürlich ist es auch immer noch möglich, mit einer Rule z.B. den aktuellen Verbrauch, den Verbrauch der aktuellen KW, den Verbrauch im Monat, im Jahr auszugeben.

Ach so... Es ist auch möglich, zwei Zeiträume miteinander zu vergleichen oder sekundäre Daten zusätzlich einzublenden, z.B. Verbrauch Heizung + Außentemperatur.