Modul für DWD Open Data

Begonnen von jensb, 21 Januar 2018, 14:38:48

Vorheriges Thema - Nächstes Thema

holle75

Hallo Jens,

Zitat von: jensb am 27 Dezember 2018, 11:06:05
Ich stimme der dahinter liegenden Idee genauso zu. Allerdings sehe ich nicht, wie wir mit den zur Verfügung stehenden Entwickler-Resourcen dahin kommen und - das ist die noch größere Aufgabe - da auch langfristig bleiben können.
Ja, das ist ein Problem. Oder auch nicht und ist nunmal so.

Zitat von: jensb am 27 Dezember 2018, 11:06:05
Nur wenn sich hier im Forum ein paar Engagierte zusammen tun, etwas auf die Beine stellen und es für andere verständlich in der Wiki hinterlassen, können wir überhaupt leicht Anwendbares zur Verfügung stellen.
Sobald ich einen akzeptablen StatusQuo gefunden und auch mehrere Wochen getestet habe, werde ich hier alles Wichtige verewigen. Wenn das viele in einer gut überschaubaren Manier machen, würde das sicherlich allen helfen (du und Mumpitz machen das ja schon)

Zitat von: jensb am 27 Dezember 2018, 11:06:05
Aber fehlende Messwerte zu generieren ist schwer bis unmöglich und Zeitbezüge von Wetterdaten umzurechnen ist Meteorologie und keine Datenverarbeitung.
Ich meinte auch eher vom DWD gegebene Werte (in vielleicht noch einer anderen Einheit als "Extrawert"). Die sind ohne zeitraubender Lektüre nicht zu verstehen. Die Einheiten/Zeitbezüge (da meine ich die vorgegebenen) dann in einen Plot zu packen ist dann die zweite Herausforderung.

Zitat von: jensb am 27 Dezember 2018, 11:06:05
Lassen wir mal ganz außen vor, dass es sicherlich einen Satz "wahrscheinlichen Standardwerte" mit eben so wahrscheinlichen Einheiten gibt, aber die Frage nach noch einem Wert X mehr und einer alternativen Einheit für Wert Y wird dann immer noch vom dem einen oder anderen Anwender kommen.
Ja, ganz sicher sogar ;) ...

Mein Ansatz war eigentlich nur (und so hatte ich auch curt interpretiert) das von euch schon erarbeitete ein wenig weniger fehleranfällig (für den Nutzer) im Modul zu verpacken.

- schon gegebene DWD "Standardwerte" (zB auch die von mir genannten) im Modul sinnvoll umbennen und Einheiten passend festlegen. Vielleicht Extrawerte aus gegebenen Werten mit anderen Einheiten generieren (zb Windms und Windkmh)
- Im Wiki sub und SVG Plot für copy+paste entsprechend eben dieser Werte/Einheiten/Zeiten verewigen.

Denke, damit ist das Bedürfnis von 90% der Modul-Erstnutzer gestillt und die Fehleranfälligkeit sehr reduziert.

Wer dann mehr will kann ja.

Zitat von: jensb am 27 Dezember 2018, 11:06:05
Um den Aufwand in Grenzen zu halten und überhaupt etwas zur Verfügung stellen zu können gibt es das OpenData-Modul in seiner jetzigen Form mit den Rohdaten des DWD.
Danke dafür!

Zitat von: jensb am 27 Dezember 2018, 11:06:05
Für die aufbereiteten Werte habe ich schon mehr als einmal vorgeschlagen, die Werte, die das Weblink-Modul anzeigt, als Readings zur Verfügung zu stellen. Die Aufbereitung könnte man auch erweitern und mehr Werte zur Verfügung stellen, als es der Weblink bisher tut.
Ich habe mir den Weblink noch nicht näher angeschaut. Werde ich tun.


jensb

@holle75
Ich habe in der Vorabversion des OpenData-Moduls auf GitHub noch mehr der "wahrscheinlichen Standardwerte" mit ihren Einheiten in die Modulhilfe aufgenommen. Sie im Modul neu zu benennen, damit man sie "sofort" zuordnen kann, ist möglich, aber das werde nicht machen, da Aliase auch zur Verwirrung beitragen. Es gibt sogar schon 4 umbenannte Werte ("nur" geänderte Groß-/Kleinschreibung) und genau deswegen gab es schon Nachfragen.

Für die Beschreibung der Readings gibt es nun mal die Modulhilfe. Wer es wirklich braucht, kann Wunschbezeichnung und Wunscheinheit mit dem FHEM Bordmittel userReadings selbst backen.

Wer mir seine Liste von wichtigen DWD-Messgrößen gibt, die noch in der Modulhilfe fehlen, dann nur her damit.

ZitatAber fehlende Messwerte zu generieren ist schwer bis unmöglich und Zeitbezüge von Wetterdaten umzurechnen ist Meteorologie und keine Datenverarbeitung.
Meine Aussage macht nur im ursprünglichen Kontext Sinn. Gemeint war, dass es Probleme mit der Aufrechterhaltung von Readings gibt, wenn der DWD etwas ändert (was er leider manchmal tut).

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

mumpitzstuff

Vorschläge habe ich eingearbeitet, soweit ich es als sinnvoll erachtet habe. Ich poste mal die letzten Ergebnisse, damit wir wieder einen Abgleich machen können. Die letzten Tage waren nur etwas stressig...

curt

Zitat von: holle75 am 27 Dezember 2018, 20:19:09
Mein Ansatz war eigentlich nur (und so hatte ich auch curt interpretiert) das von euch schon erarbeitete ein wenig weniger fehleranfällig (für den Nutzer) im Modul zu verpacken.

Vermutlich bekommt man das auch außerhalb des Moduls über UserReadings hin. Zumindest habe ich bei anderen Devices einige abgeschrieben Beispiele. Falls das geht, müssten wir uns zu einer gemeinsamen -veröffentlichten- Device-Doku durchringen.
RPI 4 - Jeelink HomeMatic Z-Wave

mumpitzstuff

#439
Hier also noch mal meine aktuellen Devices. Ich habe auf jegliche weiteren Vorschläge zu diversen Umrechnungen verzichtet und diese erst mal so belassen. Ich denke das die Werte hier für ein Großteil der Anwender passen sollten bzw. relativ leicht klar ist, wie und wo man eigene Umrechnungen einfliessen lassen kann. Weiterhin habe ich auf die starre Temperaturrange verzichtet, das finde ich eher suboptimal für den breiten Anwenderkreis.

1.) DWD Device (aktuell kann man forecastResolution 1 nur als Kommando setzen und nicht über die Oberfläche):
defmod WETTER_DWD DWD_OpenData
attr WETTER_DWD alertArea 808118011
attr WETTER_DWD event-on-change-reading .*
attr WETTER_DWD forecastProperties Tx,Tn,Tg,TTT,DD,FX1,N,Neff,RR1c,RR3c,RR6c,RRhc,RRL1c,Rh00,ww,SunD,SunD1,SunD3,RSunD,R101,R600
attr WETTER_DWD forecastResolution 1
attr WETTER_DWD forecastStation 10738
attr WETTER_DWD forecastWW2Text 1


Das Attribut forecastResolution sollte mit der im Plot verwendeten Auflösung übereinstimmen, also entweder auf 1 oder 3 gesetzt sein.

2.) Logproxy Device:
defmod LOG_PROXY logProxy

3.) Filelog Device:
defmod FileLog_WETTER_DWD FileLog ./log/WETTER_DWD-%Y-%m.log WETTER_DWD

4.) SVG Devices:
defmod SVG_FileLog_WETTER_DWD_1 SVG FileLog_WETTER_DWD:SVG_FileLog_WETTER_DWD_1:CURRENT
attr SVG_FileLog_WETTER_DWD_1 fixedoffset 6
attr SVG_FileLog_WETTER_DWD_1 fixedrange 7days
attr SVG_FileLog_WETTER_DWD_1 nrAxis 1,2

Für die Anzeige der Daten im 3h Raster.

defmod SVG_FileLog_WETTER_DWD_2 SVG FileLog_WETTER_DWD:SVG_FileLog_WETTER_DWD_2:CURRENT
attr SVG_FileLog_WETTER_DWD_2 fixedoffset 6
attr SVG_FileLog_WETTER_DWD_2 fixedrange 7days
attr SVG_FileLog_WETTER_DWD_2 nrAxis 1,2

