Seite 1 von 1

Problem Daten am Tag zu persistieren

Verfasst: 28. Mär 2020 13:07
von int5749
Hallo zusammen,

ich habe eine PV Anlage und möchte die Daten des Eigenverbrauchs gegenüber Einspeisung und Bezug persistieren, was im Grundsatz auh funktioniert.
Der Parameter steht auf daily, und es erfolgt eigentlich auch daily, aber manchmal leider kurz nach Mitternacht, was dann schon der nächste Tag ist. Dann erfolgt am gleichen Tag noch um 23:59 der nächste EIntrag und schon ist der Wert verfälscht :(

Beispiel

Code: Alles auswählen

2020-03-24 23:59:33.267
2020-03-25 00:00:02.954
2020-03-26 00:00:29.309
2020-03-26 23:59:36.794
2020-03-27 00:00:00.514
2020-03-27 23:59:26.161
2020-03-28 00:00:01.644
Kann ich dies irgendwie festlegen auf 23:59:59 ??

Viele Grüße,

Jörg

Re: Problem Daten am Tag zu persistieren

Verfasst: 29. Mär 2020 22:39
von udo1toni
Wie hast Du denn daily definiert?

Re: Problem Daten am Tag zu persistieren

Verfasst: 29. Mär 2020 22:59
von int5749
udo1toni hat geschrieben: 29. Mär 2020 22:39 Wie hast Du denn daily definiert?
Strategies {
everyMinute : "0 * * * * ?"
everyHour : "0 0 * * * ?"
everyDay : "0 0 0 * * ?"

// if no strategy is specified for an item entry below, the default list will be used
default = everyChange
}
Aber manchmal ist es eben vor 0:00 und manchmal nach :-/

Re: Problem Daten am Tag zu persistieren

Verfasst: 30. Mär 2020 09:47
von udo1toni
Ich sehe da ein everyDay, aber kein daily.

Gesendet von meinem SM-G973F mit Tapatalk


Re: Problem Daten am Tag zu persistieren

Verfasst: 30. Mär 2020 10:17
von int5749
udo1toni hat geschrieben: 30. Mär 2020 09:47 Ich sehe da ein everyDay, aber kein daily.
Nun hast Du mich, ich dachte dies wäre das gleiche :roll: in den Samples habe ich auch kein daily gefunden.
Selbst Google liefert mir dazu nichts brauchbares.
Wer everyNight : "0 59 23 * * ?" noch eine bessere Alternative??

Re: Problem Daten am Tag zu persistieren

Verfasst: 30. Mär 2020 14:51
von udo1toni
Gut, nochmal andersrum. wie sieht denn die Persistence für das Item aus? Hast Du dort tatsächlich everyDay angegeben, oder daily?

Re: Problem Daten am Tag zu persistieren

Verfasst: 30. Mär 2020 16:04
von int5749
udo1toni hat geschrieben: 30. Mär 2020 14:51 Gut, nochmal andersrum. wie sieht denn die Persistence für das Item aus? Hast Du dort tatsächlich everyDay angegeben, oder daily?

Code: Alles auswählen

	House_Energy_Chart* : strategy = everyDay,restoreOnStartup
	House_Energy_Import_Day : strategy = everyDay,restoreOnStartup
;)

Re: Problem Daten am Tag zu persistieren

Verfasst: 30. Mär 2020 16:30
von udo1toni
Hast Du viele Dinge, die um Mitternacht passieren? Ich würde erwarten, dass die persistierten Daten regelhaft vielleicht um ein paar hundert Millisekunden nach Mitternacht eintrudeln, keinesfalls aber vor Mitternacht oder weit nach Mitternacht. Eine dermaßen große Streuung deutet auf Performanceprobleme hin, was meist auf die unglückliche Wahl von Triggern zurückzuführen ist. Ändere für everyDay den Time Cron Ausdruck ruhig ab (und benenne ihn gerne auf everyNight oder everyMidnight um ;) )
Welche Plattform nutzt Du?

Re: Problem Daten am Tag zu persistieren

Verfasst: 30. Mär 2020 18:37
von int5749
Hallo Udo,

OK, dann noch ein paar Fragen von mir ;-)

1) Umbenennen => OK, werde ich machen, passt wahrscheinlich von Ausdruck besser. Aber warum und wie würdest Du einen Daily oder auch everyDay konfigurieren

2) Bei mir läuft dies auf einem Windows PC mit Windows 7, der nur das macht, nix anderes. Ein RasPi hatte ich mal vor einigen Jahren. Da hatte ich Performance Probleme und einige Male musste ich den hart ausschalten, was mir 2x eine SD Karte gecrashed hat. Ausserdem müsste ich dann noch Lunix ;-) lernen, was mir nicht liegt und dies nur für openHAB wäre.

3) selbst wenn es denn ein paar Millisekunden nach Mitternacht wäre, würde das ja immer um einen Tag verschoben sein. Würde da nicht 23:59:45 oder so besser passen??

4) Es laufen um Mitternacht nur 2 Dinge "Berechnung Feiertage" (Früher Holiday.script und nun Ephemeris) und 4 Werte werden auf 0 gesetzt. Beides könnte ich sicher (zum testen oder auch dauerhaft) verschieben, wenn 3 keinen Sinn macht.

Code: Alles auswählen

rule Feiertage
when
    Time cron "0 0 0 * * ?" or
    System started
then
//    callScript("holiday")
//    postUpdate(SpecialDay,now.getDayOfWeek)
//	logInfo("Holiday","Heute ist {}",SpecialDay.state)
    if (Ephemeris.isBankHoliday(new DateTimeType().zonedDateTime.plusDays(0), 'd:/OpenHAB/conf/services/holidays_de.xml') == true) {
    	postUpdate(TodayIs, Ephemeris.getHolidayDescription(Ephemeris.getBankHolidayName(new DateTimeType().zonedDateTime.plusDays(0), 'd:/OpenHAB/conf/services/holidays_de.xml')))
    	postUpdate(Holiday, ON)
    } else if (Ephemeris.isBankHoliday(new DateTimeType().zonedDateTime.plusDays(0), 'd:/OpenHAB/conf/services/holidays_de.xml') == false && Ephemeris.isBankHoliday(new DateTimeType().zonedDateTime.plusDays(0), 'd:/OpenHAB/conf/services/specialdays.xml') == true) {
    	postUpdate(TodayIs, Ephemeris.getHolidayDescription(Ephemeris.getBankHolidayName(new DateTimeType().zonedDateTime.plusDays(0), 'd:/OpenHAB/conf/services/specialdays.xml')))
    	postUpdate(Holiday, OFF)
    } else {
    	postUpdate(TodayIs, Datum.state.format("%1$tA, %1$td.%1$tm.%1$ty"))
    	postUpdate(Holiday, OFF)
    }
    logInfo("Ephemeris", "Heute ist: {}", TodayIs.state)
end

rule "Reset um Mitternacht"
when
	Time is midnight
then
    sonneost.postUpdate(0)
	sonnesued.postUpdate(0)
	sonnewest.postUpdate(0)
	SonneS_aus.postUpdate(1)
end
Gruß, Jörg

Re: Problem Daten am Tag zu persistieren

Verfasst: 30. Mär 2020 22:59
von udo1toni
Also, gewöhnlich legt man die Persistenz so an, dass sie tut, was sie tun soll ;) Wenn Du täglich einmal einen Wert gespeichert haben möchtest, und dieser Wert soll vor Mitternacht gespeichert werden, dann musst Du natürlich einen entsprechenden Eintrag anlegen, also z.B. so:

Code: Alles auswählen

Strategies {
everyMinute : "0 * * * * ?"
everyHour : "0 0 * * * ?"
everyDay : "0 0 0 * * ?"
everyMidnight : "59 59 23 * * ?" // oder auch noch etwas davor...

// if no strategy is specified for an item entry below, the default list will be used
default = everyChange
}
Items {
	House_Energy_Chart* : strategy = everyMidnight,restoreOnStartup
	House_Energy_Import_Day : strategy = everyMidnight,restoreOnStartup
}