NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@raspiuser sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Hallo,
eine (blöde) Frage ...:
Kann man das "am schlechtesten ablesbare Display auf dieser Welt" der ELV WS980 WiFi (komplett in ioBroker eingebunden) durch das dnt WeatherScreen PRO Display einfach 1:1 ohne irgendwelche Einstellungsänderungen ersetzen ?!Da der Wettermast identisch ist, ja. Aber das Display enthält auch die Einstellungen die du per App getätigt hast (WU/Ecowitt-Account, Port, IP, etc.) Die kannst du 1:1 übernehmen, musst es aber per App einstellen.
-
@da_woody sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@sborg autsch! das tut weh... hast wenigstens exteres backup?
Daten ja, aber die eigentliche Installation halt nicht
-
@sborg hehe, gleich mal auf die schnelle alle 4 VMs stop backup gemacht und runtergeholt aufs NAS...
-
@SBorg siehs mal positiv. Nach einer kompletten Neuinstallation sind auch alle Altlasten weg
-
@boronsbruder so kann mans auch sehn, spass bei dem wetter sieht anders aus...
kann ein lied trällern. musste gestern einen neuen router insten, mit kompletter umstellung auf meine config mit 2048 IP adrs... erschwerend kam noch ein FW update dazu, sodas mein backup nicht ganz funktioniert hat... -
@sborg said in [Linux Shell-Skript] WLAN-Wetterstation:
@rand Jupp, dann ist er vom WH45. Ich sag mal Danke im Namen der nachfolgenden User die so einen nutzen
Allerdings wird es in der nächsten Zeit nichts werden. Vermutlich durch die Hitze ist die SSD (gerade mal 1 Jahr alt) meines Intel NUCs gestern abgeraucht. Proxmox mit sämtlichen VMs + LXCs weg, darunter auch PiHole, Grafana, Influx, ioBroker usw.
Argh - Probleme die der Mensch nicht braucht
Kein Stress damit, mach erstmal das Dein Kram wieder tut, der Sensor läuft nicht weg
-
@SBorg Ich habe ein Problem mit der Wetterstatistik:
2021-06-22 01:03:00.006 - [32minfo[39m: javascript.0 (1975624) script.js.background.Wetterstation_Statistik_v22: Auswertung durchgeführt... 2021-06-22 01:03:05.072 - [31merror[39m: javascript.0 (1975624) script.js.background.Wetterstation_Statistik_v22: ReferenceError: REKORDWERTE_AUSGABEFORMAT is not defined 2021-06-22 01:03:05.072 - [31merror[39m: javascript.0 (1975624) at Template_Rekordwerte (script.js.background.Wetterstation_Statistik_v22:598:5) 2021-06-22 01:03:05.072 - [31merror[39m: javascript.0 (1975624) at runMicrotasks (<anonymous>) 2021-06-22 01:03:05.072 - [31merror[39m: javascript.0 (1975624) at runNextTicks (internal/process/task_queues.js:62:5) 2021-06-22 01:03:05.072 - [31merror[39m: javascript.0 (1975624) at listOnTimeout (internal/timers.js:523:9) 2021-06-22 01:03:05.073 - [31merror[39m: javascript.0 (1975624) at processTimers (internal/timers.js:497:7) 2021-06-22 01:03:05.083 - [31merror[39m: javascript.0 (1975624) script.js.background.Wetterstation_Statistik_v22: ReferenceError: REKORDWERTE_AUSGABEFORMAT is not defined 2021-06-22 01:03:05.083 - [31merror[39m: javascript.0 (1975624) at Template_Rekordwerte (script.js.background.Wetterstation_Statistik_v22:598:5) 2021-06-22 01:03:05.083 - [31merror[39m: javascript.0 (1975624) at runMicrotasks (<anonymous>) 2021-06-22 01:03:05.083 - [31merror[39m: javascript.0 (1975624) at runNextTicks (internal/process/task_queues.js:62:5) 2021-06-22 01:03:05.083 - [31merror[39m: javascript.0 (1975624) at listOnTimeout (internal/timers.js:523:9) 2021-06-22 01:03:05.083 - [31merror[39m: javascript.0 (1975624) at processTimers (internal/timers.js:497:7) 2021-06-22 01:03:05.084 - [31merror[39m: javascript.0 (1975624) script.js.background.Wetterstation_Statistik_v22: ReferenceError: REKORDWERTE_AUSGABEFORMAT is not defined 2021-06-22 01:03:05.085 - [31merror[39m: javascript.0 (1975624) at Template_Rekordwerte (script.js.background.Wetterstation_Statistik_v22:598:5)
Anscheinend gibt es Unstimmigkeiten beim
if (REKORDWERTE_AUSGABEFORMAT.search("[WERT]") != -1) { REKORDWERTEAUSGABE = REKORDWERTE_AUSGABEFORMAT.replace("[WERT]", wert+' '+unit); } else { REKORDWERTEAUSGABE = REKORDWERTE_AUSGABEFORMAT; }
Der kennt wohl das REKORDWERTE_AUSGABEFORMAT nicht. Kann/muss ich da noch was machen?
LG Rainer -
@rene55 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Hi,
REKORDWERTE_AUSGABEFORMAT is not defined
kann eigentlich nicht sein, dass wird "ganz oben" definiert. Wie sieht denn aktuell dein Template in den User-Einstellungen aus?
default:let REKORDWERTE_AUSGABEFORMAT="[WERT] im [MONAT] [JAHR]";
Ev. Anführungszeichen oder Semikolon eliminiert
...oder nutzt du schon den neuen JS-Controller (weil damit kann ich derzeit nicht testen ob es ggf. da zu Problemen kommt) ? -
@SBorg Hi,
ja Danke. Da hab ich gar nicht hingeguckt. Bei mir waren - warum auch immer - die Zeilen 46 - 56 komplett als Kommentar. Ich habs jetzt korrigiert und warte auf das morgige Log.
Nochmals Danke für Scripte und schnelle Hilfe.
LG Rainer -
Moin,
ich liebäugel mit der Froggit Station, hab da mal ne Frage zum Regenmesser. Kann man den auch als "Sensor" mißbrauchen? Ich bräuchte einen der erkennt ob es regent, damit ich die Aussenjalousie meiner Outdoorküche schließen kann. Mein Sensor zur Zeit ist einer am Wemos D1 und da muss ich jedes 0,5-0,75 Jahr einen neuen anbauen. Die lösen sich hier an der Ostsee irgendwie schneller auf, vermutlich durch die "salziger" Luft.
-
@nordischerjung sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Kann man den auch als "Sensor" mißbrauchen?
Nein, zumindest nicht relativ zeitnah. Da es ein Regenmengenmesser ist, muss systembedingt auch erst mal Regenmenge x ml gesammelt sein bevor er einen Puls auslöst. War es nun länger trocken (Messwippe ist kpl. leer + keine "Regenaltmenge" mehr drin) und es regnet nur leicht, kann es bis zu 20 Minuten dauern bis der erste Puls käme.
Selbst bei einem stärkeren Regenguss kann es paar Minuten dauern bis er die 1. Regenmenge meldet. Als Regensensor taugt es also nur bedingt. Besser einen "echten" Regensensor nutzen.Hast du einen 2€ - Chinasensor(*) im Einsatz? Ev. wäre da bspw. einer von Kemo besser, wobei mir bei Salzluft jeglicher Erfahrungswert abgeht
(*) ich habe nix gegen Chinateile, nutze ich auch recht sukzessiv. Nur ab und an für bestimmte Zwecke muss man halt auch mal "Marke" nutzen...
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@nordischerjung sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Kann man den auch als "Sensor" mißbrauchen?
Nein, zumindest nicht relativ zeitnah. Da es ein Regenmengenmesser ist, muss systembedingt auch erst mal Regenmenge x ml gesammelt sein bevor er einen Puls auslöst. War es nun länger trocken (Messwippe ist kpl. leer + keine "Regenaltmenge" mehr drin) und es regnet nur leicht, kann es bis zu 20 Minuten dauern bis der erste Puls käme.
Selbst bei einem stärkeren Regenguss kann es paar Minuten dauern bis er die 1. Regenmenge meldet. Als Regensensor taugt es also nur bedingt. Besser einen "echten" Regensensor nutzen.Hmm das ist ja blöd. Dann muss ich mir noch etwas einfallen lassen.
Hast du einen 2€ - Chinasensor(*) im Einsatz? Ev. wäre da bspw. einer von Kemo besser, wobei mir bei Salzluft jeglicher Erfahrungswert abgeht
(*) ich habe nix gegen Chinateile, nutze ich auch recht sukzessiv. Nur ab und an für bestimmte Zwecke muss man halt auch mal "Marke" nutzen...
Ja, das ist der AZDelivery Regensensor. Dann muss ich mal gucken ob der Kemo besser ist. Danke -
Hallo @SBorg
Hab gerade gesehn, dass ich vom Statistik-Script 3 komische Werte bekomme.
0_userdata.0.Statistik.Wetter.Rekordwerte.Temperatur_Spitzentiefstwert
0_userdata.0.Statistik.Wetter.Rekordwerte.value.Temp_Min
0_userdata.0.Statistik.Wetter.Jahreswerte.Temperatur_Tiefstwert
-
@negalein bei mir passen die 3 werte...
-
@nordischerjung sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Dann muss ich mal gucken ob der Kemo besser ist. Danke
Der "K" (=kapazitiv) sollte IMO auch Salzluft aushalten, da die Sensorfläche keinerlei direkten Kontakt mit der Luft/Regenwasser hat. 50 Ökker sind natürlich eine ganz andere Hausnummer
-
@negalein Den 1. und 3. Wert kannst du knicken, da diese auf dem 2. basieren. Wenn der 2. also nicht stimmt, muss der 1. und 3. ebenso falsch sein.
Der 2. wird aus der InfluxDB gelesen. Da das Template auch den Timestamp des Wertes berücksichtigt, wirst du im April 2021 zumindest einen Temperaturmesswert mit -5572.77 °C in der Influx stehen haben.
Da kann mal die Übertragung vom Display gesponnen haben, das Skript hat sich verschluckt, Verkettung ungünstiger Umstände, Influx....
Da hilft eigentlich nur den falschen Wert in der Influx zu droppen und die DPs korrekt von Hand zu setzen. Den mit den Werten wirst du wohl nie einen neuen Rekord erzielen
Ich könnte z.B. auch pauschal Werte von <-100 °C und > 100 °C verwerfen, dann bleibt aber trotzdem der falsche Wert in der Influx drin. Dann "knallt" es halt einfach nur später. Der Rostfleck am Auto verschwindet auch nicht einfach dadurch, dass ich die Augen schließe und denke "wenn ich es nicht sehe ist er auch nicht da".
[OT] yeah, heute kam meine SSD aus Garantieersatz zurück. Think positiv: 250GB eingeschickt, gibt es nicht mehr --> 480GB erhalten
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Da hilft eigentlich nur den falschen Wert in der Influx zu droppen und die DPs korrekt von Hand zu setzen.
wie macht man das? Und wie finde ich den korrekten Wert?
-
@negalein Per Terminal in Influx einloggen:
- influx
- use _dein_datenbankname_
- oder show databases um die Datenbanknamen anzuzeigen
- select * from "javascript.0.Wetterstation.Aussentemperatur" where value < -100
Dann sollten eigentlich alle Werte kleiner als -100 °C angezeigt werden. DP-Bezeichnung musst du ggf. bei anderer Struktur anpassen.
Der/die Werte haben dann einen Timestamp. Leider kann man bei Influx nur via Timestamp löschen und nicht einfach "kill alles kleiner -100...", also dann folgend deinen Timestamp einsetzen:- delete from "javascript.0.Wetterstation.Aussentemperatur" where time =1572614953000000000
Den bisherigen Rekordwert solltest du dann in der Statistik unter "Data" in den JSONs finden (kriege ich gerade aus dem Kopf nicht so ganz hin). Dann einfach die Werte mit bspw. -15.57 eintragen und beim Template halt "-15.57 °C im Februar 2021".
Kannst auch in der Influx nachschauen (ungetestet):- select min(value) from "javascript.0.Wetterstation.Aussentemperatur"
Dann hast du den Wert; vom Timestamp ziehst du rechts 6 Nullen ab und gibst den Rest z.B. bei https://www.unixtime.de/ ein und erhällst dann passend Uhrzeit und Datum.
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
delete from "javascript.0.Wetterstation.Aussentemperatur" where time =1572614953000000000
Danke
hab 8 Einträge gelöschtDen bisherigen Rekordwert solltest du dann in der Statistik unter "Data" in den JSONs finden (kriege ich gerade aus dem Kopf nicht so ganz hin). Dann einfach die Werte mit bspw. -15.57 eintragen .
In der JSON vom April hab ich den Wert korrigiert (dank Grafana leicht herauszufinden).
Aber wie oder wann ändern sich die Werte zB in0_userdata.0.Statistik.Wetter.Rekordwerte.Temperatur_Spitzentiefstwert
?
und beim Template halt "-15.57 °C im Februar 2021"
welches Template?
Kannst auch in der Influx nachschauen (ungetestet):
funktionierte nicht (getestet)
select min(value) from "javascript.0.Wetterstation.Aussentemperatur ERR: error parsing query: found javascript.0.Wetterstation.Aussentemperatur, expected identifier at line 1, char 23
Edit: hab jetzt die 3 Werte händisch eingetragen. Sind nun rot. Ist das normal?
-
@SBorg
mich hat das Statistikskript beim Monatswechsel angewarnt (das fällt bei Euch wahrscheinlich nicht mehr auf, da ihr schon länger als ein Jahr loggt)2021-07-01 01:03:00.046 - warn: javascript.0 (21792) States system pmessage messagebox.system.adapter.javascript.0 {"command":"query","message":{"result":[[],[],[]],"ts":1625094180045,"error":null},"from":"system.adapter.influxdb.0","callback":{"message":"select * FROM \"0_userdata.0.Wetterstation.Aussentemperatur\" WHERE time >= 1593554400000000000 AND time <= 1596232799000000000; select * FROM \"0_userdata.0.Wetterstation.Wind_max\" WHERE time >= 1593554400000000000 AND time <= 1596232799000000000; select * FROM \"0_userdata.0.Wetterstation.Regen_Tag\" WHERE time >= 1593554400000000000 AND time <= 1596232799000000000","id":54,"ack":true,"time":1625094180008},"_id":24065089} temps is not defined 2021-07-01 01:03:00.049 - warn: javascript.0 (21792) ReferenceError: temps is not defined at Object.cb (script.js.common.Wetterstation_Statistik:401:21) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5467:71) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:234:37) at processImmediate (internal/timers.js:461:21)
hab jetzt mal in Zeile 350 ein
let temps = [], wind = [], regen = [];
reingepackt, weil er im Skripteditor von Iobroker
temps.length=0; temps[0]=99999; wind.length=0; wind[0]=99999; regen.length=0; regen[0]=99999;
(Zeile 401-406) bemängelt hat (not defined).