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

log_success not boolean, if read from weewx.conf?

roe-dl opened this issue · comments

Discussed in #18

Originally posted by hoetzgit March 11, 2022
Hallo, ich probiere etwas mit dem "uba Mod", aber meine Python Kenntnisse reichen nicht.

Bei Aufruf:
/usr/local/bin/weewx-DWD/dwd-mosmix --config=/home/weewx/weewx.conf --print-uba=aqi --dry-run 509

kommt der JSON String immer zusätzlich mit der Ausgabe:

successfully downloaded https://www.umweltbundesamt.de/api/air_data/v2/airquality/json?date_from=2022-03-10&date_to=2022-03-11&lang=de&station=509
[
    {
...

Da ich diese Ausgabe für meinen Zweck in diesem Moment nicht möchte, habe ich kein --verbose angegeben und debug mit 0 sowie log_success überall mit False konfiguriert. Zum Eingrenzen des "Problems" habe ich den Code in download_uba testweise mit zwei prints so verändert:

...
        if reply.status_code==200:
            print('self.log_success is ', self.log_success)
            print('self.verbose is ', self.verbose)
            if self.log_success or self.verbose:
                loginf('successfully downloaded %s' % reply.url)
...

Ausgabe mit beiden Werten False aber trotzdem successfully ...:

self.log_success is  False
self.verbose is  False
successfully downloaded https://www.umweltbundesamt.de/api/air_data/v2/airquality/json?date_from=2022-03-10&date_to=2022-03-11&lang=de&station=509
[
    {
...

Ändere ich aber zum Test mal so und setze die Variablen:

...
        if reply.status_code==200:
            self.log_success = False
            self.verbose = False
            print('self.log_success is ', self.log_success)
            print('self.verbose is ', self.verbose)
            if self.log_success or self.verbose:
                loginf('successfully downloaded %s' % reply.url)
...

dann ist die Ausgabe wie erwartet ohne successfully ...:

self.log_success is  False
self.verbose is  False
[
    {
...

Kann es sein, dass z.B. diese Zuweisung:
self.log_success = forecast_dict.get('log_success',config_dict['DeutscherWetterdienst'].get('log_success',config_dict.get('log_success',False)))
keinen "echten" Boolean erzeugt?

Viele Grüße und ein schönes Wochenende
Henry

Ergänzung:
ist in der weewx.conf log_success nirgends definiert, ist die Ausgabe auch korrekt, da dann der default False in der Zuweisung den Boolean offensichtlich korrekt setzt.

WeeWX verwendet eine to_bool Funktion habe ich gesehen.

Ich habe erst einmal sichergestellt, daß die beiden Werte boolean sind. Commit c34bc86.

Hallo, habe mit folgender Änderung im source den Commit kurz getestet. Alle log_success in der weewx.conf stehen auf False.

Anpasung Source:

print("['DeutscherWetterdienst']['forecast'] log_success is ", forecast_dict.get('log_success',None))
print("['DeutscherWetterdienst'] log_success is ", config_dict['DeutscherWetterdienst'].get('log_success',None))
print("weewx.conf log_success is ", config_dict.get('log_success',None))
print("weewx.conf debug is ", config_dict.get('debug',None))
self.log_success = bool(forecast_dict.get('log_success',config_dict['DeutscherWetterdienst'].get('log_success',config_dict.get('log_success',False))))
print('self.log_success is ', self.log_success)

Aufruf:
/usr/local/bin/weewx-DWD/dwd-mosmix --config=/home/weewx/weewx.conf --print-uba=aqi --dry-run 509

Ausgabe:

Using configuration file /home/weewx/weewx.conf
['DeutscherWetterdienst']['forecast'] log_success is  False
['DeutscherWetterdienst'] log_success is  False
weewx.conf log_success is  False
weewx.conf debug is  0
self.log_success is  True
successfully downloaded https://www.umweltbundesamt.de/api/air_data/v2/airquality/json?date_from=2022-03-15&date_to=2022-03-16&lang=de&station=509
[

wenn alle log_success in der weewx.conf auskommentiert werden, dann wieder durch den default der gewünschte Wert:

Using configuration file /home/weewx/weewx.conf
['DeutscherWetterdienst']['forecast'] log_success is  None
['DeutscherWetterdienst'] log_success is  None
weewx.conf log_success is  None
weewx.conf debug is  0
self.log_success is  False
[

Grüße
Henry

Vielleicht sollten wir noch den Typ hinzufügen:

print("['DeutscherWetterdienst']['forecast'] log_success is ", forecast_dict.get('log_success',None),type(forecast_dict.get('log_success',None)),bool(forecast_dict.get('log_success',None)))
print("['DeutscherWetterdienst'] log_success is ", config_dict['DeutscherWetterdienst'].get('log_success',None),type(config_dict['DeutscherWetterdienst'].get('log_success',None)),bool(config_dict['DeutscherWetterdienst'].get('log_success',None)))
print("weewx.conf log_success is ", config_dict.get('log_success',None),type(config_dict.get('log_success',None)),bool(config_dict.get('log_success',None)))
print("weewx.conf debug is ", config_dict.get('debug',None),type(config_dict.get('debug',None)))
self.log_success = bool(forecast_dict.get('log_success',config_dict['DeutscherWetterdienst'].get('log_success',config_dict.get('log_success',False))))
print('self.log_success is ', self.log_success)

Anpassung:

        print("['DeutscherWetterdienst']['forecast'] log_success is ", forecast_dict.get('log_success',None),type(forecast_dict.get('log_success',None)),bool(forecast_dict.get('log_success',None)))
        print("['DeutscherWetterdienst'] log_success is ", config_dict['DeutscherWetterdienst'].get('log_success',None),type(config_dict['DeutscherWetterdienst'].get('log_success',None)),bool(config_dict['DeutscherWetterdienst'].get('log_success',None)))
        print("weewx.conf log_success is ", config_dict.get('log_success',None),type(config_dict.get('log_success',None)),bool(config_dict.get('log_success',None)))
        print("weewx.conf debug is ", config_dict.get('debug',None),type(config_dict.get('debug',None)))
        self.log_success = forecast_dict.get('log_success',config_dict['DeutscherWetterdienst'].get('log_success',config_dict.get('log_success',False)))
        print('self.log_success is ', self.log_success, type(self.log_success), bool(self.log_success))

Ergebnis:

['DeutscherWetterdienst']['forecast'] log_success is  False <class 'str'> True
['DeutscherWetterdienst'] log_success is  False <class 'str'> True
weewx.conf log_success is  False <class 'str'> True
weewx.conf debug is  0 <class 'str'>
self.log_success is  False <class 'str'> True
successfully downloaded https://www.umweltbundesamt.de/api/air_data/v2/airquality/json?date_from=2022-03-16&date_to=2022-03-17&lang=de&station=509
[

Ich denke eine kleine Funktion analog to_bool in weeutil.py von WeeWX würde das "Problem" lösen.

Na dann: commit 6c18d1c

sieht gut aus, besten Dank!

Dann haben wir es geschafft.