Seite 2 von 2

Re: Treiber unter Weewx liefert "invalid " Werte

Verfasst: 04 Aug 2023, 11:37
von wedder_man
Scheint zu passen..
2023-08-04_11-34-11-34-28-Screenshot.png
2023-08-04_11-34-11-34-28-Screenshot.png (10.11 KiB) 676 mal betrachtet
Richtung wird jetzt auch angezeigt.
Ich lass das aber erst mal so "offen" und schau mir das die nächsten Tage an.
Denke aber das passt dann so.
Vielen Dank für Euren Input. :prayer:

Re: Treiber unter Weewx liefert "invalid " Werte

Verfasst: 04 Aug 2023, 18:47
von wk893b
@wk893b: die Anweisung lautet in Sprache übersetzt:
mache die Zuweisung a = b wenn b < 114 anderenfalls a = None (NULL)
da fehlt m.E. nichts, auch kein ":" - siehe funktionierendes Beispiel oben
Ok, wer heilt hat Recht!
Ich gebe mich bis zum Beweis des Gegenteils geschlagen, auch wenn die Syntax nicht logisch erscheint.
In deutscher Sprache übersetzt, würde ich analog von einer etwas verdrehten Satzstellung ausgehen.

Das Beispiel stammt aus '#1:
if wso == 0 and wsv == 0:
packet['windSpeed'] = ws
if packet['windSpeed'] is not None:
packet['windSpeed'] *= 3.6 # weewx wants km/h
packet['windDir'] = wd
else:
log.info('invalid wind reading: speed=%s dir=%s overflow=%s invalid=%s'
% (ws, wd, wso, wsv))
packet['windSpeed'] = None
packet['windDir'] = None
Das erscheint vom Aufbau her doch logischer.
Offensichtlich scheint Python in dieser Hinsicht wesentlich schmerzfreier zu sein als PHP.

Re: Treiber unter Weewx liefert "invalid " Werte

Verfasst: 04 Aug 2023, 19:23
von Gyvate
kein Problem - der Doppelpunkt hat in Python mehrfache Bedeutung/Verwendung.
Im Code-Beispiel, auf das Du Dich beziehst, dient er dem Einrücken dessen, was zwischen if und else (in verschiedenen Zeilen) steht. Meine Schreibweise ist die Variante, das in einer Zeile zu schreiben. Dann gibt es auch keine(n) Doppelpunkt(e).
Für eine Zeile in weewx.conf ist das m.M.n. hinnehmbar. In einem größeren Code-Stück ist die ":"-Variante (dann aber auch mehrzeilig und eingerückt) sicher übersichtlicher.