NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@sebhoff sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Mein Problem ist: ich finde es einfach nicht. Bevor ich hier schon wieder stundenlang suche, kann mir jemand ggf. einen Tipp geben? Danke!
müsste mWn hier sein
-
@negalein Vielen Dank! Da ist es in der Tat...
Nun muss ich nur noch herausfinden, was ich wie konfigurieren muss. -
OK - irgendwas ist komisch hier...
Bei der Einrichtung der Wetterstation und des Grafana Dashboards hatte ich "Wetter" und "Wetterstation" irgendwann mal verwechselt. Das Resultat war, dass es jeweils einen Bucket mit diesem Namen gab, obwohl ich bloß "Wetter" bräuchte. Ich habe auch mal einen Wert in "Wetterstation" geschrieben, bevor ich das gemerkt hatte. Inzwischen werden die Sachen aber richtig abgespeichert:Dies lässt sich zum Beispiel für die Außentemperatur im Data Explorer von InfluxDB gut überprüfen:
Interessanterweise schaffe ich es nicht, diesen Bucket in InfluxDB zu löschen...
Wenn ich nun zum Grafana Dashboard gehe, wird die Außentemperatur nicht richtig angezeigt:
Der entsprechende Query für die Außentemperatur sieht ja 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")
Wenn ich aber den Query Inspector aufrufe, zeigt sich, dass aus mir nicht erklärbarem Grund der Bucket "Wetterdaten" abgefragt wird:
from(bucket: "Wetterdaten") |> range(start: 2023-07-16T17:41:46.143Z, stop: 2023-07-17T17:41:46.143Z) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Aussentemperatur" and r._field == "value") |> aggregateWindow(every: 1m0s, fn: last, createEmpty: false) |> set(key: "_field", value: "Aussen") |> yield(name: "Aussen")
Ich gehe dann also (zum x-ten Mal) zu den Dashboard settings, und dort zu den Variablen. Das sieht so aus:
Der longtermBucket ist "Wetter" - und nicht "Wetterdaten". Dann gehe ich in die Konfiguration der Variable longtermBucket und ändere nichts - bis auf eine minimale Änderung in der Beschreibung (z. B. ein zusätzliches Leerzeichen), damit ich auf "apply" drücken und das Dashboard neu speichern kann.
Anschließend sieht natürlich alles genauso wie vorher aus - ich habe ja effektiv auch nichts geändert.
Manchmal - aber eben auch nicht immer - ist das Ergebnis dann wie gewünscht und die Außentemperaturkurve wird richtig angezeigt:
Wenn ich dann aber einen Reload der Seite mache, dann ist das Problem wieder da:
Wo wird dieser Verweis auf "Wetterdaten" gespeichert, so dass er immer wieder als Basis für die Queries benutzt wird???
-
@sebhoff sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Wo wird dieser Verweis auf "Wetterdaten" gespeichert, so dass er immer wieder als Basis für die Queries benutzt wird???
hatte ich auch am Anfang.
einfachste Lösung (da du mit dem DB noch frisch bist), lösch es und leg das Dashboard neu an.Ich bin von den Variablen aber ganz weg gegangen und hab mir alles mit dem DataExplorer zusammengebaut.
-
@negalein Mhm - danke! Hat aber leider (erst mal) nichts gebracht. Ich habe die Sache gelöscht, aber beim Neu-Import waren alle Variablen schon gesetzt. Und natürlich wieder mit "Wetterdaten". Oder habe ich etwas falsch verstanden?
Dafür habe ich es jetzt endlich geschafft, den Bucket "Wetterdaten" zu löschen. Das führt dann hierzu:UPDATE: Ich hab's gefunden. In den Zeilen 7007 und 7008 stand "Wetterdaten".. <seufz>
-
@sebhoff sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Oder habe ich etwas falsch verstanden?
funktionierte bei mir.
War nur nicht lange mit den Variablen unterwegs, da ich sehr bald wieder auf das Kopieren aus dem DataExplorer umgestiegen bin.
Ist eigentlich auch schnell erledigt. -
Da hab ich mich doch selbst ins Abseits gestellt . Ich hab jetzt ein paar Tage (ok, schon seit März) nichts mehr am Wetterscript gemacht. Ich wollte ja auch auf InfluxDB2!
Aktuell habe ich das Script V3.2.0 laufen und bin jetzt dabei Influx anzubinden. Hier habe ich eine neue Instanz aufgesetzt mit einem Bucket 'weather'. Das Script läuft jetzt seit >3h, aktuell wurden noch keine Daten hierein geschrieben. Auch der Test mit '--influx_test' hat nichts geschrieben. Die Zugangsdaten habe ich in der wetterstation.conf drin. Hab ich das falsche Bucket? In dem Grafana-Script habe ich auch gesehen, dass es hier 'Wetterdaten' und 'TempData' gibt.
Kann mir jemand von den Wetterhelden kurz auf die Sprünge helfen? -
Zwei kurze Fragen zum Statistik-Skript:
- Habe ich es richtig verstanden, dass die Werte nach Start des Skripts nicht direkt berechnet werden, sondern zum ersten Mal um 1:03 Uhr (wenn die Einstellungen beim Default belassen werden)?
- Ist das Skript eigentlich bereit für den 29. Februar 2024? Ich sehe zwar "let monatstage = [31,28,31,30,31,30,31,31,30,31,30,31];", aber habe auf Anhieb nichts im Skript gefunden, was den Februar-Wert in einem Schaltjahr um einen Tag erhöht...
-
@rene55 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Auch der Test mit '--influx_test' hat nichts geschrieben. Die Zugangsdaten habe ich in der wetterstation.conf drin. Hab ich das falsche Bucket?
Hi, der Test schreibt auch nichts (ich schreibe zu keinem Zeitpunkt direkt in die InfluxDB), der baut nur eine Verbindung auf und will dann was lesen
Zeigt denn der Influx-Explorer überhaupt Daten bei deinem Bucket bei bspw. "Aussentemperatur"?
-
@sebhoff sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Habe ich es richtig verstanden, dass die Werte nach Start des Skripts nicht direkt berechnet werden, sondern zum ersten Mal um 1:03 Uhr (wenn die Einstellungen beim Default belassen werden)?
Jepp, ist ja eine Statistik und die kann nur richtig sein wenn alle Werte vorliegen. Ich kann ja (aktuell 14:07 Uhr) nicht jetzt schon sagen "die Höchsttemperatur lag heute bei 33.11°C". Das geht erst heute Nacht um 0:00 Uhr wenn der Tag durch ist.
Wenn du "jetzt" die bisherige Tageshöchsttemperatur möchtest kannst du das aber per Influx abfragen.
Die 1:03 Uhr ist extra ein krummer Wert, da möglichst nicht viel zu dem Zeitpunkt laufen sollte. Hat sich zwar seit Influx V2 gebessert, aber auf einem älteren Pi kann das schon mal paar Sekunden "haken".
...und 01:xx Uhr war/ist, um sicherzustellen, dass auch alle Werte vom RAM nun in die Influx geschrieben wurden....und keine Ahnung mehr wie ich mir das mit dem 29.02. gedacht hatte (oder ich überhaupt was gedacht habe/hatte ). Das entstand mehr aus einem Userwunsch heraus und ich nutze es selbst nicht, deswegen dümpelt das etwas Stiefmütterlich herum. So aus dem Bauch heraus würde ich aber meinen, dass der Tag einfach nicht in die Statistik einfließt.
-
@sborg OK - danke!
Dann schaue ich mal, ob morgen früh was in ioBroker erscheint, was da bis jetzt noch nicht steht... -
@sborg Danke für die Antwort. Es ist einfach schon zu lange her (Benutze dein Script ja schon seit der Version 1.3.1). Ich habe ja alles auf einem neuen Rechner (proxmox, Wetterstation, Influx, Grafana) installiert. Ich musste die neue Influx ja noch dem ioBroker bekannt geben und die jeweiligen Datenpunkte der Instanz zuordnen - das hatte ich total ausgeblendet ! Und schon kommen die die Werte in der Influx an.
Jetzt habe ich noch den Blackout mit dem Dashboard und den beiden 'Wetterdaten' und 'TempData'. Sind das zwei Buckets oder nur optional? -
Kurze Frage - habe ich das richtig verstanden?
Ich habe eine Sainlogic WS3500 mit entsprechender Basisstation, die nun den Input für das WLAN_Wetterstation Skript liefert. Das Skript könnte theoretisch zusätzliche Sensoren verarbeiten - und das ginge zum Beispiel mit einem Ecowitt Gateway (GW1100). Allerdings kann ich nicht beides gleichzeitig betreiben, oder? Also die bereits eingebundene Basisstation durch ein GW1100 ergänzen...? -
@rene55 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Jetzt habe ich noch den Blackout mit dem Dashboard und den beiden 'Wetterdaten' und 'TempData'. Sind das zwei Buckets oder nur optional?
Eigentlich zwei. Das Ganze spiegelt meine Installation wieder (von wegen "och, kannst du mal deins posten" ).
Bei mir ist es so, dass alles in einem Bucket mit einer Retention von xx Tagen landet (= damit wird automatisch immer alles älter als xx+1 Tag gelöscht).
Will ich nun etwas länger haben, läuft dafür ein Influx-Task der dann zB. die Daten aggregiert (min, max, avg oder was auch immer) bzw. die Daten in ein zweites Bucket schiebt mit einer Retention von "never".
Daher rühren die beiden Buckets. Du kannst sie entweder kpl. mit einem ersetzen oder alle Bucket-Variablen mittels eines festen Names (beides in der Dashboard.json). Ich wollte nur diesmal mittels der Variablen flexibel bleiben. Ändert sich was (Bucketname, Instanz...), muss ich es nur einmalig bei den Variablen ändern. -
@sborg Danke auch hierfür. Ich versuche mal das mit den Variablen zu verstehen. Ich bin weit entfernt davon eigene Influx-Tasks zu basteln. Ich geb mich mal ans Dashboard. Das V1 hab ich ja auch irgendwie hinbekommen - ist nur schon so lange her .
-
@sebhoff Gute Frage, nächste Frage...
Ich kann leider nur theoretisch antworten, weil "wissen tue ich das nicht".
Basisstation "ergänzen" wird nicht funktionieren, da du die Außenstation ("Wettermast") nur mit einer Basisstation ("Display") koppeln kannst.Was aber in der Theorie funktionieren müsste wäre eine zweite, eigenständige Installation.
Also erst mal alles lassen wie es ist, nun ein Gateway und den/die Zusatz-Sensor/en als neue Wetterstation installieren.
Auf deinem Linuxrechner nun eine neue Shell-Skript Version einrichten (neues Verzeichnis, Service zB. "WetterGateway" nennen). Der 2. Service schickt dann seine Daten ganz normal wieder an den ioB, du musst für das Gateway nur einen anderen Port nutzen als aktuell mit dem Shell-Skript....oder auf das Display verzichten und alles über das Gateway laufen lassen. Notfalls, falls unbedingt ein Display sein muss, dann mit einem Pi und LCD-Display per VIS ein eigenes Display realisieren.
-
@rene55 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ich versuche mal das mit den Variablen
Ist eigentlich easy going. Du definierst in Grafana einfach nur die Variable blabla und weist ihr einen Wert zu "ich bin ein Berliner"
Bei allen Abfragen wird dann${blabla} durch "ich bin ein Berliner" ersetzt
Mehr wird da bei den Buckets nicht gemacht, nur das ich eben noch die Instanz und den Objekt-Pfad drin habe
-
@sborg said in [Linux Shell-Skript] WLAN-Wetterstation:
Was aber in der Theorie funktionieren müsste wäre eine zweite, eigenständige Installation.
Ja, das macht Sinn - danke für den Vorschlag! Ich werde mal in mich gehen und wenn ich wirklich noch zusätzliche Sensoren brauche und das umsetze, berichte ich dann hier.
-
Mini-Update der Beta-Version V3.2.0 des Wetterstation WLAN-Skriptes auf GitHub V3.2.0-3
(Beta-Releases lassen sich nicht! über den ws_updater.sh installieren, nur die *.conf lässt sich mit dem ws_updater.beta ggf. patchen [s.u.])
- WOW-Update:
- + Windrichtung
- + Luftdruck
- + Wingeschwindigkeit
Wie immer zu finden im GitHub
Update-Routine:
- wetterstation.sub ersetzen bzw. kopieren
- nun mittels
[sudo] systemctl restart wetterstation
den Service neu starten
Egal was ich allerdings einstelle, ich bekomme die Anzeige immer in Knoten....?
- WOW-Update:
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Egal was ich allerdings einstelle, ich bekomme die Anzeige immer in Knoten....?
Knoten öffnen.... duck und weg