NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@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 !
-
@ilovegym Ich habe es auch nicht negativ aufgefasst
Mir fällt nur gerade auf, ich hätte es eh nicht automatisieren können. Ich habe mich noch nie damit beschäftigt, ob ich auch auslesen könnte ob der DP zB. mittels Influx geloggt wird, um dies dann im neuen DP wieder zu setzen. -
Das Grafana-Dashboard habe ich mittlerweile kpl. auf Flux umgestellt, weiß nur nicht woher das noch kommt:
Scheint nicht benutzt zu werden, denn es funktioniert soweit bzw. es fehlt nichts und der entsprechende DP ist in InfluxDB V1 bereits gedroppt und nicht mehr existent. Schön ist das aber nicht
-
Ab sofort steht "mein" Dashboard in der V3 auf GitHub zur Verfügung wer denn will: https://github.com/SBorg2014/WLAN-Wetterstation
Nur noch für InfluxDB V2.x, Abfrage nur in Flux, konfigurierbar in den Settings per Variablen.
Neues Windrose-Plugin (Installation in der Read.Me). -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Nur noch für InfluxDB V2.x, Abfrage nur in Flux, konfigurierbar in den Settings per Variablen.
Danke für deine Arbeit
Bei mir funktioniert es leider noch nicht.
Bucket ist bei mir
iobroker
. Das hab ich in den Variablen eingetragen.
Data_Prefix
-_Instanz
und-_Ordnername
passen auch.
0_userdata.0.Wetterstation
Hab ich irgendwo noch was vergessen?
-
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Hab ich irgendwo noch was vergessen?
Jepp
Zitat aus der Read.ME:
Hier besteht die Möglichkeit mit zwei unterschiedlichen Buckets zu arbeiten. Nutzt man nur eines für alles (was ich nicht unbedingt empfehlen würde) trägt man bei beiden den gleichen Bucketnamen ein.
Musst also auch beim "shorttermBucket" iobroker eintragen.
Überlesen, oder ist das missverständlich ausgedrückt? Falls ja, wie besser?
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Überlesen, oder ist das missverständlich ausgedrückt? Falls ja, wie besser?
mittlerweile die Readme gelesen und angepasst
Leider noch immer leer
-
@negalein Hast du mal ein refresh/reload der Seite erzwungen (STRG+F5)? Ev. hat er da noch die alte Einstellung gecached.
Falls immer noch nicht:
Wenn du den "Query-Inspector" öffnest sollte es dann in etwa so aussehen:
"291" = es wurden 291 Messwerte gelesen (für "Innen" 569) und die Variablen für Bucket etc. wurden in der Abfrage korrekt ersetzt. Der Abfragezeitraum sollte dann "jetzt" - 24 Stunden sein. -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Wenn du den "Query-Inspector" öffnest sollte es dann in etwa so aussehen:
da steht nichts
Query schaut so aus:
from(bucket: "${longtermBucket}") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r._measurement == "${Data_Prefix}.${Data_Instanz}.${Data_Ordnername}.Aussentemperatur" and r._field == "value") |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false) |> set(key: "_field", value: "Aussen") |> yield(name: "Aussen")
Trage ich den Query von Influx-DataExplorer ein, funktionierts:
from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Wetterstation.Aussentemperatur") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "mean")
hast du noch eine Idee?
-
Ich würde gerne eine Windrose in meine Vis einbauen.
Am Bestenüber Grafana. Bekomme aber die Query in Flux nicht hin.
Hat da jemand einen Input für mich? -
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
hast du noch eine Idee?
Ich weiß leider nicht ob das ein prinzipielles Problem ist, oder nur bei dir. Ich habe es mal unter anderem Namen importiert, Buckets eingetragen, läuft...
Ist dein Grafana aktuell (9.3.6) ? -
Installation des Plugins für Grafana: https://github.com/SBorg2014/WLAN-Wetterstation/tree/master/Grafana DashboardFlux:
from(bucket: "Bucketname") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Wind_max" or r._measurement == "0_userdata.0.Wetterstation.Windrichtung") |> filter(fn: (r) => r._field == "value") |> pivot(rowKey:["_time"], columnKey: ["_measurement"], valueColumn: "_value") |> filter(fn: (r) => exists r["0_userdata.0.Wetterstation.Windrichtung"] and exists r["0_userdata.0.Wetterstation.Wind_max"]) |> rename(columns: {"0_userdata.0.Wetterstation.Windrichtung": "directionRad", "0_userdata.0.Wetterstation.Wind_max": "speedMps"}) |> map(fn: (r) => ({ r with direction: r.directionRad / 3.14 * 180.0 })) |> map(fn: (r) => ({ r with speed: r.speedMps / 0.514 })) |> aggregateWindow(every: 2m0s, fn: first, column: "direction", createEmpty: false)
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ist dein Grafana aktuell (9.3.6) ?
9.3.2
Aber ob es da wegen 0.0.4 so viele Unterschiede gibt?
Werde ein Update machen und testen.
mit 9.3.6 scheinen netzt zumindest einige auf.
Query ist jetzt zB
from(bucket: "${longtermBucket}") false false |> range(start: v.timeRangeStart, stop: v.timeRangeStop) false false |> filter(fn: (r) => r._measurement == "${Data_Prefix}.${Data_Instanz}.${Data_Ordnername}.Aussentemperatur" and r._field == "value") false false |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false) false false |> set(key: "_field", value: "Aussen") false false |> yield(name: "Aussen")Query-Inspektor zeigt weiterhin ![240c9fc8-b033-4957-afc5-eaacd84a00f1-image.png](/assets/uploads/files/1677371443406-240c9fc8-b033-4957-afc5-eaacd84a00f1-image.png) ![8baa348f-b957-40e6-a2ab-1d1222a6b836-image.png](/assets/uploads/files/1677371492982-8baa348f-b957-40e6-a2ab-1d1222a6b836-image.png)
-
@sborg
die line 9 und 10 mit den Divisionen sind doch Umrechnungen. Line 9 von rad auf Grad und der Divisor von 0.514 ist doch eine Umrechnung von m/s in Knoten.Benötigt man diese überhaupt, die Felder 0_userdata.0.Wetterstation.Windrichtung liefert doch schon km/h und
0_userdata.0.Wetterstation.Wind_max sollte doch auch schon Grad liefern.Liege ich hier mit meiner Annahme richtig?