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.
sieht gut aus, besten Dank!
Dann haben wir es geschafft.