[98_statistics] Modul hinkt scheinbar hinterher

Begonnen von andi11, 01 November 2021, 08:05:34

Vorheriges Thema - Nächstes Thema

andi11

Hallo,
bisher hat mein Statistics Modul wunderbar gearbeitet. Aber jetzt scheint es irgendwie zu hacken (bei mehreren Devices).
Eigentlich hätte es Heute, 1.11.2021 doch den Monatswert auf 0 setzen müssen, und in .*Last ersetzen?
Reminder: Gestern war Uhrenumstellung. Mitte diesen Monats hab ich einige Readings die das Statistics Modul zu sehen kriegt abgeändert von Ganzahl auf 1 Nachkomma.

Ein doStatistics hat nichts gebracht.

statTotal-get
Hour: 0.0 Day: 1.8 Month: 169.6 Year: 455.6 (since: 2021-05-31 )
2021-11-01 08:00:05
statTotal-getLast
Hour: 0.2 Day: 4.1 Month: 76 Year: -
2021-11-01 07:59:55


List Statistics

List Internals:
   DEF        (Stromverbrauch.*|Heizung|HOURCNT.*|Wasserverbrauch_Zaehler1|DUMMY_PV)
   DEV_REGEXP (Stromverbrauch.*|Heizung|HOURCNT.*|Wasserverbrauch_Zaehler1|DUMMY_PV)
   FUUID      5ccd6a7e-f33f-e34d-55f6-5583a0c67d1dfd06
   NAME       STATISTICS_STROMVERBRAUCH
   NOTIFYDEV  global,(Stromverbrauch.*|Heizung|HOURCNT.*|Wasserverbrauch_Zaehler1|DUMMY_PV)
   NR         133
   NTFY_ORDER 10-STATISTICS_STROMVERBRAUCH
   PREFIX     stat
   STATE      Updated stats for: Wasserverbrauch_Zaehler1
   TYPE       statistics
   READINGS:
     2021-11-01 07:49:16   monitoredDevicesHourCounter HOURCNT_Aussen_Rasenbewaesserung,HOURCNT_Aussen_Ventil2,HOURCNT_Aussen_Ventil3,HOURCNT_Heizung_Bad,HOURCNT_Heizung_Hochbeet
     2021-11-01 07:49:16   monitoredDevicesKNX Stromverbrauch_Zaehler1,Stromverbrauch_Zaehler1_EHZ,Stromverbrauch_Zaehler2,Stromverbrauch_Zaehler3,Stromverbrauch_Zaehler4,Stromverbrauch_Zaehler5
     2021-11-01 07:49:16   monitoredDevicesUnsupported Heizung#LUXTRONIK2,Stromverbrauch_Zaehler2_EHZ#KNX
     2021-11-01 07:49:15   monitoredDevicesWMBUS Wasserverbrauch_Zaehler1
     2021-11-01 07:49:16   monitoredDevicesdummy DUMMY_PV,Stromverbrauch_Zaehler10,Stromverbrauch_Zaehler11
     2021-11-01 07:59:55   nextPeriodChangeCalc 2021-11-01 08:59:55
     2021-11-01 08:03:30   state           Updated stats for: Wasserverbrauch_Zaehler1
   fhem:
     modulVersion $Date: 2019-12-24 00:07:57 +0100 (Tue, 24 Dec 2019) $
     nextPeriodChangeTime 1635753595
Attributes:
   DbLogExclude .*
   deltaReadings total,total-get,tarif1-get,tarif2-get,ueberschuss-total-get,KwhOverall,waterOverall,verbrauch,total-all-get,Eigenverbrauch
   durationPeriodHour 1
   ignoreDefaultAssignments 1


