Tägliche Regenmenge aus DWD-Radolan Daten einlesen

Begonnen von alkazaa, 12 August 2023, 21:12:09

Vorheriges Thema - Nächstes Thema

JoWiemann

Hallo,

ich habe jetzt das Modul im SVN eingecheckt. Steht dann ab morgen im Update zur Verfügung.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

enno

Moin Jörg,

ich habe eben ein Update gemacht und das Device angelegt:

Internals:
   CFGFN     
   DWDHOST    opendata.dwd.de
   FUUID      654f3203-f33f-8a87-d982-06cca6dc5e5e8f27
   INTERVAL   300
   LOCATION   Home:62.384500,9.969590
   NAME       Regen
   NR         1408
   STATE      1 values captured in 0.00 s
   TIMEOUT    55
   TMPDIR     temp_radolan_data_Regen
   TYPE       CDCOpenData
   eventCount 1
   CONFIG:
     IN_REQUEST 0
   READINGS:
     2023-11-11 08:49:26   retStat_lastReadout 1 values captured in 0.00 s
     2023-11-11 08:49:26   state           1 values captured in 0.00 s
   fhem:
     UPDATE     0
   helper:
     CronTime   0
     FhemLog3Std 0
     TimerCmd   Regen.Cmd
     TimerReadout Regen.Readout
     baseTMPDIR temp_radolan_data_Regen
Attributes:
   DbLogExclude .*
   event-on-change-reading .*

Im Log bekomme ich folgende Warnung:
2023.11.11 08:49:23.755 1: PERL WARNING: Use of uninitialized value $GunzipError in concatenation (.) or string at ./FHEM/98_CDCOpenData.pm line 66.
2023.11.11 08:49:23.756 1: PERL WARNING: Use of uninitialized value $Bunzip2Error in concatenation (.) or string at ./FHEM/98_CDCOpenData.pm line 67.
2023.11.11 08:49:23.849 1: PERL WARNING: using SSL support of Net::FTP 3.14 instead of SSLGlue at /usr/share/perl5/Net/SSLGlue/FTP.pm line 16.

Irgendetwas fehlt meinem System (Debian Bookworm) noch.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian

JoWiemann

Zitat von: enno am 11 November 2023, 08:56:08Moin Jörg,

ich habe eben ein Update gemacht und das Device angelegt:

Internals:
   CFGFN     
   DWDHOST    opendata.dwd.de
   FUUID      654f3203-f33f-8a87-d982-06cca6dc5e5e8f27
   INTERVAL   300
   LOCATION   Home:62.384500,9.969590
   NAME       Regen
   NR         1408
   STATE      1 values captured in 0.00 s
   TIMEOUT    55
   TMPDIR     temp_radolan_data_Regen
   TYPE       CDCOpenData
   eventCount 1
   CONFIG:
     IN_REQUEST 0
   READINGS:
     2023-11-11 08:49:26   retStat_lastReadout 1 values captured in 0.00 s
     2023-11-11 08:49:26   state           1 values captured in 0.00 s
   fhem:
     UPDATE     0
   helper:
     CronTime   0
     FhemLog3Std 0
     TimerCmd   Regen.Cmd
     TimerReadout Regen.Readout
     baseTMPDIR temp_radolan_data_Regen
Attributes:
   DbLogExclude .*
   event-on-change-reading .*

Im Log bekomme ich folgende Warnung:
2023.11.11 08:49:23.755 1: PERL WARNING: Use of uninitialized value $GunzipError in concatenation (.) or string at ./FHEM/98_CDCOpenData.pm line 66.
2023.11.11 08:49:23.756 1: PERL WARNING: Use of uninitialized value $Bunzip2Error in concatenation (.) or string at ./FHEM/98_CDCOpenData.pm line 67.
2023.11.11 08:49:23.849 1: PERL WARNING: using SSL support of Net::FTP 3.14 instead of SSLGlue at /usr/share/perl5/Net/SSLGlue/FTP.pm line 16.

Irgendetwas fehlt meinem System (Debian Bookworm) noch.

Gruss
  Enno

Hallo Enno,

die drei Fehlermeldungen habe ich auch beim Start von Fhem. Ich bekomme die einfach nicht weg. Die Funktion wird dadurch behindert. Ich muss demnächst nochmal in Ruhe googeln.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Gisbert

Zitat von: enno am 11 November 2023, 08:56:08Irgendetwas fehlt meinem System (Debian Bookworm) noch.

Hallo Jörg,
was es auch ist, bei Debian 11 (Bullseye) ist es nach einem Serverstart genauso.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

alkazaa

Hallo Jörg,
meine Idee, ungültige Radarwerte durch -1 zu kennzeichnen (siehe Beitrag #126), war leider suboptimal.

Ich hatte jetzt den Fall, dass bei einem 'since_midnight' reading ein Wert von -0.3 auftrat.

Das kam mit Sicherheit dadurch, dass beim Aufsummieren der Stundenwerte ein ungültiger dabei war. Das macht aber die anderen Stundenwerte nicht ungültig. Auf die darf dann natürlich nicht -1 dazu"addiert" werden.

Ich weiß nicht so recht, wir man das lösen sollte. Bei den nicht summierten Einzel-Readings ist ja ein negativer Wert ganz gut als Indikator, aber eben nicht beim Summieren. Vielleicht bei den since_midnight readings statt $x ein max(0,$x) dazuaddieren?

Beste Grüße
Franz

JoWiemann

Zitat von: alkazaa am 13 November 2023, 15:32:37Hallo Jörg,
meine Idee, ungültige Radarwerte durch -1 zu kennzeichnen (siehe Beitrag #126), war leider suboptimal.

Ich hatte jetzt den Fall, dass bei einem 'since_midnight' reading ein Wert von -0.3 auftrat.

Das kam mit Sicherheit dadurch, dass beim Aufsummieren der Stundenwerte ein ungültiger dabei war. Das macht aber die anderen Stundenwerte nicht ungültig. Auf die darf dann natürlich nicht -1 dazu"addiert" werden.

Ich weiß nicht so recht, wir man das lösen sollte. Bei den nicht summierten Einzel-Readings ist ja ein negativer Wert ganz gut als Indikator, aber eben nicht beim Summieren. Vielleicht bei den since_midnight readings statt $x ein max(0,$x) dazuaddieren?

Beste Grüße
Franz


Hallo Franz,

bei _since_midnight werden fehlerhafte Werte nicht akkumuliert:

        my $upMenge = (unpack( 'v*', $twobytes ) & 0xFFF);
   
            # A value of 2500 in the file marks invalid data.
            # It is reset to -1 in order to keep the y-axis scale small when plotting.
   
            if ($upMenge == 2500) {
              CDCOpenData_Log $name, 3, "Rain_Since_Midnight: error in value";
            } else {
              $regenmenge += 0.1 * $upMenge;
            }
   

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

alkazaa

#141
Zitat von: JoWiemann am 13 November 2023, 15:39:08bei _since_midnight werden fehlerhafte Werte nicht akkumuliert
Hmm, hast Recht. Kopfkratz...
ich schau mal, ob ich das rekonstruieren kan, was ich da gesehen hab.

Gruß
Franz

EDIT: ich hab die Dateien mal durchwühlt (standen ja noch im temp Verzeichnis), keine Auffälligkeiten gefunden. Kein Ahnung, was mich da gefoppt hat..

alkazaa

Moin Jörg,
die negativen Werte bei rain_since_midnight rühren daher, dass in Zeile 1220 (und in Zeile 1239) $regenmenge mit -1 vorbesetzt wird statt mit 0.

(Mir fiel auf, dass die geforkten Prozesse nichts in die log Datei schreiben)

Gruß
Franz

JoWiemann

Zitat von: alkazaa am 14 November 2023, 09:49:50Moin Jörg,
die negativen Werte bei rain_since_midnight rühren daher, dass in Zeile 1220 (und in Zeile 1239) $regenmenge mit -1 vorbesetzt wird statt mit 0.

(Mir fiel auf, dass die geforkten Prozesse nichts in die log Datei schreiben)

Gruß
Franz

Ups, passe ich an
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

alkazaa

Hallo Jörg,
noch ein Punkt: bei der automatischen FileLog-Verwaltung mit dem Attribut RainRadarFileLog müsste es statt
defmod myCDClog FileLog ./log/myCDC-%Y-%m.log myCDC:.*?_rain_radar:.*heißen
defmod myCDClog FileLog ./log/myCDC-%Y-%m.log myCDC:.*?_rain_radar/.*War mir bisher nicht aufgefallen, weil ich's händisch korrigiert hatte. Erst jetzt nach FHEM Neustart merkte ich, dass die händische Korrektur wieder überschrieben wird.

Gruß
Franz

JoWiemann

Zitat von: alkazaa am 14 November 2023, 16:42:53Hallo Jörg,
noch ein Punkt: bei der automatischen FileLog-Verwaltung mit dem Attribut RainRadarFileLog müsste es statt
defmod myCDClog FileLog ./log/myCDC-%Y-%m.log myCDC:.*?_rain_radar:.*heißen
defmod myCDClog FileLog ./log/myCDC-%Y-%m.log myCDC:.*?_rain_radar/.*War mir bisher nicht aufgefallen, weil ich's händisch korrigiert hatte. Erst jetzt nach FHEM Neustart merkte ich, dass die händische Korrektur wieder überschrieben wird.

Gruß
Franz

Hallo Franz,

danke und kommt dann morgen mit Update.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

Zitat von: JoWiemann am 14 November 2023, 16:50:48
Zitat von: alkazaa am 14 November 2023, 16:42:53heißen
defmod myCDClog FileLog ./log/myCDC-%Y-%m.log myCDC:.*?_rain_radar/.*War mir bisher nicht aufgefallen, weil ich's händisch korrigiert hatte. Erst jetzt nach FHEM Neustart merkte ich, dass die händische Korrektur wieder überschrieben wird.

Gruß
Franz

Hallo Franz,

danke und kommt dann morgen mit Update.

Grüße Jörg

Hm,

bei outPutformat: { return $TIMESTAMP." ".$NAME." ".$1." ".$2."\n" if $EVENT =~ /(.*?)\/.*?:\s(.*)/}

wir der slash ja nicht mitgenommen. Bei einer weiteren Definition habe ich kein outPutformat gesetzt und es funktioniert trotzdem.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

alkazaa

So sieht meine log-Datei (auszugsweise) aus:
2023-11-14_17:35:00 myCDC Home_rain_radar 0
2023-11-14_17:40:00 myCDC Home_rain_radar 0
2023-11-14_17:45:00 myCDC Home_rain_radar 0
2023-11-14_17:50:00 myCDC Home_rain_radar 0
2023-11-14_17:55:00 myCDC Home_rain_radar 0
2023-11-14_18:00:00 myCDC Home_rain_radar 0
...

Bei
ZitatoutPutformat: { return $TIMESTAMP." ".$NAME." ".$1." ".$2."\n" if $EVENT =~ /(.*?)\/.*?:\s(.*)/}
und einer log-Definition mit myCDC:.*?_rain_radar:.*  bleibt bei mir die log Datei aber leer. Mit myCDC:.*?_rain_radar/.* funktioniert es dagegen.
Aber die ganze regex-erei ist mir ein bisschen unheimlich, versteh es nicht immer...bzw. nur nach Ausprobieren.


JoWiemann

Zitat von: alkazaa am 14 November 2023, 17:53:38Aber die ganze regex-erei ist mir ein bisschen unheimlich, versteh es nicht immer...bzw. nur nach Ausprobieren.



Hallo Franz,

geht mir genauso.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

alkazaa

Hallo Jörg, tut mir leid, aber in Zeile 492 ist immer noch ein defmod falsch:
my $dMod  = 'defmod ' . $aVal . ' FileLog ./log/' . $name . '-%Y-%m.log ' . $name . ':.*?_rain_radar:.*';Richtig:
my $dMod  = 'defmod ' . $aVal . ' FileLog ./log/' . $name . '-%Y-%m.log ' . $name . ':.*?_rain_radar/.*';