NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@sborg
Das schaue ich mir heute Abend an. -
@sborg
Du hattest recht. Da war ein Zahlendreher in der IP. Ich habe es korrigiert und nun zeigt der Test Daten an.Vielen Dank
-
Servus
Mir ist gerade aufgefallen, dass ein paar Werte nicht passen.
hier sind beide Temps gleich (min = wie max)
zeign nur
null
wann kommt hier ein plausibler Wert? Erst nach dem Met-SSommer?
-
@negalein
kann ich nicht bestätigen, meine Werte stimmen -
@Negalein
bei mir auch alles ok.
Trage doch mal in den Datenpunkten jeweils eine 0 ein und beobachte.
-
@nashra sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Trage doch mal in den Datenpunkten jeweils eine 0 ein und beobachte.
die Werte werden vom Script eingetragen.
Zeitstempel passt bei allen.Nur in
0_userdata.0.Wetterstation.Info.Temp_Aussen_Heute_min
schreibt er den selben Wert wie in0_userdata.0.Wetterstation.Info.Temp_Aussen_Heute_max
.
0_userdata.0.Wetterstation.Info.Temp_Aussen_24h_max
&0_userdata.0.Wetterstation.Info.Temp_Aussen_24h_min
steht nur(null)
.
Und in0_userdata.0.Wetterstation.Info.Temp_Met_Sommer_avg
steht nur99,99
.Aber wie gesagt,
Zeitstempel
&zuletzt geändert
passt bei allen. -
-
@negalein Das wird alles aus der DB ermittelt, sieht nach einem Influx-Problem aus.
Daten für den meteorologischen Sommer gibt es ab 01.06. ca. 23:58 Uhr (wenn also wenigstens 1 Tag erfasst wurde und dann die Mitternachtjobs laufen).Bringt denn im Installationsverzeichnis stehend was an Werte (Service kann dazu weiterlaufen):
./wetterstation.sh --influx_test
./wetterstation.sh --metsommer
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
./wetterstation.sh --influx_test
dietpi@DietPi:/home/iobroker$ ./wetterstation.sh --influx_test Testing InfluxDB... min/max Aussentemperatur 24h: °C °C
./wetterstation.sh --metsommer
dietpi@DietPi:/home/iobroker$ ./wetterstation.sh --metsommer Daten vom 01.06.2023 bis 31.08.2023 wurden ermittelt... Ø-Temperatur: °C Regenmenge : 35.836 l/m²
-
@negalein Da er zumindest die Regenmenge aus der InfluxDB lesen kann sollte der Teil korrekt sein/arbeiten.
Anscheinend funktioniert bei dir das loggen der Aussentempertur nicht korrekt. Hast du mal im Dataexplorer von Influx nachgeschaut ob du da einen Graphen für die Aussentemperatur bekommst? Hast du ev. mehrere Instanzen und loggst die falsche bzw. ev. ins falsche Bucket?
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
loggst die falsche bzw. ev. ins falsche Bucket?
ah, das kann sein
in der .conf ist es
iobroker-1w
Aussentemperatur wird aber iniobroker
geschrieben.
Regen iniobroker-1w
schaut jetzt auch besser aus
dietpi@DietPi:/home/iobroker$ ./wetterstation.sh --influx_test Testing InfluxDB... min/max Aussentemperatur 24h: 16.38°C 16.5°C dietpi@DietPi:/home/iobroker$ ./wetterstation.sh --metsommer Daten vom 01.06.2023 bis 31.08.2023 wurden ermittelt... Ø-Temperatur: 16.46 °C Regenmenge : 43.735 l/m²
-
@negalein
Dann müsstest du jetzt aber die Werte von "iobroker" per csv exportieren und in "iobroker-1w" importieren, sonst fehlen dir für den Metsommer zumindest die ersten ~26 Tage. -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Dann müsstest du jetzt aber die Werte von "iobroker" per csv exportieren und in "iobroker-1w" importieren, sonst fehlen dir für den Metsommer zumindest die ersten ~26 Tage.
puuh, wie geht das.
Ich hab schon öfter gesucht, da ich mehr verschieben müsste, aber nur sehr umständliche Wege gefunden.Export ist mit dem Dataexplorer kein Problem. Aber der Import. Da finde ich nichts vereinfachtes.
-
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Aber der Import. Da finde ich nichts vereinfachtes.
Weil es zu einfach ist
Du gehst auf "Sources" (1. Menüpunkt Pfeil nach oben), dann unter "File Upload" Flux Annotated CSV das passende Bucket für den Import auswählen und dann deine exportierte CSV per Drag&Drop reinziehen oder auswählen... -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Weil es zu einfach ist
Merci, war ja echt voll easy.
Danke -
coming soon ...
-
-
@SBorg
Heute Morgen folgender Fehler im Log2023-07-01 01:03:00.081 - error: javascript.0 (433) Error in callback: TypeError: VorJahr.substring is not a function 2023-07-01 01:03:00.081 - error: javascript.0 (433) at VorJahr (script.js.Wetter.Statistik-WS:415:38) 2023-07-01 01:03:00.082 - error: javascript.0 (433) at Object.main (script.js.Wetter.Statistik-WS:156:4) 2023-07-01 01:03:00.082 - error: javascript.0 (433) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1606:34) 2023-07-01 01:03:00.082 - error: javascript.0 (433) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15) 2023-07-01 01:03:00.082 - error: javascript.0 (433) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28 2023-07-01 01:03:00.082 - error: javascript.0 (433) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7) 2023-07-01 01:03:00.082 - error: javascript.0 (433) at listOnTimeout (node:internal/timers:569:17) 2023-07-01 01:03:00.082 - error: javascript.0 (433) at processTimers (node:internal/timers:512:7)
In der Statistik-Anzeige ist soweit alles ok
-
@nashra said in [Linux Shell-Skript] WLAN-Wetterstation:
@SBorg
Heute Morgen folgender Fehler im Log2023-07-01 01:03:00.081 - error: javascript.0 (433) Error in callback: TypeError: VorJahr.substring is not a function 2023-07-01 01:03:00.081 - error: javascript.0 (433) at VorJahr (script.js.Wetter.Statistik-WS:415:38) 2023-07-01 01:03:00.082 - error: javascript.0 (433) at Object.main (script.js.Wetter.Statistik-WS:156:4) 2023-07-01 01:03:00.082 - error: javascript.0 (433) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1606:34) 2023-07-01 01:03:00.082 - error: javascript.0 (433) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15) 2023-07-01 01:03:00.082 - error: javascript.0 (433) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28 2023-07-01 01:03:00.082 - error: javascript.0 (433) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7) 2023-07-01 01:03:00.082 - error: javascript.0 (433) at listOnTimeout (node:internal/timers:569:17) 2023-07-01 01:03:00.082 - error: javascript.0 (433) at processTimers (node:internal/timers:512:7)
In der Statistik-Anzeige ist soweit alles ok
Mein modifizierter Code lief diesmal ohne Probleme
2023-07-01 01:03:00.028 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: [{'Tiefstwert':6.7,'Hoechstwert':37,'Temp_Durchschnitt':21,'Max_Windboee':42.11,'Max_Regenmenge':22,'Regenmenge_Monat':54.9,'warme_Tage':29,'Sommertage':23,'heisse_Tage':8,'Frost_Tage':0,'kalte_Tage':0,'Eistage':0,'sehr_kalte_Tage':0}] 2023-07-01 01:03:00.029 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: .Vorjahres_Tiefstwert--> 6.7 2023-07-01 01:03:00.029 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: .Vorjahres_Hoechstwert--> 37 2023-07-01 01:03:00.030 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: .Vorjahres_Temp_Durchschnitt--> 21 2023-07-01 01:03:00.030 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: .Vorjahres_Max_Windboee--> 42.11 2023-07-01 01:03:00.030 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: .Vorjahres_Max_Regenmenge--> 22 2023-07-01 01:03:00.030 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: .Vorjahres_Regenmenge_Monat--> 54.9 2023-07-01 01:03:00.031 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: .Vorjahres_warme_Tage--> 29 2023-07-01 01:03:00.031 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: .Vorjahres_Sommertage--> 23 2023-07-01 01:03:00.031 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: .Vorjahres_heisse_Tage--> 8 2023-07-01 01:03:00.031 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: .Vorjahres_Frost_Tage--> 0 2023-07-01 01:03:00.031 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: .Vorjahres_kalte_Tage--> 0 2023-07-01 01:03:00.032 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: .Vorjahres_Eistage--> 0 2023-07-01 01:03:00.048 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: .Vorjahres_sehr_kalte_Tage--> 0 2023-07-01 01:03:00.049 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: Auswertung durchgeführt... 2023-07-01 01:03:00.230 - info: javascript.0 (1421438) script.js.common.wetter.Wetterstation_Statistik: Ausführung zum Monatsersten beendet...
let zeitstempel = new Date(); let datum = new Date(zeitstempel.getFullYear(),zeitstempel.getMonth(),zeitstempel.getDate()); let monatsdatenpunkt = '.Data.'+ (datum.getFullYear()-1) +'.'+pad(datum.getMonth()+1); if (existsState(PRE_DP+monatsdatenpunkt)) { //der einfache Weg: wir haben schon Daten vom Vorjahr... let VorJahr = getState(PRE_DP+monatsdatenpunkt).val; VorJahr = JSON.parse(VorJahr); // Daten vom Vorjahr durchiterieren und Datenpunkte befüllen console.log (VorJahr); VorJahr.forEach(obj => { Object.keys(obj).forEach(key => { console.log ('.Vorjahres_' + key + '--> ' + obj[key]); // fix für Datenpunktname let setkey = key; if (key == 'Temp_Durchschnitt') setkey = "Temperatur_Durchschnitt"; setState(PRE_DP+'.Vorjahres_Monat.' +setkey, obj[key], true); }); });
-
@nashra Der Fehler bezieht sich/macht sich bemerkbar auch auf den VorJahres_Monat. Hier wirst du so aktuell keine Daten vom Juli 2022 haben, sondern irgendwo Daten von April oder Mai 2022 (Zeitstempel 01-05-2023 oä):
@_all_Statistiker
Fix für Juli:- neues JS mit folgendem Inhalt anlegen, ausführen, stoppen (kann danach gelöscht werden)
const PRE_DP='0_userdata.0.Statistik.Wetter'; //Speicherort der Statistikdaten const monatsdatenpunkt='.Data.2022.07'; //.Data.Jahr.Monat let VorJahr = getState(PRE_DP+monatsdatenpunkt).val; VorJahr = JSON.parse(VorJahr); // Daten vom Vorjahr durchiterieren und Datenpunkte befüllen console.log (VorJahr); VorJahr.forEach(obj => { Object.keys(obj).forEach(key => { console.log ('.Vorjahres_' + key + '--> ' + obj[key]); // fix für Datenpunktname let setkey = key; if (key == 'Temp_Durchschnitt') setkey = "Temperatur_Durchschnitt"; setState(PRE_DP+'.Vorjahres_Monat.' +setkey, obj[key], true); }); });
(sollte einiges an Ausgabe produzieren), danach sind die Juli 2022 (sofern man Daten hatte) Werte vorhanden.