Rawdef:
defmod STATISTICS_STROMVERBRAUCH statistics (Stromverbrauch.*|Heizung|HOURCNT.*|Wasserverbrauch_Zaehler1|DUMMY_PV)
attr STATISTICS_STROMVERBRAUCH DbLogExclude .*
attr STATISTICS_STROMVERBRAUCH deltaReadings total,total-get,tarif1-get,tarif2-get,ueberschuss-total-get,KwhOverall,waterOverall,verbrauch,total-all-get,Eigenverbrauch
attr STATISTICS_STROMVERBRAUCH durationPeriodHour 1
attr STATISTICS_STROMVERBRAUCH ignoreDefaultAssignments 1

setstate STATISTICS_STROMVERBRAUCH Updated stats for: Wasserverbrauch_Zaehler1
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:03:25 .DUMMY_PV:Eigenverbrauch LastValue: 1505.47 ShowDate: 2 DecPlaces: 2
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:03:25 .DUMMY_PV:total-all-get LastValue: 5322.550 ShowDate: 2 DecPlaces: 3
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:00:00 .HOURCNT_Aussen_Rasenbewaesserung:waterOverall LastValue: 4970.91 ShowDate: 2 DecPlaces: 2
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:00:00 .HOURCNT_Aussen_Ventil2:waterOverall LastValue: 291.11 ShowDate: 2 DecPlaces: 2
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:00:00 .HOURCNT_Aussen_Ventil3:waterOverall LastValue: 291.16 ShowDate: 2 DecPlaces: 2
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:00:00 .HOURCNT_Heizung_Bad:KwhOverall LastValue: 38.99 ShowDate: 2 DecPlaces: 2
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:00:00 .HOURCNT_Heizung_Hochbeet:KwhOverall LastValue: 0.00 ShowDate: 2 DecPlaces: 2
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:03:23 .Stromverbrauch_Zaehler10:total-get LastValue: 5322.570 ShowDate: 2 DecPlaces: 3
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:03:25 .Stromverbrauch_Zaehler11:total-get LastValue: 2519.160 ShowDate: 2 DecPlaces: 3
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:03:23 .Stromverbrauch_Zaehler1:total-get LastValue: 3292.620 ShowDate: 2 DecPlaces: 3
setstate STATISTICS_STROMVERBRAUCH 2021-10-26 06:02:05 .Stromverbrauch_Zaehler1_EHZ:tarif1-get LastValue: 118764624 ShowDate: 2 DecPlaces: 0
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:03:26 .Stromverbrauch_Zaehler1_EHZ:total-get LastValue: 11920.6 ShowDate: 2 DecPlaces: 1
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:03:26 .Stromverbrauch_Zaehler1_EHZ:ueberschuss-total-get LastValue: 1213.9 ShowDate: 2 DecPlaces: 1
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:03:24 .Stromverbrauch_Zaehler2:total-get LastValue: 2008.610 ShowDate: 2 DecPlaces: 3
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:03:24 .Stromverbrauch_Zaehler3:total-get LastValue: 1996.730 ShowDate: 2 DecPlaces: 3
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:03:25 .Stromverbrauch_Zaehler4:total-get LastValue: 522.430 ShowDate: 2 DecPlaces: 3
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:03:25 .Stromverbrauch_Zaehler5:total-get LastValue: 21.340 ShowDate: 2 DecPlaces: 3
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:03:30 .Wasserverbrauch_Zaehler1:verbrauch LastValue: 344.555 ShowDate: 2 DecPlaces: 3
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 07:49:16 monitoredDevicesHourCounter HOURCNT_Aussen_Rasenbewaesserung,HOURCNT_Aussen_Ventil2,HOURCNT_Aussen_Ventil3,HOURCNT_Heizung_Bad,HOURCNT_Heizung_Hochbeet
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 07:49:16 monitoredDevicesKNX Stromverbrauch_Zaehler1,Stromverbrauch_Zaehler1_EHZ,Stromverbrauch_Zaehler2,Stromverbrauch_Zaehler3,Stromverbrauch_Zaehler4,Stromverbrauch_Zaehler5
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 07:49:16 monitoredDevicesUnsupported Heizung#LUXTRONIK2,Stromverbrauch_Zaehler2_EHZ#KNX
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 07:49:15 monitoredDevicesWMBUS Wasserverbrauch_Zaehler1
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 07:49:16 monitoredDevicesdummy DUMMY_PV,Stromverbrauch_Zaehler10,Stromverbrauch_Zaehler11
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 07:59:55 nextPeriodChangeCalc 2021-11-01 08:59:55
setstate STATISTICS_STROMVERBRAUCH 2021-11-01 08:03:30 state Updated stats for: Wasserverbrauch_Zaehler1



