NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Dachte das erledigt der Updater.
Man sollte nie ungefragt User-Einstellungen ändern. Ich kann ja schlecht wissen ob der User nicht bei "javascript..." bleiben möchte. Ich habe mich halt nur beim "Tabula rasa" dazu entschlossen es jetzt per default unter "0_userdata" anzusiedeln, denn da gehört es eigentlich auch hin. Es hat im Grunde (bis auf das DP-Anlegenskript [Statistik mal außen vor]) nichts mit Javascript zu tun. Vor 4 Jahren (solange machen wir nun schon "rum" ) gab es aber noch kein 0_userdata und JS erlaubte nur mit Tricks anlegen von DPs außerhalb von "javascript..."
Ob man es also aktuell weiter unter "javascript..." laufen lässt, oder es auf "0_userdata..." umstellt macht keinerlei Unterschied.
-
@rushmed Dann ist es auch normal, denn dir fehlen einfach die Messwerte. Wo noch nichts ist, kann man schlecht etwas lesen
Wo der genaue Unterschied ist kann ich dir nicht erklären, denn das kommt so aus der Station. Ich würde darauf tippen, dass die Böe ein Momentanwert ist, also um x% größer sein muss als der letzte. Wind ist dann eher ein zeitliches Ereignis und wird dann wohl median, average, ??? berechnet, also bspw. alter Wert + aktueller Wert geteilt durch 2.
Ich glaube nämlich nicht daran, dass der Wettermast kontinuierlich mist (Batterielebensdauer). Der wird nur alle x Sekunden einen Momentanwert des Propellers erfassen. -
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Wenn ich InfluxQL verwende, bekomm ich keine Verbindung.
Kann ich nix zu sagen, nutze ich nicht mehr. Sonst wäre der Umstieg auf InfluxDB V2 auch für die "Füße" gewesen. Der einzige verbleibende Vorteil ist aktuell Flux.
wird es auf Git ein V3 Dashboard auf Basis von Flux geben?
Nicht zeitnah, da dass nur ein "bisschen" Aufwand bedeutet. Alle Panels ändern auf Flux, alle Overrides anpassen...
Ein ganzer Morgen Arbeit,
damit dann das dabei rauskommt:
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Der einzige verbleibende Vorteil ist aktuell Flux.
habe ich auch vor.
wenn ich dann das lese und sehe, wird mir schlecht.
Ein ganzer Morgen Arbeit,
-
@negalein Hauptproblem ist halt Flux, da ist unter Grafana nix mehr mit "Klicky-klicky"
Ich habe jetzt so an die 90% vom Dashboard auf Flux umgestellt. Das kann man aber nicht veröffentlichen, da dort meine komplette Struktur verankert ist. Ist da nur ein Detail anders als bei mir, läuft es nicht.
Eigentlich genügt mir schon die Arbeit am Skript, jetzt ein vielfaches am Zeitaufwand für die V3 wieder in Grafana zu investieren finde ich nicht prickelnd. Ich habe tausend andere (private) Sachen zu erledigen.Allerdings wird ein Großteil der Nutzer nicht so damit zu Recht kommen wie sie es ev. wünschen. Man muss jetzt alles mittels "Overrides" realisieren. Problem hier wieder, dass ist dann wieder nur auf (m)eine Datenobjektstruktur limitiert, also bspw. 0_userdata.0.Wetterstation.xyz. Lautet der Ordner anders, ist die Instanz eine andere oder wird weiter "javascript..." benutzt geht es nicht mehr. In den Overrides kann man leider nicht mit Variablen arbeiten...
Also habe ich mich jetzt noch etwas in Grafana-Programmierung eingelesen und auch dafür eine Lösung gefunden. Es wird ein universelles Dashboard geben das man einfach importiert und ein paar Angaben machen muss. Somit kann man auch jederzeit ohne große mühen den Bucket umbenennen, eine andere Instanz nutzen, von "javascript..." nach "0_userdata..." umziehen...
Das ist aber "nicht mal so eben" zu realisieren.
Die spezifischen Sachen von mir wie bspw. "Temperatur in 3 h" sind dabei aber außen vor. Da muss man ev. doch aktiv werden, weiß ich aber noch nicht genau. -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Das ist aber "nicht mal so eben" zu realisieren.
das versteh ich.
Bin schon etwas weiter gekommen.
Hier ist schön erklärt, wie InfluxQL vs. Flux aufgebaut ist.
https://www.influxdata.com/blog/tldr-influxdb-tech-tips-converting-influxql-queries-flux-queries/Und mit Hilfe von hier und minimale nachbearbeitung bekoomt man den Flux-Querie aus dem InfluxQL-Query.
https://influxql2flux.twentyfive.dev/?q=U0VMRUNUIGxhc3QoInZhbHVlIikgRlJPTSAidXNlcmRhdGEuMC5XZXR0ZXJzdGF0aW9uLkF1c3NlbnRlbXBlcmF0dXIiIFdIRVJFICR0aW1lRmlsdGVyIEdST1VQIEJZIHRpbWUoJF9faW50ZXJ2YWwpIGZpbGwocHJldmlvdXMpSchaut schonmal gut aus.
-
Gibt es eigentlich eine Info ob InfluxQL weiter exisitieren wird?
-
@negalein Am einfachsten klickt man sich die Abfrage in der Web-GUI von Influx zusammen. Nach Klick auf den "Script Editor" sieht man dann auch die Abfrage in Flux. Der Part ist noch easy. Kompliziert wird es dann nur wenn man gruppiert oder etwas mehr will als eine reine Abfrage
Das kann man sich dann 1:1 in Grafana kopieren:
-
@rushmed sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Gibt es eigentlich eine Info ob InfluxQL weiter exisitieren wird?
Gelesen habe ich diesbzgl. noch nichts. Müsste ich raten, würde ich darauf setzen, dass es innerhalb der V2.x als Übergangslösung weiter unterstützt wird. Mit einer InfluxDB V3 dann aber ev. eingestellt werden könnte.
-
beim Change auf V3 und dem Umzug der DPs von javascript.0.Wetterstation.xxx auf 0_userdata.0.Wtterstation.xxx muß ich die InfluxDaten der DPs aus javascript in die neuen DPs aus 0_userdata manuell kopieren. Gehe ich da richtig in der Annahme?
-
@sborg
ich denke im Statistik-Skript V2.0.0 hat sich ein fehlendes_
eingeschlichen, da beim "Vortag.Windboee_max" keine Werte kommen (und vermutlich auch beim Monatswechsel wird´s so sein). Der DP wird mit 0 belegt.
Im "from bucket ..."-Statement steht bei Wind_maxr.measurement == "' + WET_DP + '.Wind_max"
, sollte jedoch r._
measurement == "' + WET_DP + '.Wind_max" lauten (ist zumindest bei Aussentemperatur und Regen_Tag so).
Bitte kannst du das gelegentlich mal prüfen.Vielen Dank!
-
@tritor sagte in [Linux Shell-Skript] WLAN-Wetterstation:
beim Change auf V3 und dem Umzug der DPs von javascript.0.Wetterstation.xxx auf 0_userdata.0.Wtterstation.xxx muß ich die InfluxDaten der DPs aus javascript in die neuen DPs aus 0_userdata manuell kopieren. Gehe ich da richtig in der Annahme?
Am einfachsten exportiert (egal ob aus Influx V1 oder V2) man sich die entsprechende(n) Datenreihe(n) zB. mittels "Killer-Befehl" aus der V1 :
echo '#datatype measurement,dateTime:RFC3339,boolean,string,double,double' > export.csv && influx -database [Datenbankname] -username [username] -password [passwort] -execute 'SELECT * FROM "javascript.0.Wetterstation.Aussentemperatur","javascript.0.Wetterstation.Regen_Tag","javascript.0.Wetterstation.Wind_max"' -format csv -precision='rfc3339' >> export.csv
Nun ersetzt man "javascript." durch "0_userdata." :
sed -i "s/^javascript\./0_userdata\./g" ./export.csv
Dann sollten die Einträge in der export.csv in etwa so aussehen:
0_userdata.0.Fuellstand,2023-02-15T05:02:37.015Z,true,system.adapter.influxdb.0,0,54
Nun droppt man die alten Datenserien (sofern man sie schon in V2 hat) und importiert die neue csv:
influx write -b [Bucketname] -f ./export.csv
-
@latzi sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Statistik-Skript V2.0.0 hat sich ein fehlendes
_
eingeschlichen...Wohl eher davon geschlichen
...und noch einer, der aber schon seit langer Zeit drin ist.Jepp, jepp, checked, fixed, danke --> V2.0.1
Neue Version des JavaScriptes Wetterstation-Statistik auf GitHub V2.0.1
- ~Bugfix Influx-Abfrage "Wind" (@Latzi)
- ~Bugfix fester Datenpunkt auf "javascript.0..." bei Trockenperiode
Wie immer zu finden im GitHub
Update ist erforderlich, da es sich um einen Fehler handelt der die Funktion einschränkt.
-
@sborg Ok, danke. Irgendwie kommen die 24h Werte aber auch nicht. Die sind aber sicher in Influx.
-
@rushmed Fällt mir nur noch ein, hast du den ioB zwischenzeitlich mal neu gestartet oder zumindest den SimpleAPI? Der macht gelegentlich die "lustigsten" Fehler wenn man neue DPs per Javascript anlegt...
Mich macht da "Null" stutzig. Sieht so aus als könnte er aktuell den Wert nicht schreiben. -
@sborg ich hab gerade gesehen, dass heute Nacht wohl auch was schief lief.. schau mal, hier haste mal die Windboe auf Windboee geaendert aber irgendwie existiert der alte Datenpunkt noch der neue wird nicht geschrieben.. ?
2023-02-24 01:03:00.013 - info: javascript.0 (976157) script.js.common.Klimatisierung.Wetterstation-Statistik: Auswertung durchgeführt... 2023-02-24 01:03:00.149 - warn: javascript.0 (976157) State "0_userdata.0.Statistik.Wetter.VorTag.Windboee_max" not found 2023-02-24 01:03:00.151 - warn: javascript.0 (976157) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1731:20) 2023-02-24 01:03:00.151 - warn: javascript.0 (976157) at Object.cb (script.js.common.Klimatisierung.Wetterstation-Statistik:226:5) 2023-02-24 01:03:00.151 - warn: javascript.0 (976157) at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5816:71) 2023-02-24 01:03:00.151 - warn: javascript.0 (976157) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:324:37) 2023-02-24 01:03:00.151 - warn: javascript.0 (976157) at processImmediate (node:internal/timers:466:21) 2023-02-24 01:03:00.151 - warn: javascript.0 (976157) getState "0_userdata.0.Statistik.Wetter.aktueller_Monat.Max_Windboee" not found (3) 2023-02-24 01:03:00.152 - warn: javascript.0 (976157) at Object.cb (script.js.common.Klimatisierung.Wetterstation-Statistik:247:8) 2023-02-24 01:03:00.152 - warn: javascript.0 (976157) at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5816:71) 2023-02-24 01:03:00.152 - warn: javascript.0 (976157) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:324:37) 2023-02-24 01:03:00.152 - warn: javascript.0 (976157) at processImmediate (node:internal/timers:466:21) 2023-02-24 01:03:00.152 - warn: javascript.0 (976157) State "0_userdata.0.Statistik.Wetter.aktueller_Monat.Max_Windboee" not found 2023-02-24 01:03:00.152 - warn: javascript.0 (976157) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1731:20) 2023-02-24 01:03:00.152 - warn: javascript.0 (976157) at Object.cb (script.js.common.Klimatisierung.Wetterstation-Statistik:247:78) 2023-02-24 01:03:00.153 - warn: javascript.0 (976157) at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5816:71) 2023-02-24 01:03:00.153 - warn: javascript.0 (976157) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:324:37) 2023-02-24 01:03:00.153 - warn: javascript.0 (976157) at processImmediate (node:internal/timers:466:21) 2023-02-24 01:03:00.153 - warn: javascript.0 (976157) getState "0_userdata.0.Statistik.Wetter.Jahreswerte.Windboee_max" not found (3) 2023-02-24 01:03:00.153 - warn: javascript.0 (976157) at Object.cb (script.js.common.Klimatisierung.Wetterstation-Statistik:283:12) 2023-02-24 01:03:00.153 - warn: javascript.0 (976157) at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5816:71) 2023-02-24 01:03:00.153 - warn: javascript.0 (976157) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:324:37) 2023-02-24 01:03:00.153 - warn: javascript.0 (976157) at processImmediate (node:internal/timers:466:21) 2023-02-24 01:03:00.153 - warn: javascript.0 (976157) State "0_userdata.0.Statistik.Wetter.Jahreswerte.Windboee_max" not found 2023-02-24 01:03:00.154 - warn: javascript.0 (976157) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1731:20) 2023-02-24 01:03:00.154 - warn: javascript.0 (976157) at Object.cb (script.js.common.Klimatisierung.Wetterstation-Statistik:283:79) 2023-02-24 01:03:00.154 - warn: javascript.0 (976157) at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5816:71) 2023-02-24 01:03:00.154 - warn: javascript.0 (976157) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:324:37) 2023-02-24 01:03:00.154 - warn: javascript.0 (976157) at processImmediate (node:internal/timers:466:21) 2023-02-24 01:03:00.155 - warn: javascript.0 (976157) getState "0_userdata.0.Statistik.Wetter.Rekordwerte.value.Windboee" not found (3) 2023-02-24 01:03:00.155 - warn: javascript.0 (976157) at Rekordwerte (script.js.common.Klimatisierung.Wetterstation-Statistik:655:9) 2023-02-24 01:03:00.155 - warn: javascript.0 (976157) at Object.cb (script.js.common.Klimatisierung.Wetterstation-Statistik:302:5) 2023-02-24 01:03:00.155 - warn: javascript.0 (976157) at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5816:71) 2023-02-24 01:03:00.155 - warn: javascript.0 (976157) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:324:37) 2023-02-24 01:03:00.156 - warn: javascript.0 (976157) at processImmediate (node:internal/timers:466:21) 2023-02-24 01:03:00.156 - warn: javascript.0 (976157) State "0_userdata.0.Statistik.Wetter.Rekordwerte.value.Windboee" not found 2023-02-24 01:03:00.156 - warn: javascript.0 (976157) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1731:20) 2023-02-24 01:03:00.156 - warn: javascript.0 (976157) at Rekordwerte (script.js.common.Klimatisierung.Wetterstation-Statistik:656:9) 2023-02-24 01:03:00.156 - warn: javascript.0 (976157) at Object.cb (script.js.common.Klimatisierung.Wetterstation-Statistik:302:5) 2023-02-24 01:03:00.156 - warn: javascript.0 (976157) at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5816:71) 2023-02-24 01:03:00.156 - warn: javascript.0 (976157) at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:324:37) 2023-02-24 01:03:00.156 - warn: javascript.0 (976157) at processImmediate (node:internal/timers:466:21) 2023-02-24 01:03:05.159 - warn: javascript.0 (976157) getState "0_userdata.0.Statistik.Wetter.Rekordwerte.value.Windboee" not found (3) 2023-02-24 01:03:05.160 - warn: javascript.0 (976157) at Template_Rekordwerte (script.js.common.Klimatisierung.Wetterstation-Statistik:669:16) 2023-02-24 01:03:05.160 - warn: javascript.0 (976157) script.js.common.Klimatisierung.Wetterstation-Statistik: Object "0_userdata.0.Statistik.Wetter.Rekordwerte.value.Windboee" does not exist 2023-02-24 01:03:05.164 - error: javascript.0 (976157) script.js.common.Klimatisierung.Wetterstation-Statistik: TypeError: Cannot read properties of null (reading 'common') 2023-02-24 01:03:05.164 - error: javascript.0 (976157) at Template_Rekordwerte (script.js.common.Klimatisierung.Wetterstation-Statistik:670:66) 2023-02-24 01:06:24.817 - info: admin.0 (2420357) <== Disconnect system.user.admin from ::ffff:192.168.0.5 javascript
wetterstation V3.0 und javascript 7.0.1
-
hast du die
Windboe
-DP´s in0_userdata.0.Statistik.Wetter
gemäß Ankündigung geändert?@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
"Windboe" heißt nun überall korrekt "Windboee". Am einfachsten klont man den alten DP und trägt den neuen korrekten Namen ein, kopiert sich dessen Wert und trägt ihn in den neuen ein
Wetterstation-Statistik V2.0.1 eingesetzt?
-
@latzi sagte in [Linux Shell-Skript] WLAN-Wetterstation:
hast du die
Windboe
-DP´s in0_userdata.0.Statistik.Wetter
gemäß Ankündigung geändert?noe, dachte das Script legt nicht vorhandene automatisch an.. dachte ich..
Wetterstation-Statistik V2.0.1 eingesetzt?
ja, mal schauen obs jetzt laeuft.. dachte wenn man sowas im Script aendert dann macht das Script auch die Aenderung.. hach.. ok, der User soll auch noch was zu tun haben..
Edit: kaum macht man's richtig, funktionierts!
-
@ilovegym sagte in [Linux Shell-Skript] WLAN-Wetterstation:
dachte wenn man sowas im Script aendert dann macht das Script auch die Aenderung.. hach.. ok, der User soll auch noch was zu tun haben.
Das Script macht da mal nüscht.
weniger Arbeit für euch = mehr Arbeit für mich
...und a bisserl dürft ihr auch arbeiten
Aber Späßken beiseite, das ist Userseitig in nicht mal 5 Minuten erledigt, ich muss/müsste dann erst mal wieder feststellen in welchem Pfad die Objekte liegen, unter welcher Instanz...
Es wäre da halt einfacher eine feste Struktur vorzugeben. Da bin ich aber kein Freund von. Jeder soll da einstellen können was er/sie/diverse will -
@sborg ja klar, verstaendlich, in manchen Dingen ist man verwoehnt..
Laeuft ja jetzt, Daten werden geschrieben, alles gut! Danke nochmals !