NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
Hallo zusammen!
Heute morgen ist etwas kurioses passiert:
Ohne irgendwelche Einwirkungen meinerseits und ohne erkennbaren Grund wurden im Syslog plötzlich folgende Meldungen verzeichnet:Sep 25 07:04:42 ZEROSERVER wetterstation.sh[27086]: Listening on [0.0.0.0] (family 0, port 45454) Sep 25 07:05:12 ZEROSERVER wetterstation.sh[27086]: Connection from 192.168.116.48 15627 received! Sep 25 07:05:14 ZEROSERVER wetterstation.sh[27086]: (standard_in) 1: syntax error Sep 25 07:05:14 ZEROSERVER wetterstation.sh[27086]: (standard_in) 1: syntax error Sep 25 07:05:14 ZEROSERVER wetterstation.sh[27086]: (standard_in) 1: syntax error Sep 25 07:05:14 ZEROSERVER wetterstation.sh[27086]: (standard_in) 1: syntax error Sep 25 07:05:14 ZEROSERVER wetterstation.sh[27086]: (standard_in) 1: syntax error Sep 25 07:05:14 ZEROSERVER wetterstation.sh[27086]: (standard_in) 1: syntax error Sep 25 07:05:14 ZEROSERVER wetterstation.sh[27086]: Listening on [0.0.0.0] (family 0, port 45454)
Resultat war im Iobroker Fehlermeldungen der Simpl-Api:
2021-09-25 07:05:14.064 - info: simple-api.0 (27840) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_Woche" has to be type "number" but received type "string" 2021-09-25 07:05:14.065 - info: simple-api.0 (27840) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_Monat" has to be type "number" but received type "string" 2021-09-25 07:05:14.106 - info: simple-api.0 (27840) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_Jahr" has to be type "number" but received type "string" 2021-09-25 07:05:14.106 - info: simple-api.0 (27840) State value to set for "0_userdata.0.Wetterstation.tempData.Solarenergie" has to be type "string" but received type "number"
Nach nem Restart des Wetterstation-Dienstes läuft alles wieder normal...
Warum?
-
@boronsbruder Zumindest eine Vermutung. "15627 received" sieht zumindest nach einem validen Datenpaket aus.
Es könnte sein, dass bei der Übertragung die WLAN-Verbindung im ungünstigsten Augenblick wegbrach (das muss auf die Millisekunde passen, deswegen eher unwahrscheinlich, aber halt möglich...). Normalerweise hat man dann bis zum nächsten Datenpaket ein paar "alte" Werte drin stehen, aber ob die Temperatur jetzt von 9:31:25 Uhr oder von 9:31:56 Uhr war/ist, bemerkt zum einen wohl eh keiner, zum anderen wird sie sich binnen 30 Sekunden (Standardsendeintervall der Stationen/Gateways) wohl eh nicht signifikant geändert haben bzw. sich ändern.
Lt. Simple-API betraff es anscheinend nur die Solarenergie, welche alle vom Skript durch Dauer und Höhe des Solarmesswertes ermittelt bzw. berechnet werden. Wenn also genau dieser Wert flöten ging, also nicht 0-xxx war, sondern "Null" (kein Wert), kommt es zu dem Fehler in der API (Null ist String) und die Temp-Daten werden einfach "0" (Zahl) und nicht String (xxx xxx xxx) [drei Zahlen durch ein Leerzeichen getrennt].Das würde dann auch
...(standard_in) 1: syntax error
erklären, denn das kommt immer wenn man eine Berechnung (hier dann die Solarenergie) durchführen will und eine der Variablen "Null" (also leer oder nicht definiert) ist.
Ist mir in 1.5 Jahren bisher aber noch nicht passiert. Solltest vielleicht mal über Lotto spielen nachdenken...
-
@sborg
Dann sollte ich heute aber mal richtig Lotto spielen, weil ich um 13:26 erst den "Spam" im Log, der alle 30 Sekunden kam, bemerkt und dann den Dienst neugestartet habe -
Hat funktionert! Ich hab 10 € gewonnen
-
Da keine offensichtlichen Fehler zu verzeichnen sind:
Neues Release des Wetterstation WLAN-Skriptes auf GitHub V2.9.0
- + Min-/Max-Aussentemperatur des heutigen Tages
- ~ Änderung bei Datenübertragung per Simple-API wg. InfluxDB 2.x
- + Meteorologischer Sommer Durchschnittstemperatur und Regenmenge
- + neuer Shell-Parameter --metsommer (zur manuellen Berechnung der Werte des meteorologischen Sommers)
Wie immer zu finden im GitHub
Update-Routine:
- wetterstation.sh und wetterstation.sub ersetzen
- wetterstation.js muss ebenfalls im JavaScript-Adapter ersetzt und einmalig ausgeführt werden (neue Datenpunkte "Info.Regenmenge_Met_Sommer" und "Info.Temp_Met_Sommer_avg")
- nun mittels
sudo systemctl restart wetterstation
den Service neu starten - (ws_updater.sh ist diesmal nicht nötig, da es keine Änderungen in der wetterstation.conf gibt)
Wer bereits die Beta-Version der V2.9.0 nutzt sollte ggf. trotzdem updaten (hier genügt der Tausch der "sub" und den Service neu zu starten). Das Beta-Release ist mit dieser Release-Version nicht identisch. Beim Beta-Release fehlt die "Nullung" der beiden Werte des meteorologischen Sommers zum 01.01.
-
Vielleicht für euch interssant, mein Script: Mittelwertbildung für die Windrichtung mit JavaScript
-
Ich muss gestehen, ich bin da mehr der Fan der [Grafana-]Windrose:
Ansonsten die Windrichtung wieder durch 22.5 teilen, dann passt es auch für/im Skript -
Neues Release des Wetterstation Statistik-Skriptes auf GitHub V1.0.0
- ~Bugfixing Werte VorJahresMonat
- +Kompatibilität mit JSC 3.3.x hergestellt (Änderung JSON -> Array)
- ~Rekordwerte werden nun korrekt am Tag des Ereignisses gespeichert
Wie immer zu finden im GitHub
Achtung!
Breaking Release. Durch die Umstellung in das neue Format des JSC 3.3.x sind die alten Daten zu dieser Version nicht mehr kompatibel. Da es, wenn man von Beginn an dabei ist, aber glücklicherweise nur 13 Monate sind, kann man die 13 Datenpunkte auch von Hand in das neue Format bringen. Dauert < 5 Minuten
Dann sieht es wieder so aus und genügt den Anforderungen des neuen JavaSkript-Controllers:
Ein Update ist zu empfehlen, da nicht mit Sicherheit feststeht wie lange das alte Format noch unterstützt/toleriert wird.
Dazu müssen unter "Data.[Jahr]" die Datenpunkte wie folgt geändert werden:- Eckige Klammern um den Datenpunktwert, also am Anfang "[" und am Ende "]"
- Die "Raw-Daten" des Datenpunktes wie folgt abändern:
Neue Monatswerte werden dann automatisch korrekt angelegt.
Kann sein, dass am Skript eine Änderung nötig ist, nur habe ich da "ein wenig" rumprobiert + bin mir nicht sicher ob es im Originalzustand noch läuft. Falls nicht bitte melden, sind ggf. nur wenige Zeilen.
(auch bei mir hat der Juli nur 31 Tage, die 46 "warmen Tage" sind der Juni und Juli addiert als Nachwehe meines Plattencrashes ) -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Dann sieht es wieder so aus und genügt den Anforderungen des neuen JavaSkript-Controllers:
Also zuerst das Update und dann noch
Dazu müssen unter "Data.[Jahr]" die Datenpunkte wie folgt geändert werden:
Oder reicht es nur die DP anzupassen?
-
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Oder reicht es nur die DP anzupassen?
Nein, denn die geänderten DPs können dann vom bisherigen Skript nicht korrekt gelesen werden.
Also entweder einfach alles so lassen (keine Gewähr wie lange das noch läuft, kann mit dem nächsten Update des JSC schon nicht mehr funktionieren, oder läuft noch zig Monate/Jahre), oder Skript und DPs aktualisieren (die DPs haben aber auch Zeit, denn es wird erst am 01.11. dann die Daten/der DP vom November 2020 gelesen).
Letzte Alternative: Skript einfach ersetzen und ein Jahr warten. Solange gibt es halt dann einfach keine Werte des Vorjahresmonats. -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
erledigt.
Aber warum siehst du es in 1 Wurst und ich untereinander?
Kann man das umstellen?
-
@SBorg Ich habe gerade mal die Wetterstatistik bei mir angepasst und eingebaut.
Hier bekomme ich dann folgende Meldungen:javascript.0 2021-10-03 17:08:58.609 info State value to set for "0_userdata.0.Wetterstatistik.Rekordwerte" has to be type "folder" but received type "string" javascript.0 2021-10-03 17:08:58.609 info State value to set for "0_userdata.0.Wetterstatistik.Jahreswerte" has to be type "folder" but received type "string" javascript.0 2021-10-03 17:08:58.609 info State value to set for "0_userdata.0.Wetterstatistik.Control" has to be type "folder" but received type "string" javascript.0 2021-10-03 17:08:58.609 info State value to set for "0_userdata.0.Wetterstatistik.VorTag" has to be type "folder" but received type "string" javascript.0 2021-10-03 17:08:58.608 info State value to set for "0_userdata.0.Wetterstatistik.Data" has to be type "folder" but received type "string" javascript.0 2021-10-03 17:08:58.608 info State value to set for "0_userdata.0.Wetterstatistik.Vorjahres_Monat" has to be type "folder" but received type "string" javascript.0 2021-10-03 17:08:58.608 info State value to set for "0_userdata.0.Wetterstatistik.aktueller_Monat" has to be type "folder" but received type "string" javascript.0 2021-10-03 17:08:58.533 info State value to set for "0_userdata.0.Wetterstatistik" has to be type "folder" but received type "string" javascript.0 2021-10-03 17:08:58.433 warn This object will not be created in future versions. Please report this to the developer. javascript.0 2021-10-03 17:08:58.433 warn Object 0_userdata.0.Wetterstatistik.Rekordwerte is invalid: obj.common.type has an invalid value (folder) but has to be one of number, string, boolean, array, object, mixed, file, json javascript.0 2021-10-03 17:08:58.433 warn This object will not be created in future versions. Please report this to the developer. javascript.0 2021-10-03 17:08:58.433 warn Object 0_userdata.0.Wetterstatistik.Jahreswerte is invalid: obj.common.type has an invalid value (folder) but has to be one of number, string, boolean, array, object, mixed, file, json javascript.0 2021-10-03 17:08:58.431 warn This object will not be created in future versions. Please report this to the developer. javascript.0 2021-10-03 17:08:58.431 warn Object 0_userdata.0.Wetterstatistik.Control is invalid: obj.common.type has an invalid value (folder) but has to be one of number, string, boolean, array, object, mixed, file, json javascript.0 2021-10-03 17:08:58.431 warn This object will not be created in future versions. Please report this to the developer. javascript.0 2021-10-03 17:08:58.431 warn Object 0_userdata.0.Wetterstatistik.VorTag is invalid: obj.common.type has an invalid value (folder) but has to be one of number, string, boolean, array, object, mixed, file, json javascript.0 2021-10-03 17:08:58.431 warn This object will not be created in future versions. Please report this to the developer. javascript.0 2021-10-03 17:08:58.431 warn Object 0_userdata.0.Wetterstatistik.Data is invalid: obj.common.type has an invalid value (folder) but has to be one of number, string, boolean, array, object, mixed, file, json javascript.0 2021-10-03 17:08:58.431 warn This object will not be created in future versions. Please report this to the developer. javascript.0 2021-10-03 17:08:58.431 warn Object 0_userdata.0.Wetterstatistik.Vorjahres_Monat is invalid: obj.common.type has an invalid value (folder) but has to be one of number, string, boolean, array, object, mixed, file, json javascript.0 2021-10-03 17:08:58.431 warn This object will not be created in future versions. Please report this to the developer. javascript.0 2021-10-03 17:08:58.431 warn Object 0_userdata.0.Wetterstatistik.aktueller_Monat is invalid: obj.common.type has an invalid value (folder) but has to be one of number, string, boolean, array, object, mixed, file, json javascript.0 2021-10-03 17:08:58.431 warn This object will not be created in future versions. Please report this to the developer. javascript.0 2021-10-03 17:08:58.430 warn Object 0_userdata.0.Wetterstatistik is invalid: obj.common.type has an invalid value (folder) but has to be one of number, string, boolean, array, object, mixed, file, json
Ist das so OK oder gibt es da Irritationen mit den Typen der DPs?
LG Rainer -
@negalein ist doch egal. vor der { eine [ und hinten das umgekehrte. }]
hab da alle geändert, das script gestoppt, das neue eingefügt, gestartet, keine fehler.
sollte also quitschen.[ { "Tiefstwert": -4.27, "Hoechstwert": 20.5, "Temp_Durchschnitt": 2.12, "Max_Windboe": 25.58, "Max_Regenmenge": 3.6, "Regenmenge_Monat": 12.1, "warme_Tage": 7, "Sommertage": 0, "heisse_Tage": 0, "Frost_Tage": 8, "kalte_Tage": 16, "Eistage": 0, "sehr_kalte_Tage": 0 } ]
-
@da_woody sagte in [Linux Shell-Skript] WLAN-Wetterstation:
vor der { eine [ und hinten das umgekehrte. }]
Ja Simönchen
habs eh so gemacht. Mir gings nur um das aussehen. -
@rene55 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ist das so OK oder gibt es da Irritationen mit den Typen der DPs?
zeig mal den DP und den RAW davon.
-
@Negalein Ich hab mal den ganzen Zweig exportiert. 0_userdata.0.Wetterstatistik.json Hoffentlich war das so richtig und Müll hier nicht alles zu.
LG Rainer -
@rene55 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
den ganzen Zweig exportiert
das ist mir zuviel
Zeig mal das
Und dann noch ganz rechts auf den Bleistift und dann die Raw-Daten zeigen.
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Falls nicht bitte melden, sind ggf. nur wenige Zeilen.
bei mir steht es still
-
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Falls nicht bitte melden, sind ggf. nur wenige Zeilen.
bei mir steht es still
beim Start dieses Scripts von @liv-in-sky kommt nun
00:14:32.040 error javascript.0 (31206) script.js.Wetter.Wettertabelle: SyntaxError: Unexpected token o in JSON at position 1 00:14:32.040 error javascript.0 (31206) at script.js.Wetter.Wettertabelle:53:17 00:14:32.040 error javascript.0 (31206) at dataStuff (script.js.Wetter.Wettertabelle:49:15) 00:14:32.040 error javascript.0 (31206) at main (script.js.Wetter.Wettertabelle:149:4)
-
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Mir gings nur um das aussehen.
schau in den spiegel, dann weist du, das ist nebensächlich...