List eines betroffenen Devices
Internals:
   DEF        6/6/10:dpt13.013:totalin 6/6/12:dpt13.013:tarif2 6/6/30:dpt13.013:ueberschuss-totalin 6/6/13:dpt13.010:aktuellerverbrauchin
   DEVNAME    Stromverbrauch_Zaehler1_EHZ
   FIRSTGADNAME totalin
   FUUID      5ccd6a7e-f33f-e34d-842a-88a7d3c83c93d448
   GETSTRING  totalin:noArg tarif2:noArg aktuellerverbrauchin:noArg ueberschuss-totalin:noArg
   IODev      tul
   LASTInputDev tul
   MSGCNT     14
   NAME       Stromverbrauch_Zaehler1_EHZ
   NR         129
   SETSTRING  totalin:slider,-2147483648,42949672,2147483647 tarif2:slider,-2147483648,42949672,2147483647 aktuellerverbrauchin:slider,-2147483648,42949672,2147483647 ueberschuss-totalin:slider,-2147483648,42949672,2147483647
   STATE      11920.6 1213.9 0.221
   TYPE       KNX
   model      dpt13
   tul_MSGCNT 14
   tul_RAWMSG C011c9w0660d000000dd
   tul_TIME   2021-11-01 08:07:53
   GADDETAILS:
     aktuellerverbrauchin:
       CODE       0660d
       GROUP      6/6/13
       MODEL      dpt13.010
       NO         4
       OPTION     
       RDNAMEGET  aktuellerverbrauchin-get
       RDNAMEPUT  aktuellerverbrauchin-put
       RDNAMESET  aktuellerverbrauchin-set
       SETLIST    :slider,-2147483648,42949672,2147483647
     tarif2:
       CODE       0660c
       GROUP      6/6/12
       MODEL      dpt13.013
       NO         2
       OPTION     
       RDNAMEGET  tarif2-get
       RDNAMEPUT  tarif2-put
       RDNAMESET  tarif2-set
       SETLIST    :slider,-2147483648,42949672,2147483647
     totalin:
       CODE       0660a
       GROUP      6/6/10
       MODEL      dpt13.013
       NO         1
       OPTION     
       RDNAMEGET  totalin-get
       RDNAMEPUT  totalin-put
       RDNAMESET  totalin-set
       SETLIST    :slider,-2147483648,42949672,2147483647
     ueberschuss-totalin:
       CODE       0661e
       GROUP      6/6/30
       MODEL      dpt13.013
       NO         3
       OPTION     
       RDNAMEGET  ueberschuss-totalin-get
       RDNAMEPUT  ueberschuss-totalin-put
       RDNAMESET  ueberschuss-totalin-set
       SETLIST    :slider,-2147483648,42949672,2147483647
   GADTABLE:
     0660a      totalin
     0660c      tarif2
     0660d      aktuellerverbrauchin
     0661e      ueberschuss-totalin
   Helper:
     DBLOG:
       aktuellerverbrauch-get:
         logdb:
           TIME       1635750473.20211
           VALUE      0.221
       aktuellerverbrauchin-get:
         logdb:
           TIME       1635750473.20211
           VALUE      221
       statTotal-get:
         logdb:
           TIME       1635750473.20211
           VALUE      Hour: 0.1 Day: 1.9 Month: 169.7 Year: 455.7 (since: 2021-05-31 )
       statTotal-getLast:
         logdb:
           TIME       1635749995.22439
           VALUE      Hour: 0.2 Day: 4.1 Month: 76 Year: -
       statUeberschuss-total-get:
         logdb:
           TIME       1635750473.20211
           VALUE      Hour: 0.0 Day: 0.0 Month: 29.9 Year: 675.9 (since: 2021-05-31 )
       statUeberschuss-total-getLast:
         logdb:
           TIME       1635749995.22439
           VALUE      Hour: 0.0 Day: 0.4 Month: 127 Year: -
       state:
         logdb:
           TIME       1635750473.20211
           VALUE      221
   READINGS:
     2021-11-01 08:07:53   Einspeiseverguetung Day: 0.00€ Month: 2.69€ Year: 60.83€
     2021-11-01 07:49:10   EinspeisungDay  0.4
     2021-11-01 07:49:10   EinspeisungLastMonth 29.9
     2021-11-01 08:07:53   ForecastAktMonth 3818
     2021-11-01 07:49:10   IODev           tul
     2021-11-01 07:49:10   VerbrauchLastMonth 76
     2021-11-01 08:07:53   aktuellerverbrauch-get 0.221
     2021-11-01 08:07:53   aktuellerverbrauchin-get 221 Wh
     2021-11-01 08:07:53   last-sender     1.1.201
     2021-11-01 08:07:53   statTotal-get   Hour: 0.1 Day: 1.9 Month: 169.7 Year: 455.7 (since: 2021-05-31 )
     2021-11-01 07:59:55   statTotal-getLast Hour: 0.2 Day: 4.1 Month: 76 Year: -
     2021-11-01 08:07:53   statUeberschuss-total-get Hour: 0.0 Day: 0.0 Month: 29.9 Year: 675.9 (since: 2021-05-31 )
     2021-11-01 07:59:55   statUeberschuss-total-getLast Hour: 0.0 Day: 0.4 Month: 127 Year: -
     2021-11-01 08:07:53   state           221 Wh
     2021-11-01 08:03:26   total-get       11920.6
     2021-11-01 08:03:26   totalin-get     119205795 kWh
     2021-11-01 07:49:10   ueberschuss-total-get 1213.9
     2021-11-01 07:49:10   ueberschuss-totalin-get 12139353 kWh
   helper:
     _98_statistics STATISTICS_STROMVERBRAUCH
Attributes:
   DbLogExclude .*
   DbLogInclude .*(stat|VerbrauchLastMonth|EinspeisungDay|EinspeisungLastMonth|aktuellerverbrauch).*
   IODev      tul
   room       Technik
   stateFormat total-get ueberschuss-total-get aktuellerverbrauch-get
   userReadings aktuellerverbrauch-get:aktuellerverbrauchin-get.* { sprintf("%.3f",ReadingsNum($name,"aktuellerverbrauchin-get",0)/1000); },
total-get:totalin-get.* { sprintf("%.1f",ReadingsNum($name,"totalin-get",0)/10000); },
ueberschuss-total-get:ueberschuss-totalin-get.* { sprintf("%.1f",ReadingsNum($name,"ueberschuss-totalin-get",0)/10000); },
ForecastAktMonth:statTotal-get.* {calcmonthusageSplit($name,"statTotal-get",5)},
Einspeiseverguetung:statUeberschuss-total-get.* {sprintf("Day: %.2f€ Month: %.2f€ Year: %.2f€",((split(" ", (ReadingsVal($name,"statUeberschuss-total-get",""))))[3])*0.09,((split(" ", (ReadingsVal($name,"statUeberschuss-total-get",""))))[5])*0.09,((split(" ", (ReadingsVal($name,"statUeberschuss-total-get",""))))[7])*0.09)}
   webCmd     :



genatic

