NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@nashra
ich hab die Eurochron EFWS 2900 seit mehr als 4 Jahren im Einsatz, läuft wie am ersten Tag - sowohl Innen- als auch Außeneinheit ohne Probleme (nur etwas Reinigungsaufwand der Außeneinheit einmal jährlich)! -
@latzi sagte in [Linux Shell-Skript] WLAN-Wetterstation:
ich hab die Eurochron EFWS 2900 seit mehr als 4 Jahren im Einsatz, läuft wie am ersten Tag - sowohl Innen- als auch Außeneinheit ohne Probleme (nur etwas Reinigungsaufwand der Außeneinheit einmal jährlich)!
Dito für ca. 3.5 Jahre, nur habe ich seit 3.5 Jahren genau mal gar nix an der Außeneinheit gemacht
...sind sogar noch die ersten Batterien drin.
Bzgl. Display: meins sieht noch wie am ersten Tag aus bei ca. 16/7 - Betrieb.Alternativ wenn du eh kaum das Display genutzt hast / nutzen willst, ev. nur den Wettermast und ein Gateway.
-
Hallo Leute,
jetzt bin ich wirklich sauer.
Letzten Sonntag hatte sich ja die Außeneinheit verabschiedet, die Displayeinheit funktionierte
zwar noch aber seit langem konnte man kaum noch was darauf erkennen.
Hatte noch das Solarmodul sauber gemacht und auch mal neue Batterien eingelegt, aber nichts.
Ok, am Dienstag ein neues Set bestellt, eine Ecowitt WS2910
Das Teil kam schon Mittwoch an und was muß ich feststellen.....
Die alte Außeneinheit funkt auf einmal wieder als wenn sie nur darauf
gewartet hat das die Neue kommt.
Egal, die fliegt jetzt raus und die Neue geht in den Betrieb.
Frau freut sich auf neue Displayeinheit, da schon lange gemeckert wegen der alten.
Und ich, schau mal Schatzi, deine neue Wetterstation schon mal vorab zu Weihnachten.
Ups, der Blick hätte töten können. -
Windrose
meine aktuelle Windrose in Grafana wird anscheinend nicht mehr unterstützt.
"Angular plugin
This plugin uses a deprecated, legacy platform based on AngularJS and will stop working in future releases of Grafana."Hat jemand eine funktioierende Windrose vorzugsweise in Grafana?
-
@nashra sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ups, der Blick hätte töten können.
Wie hieß das in der Werbung "Für alles hat man... Alles andere ist unbezahlbar"
@tritor
AngularJS ist ein Sicherheitsrisiko. Das hatten sie schon zu Anfang der 10er angekündigt es nicht weiter unterstützen zu wollen. Mit der aktuellen Grafana-Version haben sie es jetzt endgültig abgeschaltet.
Einen Ersatz für das Windrose-Plugin habe ich bis dato leider auch noch nicht gefunden
Hilft wohl nur warten und hoffen... -
@sborg
Ouch das hatte auch das AngularJS als BasisAber es gibt opensource Varianten:
https://github.com/spectraphilic/grafana-windrose/ -
@boronsbruder
Genau die ist in meinem Demo-Dashboard drin und geht nicht mehrAber es hat sich bei Grafana was getan, nur getestet habe ich es noch nicht: https://grafana.com/grafana/plugins/operato-windrose-panel/
-
merci für die Info, das hilft schon sehr weiter, dann werd ich mal die Windinfo "zu Fuß" darstellen.
die Operato Windrose hab ich gesehen, und ein wenig experimentiert: Zumindest wird mal was angezeigt:InfluxDB - Windrose - Operato
from(bucket: "ioBroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Windrichtung_10min" or r._measurement == "0_userdata.0.Wetterstation.Wind_10min") |> filter(fn: (r) => r._field == "value") |> pivot(rowKey:["_time"], columnKey: ["_measurement"], valueColumn: "_value") |> filter(fn: (r) => exists r["0_userdata.0.Wetterstation.Windrichtung_10min"] and exists r["0_userdata.0.Wetterstation.Wind_10min"]) |> rename(columns: {"0_userdata.0.Wetterstation.Windrichtung_10min": "wind_direction", "0_userdata.0.Wetterstation.Wind_10min": "wind_speed"}) |> map(fn: (r) => ({ r with direction: r.wind_direction})) |> map(fn: (r) => ({ r with speed: r.wind_speed})) |> aggregateWindow(every: 2m0s, fn: first, column: "direction", createEmpty: false)
Die Legende skalieren läßt sich nur mit dem Auswählen der "speed-buckets". Also wieviele "Farben" man darstellen möchte.
8 sind der Standard, ich habs auf 5 reduziert, dann passt es auch mit meiner Vis.
-
@tritor Supi, danke fürs testen. Dann werde ich es mal bei Gelegenheit einbauen.
...und wieder was für die ToDo-Liste... -
@tritor
schade, der Code von dir funktioniert bei mir nicht.
Oben links das rote Zeichen und wenn ich mit der Maus darauf gehe
zeigt er an: t.fields[0] is undefined -
ich hab das in Grafana 10.1 eingegeben mit einer InfluxDB2 ver. 2.7 als Datensource eingegeben.
Eventuell postest mal einen Screenshot?
sieht bei mir so aus:
-
@tritor
Grafana 10.2.2
InflusDB 2.7.4 -
na dann stellen sich folgende Fragen:
- deine Datensource (Bucket) heisst: iobroker (hast du zumindest geändert)
- deine WetterstionsDPs sind alle unter 0_userdata.0 oder sind die unter javascript.0.Wetterstation....
- die Datenpunkte sind bei dir genauso vorhanden
Sonst kann ich es mir nicht erklären, wo es sonst noch haken könnte.
-
@Nashra
Du hast wahrscheinlich keine Daten im Bucket. Wenn es relativ Windstill ist oder sich die Richtung im 10 Minutenraster nicht ändert, steht kaum was in der DB.
Entweder musst du beim loggen bspw. jede Stunde mal das schreiben eines Wertes erzwingen, oder die aktuellen Werte nutzen (also nicht den 10 Minuten Durchschnitt):from(bucket: "${DatenBucket}") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Windrichtung" or r._measurement == "0_userdata.0.Wetterstation.Wind") |> 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"]) |> rename(columns: {"0_userdata.0.Wetterstation.Windrichtung": "wind_direction", "0_userdata.0.Wetterstation.Wind": "wind_speed"}) |> map(fn: (r) => ({ r with direction: r.wind_direction})) |> map(fn: (r) => ({ r with speed: r.wind_speed})) |> aggregateWindow(every: 2m0s, fn: first, column: "direction", createEmpty: false)
-
-
Also erst mal Visualisierung Bar Gauge und dann 4 Queries:
Jahr
from(bucket: "ioBroker") |> range(start: v.timeRangeStart, stop:v.timeRangeStop) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Regen_Jahr" and r._field == "value" )
Monat
from(bucket: "ioBroker") |> range(start: v.timeRangeStart, stop:v.timeRangeStop) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Regen_Monat" and r._field == "value" )
Woche
from(bucket: "ioBroker") |> range(start: v.timeRangeStart, stop:v.timeRangeStop) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Regen_Woche" and r._field == "value" )
Tag
from(bucket: "ioBroker") |> range(start: v.timeRangeStart, stop:v.timeRangeStop) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Regen_Tag" and r._field == "value" )
Und dann die settings & Overrides:
Die Max Werte mußt du halt so wählen damit es dann auch passt, z.B. beim Jahr hab ich 900 als max Wert genommen, das kann natürlich abhängig von deiner Region, wie oft und wieviel es da regnet, auch zu hoch sein. Ich habe noch kein ganzes Jahr gelogged, deshalb hab ich es mal auf 900 gesetzt.
-
@tritor sagte in [Linux Shell-Skript] WLAN-Wetterstation:
na dann stellen sich folgende Fragen:
- deine Datensource (Bucket) heisst: iobroker (hast du zumindest geändert)
- deine WetterstionsDPs sind alle unter 0_userdata.0 oder sind die unter javascript.0.Wetterstation....
- die Datenpunkte sind bei dir genauso vorhanden
Sonst kann ich es mir nicht erklären, wo es sonst noch haken könnte.
Ja, alles unter 0_userdata.0, DP vorhanden und auch befüllt. Aber ohne die ....__10min funktioniert es.
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@Nashra
Du hast wahrscheinlich keine Daten im Bucket. Wenn es relativ Windstill ist oder sich die Richtung im 10 Minutenraster nicht ändert, steht kaum was in der DB.
Entweder musst du beim loggen bspw. jede Stunde mal das schreiben eines Wertes erzwingen, oder die aktuellen Werte nutzen (also nicht den 10 Minuten Durchschnitt):from(bucket: "${DatenBucket}") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Windrichtung" or r._measurement == "0_userdata.0.Wetterstation.Wind") |> 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"]) |> rename(columns: {"0_userdata.0.Wetterstation.Windrichtung": "wind_direction", "0_userdata.0.Wetterstation.Wind": "wind_speed"}) |> map(fn: (r) => ({ r with direction: r.wind_direction})) |> map(fn: (r) => ({ r with speed: r.wind_speed})) |> aggregateWindow(every: 2m0s, fn: first, column: "direction", createEmpty: false)
Moin, die ..._10min rausgenommen und läuft. Obwohl Daten ohne Ende in den Datenpunkten.
Schau mir das am Wochenende mal genau an, da habe ich mehr Zeit. -
@nashra Kommt halt auf beide DPs an. Bei mir sah bspw. gestern die 10 Min Windrichtung so aus (also bis kurz vor Mitternacht ein einziger Wert; ich erzwinge hier kein zusätzliches schreiben):
Man muss für die Anzeige nicht unbedingt den 10 Minutenwert nehmen, sondern erhöht einfach bei der Abfrage #10 das aggregieren auf 10 Minuten, hat den gleichen Effekt, umgeht aber das Problem zu wenig Werte zu haben.
aggregateWindow(every: 10m0s, fn: first, column: "direction", createEmpty: true)
-
@chris76e
Du musst im Plugin noch auf "km/h" umstellen, denn der gelieferte Wert ist nicht "m/s"btw: das "unschöne" Datenpunktwirrwarr bei der Temperatur kannst du umgehen:
Zeile #5 einfügen (value natürlich anpassen ) :|> set(key: "_field", value: "Aussen")
Dann in den Optionen eintragen:${__field.name}
(sind wirklich zwei Unterstriche)
Dann noch bei den "Overrides" eintragen:${__field.name}
und die neue Datenquelle auswählen.
Sollte die noch nicht in der Liste auftauchen, Panel speichern, schließen und Panel erneut zum editieren öffnen, dann sollte es nun auch in der Liste auftauchen.