NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@Negalein
den InfluxDB Adapter meine ich... -
@sborg
Ich habe mal ein Code Review "machen lassen", hier meine Findings. Hab auch gleich die Fixes dazu. Wenn du diese akzeptierst, könntest du das gleich einchecken ;)@sborg
Ich habe mal ein Code Review "machen lassen", hier meine Findings. Hab auch gleich die Fixes dazu. Wenn du diese akzeptierst, könntest du das gleich einchecken ;)@massiveattack
Danke für die Mühe (<-- keine Ironie, ernst gemeint)
Aber leider nein, die Analyse war mal wieder ...
Nur zwei Beispiele:- Tropennächte werden hundertfach gezählt — Schleifenlogik falsch (Zeilen 541–553)
if (MonatsTag != MonatsTag_old) { Hit=[..., true]; } // Hit[8]=true bei Tageswechsel
if (Temp < 20 && Hit[8] == true) { Hit[8] = false; }
MonatsTag_old = MonatsTag;
if (Hit[8]) { VTropennaechte++; } // ↠pro MESSWERT, nicht pro Tag!VTropennaechte++ wird am Ende jeder Iteration ausgeführt, solange Hit[8] true ist. An einem echten Tropennacht-Tag mit
z.B. 48 Halbstundenwerten (alle ≥ 20°C) werden 48 Tropennächte gezählt statt einer. Korrekt wäre die Auswertung beim
Tageswechsel.und
Eistage sind Tage mit Höchsttemperatur < 0°C (nicht Tiefsttemperatur). Mit der aktuellen Logik sind Eistage und
Frosttage immer identisch.Einfaches Beispiel aus meinen Daten:

Ok, er hat Recht, im Mai, Juni und Juli sind sie tatsächlich identisch...
Die hunderte Tropennächte suche ich aktuell noch... [IRONIE /OFF]
Er hat wohl übersehen, dass einiges an Auswertung aus der InfluxDB kommt.Aber wer will kann es ja gerne mal testen

