NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Wer mag, neue Version auf GitHub.
- Start
17:55:41.624 info javascript.1 (3031) Start javascript script.js.common.Wetterstatistik 17:55:41.648 info javascript.1 (3031) script.js.common.Wetterstatistik: 0_userdata.0.Statistik.Wetter existiert nicht... Lege Datenstruktur an... 17:55:41.655 info javascript.1 (3031) script.js.common.Wetterstatistik: Wetterstation-Statistiken gestartet... 17:55:41.676 info javascript.1 (3031) script.js.common.Wetterstatistik: registered 0 subscriptions and 1 schedule 17:55:42.236 info javascript.1 (3031) script.js.common.Wetterstatistik: Daten ab 06. Sep 2020 00:00:00 17:55:42.239 info javascript.1 (3031) script.js.common.Wetterstatistik: Daten bis 06. Sep 2020 23:59:59 17:55:42.240 info javascript.1 (3031) script.js.common.Wetterstatistik: Tiefstwert: 13.72 °C 17:55:42.240 info javascript.1 (3031) script.js.common.Wetterstatistik: Höchstwert: 20 °C 17:55:42.240 info javascript.1 (3031) script.js.common.Wetterstatistik: Durchschnitt: 16.80 °C 17:55:42.241 info javascript.1 (3031) script.js.common.Wetterstatistik: Maximum Windböe: 14.8 km/h 17:55:42.241 info javascript.1 (3031) script.js.common.Wetterstatistik: Regenmenge/Tag: 12.3 l/m² 17:55:42.241 info javascript.1 (3031) script.js.common.Wetterstatistik: Erster Messwert: 2020-09-05T22:01:30.847Z ***17.5 17:55:42.242 info javascript.1 (3031) script.js.common.Wetterstatistik: Letzter Messwert: 2020-09-06T21:58:22.241Z ***13.88 17:55:42.242 info javascript.1 (3031) script.js.common.Wetterstatistik: Anzahl Datensätze: T_844|W_1865|R_2811
Bei Tiefstwert steht noch nichts im DP
-
Ich hätte die Statistikwerte gern in Wetterstation.0.Statistik abgelegt.
Kann der JS Adapter das etwa nicht?// *** User-Einstellungen *************************************************************************************** let WET_DP='Wetterstation.0'; /* wo liegen die Datenpunkte mit den Daten der Wetterstation [default: javascript.0.Wetterstation] */ let INFLUXDB_INSTANZ='0'; // unter welcher Instanz läuft die InfluxDB [default: 0] let PRE_DP='Wetterstation.0.Statistik'; // wo sollen die Statistikwerte abgelegt werden const ZEITPLAN = "3 1 * * *"; // wann soll die Statistik erstellt werden (Minuten Stunde * * *) // *** ENDE User-Einstellungen **********************************************************************************
-
@Negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Bei Tiefstwert steht noch nichts im DP
Kommt davon wenn man gerade beim publishen noch eine Änderung machen muss
Ich muss den DP nach dem Anlegen vorher mit einem "unsinnigen" Wert befüllen, sonst macht er nüscht. Suche mal nach (so um #132):createState(PRE_DP+'.aktueller_Monat.Tiefstwert','', und ersetze/ergänze mit createState(PRE_DP+'.aktueller_Monat.Tiefstwert',100,
Ist mit der nächsten Version gefixt.
@Rushmed Ja, kann er so nicht, nur unterhalb von "javascript.x" oder "0_userdata.x".
Entweder musst du sie dann per Hand anlegen, oder das "createState" mit einem anderen Aufruf ersetzen. Da gibt es von paul bzw. mic ein Skript dafür. Das packt man dann (falls es nicht sogar so schon angelegt ist) in eine JS-function XYZ. Dann braucht man createState nur durch XYZ ersetzen. Kann ich dir später behilflich sein. Im Moment würde ich es noch nicht ändern, da du sonst bei jedem Update des Skriptes immer per Hand alles ändern musst.
Oder mittels des Skriptes von paul/mic die DPs anlegen lassen. Dann brauchst du an dem Statistik-Skript überhaupt nichts ändern. Ich prüfe nur ob die DPs vorhanden sind und lege sie dann ggf. an. Sind sie vorhanden passiert an der Stelle dann einfach nichts weiter. Wäre IMO der beste Weg. -
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Suche mal nach (so um #132):
DP passt jetzt, aber es kam eine Warnung
20:22:24.729 info javascript.1 (3031) Start javascript script.js.common.Wetterstatistik 20:22:24.777 info javascript.1 (3031) script.js.common.Wetterstatistik: 0_userdata.0.Statistik.Wetter existiert nicht... Lege Datenstruktur an... 20:22:24.784 info javascript.1 (3031) script.js.common.Wetterstatistik: Wetterstation-Statistiken gestartet... 20:22:24.817 info javascript.1 (3031) script.js.common.Wetterstatistik: registered 0 subscriptions and 1 schedule 20:22:25.109 info javascript.1 (3031) script.js.common.Wetterstatistik: Daten ab 06. Sep 2020 00:00:00 20:22:25.109 info javascript.1 (3031) script.js.common.Wetterstatistik: Daten bis 06. Sep 2020 23:59:59 20:22:25.110 info javascript.1 (3031) script.js.common.Wetterstatistik: Tiefstwert: 13.72 °C 20:22:25.110 info javascript.1 (3031) script.js.common.Wetterstatistik: Höchstwert: 20 °C 20:22:25.110 info javascript.1 (3031) script.js.common.Wetterstatistik: Durchschnitt: 16.80 °C 20:22:25.111 info javascript.1 (3031) script.js.common.Wetterstatistik: Maximum Windböe: 14.8 km/h 20:22:25.111 info javascript.1 (3031) script.js.common.Wetterstatistik: Regenmenge/Tag: 12.3 l/m² 20:22:25.111 info javascript.1 (3031) script.js.common.Wetterstatistik: Erster Messwert: 2020-09-05T22:01:30.847Z ***17.5 20:22:25.112 info javascript.1 (3031) script.js.common.Wetterstatistik: Letzter Messwert: 2020-09-06T21:58:22.241Z ***13.88 20:22:25.112 info javascript.1 (3031) script.js.common.Wetterstatistik: Anzahl Datensätze: T_844|W_1865|R_2811 20:22:25.227 warn javascript.1 (3031) at Object.cb (script.js.common.Wetterstatistik:99:9)
Zeile 99 schaut so aus
if (getState(PRE_DP+'.aktueller_Monat.Tiefstwert').val > Tiefstwert) {setState(PRE_DP+'.aktueller_Monat.Tiefstwert', Tiefstwert, true);}
Erledigt. Hatte
'',
zuviel -
Und weiter gehts...:
Sind natürlich keine August-Werte, sondern die vom aktuellen Monat, aber wir haben ja noch nichts vom Vormonat
Mehr Werte wird es erst mal während der Testphase wohl nicht geben (die sollten aber korrekt/aktuell sein), da ich sonst bei einem (Denk-)Fehler einfach zu viel ändern muss. So sind es wenigstens nur drei Werte...
Der "August" wird nur heute (8.09.) mittels des Skriptes angelegt. Dies geschieht dann zukünftig am Monatsanfang, aber den haben wir aktuell ja nicht und wer will schon so lange warten...Sonst #94 abändern:
if (zeitstempel.getDate() == 8) { // Jobs Monatserster...
Hier wäre die "8" durch den aktuellen Tag des Monats zu ersetzen, dann läuft es auch an diesem Tag.
-
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Sonst #94 abändern:
if (zeitstempel.getDate() == { // Jobs Monatserster...Zeile 94 schaut bei mir so aus:
console.log('Letzter Messwert: ' + new Date(result.result[0][temps.length-1].ts).toISOString() + ' ***' + result.result[0][temps.length-1].value);
Kann das stimmen, dass diese Zeile geändert werden muss?
Edit: gerade gesehen, dass auf Git schon die aktuelle Beta liegt!
-
@Negalein Habe ich vergessen zu erwähnen
Aktuell grübele ich gerade über die Vorjahreswerte:
Die sehen zwar schön befüllt aus (+ werden bzw. würden sie auch schon), allerdings sind sie nicht korrekt. Der Grund ist auch recht einfach, denn ich sammele erst seit Mai (? glaube ich...) Daten, kann also vom Sep. 2019 noch gar nichts haben.
Was sollte da nach eurer Meinung vorläufig stehen bis man Daten hat? Der Typ ist number, also kein "--", "n.a.", "xx" etc.
Ein unsinniger Wert zum besseren erkennen wie bspw. -99, pauschal 0,...
...oder einfach überhaupt nichts (habe ich noch nicht probiert ob das bei Number geht...)Wenn keine weiteren Fehler auftreten wäre es sogar witzigerweise für die drei Werte fertig. Dann beginnt die Fleißarbeit die anderen Messwerte einzupflegen
*EDIT* Ach ja, warum eigentlich Data-Datenpunkt? Naja, eine kleine "Datenbank" ist es dann doch geworden. Ich speichere die aktuellen Monatswerte in einem JSON-String, dann brauche ich in einem Jahr keine Monatsauswertung mehr auszuführen. Da es auch nur 12 Strings pro Jahr sind, könnte man relativ schnell auch eine Jahresstatistik anfertigen...
-
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Was sollte da nach eurer Meinung vorläufig stehen bis man Daten hat?
zB 99999
-
@Negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
zB 99999
Habe ich jetzt so übernommen
"Nichts" geht nicht, da wg. des Typs Number dann automatisch "0" eingesetzt wird.
Neue Version auf GitHub V0.0.1 Beta :
Damit alles bei Null startet den kpl. Statistik-Zweig vorher löschen. Beim Start legt das Skript dann die Ordnerstruktur an, befüllt den VorJahres-Monat mit 99999 (außer jemand sammelt per Influx schon seit Sep. 2019 Daten. Solange gibt es das WLAN-Skript aber noch nicht), legt "Data" an (der bleibt so "leer" bis zum nächsten Monatsersten, dann befinden sich dort darunter die gespeicherten Monatsauswertungen) und der Aktuelle Monat wird befüllt. Echte Werte gibt es dann um 1:03 Uhr (default), da ich immer bis Mitternacht warten muss bis alle Daten des Tages vorliegen.
Deswegen auch die komischen Werte mit -100, 0, 100 °C- der Höchstwert des letzten Tages wird wohl immer über -100 °C liegen (+ damit aktualisiert)
- der Durchschnitt liegt entweder tatsächlich bei 0 °C, dann stimmt er zufällig, oder er wird eben mit dem korrekten aktualisiert
- der Tiefstwert des letzten Tages wird wohl immer unter 100 °C liegen (+ damit aktualisiert)
Also Skript nach dem Starten auch laufen lassen. Es sollte dann für den aktuellen Monat die drei Werte korrekt erfassen.
Soweit möglich möchte ich dann daran auch nichts mehr ändern und die weiteren dann zusätzlich hinzufügen. Somit könnten für den September 2020 alle Daten vorliegen, wenn auch noch nicht durchgängig. Ab Oktober 2020 hätte ich dann aber gerne komplett...Den Scheduler würde ich nicht zu nah an Mitternacht verschieben. Falls ihr im Influx viele Datenwerte im RAM vor dem schreiben vorhaltet, kann es sonst sein, dass er noch nicht alle Messwerte aus dem RAM auch in die InfluxDB geschrieben hat. Da die Werte vom Vortag immer von 0:00 Uhr bis 23:59:59 Uhr gelesen werden, ist es egal wann sie am nächsten Tag gelesen werden. Ihr könnt im Scheduler auch bspw. 6:00 Uhr eintragen. Funktioniert genauso, nur habt ihr die Statistik dann eben erst ab 6:00 Uhr aktuell vorliegen
-
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Neue Version auf GitHub V0.0.1 Beta :
läuft
Dann warte ich jetzt mal auf 1:03 Uhr
-
Neue Version auf GitHub V0.0.1 Beta
- + Windböe
- + max. Regenmenge pro Tag (mangels Regen ungetestet )
Damit sind jetzt alle drei Messwertereihen (Temperatur, Wind und Regen) auch im Einsatz, falls sich wer fragt warum es gerade die Messwerte aktuell geworden sind.
...und aus aktuellem Anlass folgen jetzt > 2x °C - Tagebtw: Ich werde jetzt auch anfangen die Versions-Nummern zu erhöhen, denn eigentlich sollte bis dato jetzt alles funktionieren.
-
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Neue Version auf GitHub V0.0.1 Beta
läuft wie immer sofort
-
Neue Version auf GitHub V0.0.2 Beta
- + warme Tage über 20°
- + Sommertage über 25°
- + heiße Tage über 30°
Sieht alles wie erwartet aus: Höchstwert ist gestiegen, Tiefstwert gefallen, Durchschnitt hat sich auch geändert, kein Wind und Regen...
...und somit bei gestrigem neuen Spitzenwert seit Aufzeichnung von 28.11°C auch "warme- + Sommertage" korrekt...und ich erwähne es hier zur Sicherheit nochmals (da viele probieren, aber nicht posten): es genügt aktuell völlig das JS-Skript stoppen, mittels C&P die neue Version einzufügen (ggf. konfigurieren), speichern und das JS zu starten. Bereits gesammelte Werte bleiben erhalten, ggf. neue DPs werden zusätzlich angelegt. Die neuen Werte, sofern es welche gibt, stehen dann nach dem Schedule-Zeitpunkt (default 1:03 Uhr nachts) zur Verfügung.
*EDIT* noch vergessen: die Gradtage vom Vorjahresmonat funktionieren aktuell nicht. Hat zwar eh noch keiner Daten dafür, aber dass ist etwas komplizierter, deswegen aktuell noch nicht umgesetzt. Mir ist aber schon eine performante Lösung eingefallen
-
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Neue Version auf GitHub V0.0.2 Beta
- warme Tage über 20°
- Sommertage über 25°
- heiße Tage über 30°
-
...und funktioniert...
...immer noch kein Regen aber mit +1 bei den "Hot Days" sieht es wohl gut aus
-
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
aber mit +1 bei den "Hot Days" sieht es wohl gut aus
er zählt aber erst seit Start des Scripts?
Oder holt es sich die Daten schon am Anfang September?PS: es gibt ja aktuell
aktueller_Monat
.
Ist es möglich in den Objekten auch die vergangenen Monate anzuzeigen?
Also zBaktuelles Jahr.Jänner
, ...
undVorjahr.Jänner
... -
@Negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
er zählt aber erst seit Start des Scripts?
Jepp. Machen die Adapter aber ebenfalls, da dass rückwirkend aufwändig ist (gibt es Daten, sind diese vollständig,...) und meist eine nicht zu unterschätzende Systemlast mit sich bringt.
Wenn man also aktuell angefangen hat (oder später mal im Monat anfängt), wird der aktuelle Monat noch Lücken enthalten. Ab (bzw. bis) Oktober 2020 möchte ich dann aber soweit sein, dass man alle Werte durchgehend hat.Die vergangen Monate werden dann unter dem aktuell noch leerem DP "Data" erscheinen:
Ordner Jahr - Ordner Monat (zweistellig), also bspw. wenn alles klappt am 1. Oktober ab 1:03 Uhr: ...Data.2020.09
Darunter liegt dann ein DP mit einem JSON, welcher alle Monatswerte des Septembers 2020 enthält (oder genauer die gesammelten Werte).
Das wird dann im September 2021 automatisch gelesen und somit die Vorjahresmonatsabfrage umgangen (die ist nun mal System lastig + warum soll ich die Monatsauswertung nochmals durchführen wenn doch alle Daten bereits ein Jahr zuvor schon ermittelt wurden ? ) die dann ebenfalls am 1.10. um 1:03 Uhr läuft und versucht die Daten für den Oktober 2019 zu ermitteln (was aber mangels Daten fehlschlagen wird/sollte). -
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Jepp.
Kein Problem. Weiß bescheid.
Die vergangen Monate werden dann unter dem aktuell noch leerem DP "Data" erscheinen:
sehr gut!
Mein Cousin ist schon neidisch. Er macht alles händisch mit Excel. -
Neue Version auf GitHub V0.0.3 Beta
- + kalte Tage (Höchsttemperatur unter 10°)
- + Frosttage (Tiefsttemperatur unter 10°)
Die 30°C auch geknackt = heiße Tage funktioniert auch.
Mangels aktueller Wetterlage fehlt nur noch Regen und die beiden neuen Gradtage -
Mist wenn man sich verließt. Mir kam das gleich irgendwie unlogisch beim programmieren vor ...
Frosttage sollte natürlich unter 0°C sein. Wird mit der neuen Version gefixt, sorry