Moin,
ich kann das Problem bestätigen - ist bei mir genauso.
Kann man die Monatsberechnung irgendwie manuell anstoßen?
Grüße

andi11

Sind bei dir auch Stunden und Tagewechsel korrekt gesetzt?

KölnSolar

#3
Ich kann leider auch nur bestätigen, dass der Wechsel nicht stattgefunden hat. Es ist weder ein Problem eines Updates, noch gibt es bei mir "Modifikationen" in letzter Zeit. Es muss mit der Zeitumstellung zusammenhängen.  :'(
Interessant sind die timestampssetstate RPi_OW_TA 2021-11-01 09:04:27 statTemperatureDay Min: 9.062 Avg: 10.460 Max: 12.000
setstate RPi_OW_TA 2021-10-31 22:59:55 statTemperatureDayLast Min: 9.187 Avg: 13.245 Max: 18.375
setstate RPi_OW_TA 2021-11-01 09:04:27 statTemperatureMonth Min: 3.437 Avg: 12.239 Max: 21.562
setstate RPi_OW_TA 2021-09-30 23:59:55 statTemperatureMonthLast Min: 8.500 Avg: 18.155 Max: 29.250
setstate RPi_OW_TA 2021-11-01 09:04:27 statTemperatureYear Min: -8.750 Avg: 12.941 Max: 35.812
setstate RPi_OW_TA 2020-12-31 23:59:55 statTemperatureYearLast Min: -2.812 Avg: 13.342 Max: 38.312

Grüße Markus
Edit: Ich hab tupol auch per PN benachrichtigt.
Edit2: ein weiterer Betroffener
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

KölnSolar

Um die statistischen Werte evtl. später wieder bereinigen zu können, habe ich mir meine fhem.save mal gesichert, um einen definierten Stand zu haben, wo die statistischen Daten noch nicht zu sehr verfälscht sind.
Vorgehensweise:
1. Wer es nicht sowieso regelmäßig macht: {WriteStatefile} sichert den aktuellen Stand der readings in der fhem.save(wie das bei DBLog-Nutzern ist, weiß ich nicht  :'( )
2. Backup(Entweder FHEM komplett oder nur die fhem.save) je nach persönlicher Vorgehensweise

Ein shutdown oder rereadcfg....von FHEM würde ich vorerst vermeiden, um unerwünschte Nebeneffekte auszuschließen.

Harren wir mal einer Lösung....
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

andi11

#5

01.11.2021 00:03 statTotal-get: Hour: 0.0 Day: 0.4 Month: 168.2 Year: 454.2 (since: 2021-05-31 )
01.11.2021 00:00 statTotal-get: Hour: 0.0 Day: 0.4 Month: 168.2 Year: 454.2 (since: 2021-05-31 )
01.11.2021 00:00 statTotal-get: Hour: 0.0 Day: 0.4 Month: 168.2 Year: 454.2 (since: 2021-05-31 )
31.10.2021 23:59 statTotal-get: Hour: 0.0 Day: 0.4 Month: 168.2 Year: 454.2 (since: 2021-05-31 )
31.10.2021 23:59 statTotal-get: Hour: 0.0 Day: 0.4 Month: 168.2 Year: 454.2 (since: 2021-05-31 )
31.10.2021 23:09 statTotal-get: Hour: 0.0 Day: 0.0 Month: 167.8 Year: 453.8 (since: 2021-05-31 )
31.10.2021 22:59 statTotal-get: Hour: 0.0 Day: 0.0 Month: 167.8 Year: 453.8 (since: 2021-05-31 )
31.10.2021 22:57 statTotal-get: Hour: 0.2 Day: 4.1 Month: 167.8 Year: 453.8 (since: 2021-05-31 )
31.10.2021 22:54 statTotal-get: Hour: 0.2 Day: 4.1 Month: 167.8 Year: 453.8 (since: 2021-05-31 )

Auszug aus meiner Datenbank (etwas ausgemistet) vom Reading. Mehr Infos habe ich leider nicht, da verbose auf default steht.

So wie es hier aussieht würde ich sagen dass am 31.10 23Uhr der Tageswechsel gesetzt wurde, und nicht um 0Uhr. Spekulation: Um 23Uhr gibt es auch keinen Monatswechsel oder?

Hab mir den Sourcecode mal angeschaut, teilweise echt pfiffig programmiert aber da wird soviel mit Zeiten gerechnet dass ich einfach nicht klarkomme.

tupol

Sorry. Hab schon lange nichts mehr in FHEM gemacht. Was genau ist passiert? Welchen Wert/Verhalten hättet ihr erwartet? Welche ist gekommen?


tupol
FHEM 5.5 auf RPi B Rev.2 (mit LCD4Linux, BMP180 und CUL v3 868.35 MHz), FB7490, Fritz!DECT 200, FS20, FHT80TF-2, S300TH, KS300, Homematic, PRESENCE
Modul-Entwickler von: FRITZBOX, statistics, PROPLANTA, OPENWEATHER, JSONMETER, LUXTRONIK2

andi11

Zitat von: tupol am 01 November 2021, 10:52:11
Sorry. Hab schon lange nichts mehr in FHEM gemacht. Was genau ist passiert? Welchen Wert/Verhalten hättet ihr erwartet? Welche ist gekommen?
tupol

Danke für deine Antwort. Erwartet hätte ich dass der Wert von Month vom aktuellen Statreading in das StatLast Reading kopiert wird.
=> Scheinbar wurde der Monatswechsel nicht erkannt, bzw. laut meinem DB Auszug könnte es auch sein dass der Wechselcheck eine Stunde zu früh passiert ist, und damit gab es keinen Monatswechsel

betateilchen

Zitat von: KölnSolar am 01 November 2021, 10:09:53
sichert den aktuellen Stand der readings in der fhem.save(wie das bei DBLog-Nutzern ist, weiß ich nicht

Das Sichern des statefile hat mit DBLog ungefähr so viel zu tun, wie eine Kuh mit Strahlenschutz. Nix.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

KölnSolar

Hi tupol,
danke, dass Du Dich gemeldet hast.
ZitatWas genau ist passiert? Welchen Wert/Verhalten hättet ihr erwartet? Welche ist gekommen?
Oben hatte ich ja bereits den Extrakt eines devices. Aus den Daten interpretiere ich:
- es hat kein Monatswechsel stattgefunden(Tageswe chsel scheinbar schon, aber eine Stunde zu früh[hier sicherlich wg. Zeitumstellung = 25 Std.])
- am month-Wert(maxTemp=21,562) sieht man, dass die Daten von Oktober noch vorhanden sind
- timestamp von monthLast ist noch der 30.9. --> kein Monatswechsel

Ich gehe jetzt mal davon aus, dass der Monatswechsel heute Nacht erfolgen wird ??  :-\

Ich denke, dass ein Workaround zur Datenkorrektur erst einmal wichtiger ist, als einen Fehler im Modul(vielleicht ist es ja auch nur eine "Reaktion" auf einen Fehler im Gesamtsystem) zu suchen. Ggfs. ein Monatswechsel für heute Nacht auszuschließen.

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Allgaeuer

Hallo,

hatte auch das Problem, dass beim Monatswechsel keine Monatsstatistik generiert wurde. Mir ist aufgefallen, dass das immer dann auftritt, wenn die Umschaltung auf Sommer- oder Winterzeit mit dem Monatsende zusammenfällt (z.B. auch am 31.3.2020).

Ich vermute, es liegt an der Routine "sub statistics_PeriodChange($)" und der Berechnung von "$monthLast" in Zeile 361.

Als Kurzfristlösung, damit ich Monatswerte zumindest (nachträglich) generieren konnte, habe ich im Modul ganz hart in der dieser Routine (ca. Zeile 390) die Zeile "$periodSwitch=3" eingetippt und einzeln "doStatistics" aufgerufen, danach meine Zeile wieder auskommentiert. Die "3" macht "brutal" eine Monatsstatistik. (Eine "-3" könnte auc gehen, dann wird vermutlich die Stunden-Statistik nicht überschrieben, habe ich aber nicht getestet.)


sub statistics_DoStatisticsAll($$)
{
   my ($hash,$periodSwitch) = @_;
   my $name = $hash->{NAME};
   return "" if(!defined($hash->{DEV_REGEXP}));
   my $regexp = $hash->{DEV_REGEXP};
   
$periodSwitch=3; # manuell Monats-Statistik machen, wenn Sommer-/Winterzeit-Wechsel auf Monatsende fällt
   foreach my $devName (sort keys %defs) {
     if ($devName ne $name && $devName =~ m/^($regexp)$/) {
         statistics_Log $hash,4,"Doing statistics (period $periodSwitch) for device '$devName'";
         statistics_DoStatistics($hash, $defs{$devName}, $periodSwitch);
      }
   }
   
# To avoid data loose, store all readings once a day in the state file
   if ($periodSwitch < -1 || $periodSwitch > 1 ) { WriteStatefile(); }
}


Gruß an alle,
Allgäuer

Allgaeuer

Hallo, inbesondere an tupol,

noch ein Hinweis. Die Tagesstatistik wurde um 22:59 gemacht und nicht um 23:59, das hängt sicherlich auch mit der Zeitumstellung zusammen.
Siehe Anhang.

Gruß Allgäuer

KölnSolar

Ich hab jetzt auch mal ins Modul geguckt. Scheinbar ist hier die Problematik der Zeitumstellung nicht berücksichtigt, line 323       if ($dayChangeDelay == 0) { $dayChangeTime += 24*3600; } # Otherwise it would always lay in the pastBei Sommer-/Winterzeitumstellung erfolgt dann der Tageswechsel 1 Stunde zu früh.
Dadurch sind dann in line 366
Zitatelsif ($monthNow != $monthLast) { $periodSwitch = -3; }
die Monate aktuell = alt, weshalb kein Monatswechsel ausgeführt wird.

Wenn meine obige Annahme, dass heute Nacht ein Monatswechsel erfolgt, richtig ist, dann ist der Fehler (in meinem Fall) halb so wild. Hat der Oktober halt 32 Tage gehabt und der November nur 29. ;D
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

andi11

oh Mist, klingt logisch, ist aber ein fieser Bug.
Aber warum sollte heute ein Monatswechsel stattfinden? Die Überprüfung kuckt ob es vor kurzem einen Wechsel im Monat gegeben hat, dem ist aber nicht so.
Ich hab meine Readings manuell aktualisiert (waren ne ganze Menge)

Ich hab noch nichtmal eine Idee wie man das Problem umgehen könnte durch den änderbaren Zeitpunkt vom Tageswechsel. Ansonsten wäre es möglich alla "ist heute Monatserster und 01:00 Uhr"

KölnSolar

ZitatAber warum sollte heute ein Monatswechsel stattfinden?
Nach meinem Verständnis sind die Daten im statistics-device gespeichert. Zu meinem o.g. Bsp. setstate stat_sl 2021-11-01 16:54:42 .RPi_OW_TA:temperatureMonth Sum: 33627842.256 Time: 2742881 LastValue: 13.562 LastTime: 1635782082 ShowDate: 0 DecPlaces: 3Da einzugreifen führt zu unkontrollierbaren Resultaten
ZitatIch hab meine Readings manuell aktualisiert
Hab ich auch vor. Aber eben erst morgen, wenn sich meine Vermutung bestätigt u. das statistics-device bereinigt ist.
Ich denke, ich "wache" über den heutigen Tageswechsel u. werde dann aktiv.  ;)
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt