roe-dl / weewx-DWD

Darstellung von Wettersymbolen in WeeWX sowie Vorhersage- und Warndaten herunterladen und für WeeWX und Web-Darstellung aufbereiten

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Variable "days" in dwd-mosmix/forecast_placemark

hoetzgit opened this issue · comments

Hallo, ich probiere gerade etwas mit dwd-mosmix und glaube, dass in der Funktion forecast_placemark die Definition der Variable days fehlt. Es kommt zu einer entsprechenden Fehlermeldung bei Verwendung des Parameters --hourly. Bin aber kein Python Experte, es kommt jedoch nach der Definition keine Fehlermeldung mehr.

Viele Grüße
Henry

Um das nachvollziehen zu können, müßte ich wissen, mit welcher Station die Fehlermeldung aufgetreten ist. Außerdem wäre die komplette Fehlermeldung hilfreich. Dann kann ich es mir ansehen.

Hallo, hier zusätzliche Angaben:

Station: Weiden, ID: 10688

Aufruf:
./dwd-mosmix --config=/home/weewx/weewx.conf --verbose --hourly 10688

Ausgabe:

-- MOSMIX_L_2022022209_10688.kml --
processing KML file
KML file processed, 1 placemarks found
what to output: ['hourly', 'html', 'json']
start loop over placemarks
process placemark id "10688" name "WEIDEN"
output hourly forecast
<ephem.Observer date='2022/2/22 11:00:00' epoch='2022/2/22 11:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
night=False ww=(2, 'Bewölkung unverändert 73%', 'State of sky on the whole unchanged 73.0', 27, 'mostly-cloudy-day.png', '5-8.png')
<ephem.Observer date='2022/2/22 12:00:00' epoch='2022/2/22 12:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
night=False ww=(3, 'Bewölkung zunehmend 77%', 'Clouds generally forming or developing 77.0', 26, 'mostly-cloudy-day.png', '5-8.png')
<ephem.Observer date='2022/2/22 13:00:00' epoch='2022/2/22 13:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
night=False ww=(3, 'Bewölkung zunehmend 80%', 'Clouds generally forming or developing 80.0', 26, 'mostly-cloudy-day.png', '5-8.png')
<ephem.Observer date='2022/2/22 14:00:00' epoch='2022/2/22 14:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
night=False ww=(3, 'Bewölkung zunehmend 82%', 'Clouds generally forming or developing 82.0', 26, 'mostly-cloudy-day.png', '5-8.png')
<ephem.Observer date='2022/2/22 15:00:00' epoch='2022/2/22 15:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
night=False ww=(3, 'Bewölkung zunehmend 86%', 'Clouds generally forming or developing 86.0', 26, 'mostly-cloudy-day.png', '5-8.png')
<ephem.Observer date='2022/2/22 16:00:00' epoch='2022/2/22 16:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
night=False ww=(3, 'Bewölkung zunehmend 89%', 'Clouds generally forming or developing 89.0', 26, 'mostly-cloudy-day.png', '8-8.png')
<ephem.Observer date='2022/2/22 17:00:00' epoch='2022/2/22 17:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
night=True ww=(3, 'Bewölkung zunehmend 94%', 'Clouds generally forming or developing 94.0', 26, 'mostly-cloudy-night.png', '8-8.png')
<ephem.Observer date='2022/2/22 18:00:00' epoch='2022/2/22 18:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
night=True ww=(61, 'durchgehend leichter Regen', 'slight rain, not freezing, continuous', 23, 'rain.png', '7.png')
<ephem.Observer date='2022/2/22 19:00:00' epoch='2022/2/22 19:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
night=True ww=(61, 'durchgehend leichter Regen', 'slight rain, not freezing, continuous', 23, 'rain.png', '7.png')
<ephem.Observer date='2022/2/22 20:00:00' epoch='2022/2/22 20:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
night=True ww=(61, 'durchgehend leichter Regen', 'slight rain, not freezing, continuous', 23, 'rain.png', '7.png')
<ephem.Observer date='2022/2/22 21:00:00' epoch='2022/2/22 21:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
night=True ww=(61, 'durchgehend leichter Regen', 'slight rain, not freezing, continuous', 23, 'rain.png', '7.png')
<ephem.Observer date='2022/2/22 11:00:00' epoch='2022/2/22 11:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
<ephem.Observer date='2022/2/22 12:00:00' epoch='2022/2/22 12:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
<ephem.Observer date='2022/2/22 13:00:00' epoch='2022/2/22 13:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
<ephem.Observer date='2022/2/22 14:00:00' epoch='2022/2/22 14:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
<ephem.Observer date='2022/2/22 15:00:00' epoch='2022/2/22 15:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
<ephem.Observer date='2022/2/22 16:00:00' epoch='2022/2/22 16:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
<ephem.Observer date='2022/2/22 17:00:00' epoch='2022/2/22 17:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
<ephem.Observer date='2022/2/22 18:00:00' epoch='2022/2/22 18:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
<ephem.Observer date='2022/2/22 19:00:00' epoch='2022/2/22 19:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
<ephem.Observer date='2022/2/22 20:00:00' epoch='2022/2/22 20:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
<ephem.Observer date='2022/2/22 21:00:00' epoch='2022/2/22 21:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
<ephem.Observer date='2022/2/22 22:00:00' epoch='2022/2/22 22:00:00' lon='12:10:48.0' lat='49:40:12.0' elevation=438.00000000000006m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
json
Traceback (most recent call last):
  File "./dwd-mosmix", line 1204, in <module>
    dwd.forecast_all(mmos,output,options.dry_run,lang=options.lang)
  File "./dwd-mosmix", line 1078, in forecast_all
    self.forecast_placemark(placemark, mos['ForecastTimeSteps'], issue, output, dryrun, lang)
  File "./dwd-mosmix", line 1059, in forecast_placemark
    self.dump(placemark,days,timesteps,issue)
UnboundLocalError: local variable 'days' referenced before assignment

Konfiguration:

[DeutscherWetterdienst]
    path='/home/weewx/skins/Belchertown/dwd'
    [[warning]]
        icons='../dwd/warn_icons_50x50'
        states='Bayern',
        [[[counties]]]
              'Kreis Neustadt a.d. Waldnaab'='NEW'
              # 'Mitgliedsgemeinde in Verwaltungsgemeinschaft Weiherhammer'='WEIHERHAMMER'
        [[[cities]]]
              'Mitgliedsgemeinde in Verwaltungsgemeinschaft Weiherhammer'='WEIHERHAMMER'
    [[forecast]]
        icons='../images'

Viele Grüße und Danke für die Software :-)
Henry

Noch ein anderer Fehler der mir aufgefallen ist

Aufruf:
./dwd-cap-warnings --config=/home/weewx/weewx.conf --resolution=city --verbose

Ausgabe:

Using configuration file /home/weewx/weewx.conf
Traceback (most recent call last):
  File "./dwd-cap-warnings", line 888, in <module>
    dwd = DwdWarnings(config,options.verbose)
  File "./dwd-cap-warnings", line 421, in __init__
    if not isinstance(self.states,list): self.states=[states]
NameError: name 'states' is not defined

Fehler tritt bei dieser Konfiguration auf:
states='Bayern'

Abhilfe:
Das Komma in der Konfiguration nach 'Bayern' verhindert den Fehler
states='Bayern',

Geändert habe ich in dem File auch die Zeile mit:
'BY':'https://www.dwd.de/DE/wetter/warnungen_aktuell/warnlagebericht/nordrhein_westfalen/warnlage_nrw_node.html',

zu:
'BY':'https://www.dwd.de/DE/wetter/warnungen_aktuell/warnlagebericht/bayern/warnlage_bay_node.html',

Für den Fehler in dwd-mosmix: Das ist eher ein Fehler der Dokumentation oder der Konzeption.

  • Wenn man nur die stündliche Vorhersage will, dann schließt das die Ausgabe der JSON-Datei derzeit aus. Neben der Option --hourly braucht man noch die Option --html.
  • Wenn man wiederum die JSON-Datei will, braucht man auch die Tagesvorhersage und damit zusätzlich die Option
    --daily.

Ich werde mal darüber nachdenken, ob man die JSON-Ausgabe so anpaßt, daß sie mit und ohne Tagesvorhersage möglich ist.

Der Fehler in dwd-mosmix besteht darin, daß Klammern fehlen:

Falsch:

        if 'daily' in output or 'json' in output or 'belchertown' in output:
            if self.verbose:
                loginf('calculate daily forecast')
            days = self.calculate_daily_forecast(placemark,timesteps,lang=lang)

Richtig:

        if ('daily' in output) or ('json' in output) or ('belchertown' in output):
            if self.verbose:
                loginf('calculate daily forecast')
            days = self.calculate_daily_forecast(placemark,timesteps,lang=lang)

Mit der Änderung wird die Tagesvorhersage auch dann berechnet, wenn nur die JSON-Ausgabe gewählt ist. So war es letztlich vorgesehen. Die im vorherigen Beitrag angedachte Anpassung der JSON-Ausgabe erübrigt sich damit.

Zu dwd-cap-warnings:

  • Der Fehler wird korrigiert, daß es auch ohne Komma am Ende geht.
  • Der Link für Bayern wird übernommen.

Vielen Dank für die Unterstützung. Dann warte ich mal auf die Anpassungen im Code und teste fleißig weiter. Was wird denn 'belchertown' für ein Parameter? Wollte mich eigentlich damit beschäftigen, die DWD Daten in das Aeris/Darksky Vorhersagelayout der Belchertown Skin zu übernehmen, sollte ich damit wohl noch warten? ;-)

Viele Grüße
Henry

Die nächste Version wird die forecast.json-Datei für die Belchertown-Skin erzeugen können. Ich bin schon fleißig am Testen.

Da freu ich mich drauf und nochmals vielen Dank. Übrigens ist auch die Wetter-Webseite eine prima Inspirationsquelle.

Weiterhin viel Freude beim Entwickeln.

Um die Fehler aus diesem Vorgang zu beseitigen, habe ich ein extra Commit hochgeladen. Es enthält schon Code für die Unterstützung der Belchertown-Skin, auch wenn der noch nicht fertig ist. Um ihn dennoch zu testen, ist eine Ergänzung in weewx.conf nötig:

[DeutscherWetterdienst]
    ...
    [[Belchertown]]
        section = "Belchertown"
        warnings = DL
        forecast = P0291

Der Schlüssel section muß den Namen des Abschnittes der Belchertown-Skin unter [StdReport] angeben. Der Schlüssel warnings gibt das Kürzel der zu verwendenden Warn-Datei aus dem Abschnitt [[warning]] an. Der Schlüssel forecast gibt das Kürzel der Station an, deren Vorhersage verwendet werden soll.

Beim Programmaufruf muß dwd-cap-warnings unbedingt vor dwd-mosmix aufgerufen werden. dwd-mosmix muß mit der zusätzlichen Option --belchertown aufgerufen werden.

Es sind keine Eingriffe in die Skin erforderlich. Lediglich ein Parameter muß angepaßt werden:

forecast_stale = 86400

Diese Änderung bewirkt, daß keine Abfragen bei Aeris mehr durchgeführt werden, die die von dwd-mosmix erzeugte Vorhersage überschreiben könnten.

Ich bitte um Rückmeldung, ob die hier ursprünglich gemeldeten Fehler mit diesem Update beseitigt sind. Für eventuelle Fragen zu der --belchertown-Option bitte einen neuen Vorgang eröffnen.

Prima, ich hoffe, ich komme gleich heute noch dazu etwas zu testen und gebe dann zeitnah eine Rückmeldung. Vielen Dank.

Grüsse
Henry

Hallo, für mich sind die Fehler aus #3 behoben, alle o.g. Aufrufe funktionieren bei mir ohne Fehlermeldung.
zu --belchertown mache ich einen neuen Vorgang.

Noch ein kleiner Hinweis zur Doku: https://github.com/roe-dl/weewx-DWD/wiki/Abkürzungen-der-Bundesländer-beim-Deutschen-Wetterdienst

in wget-dwd habe ich für Bundesland Bayern DWD_BUNDESLAND="DWMG" konfiguriert. Der in der Doku verwendete Wert in Spalte VHDL (DWMS) hat nicht funktioniert. Der Wert MS hat jedoch für DWD_WARN="https://www.dwd.de/DWD/warnungen/warnstatus/SchilderMS.jpg" gepasst.

Viele Grüße
Henry