-
Ich habe auch eine V2.0.8 des Statistik-Scriptes hochgeladen, die sollte funktionieren für Influx-Adapter 5.x
"sollte" = ich habe in letzter Sekunde noch zwei Miniänderungen vorgenommen und damit genau das gemacht was man eigentlich nicht sollte. Ungetestet gepublisht.
Der Influx-Adapter hat wohl einen Bug, oder die Doku wurde nicht aktualisiert. Eigentlich hätte die Abfrage weiter funktionieren sollen, was sie aber augenscheinlich nicht tut. -
Ich habe auch eine V2.0.8 des Statistik-Scriptes hochgeladen, die sollte funktionieren für Influx-Adapter 5.x
"sollte" = ich habe in letzter Sekunde noch zwei Miniänderungen vorgenommen und damit genau das gemacht was man eigentlich nicht sollte. Ungetestet gepublisht.
Der Influx-Adapter hat wohl einen Bug, oder die Doku wurde nicht aktualisiert. Eigentlich hätte die Abfrage weiter funktionieren sollen, was sie aber augenscheinlich nicht tut.@SBorg
also ich habe "meine" version bei mir laufen, ohne probleme
-
Ich habe auch eine V2.0.8 des Statistik-Scriptes hochgeladen, die sollte funktionieren für Influx-Adapter 5.x
"sollte" = ich habe in letzter Sekunde noch zwei Miniänderungen vorgenommen und damit genau das gemacht was man eigentlich nicht sollte. Ungetestet gepublisht.
Der Influx-Adapter hat wohl einen Bug, oder die Doku wurde nicht aktualisiert. Eigentlich hätte die Abfrage weiter funktionieren sollen, was sie aber augenscheinlich nicht tut. -
@negalein
Das kommt aber nicht vom Statistik-Script. Außerdem wird dort der "Hitze-Index" überhaupt nicht benutzt/verwertet.
Das kommt von einem anderen Script, Blockly etc. direkt als Fehlerausgabe, denn Meldungen seitens JS sind immer klein geschrieben (also "error") und würden den Skript-Namen beinhalten:2026-08-23 01:03:00.173 - info: javascript.0 (4016614) script.js.common.Wetter.Wetterstation-Statistik_V2_0_8: InfluxDB: Temperatur=1005, Wind=411, Regen=15
2026-08-23 01:03:00.174 - info: javascript.0 (4016614) script.js.common.Wetter.Wetterstation-Statistik_V2_0_8: Auswertung durchgeführt...... und bevor wer fragt was das für eine Ausgabe ist/sie bedeutet: das sind die Anzahl der Datensätze die aus der InfluxDB gelesen wurden, also 1005 Temperaturwerte, 411 Windstärken und 15 Regenmengen
-
@negalein
Das kommt aber nicht vom Statistik-Script. Außerdem wird dort der "Hitze-Index" überhaupt nicht benutzt/verwertet.
Das kommt von einem anderen Script, Blockly etc. direkt als Fehlerausgabe, denn Meldungen seitens JS sind immer klein geschrieben (also "error") und würden den Skript-Namen beinhalten:2026-08-23 01:03:00.173 - info: javascript.0 (4016614) script.js.common.Wetter.Wetterstation-Statistik_V2_0_8: InfluxDB: Temperatur=1005, Wind=411, Regen=15
2026-08-23 01:03:00.174 - info: javascript.0 (4016614) script.js.common.Wetter.Wetterstation-Statistik_V2_0_8: Auswertung durchgeführt...... und bevor wer fragt was das für eine Ausgabe ist/sie bedeutet: das sind die Anzahl der Datensätze die aus der InfluxDB gelesen wurden, also 1005 Temperaturwerte, 411 Windstärken und 15 Regenmengen
Das kommt aber nicht vom Statistik-Script. Außerdem wird dort der "Hitze-Index" überhaupt nicht benutzt/verwertet.
hängt mit dem neuen Influx Adapter zusammen.
Zurück auf 4.0.2 und es läuft wieder.Dachte, weil du
Ich habe auch eine V2.0.8 des Statistik-Scriptes hochgeladen, die sollte funktionieren für Influx-Adapter 5.xgeschrieben hast. -
Die V2.0.8 beseitigt nur den auftretenden Fehler bei Nutzung des Influx-Adapters V5.x:
2026-08-17 01:03:00.018 - info: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: Auswertung durchgeführt...
2026-08-17 01:03:00.073 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: Fehler beim Lesen der InfluxDB: compilation failed: error @1:205-1:206: invalid statement: ,
error @1:403-1:404: invalid statement: ,
2026-08-17 01:03:00.068 - error: influxdb.3 (3414492) queries: compilation failed: error @1:205-1:206: invalid statement: ,
error @1:403-1:404: invalid statement: ,
2026-08-17 01:03:00.287 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: Error in callback: TypeError: Reduce of empty array with no initial value
2026-08-17 01:03:00.287 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at Array.reduce ()
2026-08-17 01:03:00.287 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at Object. (script.js.common.Wetter.Wetterstation-Statistik_V2_0_7:199:43)
2026-08-17 01:03:00.287 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at Object.cbFunc [as cb] (/opt/iobroker/node_modules/iobroker.javascript/src/lib/sandbox.ts:4083:38)
2026-08-17 01:03:00.287 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11027:45)
2026-08-17 01:03:00.288 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at Immediate._onImmediate (file:///opt/iobroker/node_modules/@iobroker/db-states-redis/src/lib/states/statesInRedisClient.ts:381:37)
2026-08-17 01:03:00.288 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at processImmediate (node:internal/timers:484:21)
2026-08-17 01:03:00.288 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at process.callbackTrampoline (node:internal/async_hooks:130:17)Der "Hitze-Index" funktioniert bei mir, der wird aber direkt vom WLAN-Skript erzeugt und sonst nicht weiter verarbeitet.
-
Die V2.0.8 beseitigt nur den auftretenden Fehler bei Nutzung des Influx-Adapters V5.x:
2026-08-17 01:03:00.018 - info: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: Auswertung durchgeführt...
2026-08-17 01:03:00.073 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: Fehler beim Lesen der InfluxDB: compilation failed: error @1:205-1:206: invalid statement: ,
error @1:403-1:404: invalid statement: ,
2026-08-17 01:03:00.068 - error: influxdb.3 (3414492) queries: compilation failed: error @1:205-1:206: invalid statement: ,
error @1:403-1:404: invalid statement: ,
2026-08-17 01:03:00.287 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: Error in callback: TypeError: Reduce of empty array with no initial value
2026-08-17 01:03:00.287 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at Array.reduce ()
2026-08-17 01:03:00.287 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at Object. (script.js.common.Wetter.Wetterstation-Statistik_V2_0_7:199:43)
2026-08-17 01:03:00.287 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at Object.cbFunc [as cb] (/opt/iobroker/node_modules/iobroker.javascript/src/lib/sandbox.ts:4083:38)
2026-08-17 01:03:00.287 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11027:45)
2026-08-17 01:03:00.288 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at Immediate._onImmediate (file:///opt/iobroker/node_modules/@iobroker/db-states-redis/src/lib/states/statesInRedisClient.ts:381:37)
2026-08-17 01:03:00.288 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at processImmediate (node:internal/timers:484:21)
2026-08-17 01:03:00.288 - error: javascript.0 (2948224) script.js.common.Wetter.Wetterstation-Statistik_V2_0_7: at process.callbackTrampoline (node:internal/async_hooks:130:17)Der "Hitze-Index" funktioniert bei mir, der wird aber direkt vom WLAN-Skript erzeugt und sonst nicht weiter verarbeitet.
Die V2.0.8 beseitigt nur den auftretenden Fehler bei Nutzung des Influx-Adapters V5.x:
OK
Der "Hitze-Index" funktioniert bei mir, der wird aber direkt vom WLAN-Skript erzeugt und sonst nicht weiter verarbeitet.
wie/wo kann ich prüfen, warum mit Influx-Adapter 4.0.2 der Hitzeindex funktioniert, aber mit 5.x nicht funktioniert.
-
Die V2.0.8 beseitigt nur den auftretenden Fehler bei Nutzung des Influx-Adapters V5.x:
OK
Der "Hitze-Index" funktioniert bei mir, der wird aber direkt vom WLAN-Skript erzeugt und sonst nicht weiter verarbeitet.
wie/wo kann ich prüfen, warum mit Influx-Adapter 4.0.2 der Hitzeindex funktioniert, aber mit 5.x nicht funktioniert.
@Negalein Ich vermute du loggst den Hitze-Index direkt per InfluxDB?
Dann könnte die 5er Version ev. ein Problem damit haben, dass hier nicht immer ein Wert vorhanden ist, obwohl "ack=true" gesetzt wird.
Ich habe es jetzt nur für den Screeny mal eingeschaltet, also keine Ahnung ob es hilft, aber aktiviere mal "0" / "Null" und explizit "speichere als Zahl"

Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden