roe-dl / weewx-DWD

Darstellung von Wettersymbolen in WeeWX sowie Vorhersage- und Warndaten herunterladen und für WeeWX und Web-Darstellung aufbereiten
GNU General Public License v3.0
19 stars 4 forks source link

Variable "days" in dwd-mosmix/forecast_placemark #3

Closed hoetzgit closed 2 years ago

hoetzgit commented 2 years ago

Hallo, ich probiere gerade etwas mit dwd-mosmix und glaube, dass in der Funktion forecast_placemark die Definition der Variable daysfehlt. 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

roe-dl commented 2 years ago

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.

hoetzgit commented 2 years ago

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

hoetzgit commented 2 years ago

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',

roe-dl commented 2 years ago

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

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

roe-dl commented 2 years ago

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.

roe-dl commented 2 years ago

Zu dwd-cap-warnings:

hoetzgit commented 2 years ago

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

roe-dl commented 2 years ago

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

hoetzgit commented 2 years ago

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

Weiterhin viel Freude beim Entwickeln.

roe-dl commented 2 years ago

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.

hoetzgit commented 2 years ago

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

Grüsse Henry

hoetzgit commented 2 years ago

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