Jahresplot zeigt falsche Daten an

Begonnen von Nakai, 07 Dezember 2021, 00:06:27

Vorheriges Thema - Nächstes Thema

Nakai

Hallo zusammen,

ich habe momentan ein kleines Problem mit meinem Plot.

Kurz zur Erklärung:
Ich erhalte per MQTT jede Minute meinen Zählerstand übersendet. Aus den Zählerständen berrechne ich über ein at jede Minute den Verbrauch. Diesen Verbrauch speicher ich sodann auch in einem Dummy Device "EnergyConsumptionMonth" bei welchem der Verbrauch stetig aufaddiert wird und bei jedem aufaddieren in meinen DBLog geschrieben wird. Am Ende des Monats wird mit einem IF Statement geprüft ob das Monatsende erreicht ist und der Wert wird wieder auf 0 gesetzt.

Nun zum Plot. Wie ihr im Plot sehen könnt, werden mir Daten im November (dunkelrot aufsteigend) Daten angezeigt, die es so gar nicht gibt. Die Daten (in durchsichtigem Rot) für September, Oktober, November und Dezember wurden jeweils händisch in die Datenbank geschrieben.

Ich bin nun überfragt, warum der Plot Daten in einem falschen Monat anzeigt, obwohl sie in der DB mit dem richtigen Timestamp angezeigt werden.

Anbei seht ihr den Plot, die list vom Plot als auch den preprocessed Input.

Ich hoffe ihr könnt mir hierbei weiterhelfen.

list:
Internals:
   CFGFN     
   DEF        DBLogging:SVG_DBLogging_7:HISTORY
   FUUID      ***
   GPLOTFILE  SVG_DBLogging_7
   LOGDEVICE  DBLogging
   LOGFILE    HISTORY
   NAME       SVG_DBLogging_7
   NR         2543
   STATE      initialized
   TYPE       SVG
   Helper:
     DBLOG:
       state:
         DBLogging:
           TIME       1638827699.33349
           VALUE      copyGplotFile
Attributes:
   fixedrange year

Werte:
get DBLogging HISTORY INT 2021-01-01_00:00:00 2021-12-31_23:59:59 EnergyConsumptionMonth:consumptionMonth:::

