NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
Hallo @SBorg ,
kann man bei Deinem Statistikscript auch eine Rückrechnung anstoßen?
Ich hatte durch Falschmessungen etliche Male -5000 C in meiner Datenbank und und nach Korrektur der Werte in der InfluxDB, bleiben natürlich die falsche Durschnittstemperatur, falsche Anzahl an "sehr kalten Tagen" , etc. übrig.
Grüße,
Kay -
Hi, leider nein, da die Werte (zumindest etliche) auf vorherigen Werten aufbauen. ZB. die Höchsttemperatur des Monats ist easy. Da kann ich einfach über alle Datensätze iterieren und den höchsten Wert festhalten. Fertig
Bei den Gradtagen muss ich dann aber mehrere Bedingungen pro Wert kontrollieren und dann je nach Ergebnis feststellen ob dies ein xy-Gradtag ist. Das dauert bei ~ 3.000 Datensätzen pro Tag schon einen Augenblick. Deswegen wird dann das heutige Ergebnis zum vorherigen einfach dazu addiert, also gestriger Wert von xy-Gradtag plus 1 von heute und sofort wieder neu gespeichert. Am Monatsersten werden dann nur noch die Werte gelesen und passend zum Monat/Jahr gespeichert und alles wieder genullt.
Man müsste also um die Routine eine Schleife bauen, die dann dem Skript "vorgaukelt" es ist zB. Mai und dann für die Tage 1-31 jeweils das Skript durchläuft. Dann haättest du erst die korrekten Werte für Mai 202x (x=man müsste natürlich auch das Jahr noch dementsprechend vorgaukeln falls es nicht das aktuelle ist).
-
@sborg
Alles klar. Die Frage war es auf jeden Fall wert, gestellt zu werden -
Die "Wetterwarnungen" scheinen auch zumindest passabel zu funktionieren, wobei mich das ein wenig überrascht. Wir haben hier im Verhältnis gesehen ziemlich günstige Hardware und nur Wissen von einem Laien, der sich dieses aus Wikis und diversen Beiträgen "aus den Fingern saugt..."
Trotz alle dem, Meldung vom DWD:
Wetterwarnung des Skripts:
-
@viper4iob said in [Linux Shell-Skript] WLAN-Wetterstation:
@sborg
Es sieht jetzt besser aus, ich denke es passt jetzt. Danke fürs schnelle fixen.Nebenbei bemerkt: ich habe eine Froggit HP1000SE Pro.
Zum Thema welche Wetterstation die 10 min Werte direkt sendet.@SBorg
Es scheint da doch noch ein kleines Problem zu geben.
Meine Wetterstation sendet ja die 10min Durchschnittswerte von Windstärke und -richtung direkt, d.h. das Skript braucht die nicht mehr berechnen.
Ich habe in der configUSE_AVG_WIND=true
stehen, mir ist aber aufgefallen, dass auf openSenseMap weiterhin die aktuellen Werte und nicht die Durchschnittswerte angezeigt werden.
Ist das vielleicht ein ähnliches Problem wie mit den Durchschnitts-DPs, als die nur mit den berechneten Werten gefüttert wurden, und wenn es keinen berechneten Wert gab, dann der normale Wert benutzt wurde, anstatt den 10 min Werten, die direkt von der Wetterstation kamen. -
Hat schon jemand etwas umgesetzt mit Windböen ? Es gibt ja Wind_Max nach welcher Zeit wird hier gerechnet?
Ich möchte einen Alarm bzw eine Anzeige haben welche mir bei Sturm möglichst schnell den höchsten Wert ausspuckt.
Also 10:11 Uhr 60 km/h 10:14 62km/h ...
Kann ich hier mit wind_max arbeiten oder lieber mit Wind? Bei Wind kommt es mir so vor das auch nur ein durchschnitt irgendwie angezeigt wird.
-
Ist es angedacht das super Skript "wetterstation-statistik.js" auf influx 2 umzustellen oder ist das gar schon geschehen? Aktuell bekomme ich folgende Fehler:
javascript.0 2022-11-11 10:26:00.095 warn TypeError: Reduce of empty array with no initial value at Array.reduce (<anonymous>) at Object.cb (script.js.XSkripte.wetterstation-statistik:7666:43) at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5809:71) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:322:37) at processImmediate (internal/timers.js:464:21) javascript.0 2022-11-11 10:26:00.092 warn States system pmessage io.messagebox.system.adapter.javascript.0 {"command":"query","message":{"result":[],"error":"Invalid call"},"from":"system.adapter.influxdb.1","callback":{"message":"select * FROM \"0_userdata.0.DP1500.Aussentemperatur\" WHERE time >= 1668034800000000000 AND time <= 1668121199000000000; select * FROM \"0_userdata.0.DP1500.Wind_max\" WHERE time >= 1668034800000000000 AND time <= 1668121199000000000; select * FROM \"0_userdata.0.DP1500.Regen_Tag\" WHERE time >= 1668034872000000000 AND time <= 1668121199000000000","id":2,"ack":true,"time":1668158760014},"_id":22946247} Reduce of empty array with no initial value javascript.0 2022-11-11 10:26:00.089 error script.js.XSkripte.wetterstation-statistik: Fehler beim Lesen der InfluxDB: Invalid call influxdb.1 2022-11-11 10:26:00.083 error queries: Error: 3 Error happened while processing 3 queries
Vllt habe ich es auch überlesen. Falls ja sorry dafür.
-
@schittl
siehe https://github.com/SBorg2014/WLAN-Wetterstation/issues/41ein :+1 beim issue würde helfen
-
Hallo lieber @SBorg, ich hoffe dir gehts gut!
Seit gestern herrschen bei mir negative Außentemperaturen und seitdem kommt bei Wolkenbasis nurnoch 0. -
@rushmed said in [Linux Shell-Skript] WLAN-Wetterstation:
Hallo lieber @SBorg, ich hoffe dir gehts gut!
Seit gestern herrschen bei mir negative Außentemperaturen und seitdem kommt bei Wolkenbasis nurnoch 0.Ich habe das gleiche Problem, genauer gesagt steht bei mir immer "null".
Ich habe mir das jetzt mal angeschaut, das Problem ist folgende Zeile der Funktion do_wolkenbasis() in der wetterstation.sub:
local WOLKENBASIS=$(echo "scale=2;(${MESSWERTE[1]}-${MESSWERTE[2]})*125"| bc -l)
MESSWERTE[1] ist die Außentemperatur
MESSWERTE[2] ist der Taupunkt
Das bc Kommando hat scheinbar ein Problem, wenn MESSWERTE[2] negativ ist. Das kommt dann mit dem Minus Minus nicht zurecht und schmeißt einen Syntax Error.
Wenn man um den MESSWERTE[2] nochmal Klammern setzt, geht es wieder, die Zeile sieht dann so aus:
local WOLKENBASIS=$(echo "scale=2;(${MESSWERTE[1]}-(${MESSWERTE[2]}))*125"| bc -l)
Danach das Wetterstationsskript oder falls eingerichtet den Dienst neu starten und dann sollte das wieder funktionieren. -
@viper4iob sagte in [Linux Shell-Skript] WLAN-Wetterstation:
local WOLKENBASIS=$(echo "scale=2;(${MESSWERTE[1]}-(${MESSWERTE[2]}))*125"| bc -l)
Cool, danke. Habs mal eingebaut.
Edit: Sieht gut aus!
-
@viper4iob sagte in [Linux Shell-Skript] WLAN-Wetterstation:
local WOLKENBASIS=$(echo "scale=2;(${MESSWERTE[1]}-(${MESSWERTE[2]}))*125"| bc -l)
super, funktioniert hier auch!
Danke! -
@viper4iob Danke funktioniert
-
Ich bin da eventuell über noch einen kleinen Fehler gestolpert, und zwar geht es um die Wetterwarnung Tau/Nebel und Reif.
Diese passieren doch nur, wenn der Taupunkt über der Außentemperatur liegt, oder?
Ich habe mich nämlich gewundert, warum bei mir aktuell ständig Reif bei Wetterwarnung angezeigt wird, obwohl der Taupunkt unter der Außentemperatur liegt.Laut wetterstation.sub geht es in die if Anweisung rein, wenn MESSWERTE[2] kleiner als MESSWERTE[1] ist:
#Tau/Nebel und Reif if [ 1 -eq "$(echo "${MESSWERTE[2]} < ${MESSWERTE[1]}" | bc -l)" ]; then if (( $(bc -l <<< "${MESSWERTE[5]} >= 99") )); then WARNUNG="Tau/Nebel"; fi if (( $(bc -l <<< "${MESSWERTE[1]} <= 0.5") )); then WARNUNG="Reif"; fi fi
MESSWERTE[2] = Taupunkt
MESSWERTE[1] = AußentemperaturD.h. es geht in die if-Anweisung, wenn der Taupunkt kleiner ist als die Außentemperatur.
Es müsste doch aber genau anders herum sein, also:
${MESSWERTE[1]} < ${MESSWERTE[2]}
Oder habe ich irgendeinen Denkfehler? -
Der Taupunkt ist die Temperatur an dem die Luft, keine Feuchtigkeit mehr halten kann (banal erklärt).
Dann passt es doch, oder?
Wenn der Taupunkt niedriger als die aktuelle Temperatur liegt, fällt die Luftfeuchtigkeit als Nebel oder bei Frost als Reif aus.Dies gibt nur die Faktenlage im Kopf des Autors wieder
-
@boronsbruder
Ich habe jetzt nochmal im Internet mehrere Seiten gecheckt, wie z.B.
https://weather.com/de-DE/wissen/wetterlexikon/news/taupunkt-so-entstehen-nebel-reif-und-wolken
Da steht:
"Im Herbst und Winter wallen die Nebel. Der Grund dafür ist, dass die Temperatur in der kalten Jahreszeit häufig unter den Taupunkt sinkt. Wird der Taupunkt – Meteorologen sprechen auch von der Taupunkttemperatur – erreicht, kann sich Wasserdampf als Tau oder Nebel aus feuchter Luft abscheiden, dabei bildet er Tröpfchen in der Luft. Bei tieferen Temperaturen gefrieren die Tröpfchen sofort, es entstehen Eisablagerungen, sogenannter Reif."Die Außentemperatur (MESSWERTE[1]) muss den Taupunkt (MESSWERTE[2]) quasi fallend erreichen oder eben darunter sinken, also Außentemperatur < Taupunkt.
Das wäre dann eben genau:
${MESSWERTE[1]} < ${MESSWERTE[2]}
Aktuell steht im Skript aber:
${MESSWERTE[2]} < ${MESSWERTE[1]}
-
@viper4iob
Natürlich...
Ich hab es wieder mal verdreht... -
@viper4iob
erstellst du bitte ein issue auf github damit @SBorg es im Auge behält (er war schon einige Zeit nicht mehr im Forum ). Für dieWolkenbasis
hab ich´s schon gemacht. -
@latzi said in [Linux Shell-Skript] WLAN-Wetterstation:
@viper4iob
erstellst du bitte ein issue auf github damit @SBorg es im Auge behält (er war schon einige Zeit nicht mehr im Forum ). Für dieWolkenbasis
hab ich´s schon gemacht.Erledigt und @SBorg hat auch reagiert:
https://github.com/SBorg2014/WLAN-Wetterstation/issues/47 -
@viper4iob said in [Linux Shell-Skript] WLAN-Wetterstation:
@viper4iob said in [Linux Shell-Skript] WLAN-Wetterstation:
@sborg
Es sieht jetzt besser aus, ich denke es passt jetzt. Danke fürs schnelle fixen.Nebenbei bemerkt: ich habe eine Froggit HP1000SE Pro.
Zum Thema welche Wetterstation die 10 min Werte direkt sendet.@SBorg
Es scheint da doch noch ein kleines Problem zu geben.
Meine Wetterstation sendet ja die 10min Durchschnittswerte von Windstärke und -richtung direkt, d.h. das Skript braucht die nicht mehr berechnen.
Ich habe in der configUSE_AVG_WIND=true
stehen, mir ist aber aufgefallen, dass auf openSenseMap weiterhin die aktuellen Werte und nicht die Durchschnittswerte angezeigt werden.
Ist das vielleicht ein ähnliches Problem wie mit den Durchschnitts-DPs, als die nur mit den berechneten Werten gefüttert wurden, und wenn es keinen berechneten Wert gab, dann der normale Wert benutzt wurde, anstatt den 10 min Werten, die direkt von der Wetterstation kamen.Das Thema habe ich jetzt auch mal genauer angeschaut und auch ein Issue dazu geöffnet:
https://github.com/SBorg2014/WLAN-Wetterstation/issues/48
Ich habe dort weiterhin einen Code-Block hinterlegt, wie ich es jetzt umgebaut habe. So funktioniert es bei mir aktuell.
Falls es jemand dringend brauchen sollte, kann er das von dort übernehmen bis es eine neue Version gibt.