Für die Anzeige der Daten im 1h Raster.

defmod SVG_FileLog_WETTER_DWD_3 SVG FileLog_WETTER_DWD:SVG_FileLog_WETTER_DWD_3:CURRENT
attr SVG_FileLog_WETTER_DWD_3 endPlotNow 1
attr SVG_FileLog_WETTER_DWD_3 fixedoffset 1
attr SVG_FileLog_WETTER_DWD_3 label "max. temperature: $data{max1}°C, min. temperature: $data{min1}°C"
attr SVG_FileLog_WETTER_DWD_3 nrAxis 1,2

Für die Anzeige der nächsten 24h.

5.) Funktion in der myUtils.pm
sub logProxy_dwd2Plot($$$$;$$$)
{
  my ($device, $fcValue, $from, $to, $fcHour, $expMode, $shiftTime) = @_;
  my $regex;
  my @rl;

  return undef if(!$device);

  if ($fcValue =~ s/_$//)
  {
    $regex = "^fc[\\d]+_[\\d]+_".$fcValue."\$";
  }
  else
  {
    $regex = "^fc[\\d]+_".$fcValue."\$";
  }

  $fcHour = 12 if(!defined($fcHour));
  $expMode = "point" if(!defined($expMode));
  #Log3 undef,2, "Regex: ".$regex;

  # ermitteln aller relevanten Readings
  if ( defined($defs{$device}) )
  {
    if ( $defs{$device}{TYPE} eq "DWD_OpenData" )
    {
      @rl = sort
      {
        my ($an) = ($a =~ m/fc(\d+)_.*/);
        my ($bn) = ($b =~ m/fc(\d+)_.*/);
        my ($ao) = ($a =~ m/fc\d+_(\d+).*/);
        my ($bo) = ($b =~ m/fc\d+_(\d+).*/);
        $an <=> $bn or $ao <=> $bo or $a cmp $b;
      } ( grep /${regex}/,keys %{$defs{$device}{READINGS}} );
      #Log3 undef,2, Dumper(@rl);
      return undef if ( !@rl );
    }
    else
    {
      Log3 undef, 2, "logProxy_dwd2Plot: $device is not a DWD_OpenData device";
      return undef;
    }
  }
  #Log3 undef,2, Dumper(@rl);

  my $fromsec = SVG_time_to_sec($from);
  my $tosec   = SVG_time_to_sec($to);
  my $sec = $fromsec;
  my ($h, $hp, $fcDay, $mday, $mon, $year);
  my $timestamp;

  my $reading;
  my $value;
  my $prev_value;
  my $min = 999999;
  my $max = -999999;
  my $ret = "";

  # while not end of plot range reached
  while (($sec < $tosec) && @rl)
  {
    #remember previous value for start of plot range
    $prev_value = $value;

    $reading = shift @rl;
    ($fcDay) = $reading =~ m/^fc(\d+).*/;
    ($hp) = $reading =~ m/^fc\d+_(\d+).*/;
    #Log 1, "hp: ".$hp;

    if ($hp)
    {
      $h = ReadingsVal($device, "fc".$fcDay."_".$hp."_time", $fcHour);
      if ($h =~ m/^(\d+):\d+/)
      {
        $h = $1;
      }
    }
    else
    {
      $h = $fcHour;
    }

    $value = ReadingsVal($device, $reading, undef);
    if ($fcValue =~ /^SunD(\d+)$/)
    {
      if (defined($1))
      {
        $value = (100 * $value) / ($1 * 3600);
      }
      else
      {
        $value = (100 * $value) / (12 * 3600);
      }
    }
    if ($fcValue =~ /^RR(\d+)c$/ && defined($1))
    {
        $value /= $1;
    }

    ($year, $mon, $mday) = split('\-',ReadingsVal($device, "fc".$fcDay."_date",undef));
    $timestamp = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $year, $mon, $mday, $h, 0, 0);
    $sec = SVG_time_to_sec($timestamp);
    if (defined($shiftTime))
    {
      $sec += $shiftTime;
      $timestamp = logProxy_shiftTime($timestamp, $shiftTime);
    }

    # skip all values before start of plot range
    next if ( $sec < $fromsec );

    # add first value at start of plot range
    if ( !$ret && $prev_value )
    {
      $min = $prev_value if ( $prev_value < $min );
      $max = $prev_value if ( $prev_value > $max );
      $ret .= "$from $prev_value\n";
    }

    # done if after end of plot range
    last if ($sec > $tosec);

    $min = $value if ( $value < $min );
    $max = $value if ( $value > $max );

    # add actual control point
    $ret .= "$timestamp $value\n";

    #Log 1, "$timestamp $value <<< $reading";
  }

  if (($sec < $tosec) && !@rl && ($expMode eq "day"))
  {
    $timestamp = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $year, $mon, $mday, 23, 59, 59);
    $_ = SVG_time_to_sec($timestamp);
    if (defined($shiftTime))
    {
      $_ += $shiftTime;
      $timestamp = logProxy_shiftTime($timestamp, $shiftTime);
    }

    if ($_ < $tosec)
    {
      $ret .= "$timestamp $value\n";
    }
    else
    {
      $ret .= "$to $value\n";
    }
  }
  elsif (($sec > $tosec) && ($expMode eq "day"))
  {
    $value = $prev_value + ($value - $prev_value) * (86400 + ($tosec - $sec)) / 86400;
    $ret .= "$to $value\n";
  }

  return ($ret, $min, $max, $prev_value);
}


6.) Im Filelog Device kann man auf "Create SVG Plot" klicken (muss man 3x machen, um alle 3 Anzeigen zu erhalten), dann wird eine SVG Datei erzeugt. In dieser Datei muss man den Inhalt komplett durch den folgenden ersetzen:

set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics
set y2tics
set grid ytics
set ylabel "rain mm"
set y2label "temperature"
set y3label "cloud / chOfRain / sun (rel) %"
set y3range [0:100]

#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","TTT_",$from,$to,0,"day")
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","Tx",$from,$to,18,"day")
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","Tn",$from,$to,6,"day")
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","SunD3_",$from,$to,0,"day",(-3*3600))
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","RR3c_",$from,$to,0,"day",(-3*3600))
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","R600_",$from,$to,0,"day",(-3*3600))
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","Neff_",$from,$to,0,"day")
#LOG_PROXY ConstX:TimeNow(),0,100
#LOG_PROXY ConstY:0

plot "<IN>" using 1:2 axes x1y2 title 'fc_temp' ls l0 lw 2 with quadraticSmooth,\
     "<IN>" using 1:2 axes x1y2 title 'fc_tempMax' ls l0dot lw 2 with quadraticSmooth,\
     "<IN>" using 1:2 axes x1y2 title 'fc_tempMin' ls l6 lw 2 with quadraticSmooth,\
     "<IN>" using 1:2 axes x1y3 title 'fc_sun' ls l4fill lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'fc_rain' ls l2fill lw 1 with steps,\
     "<IN>" using 1:2 axes x1y3 title 'fc_chOfRain' ls l5fill lw 1 with quadraticSmooth,\
     "<IN>" using 1:2 axes x1y3 title 'fc_cloud' ls l6fill lw 1 with quadraticSmooth,\     
     "<IN>" using 1:2 axes x1y3 notitle ls l5 lw 4 with lines,\
     "<IN>" using 1:2 axes x1y2 notitle ls l2 lw 2 with lines

Für die Anzeige im 3h Raster.

set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics
set y2tics
set grid ytics
set ylabel "rain mm"
set y2label "temperature"
set y3label "cloud / chOfRain / sun (rel) %"
set y3range [0:100]

#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","TTT_",$from,$to,0,"day")
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","Tx",$from,$to,18,"day")
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","Tn",$from,$to,6,"day")
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","SunD1_",$from,$to,0,"day",(-1*3600))
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","RR1c_",$from,$to,0,"day",(-1*3600))
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","R101_",$from,$to,0,"day",(-0.5*3600))
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","Neff_",$from,$to,0,"day")
#LOG_PROXY ConstX:TimeNow(),0,100
#LOG_PROXY ConstY:0

plot "<IN>" using 1:2 axes x1y2 title 'fc_temp' ls l0 lw 2 with quadraticSmooth,\
     "<IN>" using 1:2 axes x1y2 title 'fc_tempMax' ls l0dot lw 2 with quadraticSmooth,\
     "<IN>" using 1:2 axes x1y2 title 'fc_tempMin' ls l6 lw 2 with quadraticSmooth,\
     "<IN>" using 1:2 axes x1y3 title 'fc_sun' ls l4fill lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'fc_rain' ls l2fill lw 1 with steps,\
     "<IN>" using 1:2 axes x1y3 title 'fc_chOfRain' ls l5fill lw 1 with quadraticSmooth,\
     "<IN>" using 1:2 axes x1y3 title 'fc_cloud' ls l6fill lw 1 with quadraticSmooth,\     
     "<IN>" using 1:2 axes x1y3 notitle ls l5 lw 4 with lines,\
     "<IN>" using 1:2 axes x1y2 notitle ls l2 lw 2 with lines

Für die Anzeige im 3h Raster.

set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics
set y2tics
set y3tics
set grid xtics y2tics
set ylabel "rain mm"
set y2label "temperature"
set y3label "cloud / chOfRain / sun (rel) %"
set y3range [0:100]

#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","TTT_",$from,$to,0,"day")
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","SunD1_",$from,$to,0,"day",(-1*3600))
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","RR1c_",$from,$to,0,"day",(-1*3600))
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","R101_",$from,$to,0,"day",(-0.5*3600))
#LOG_PROXY Func:logProxy_dwd2Plot("WETTER_DWD","Neff_",$from,$to,0,"day")
#LOG_PROXY ConstY:0

plot "<IN>" using 1:2 axes x1y2 title 'fc_temp' ls l0 lw 2 with quadraticSmooth,\
     "<IN>" using 1:2 axes x1y3 title 'fc_sun' ls l4fill lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'fc_rain' ls l2fill lw 1 with steps,\
     "<IN>" using 1:2 axes x1y3 title 'fc_chOfRain' ls l5fill lw 1 with quadraticSmooth,\
     "<IN>" using 1:2 axes x1y3 title 'fc_cloud' ls l6fill lw 1 with quadraticSmooth,\
     "<IN>" using 1:2 axes x1y2 notitle ls l2 lw 2 with lines

Für die Anzeige der nächsten 24h.

holle75

#440
... denke, ich habe es gedanklich übetrieben und so wie ihr das macht ist das völlig ausreichend und gut. Hatte mich an eurer Diskussion mit den Verschiebungen und Umrechnungen wahrscheinlich zu lange festgebissen und war verunsichert. Das was Mumpitz hier jetzt en bloc aufgeführt hat ist ja genau die wenig fehleranfällige Variante wo alle drei Bereiche (Modul, Sub, SVG) dann richtig zusammenspielen. Um zusätzliche Werte muß man sich eben selber kümmern.

Dieses Beispiel (oder ein anderes) ins Wiki gepackt löst wahrscheinlich die meisten Probleme.

Kann gerade nur leider die nächsten 6 Wochen nichts mehr testen oder weiterarbeiten, da mein Raspi bei einem Restart gestern nicht mehr booten wollte und ich, da nicht vor Ort, den Stecker nicht ziehen kann. So blöd ....

EDIT: um mir dann jetzt schon Gedanken drüber machen zu können: gibt es eine Möglichkeit nicht eine Station sondern einen GPS-Ort zu definieren beim DWD? "Meine" Station ist nämlich 40 km entfernt und so wird Wettervorhersage eher grob als genau.

jensb

@holle75
Zitat... gibt es eine Möglichkeit nicht eine Station sondern einen GPS-Ort zu definieren beim DWD?
Ja, indem man statt auf die Stationsdaten auf die Rohdaten geht (siehe z.B. ICON https://www.dwd.de/DE/forschung/wettervorhersage/num_modellierung/01_num_vorhersagemodelle/icon_beschreibung.html und BUFR https://www.dwd.de/DE/derdwd/it/_functions/Teasergroup/bufr_de.html).

Damit erhöht sich der Vorverarbeitungsaufwand und die erforderliche Rechenleistung ganz erheblich und ist dann wahrscheinlich nichts mehr für RPis - wobei es auf einen Versuch ankäme. Mir ist allerdings gerade nicht langweilig.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

jensb

@mumpitzstuff
Danke für die detaillierte Beschreibung, das ist ja schon fast der Wiki-Artikel. Bleibt die Frage: Du oder ich?

Der andere Punkt war die Idee mit "forecastHistoryDays", damit Tmin/max am linken Rand anfangen. Werde es demnächst einbauen und ausprobieren.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

mumpitzstuff

Mir wäre es liebt, wenn du die Vorabversion übernehmen könntest, da ich mich nicht in die Struktur des DWD Moduls einmischen möchte. Ich kann dann aber gern noch ein paar Dinge dazu schreiben, die mir dann noch so einfallen.

holle75

Zitat von: jensb am 28 Dezember 2018, 13:34:31
Damit erhöht sich der Vorverarbeitungsaufwand und die erforderliche Rechenleistung ganz erheblich und ist dann wahrscheinlich nichts mehr für RPis - wobei es auf einen Versuch ankäme. Mir ist allerdings gerade nicht langweilig.

Ich hatte auf eine einfachere Möglichkeit gehofft ;)

Ich bin übrigens dank eurer Ergüsse mit DarkSky (irgendwo weiter oben hatte ich davon geschrieben) was die grafische Auswertung angeht endlich weitergekommen.... funktioniert, aber ich kann es gerade nicht verewigen weil, wie oben geschrieben, ich keinen Zugriff mehr auf die Kiste habe. Kommt dann in 6 Wochen hier -> https://forum.fhem.de/index.php/topic,93869.msg870069.html#msg870069

Vorteil -> Standort nach Lon/Lat definiert
Nachteil -> anderes, denke weniger genaues Modell ... und was mich total nervt kein Wert für die Sonnendauer (jemand eine Idee wie man die anhand der Bewölkung errechnen kann)? .... und Bezeichnung der Wettericons sind leider nicht mit den anderen bereits verfügbaren Wettermodulen in fhem kompatibel. Schade für ftui zB.


mumpitzstuff

Im einfachsten Fall scheint die Sonne genau dann, wenn keine Wolken da sind. Das bedeutet, wenn du 60% Bewölkung hast, dann bleiben 40% Sonne über. Bei 80% Bewölkung = 20% Sonne usw. Das ist allerdings nur ein sehr grober Wert...

curt

@mumpitzstuff @jensb
Wenn ich meinen berühmten goldenen Papporden "Freundlicher Helfer des Tages" verleihen dürfte: Ihr beide würdet ihn heute bekommen. Sehr herzlichen Dank!

Falls ich beim Wiki mithelfen soll: Bitte sagen.

Ich habe #439 umgesetzt. Abgesehen von der lustigen Darstellung der zurückgehenden Zeit (ja, ich habe #430 berücksichtigt) ist alles schick. Bei der zurückgehenden Zeit nehme ich an, dass sich das auswächst.


defmod FileLog_WETTER_DWD FileLog ./log/WETTER_DWD-%Y-%m.log WETTER_DWD


Hier ist es vermutlich günstiger, auf die monatsweise Dateierstellung zu verzichten. Wenn ich recht erinnere, schränkt das das FTUI-Widget chart_widget zu sehr ein. In dem Fall wäre "defmod FileLog_WETTER_DWD FileLog ./log/WETTER_DWD-%Y.log WETTER_DWD" wohl zielführender.

Das führt mich zum FTUi-chart-widget: Die nun vorliegenden Grafiken kann man auch in FTUI darstellen. Die simple Methode ist das Widget "chart" - das zeigt allerdings nur den SVG-Plot ohne weitere Möglichkeiten. Viel komfortabler ist das chart-widget von eki, den ich mal auf das Thema aufmerksam mache:

@eki
Schaue Dir doch mal bitte #439 an. Danach hast Du den Deutschen Wetterdienst. - Es wäre wunderschön, wenn wir die angegebenen drei Grafiken auch für FTUI, für Dein Widget hätten. Wenn ich das mache, dauert es drei Tage (und mehrere Nachfragen an Dich) - im günstigsten Fall. Wenn Du das machst, das ist eine reine Fingerübung für Dich.

OT
@holle
Nun hast Du uns lange genug auf die Folter gespannt: Wo steht denn Deine FHEM-Maschine? Direkt am Nordpol?

Ich hatte das Problem bei  meinem DSL-Router, der ist debianbasiert handgefeilt auf APU. Natürlich immer dann, wenn ich in Urlaub war ... Ich löste das so:
1) Booten, wenn Strom anliegt
2) automatisches Reboot alle 24h.
RPI 4 - Jeelink HomeMatic Z-Wave

holle75

Zitat von: curt am 28 Dezember 2018, 18:33:10
OT
@holle
Nun hast Du uns lange genug auf die Folter gespannt: Wo steht denn Deine FHEM-Maschine? Direkt am Nordpol?

Nee, ganz unabenteuerlich in Italien und ich bin gerade in der Schweiz. Fürchterlich wenn man Zeit zum Basteln hat und nicht kann.

Ich komm über alle erdenklichen Wege an den Raspi ran .... allerdings nur wenn er läuft. Man könnte ihn ja auch über fhem vom Strom trennen im Fall der Fälle, aber ist halt nix mit fhem ohne fhem :D Gerade noch auf der Suche nach dem Schwanz der Katze ohne dass sie reinbeißt.

Normalerweise ist der Raspi Rock solid, nur Restart mag er neuerdings ab und zu nicht mehr. Das war Jahrelang kein Problem. Wie machst du das mit dem 24h Reboot wenn er hängt? Hart vom Strom nehmen über Zeitschaltuhr oder so? Kann mir nicht vorstellen, dass er das mag.



Ein Jahres-Filelog bei der Menge der Daten könnte evtl schmerzhaft groß sein.

holle75

Zitat von: mumpitzstuff am 28 Dezember 2018, 17:26:23
Im einfachsten Fall scheint die Sonne genau dann, wenn keine Wolken da sind. Das bedeutet, wenn du 60% Bewölkung hast, dann bleiben 40% Sonne über. Bei 80% Bewölkung = 20% Sonne usw. Das ist allerdings nur ein sehr grober Wert...
Danke fürs Mitdenken.


Ich bin gerade gedanklich hier dran -> https://www.hev-schweiz.ch/vermieten/nebenkostenabrechnungen/sonnenscheindauer/
ZitatAlsbald die Differenz zwischen diffuser und direkter Sonnenstrahlung einen Wert von 200 W/m2 erreicht, wird dies als Sonnenschein erfasst.

curt

OT:
Zitat von: holle75 am 28 Dezember 2018, 19:00:48
Ich komm über alle erdenklichen Wege an den Raspi ran .... allerdings nur wenn er läuft. Man könnte ihn ja auch über fhem vom Strom trennen im Fall der Fälle, aber ist halt nix mit fhem ohne fhem :D Gerade noch auf der Suche nach dem Schwanz der Katze ohne dass sie reinbeißt.

<lacht>
Im Hauptberuf ein Hochverfügbarkeitsrechenzentrum. Und als Entspannung als Hobby noch eins, aber zu Hause.

Zitat von: holle75 am 28 Dezember 2018, 19:00:48
Wie machst du das mit dem 24h Reboot wenn er hängt?

Also für kernel-panic habe ich bei meinem Router genau gar keine Lösung, Katze-in-Schwanz-Problem. Bislang stolperte ich über Stromausfall, über Drecksding will mit neuem Strom nicht booten, über Drecksding will nicht mehr mit VDSL spielen.

Zitat von: holle75 am 28 Dezember 2018, 19:00:48
Ein Jahres-Filelog bei der Menge der Daten könnte evtl schmerzhaft groß sein.

Optimierungsproblem.
Spätestens, wenn man @eki s chart-Widget mal bei der Arbeit gesehen hat, will man über das komplette Jahr navigieren. Aktuell tut mein RPi3 das auch ganz schön. Falls er da mal überfordert sein sollte, kommt an die Stelle eine APU für um die 200 Euro hin.

Nein. Das DB-Logging halte ich für Budenzauber. Ich habe es geschafft, mich 30 Jahre von jeder Art von Datenbank fernzuhalten. Ich habe nicht vor, das zu ändern.

Ich wünsche schönen Urlaub bei bestem Wetter.
RPI 4 - Jeelink HomeMatic Z-Wave