2021-09-30_00:00:00 2.13659166679743   <- händisch
2021-10-30_00:00:00 3.134566546            <- händisch
2021-11-30_00:00:00 0.000                       <- händisch
2021-11-30_00:07:00 3.8999999                 <- händisch
2021-12-01_01:45:01 0.000500000000020151
2021-12-01_01:46:01 0.000983333333369529
2021-12-01_01:47:00 0.00147500000005252
2021-12-01_01:48:00 0.00196666666673728
2021-12-01_01:49:01 0.00246666666674855
2021-12-01_01:50:01 0.00295833333343331
2021-12-01_01:51:00 0.00345000000011097
2021-12-01_01:52:00 0.00393333333345857
2021-12-01_01:53:01 0.00443333333347339
2021-12-01_01:54:01 0.00492500000015993
2021-12-01_01:55:01 0.00540833333350576
2021-12-01_01:56:00 0.0059000000001852
2021-12-01_01:57:01 0.0064000000002018
2021-12-01_01:58:01 0.00689166666688124
2021-12-01_01:59:01 0.00738333333356245
2021-12-01_02:00:01 0.00787500000024722
2021-12-01_02:01:01 0.00835833333360193
2021-12-01_02:02:01 0.00885000000028847
2021-12-01_02:03:01 0.00934166666696968
2021-12-01_02:04:00 0.00983333333365267
2021-12-01_02:05:01 0.0103333333336728
2021-12-01_02:06:01 0.0108250000003558
2021-12-01_02:07:01 0.0113083333337087
2021-12-01_02:08:00 0.0118000000003935
2021-12-01_02:09:01 0.0123000000004048
2021-12-01_02:10:01 0.0127916666670896
2021-12-01_02:11:01 0.0132833333337779
2021-12-01_02:12:00 0.0137666666671255
2021-12-01_02:13:00 0.0142583333338049
2021-12-01_02:14:01 0.0147583333338215
2021-12-01_02:15:01 0.0152500000005009
2021-12-01_02:16:01 0.0157416666671839
2021-12-01_02:17:01 0.0162333333338704
2021-12-01_02:18:01 0.0167250000005498
2021-12-01_02:19:01 0.017216666667231
2021-12-01_02:20:01 0.0177083333339158
2021-12-01_02:21:00 0.0182000000006041
2021-12-01_02:22:01 0.0187000000006189
2021-12-01_02:23:01 0.0191916666673054
2021-12-01_02:24:01 0.019675000000653
2021-12-01_02:25:00 0.0201666666673324
2021-12-01_02:26:00 0.0206583333340154
2021-12-01_02:27:01 0.0211583333340338
2021-12-01_02:28:00 0.0216333333340496
2021-12-01_02:29:01 0.0221333333340609
2021-12-01_02:30:01 0.0226250000007457
2021-12-01_02:31:00 0.023116666667434
2021-12-01_02:32:00 0.0236083333341152
2021-12-01_02:33:01 0.0241083333341318
2021-12-01_02:34:01 0.0245916666674776
2021-12-01_02:35:01 0.025083333334157
2021-12-01_02:36:01 0.02557500000084
2021-12-01_02:37:00 0.0260583333341912
2021-12-01_02:38:01 0.0265583333342096
2021-12-01_02:39:01 0.0270500000008908
2021-12-01_02:40:00 0.0275416666675756
2021-12-01_02:41:00 0.0280333333342639
2021-12-01_02:42:01 0.0285333333342787
2021-12-01_02:43:01 0.0290166666676316
2021-12-01_02:44:01 0.0295083333343181
2021-12-01_02:45:01 0.0300000000009975
2021-12-01_02:46:01 0.0305000000010141
2021-12-01_02:47:01 0.0309916666676935
2021-12-01_02:48:01 0.0314833333343747
2021-12-01_02:49:01 0.0319583333343922
2021-12-01_02:50:01 0.0324333333344062
2021-12-01_02:51:00 0.0329250000010927
2021-12-01_02:52:01 0.0334250000011057
2021-12-01_02:53:01 0.0339166666677922
2021-12-01_02:54:01 0.0344083333344716
2021-12-01_02:55:01 0.0349000000011528
2021-12-01_02:56:01 0.0353916666678376
2021-12-01_02:57:01 0.0358833333345153
2021-12-01_02:58:01 0.0363750000011965
2021-12-01_02:59:00 0.0368666666678813
2021-12-01_03:00:02 0.0373666666679014
2021-12-01_03:01:01 0.0378500000012508
2021-12-01_03:02:00 0.0383333333346002
2021-12-01_03:03:00 0.0388250000012832
2021-12-01_03:04:01 0.0393250000013016
2021-12-01_03:05:01 0.0398166666679828
2021-12-01_03:06:01 0.0403083333346676
2021-12-01_03:07:00 0.0408000000013559
2021-12-01_03:08:01 0.0412916666680371
2021-12-01_03:09:01 0.0417833333347219
2021-12-01_03:10:01 0.0422750000014084
2021-12-01_03:11:00 0.0427666666680878
2021-12-01_03:12:01 0.0432666666681044
2021-12-01_03:13:01 0.0437500000014502
2021-12-01_03:14:01 0.0442416666681296
2021-12-01_03:15:00 0.0447333333348108
2021-12-01_03:16:00 0.0452250000014956
2021-12-01_03:17:01 0.0457250000015175
2021-12-01_03:18:01 0.0462166666682023
2021-12-01_03:19:01 0.046700000001557
2021-12-01_03:20:00 0.0471916666682435
2021-12-01_03:21:00 0.0476750000015893
2021-12-01_03:22:01 0.0481750000016023
2021-12-01_03:23:01 0.0486666666682888
2021-12-01_03:24:00 0.0491583333349682
2021-12-01_03:25:00 0.0496500000016494
2021-12-01_03:26:01 0.0501500000016678
2021-12-01_03:27:01 0.0506333333350154
2021-12-01_03:28:01 0.0511250000016966
2021-12-01_03:29:00 0.0516166666683796
2021-12-01_03:30:01 0.0521166666683998
2021-12-01_03:31:01 0.0526083333350828
...
2021-12-06_23:46:00 4.18973333346581
2021-12-06_23:47:00 4.19021666679915
2021-12-06_23:48:01 4.19071666679921
2021-12-06_23:49:01 4.19120833346585
2021-12-06_23:50:00 4.19170000013257
2021-12-06_23:51:00 4.19219166679928
2021-12-06_23:52:01 4.1926916667993
2021-12-06_23:53:01 4.19317500013267
2021-12-06_23:54:01 4.19366666679933
2021-12-06_23:55:01 4.19415833346597
2021-12-06_23:56:01 4.19465833346603
2021-12-06_23:57:01 4.19515000013267
2021-12-06_23:58:01 4.19564166679939
2021-12-06_23:59:00 4.19612500013276
2021-12-07_00:00:01 4.19661666679941
2021-12-07_00:01:01 4.19710000013271
2021-12-07_00:02:01 4.19760000013273
2021-12-31_23:59:59 5.1                            <- händisch
Freundliche Grüße
Nakai

Beta-User

Zeig doch mal dein at... Vermutlich ein Problem im Zusammenhang mit der Zeitumstellung?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Nobbynews

Schon mal im SVG unter "Show preprocessed input" die Daten kontrolliert?

Nakai

#3
Hallo zusammen,

@Beta-User:

Hier ist einmal mein notify in welchem der Verbrauch ausgerechnet und zu EnergyConsumptionMonth aufaddiert wird:


CounterReading:CR_P:.* {
  my @stand = devspec2array("NAME=CounterReading");
  my $aktStand = 0;
  my $uhr = FmtDateTime(time()-60);
 
  my $gesamt = ReadingsVal("EnergyConsumptionTotal", "consumptionTotal", 0);
  my $dayly = ReadingsVal("EnergyConsumptionDay", "consumptionDay", 0);
  my $weekly = ReadingsVal("EnergyConsumptionWeek", "consumptionWeek", 0);
  my $monthly = ReadingsVal("EnergyConsumptionMonth", "consumptionMonth", 0);


  my $altStand = DbReadingsVal("DbRepTest","CounterReading:CR_P",$uhr,"0");
  foreach (@stand) {
    $aktStand = ReadingsVal($_, "CR_P", 0);
  }
  my $consumption = $aktStand-$altStand;

  $gesamt += $consumption;
  $dayly += $consumption;
  $weekly += $consumption;
  $monthly += $consumption;


fhem("setreading $SELF consumption " . $consumption);
fhem("setreading EnergyConsumptionTotal consumptionTotal " . $gesamt);
fhem("setreading EnergyConsumptionDay consumptionDay " . $dayly);
fhem("setreading EnergyConsumptionWeek consumptionWeek " . $weekly);
fhem("setreading EnergyConsumptionMonth consumptionMonth " . $monthly);
}


Und hier ist mein at welches die Readings wieder auf 0 setzt:


+*00:01:00 {

if(($hour==0) && ($min==0)){fhem("setreading EnergyConsumptionDay consumptionDay 0")}

if(($hour==0) && ($min==0) && ($wday==1)){fhem("setreading EnergyConsumptionWeek consumptionWeek 0")}

if(($hour==0) && ($min==0) && ($mday==1)){fhem("setreading EnergyConsumptionMonth consumptionMonth 0")}

}



@Nobbynews:
Die Daten die ich in meinem vorherigen Post aufgezählt habe, sind bereits die Daten aus "Show preprocessed input".
Wie zu sehen ist, sind dort keine November Daten (bis auf deinen einen händisch eingetragenen Wert) vorhanden.

Zur Info: Die händisch eingetragenen Werte dienten lediglich dem Test, ob diese richtig angezeigt werden. Der Wunsch wäre, dass der der Plot lediglich mit den Readings, also automatisch, funktioniert.

Beta-User

Hmm, das at ist es vermutlich nicht, eher
my $uhr = FmtDateTime(time()-60);

Aber das müßte sich jemand ansehen, der weiß, was das ggf. für Implikationen verursacht, wenn es zur falschen Zeit ausgewertet und dann auf DbRep losgelassen wird...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Nakai

@Beta-User

Aber sollte das nicht eigentlich irrelevant sein ? Denn ich speicher die Daten in der DB wieder mit Fhem eigenen Timestamp indem ich


fhem("setreading EnergyConsumptionMonth consumptionMonth " . $monthly);


aufrufe ?

Ich übergebe ja keinen "eigenen" Timestamp.

Oder meinst du das bereits beim auslesen der Daten durch DBRep mit dem "eigenen" Timestamp Probleme entstehen könnten ?


Beta-User

Ernsthaft: neulich habe ich mir bei "statistics" so den Kopf mit der Zeitumstellung zerbrochen, dass ich nur sagen kann, dass die Zeitumstellung in diesem Jahr nochmal spezieller war wie sonst und es einigermaßen kompliziert ist, die Wechselwirkungen zwischen verschiedenen "Denkweisen" bei der Zeitberechnung zu verstehen. Ich vermute, dass die Auswertung via DbRep in bestimmten "Zeitkonstellationen" kein verlässliches Ergebnis für $altStand liefert, that's all.

Vermutlich musst du das Thema bei DbRep plazieren, ich kann dir nicht weiterhelfen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files