NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@viper4iob Dann haben sie es wohl irgendwann geändert (ich glaube es gab in den letzten 14 Tagen vier neue Versionen).
Mir ist es allerdings auch nicht aufgefallen, da ich es eben auch zusätzlich alle 12 Stunden schreiben lasse. -
Danke für Deine schnelle Antwort, leider ist mir das Normblatt 08/15 DIN A4 quer, gelocht mit Schrägstanzung ausgegangen
Aber Spaß bei Seite, ich habe bzw. bin ja dabei mit Javascript die Tabellen wie im Screenshot zu sehen, zu erstellen.
Meine Frage: Wenn ich also am zB. 1.1.2022 im laufe des Tages mein Script laufen lasse, der die Dummy Monate 02 - 12.2022 erstellt, kommt Dein Programm mit dem Vorhanden sein der Dummy Monate zurecht?Die Aktualisierung des laufenden Monats, der Rekordwerte und des laufenden Jahres läuft ja schon bei mir.
Wenn Dein Programm dies beinhalten würde währe es halt für alle verfügbar.Bei Fragen, geht es auch ohne Normblätter!!
MfG
Wastl -
Noch ein kleiner Punkt zum Thema Grafana, und zwar die Windrose.
Ich hatte mich gewundert, warum diese bei wenig Wind, wo sich also auch seltener die Windrichtung ändert, immer Wind aus 0° angezeigt wird:
Nun ist es so, dass hier das DB Abfrage Intervall 1 Minute ist, dass heißt Grafana liest für jede Minute einen Wert aus der InfluxDB aus.
Wenn aber kein Wert verfügbar ist, wird dieser mit null gefüllt. Und null wird aber scheinbar von der Windrose als 0° interpretiert.
Ich lasse die Werte vom iobroker nur bei Änderungen in die DB schreiben, weil sich der Wert im Normalfall sehr häufig ändert, außer bei geringem Wind.
Wenn sich jetzt also z.B. 5 min lang die Richtung nicht ändert, dann habe ich einen realen Wert und 4 null-Werte, was mir das Gesamtbild der Windrose verfälscht.Ich habe jetzt statt fill(null) fill(previous) eingestellt, was das Bild meiner Meinung nach verbessert. Und es entspricht ja auch dem, was die Windfahne macht, sie bleibt so stehen bis sie ihre Richtung wieder ändert:
Man könnte jetzt natürlich auch im iobroker den Wert minütlich schreiben lassen, würde aber am Ende zum gleichen Ergebnis führen.
-
@langer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
kommt Dein Programm mit dem Vorhanden sein der Dummy Monate zurecht?
Sollte nichts ausmachen. Wenn es die DPs schon gibt legt er sie halt einfach nicht nochmals an.
Du müsstest nur, wenn du es nutzt, das AutoDelete um ein Jahr erhöhen als du wirklich willst, sonst löscht er wg. der "falschen" Zeitstempel die Daten zu früh (bspw. wird dann der Dezember bereits im Januar angelegt und ist dann lt. Zeitstempel im Dezember 11 Monate alt ). -
@viper4iob Was euch immer so alles auffällt
-
Nochmals Danke für die schnelle Antwort.
Ich habe AutoDelete_Data, AutoReset_Jahresstatistik jeweils auf 0 und Reset_Jahresstatistik auf false, also dürfte doch nichts passieren, oder?
MfG
Wastl -
Hallo
Kann mir jemand sagen warum der Datenpunkt Maximaltemperatur Tag sich immer wieder aktualisiert mit der normalen Außentemperatur?Wenn die Außentemperatur runter geht übernimmt er leicht zeitversetzt auch diesen Wert.
Muss ich da irgendwas ändern oder einstellen?
-
@langer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
also dürfte doch nichts passieren, oder?
Eigentlich nicht, aber nutzt du BackitUp? Sonst notfalls sicherheitshalber am 31.12. ein Backup per Hand ziehen, man weiß ja nie ...
-
@martin-0 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Muss ich da irgendwas ändern oder einstellen?
Jein, zwar nicht speziell, aber da der Wert nur per InfluxDB ermittelt wird, muss Influx natürlich aktiviert und korrekt eingerichtet sein.
-
-
Wie immer keine Werbung, Provision, Affiliate-Link oä., einfach nur falls wer sucht:
Eurochron EFWS 2900 Funk-Wetterstation mit Gutscheinrabatt etc. inkl. Versand 105,95 €
Ist mal ein echter Schnapper -
Ich wollte die OpenSenseMap Registrierung über das Skript durchführen:
./wetterstation.sh --osem_reg
.
Nur leider bricht diese gleich mit folgendem Fehler ab:
So sieht die conf aus:
Die Zeile, die den Fehler erzeugt, ist diese:
Jetzt habe ich mich gefragt, wo dieser
OSEM_USER
her kommt, der hier geprüft wird, in der conf gibt es nur einensenseBox_USER
, und die Abfrage am Terminal durch read kommt erst nach dieser Prüfung. Und ich konnte auch keine Stelle finden, an der dersenseBox_USER
aus der conf ausgelesen und in denOSEM_USER
geschrieben wird.
Und selbst wenn imOSEM_USER
an der Stelle den Inhalt aussenseBox_USER
hätte, müsste dann das Prüfen auf den Leerstring vielleicht eher so aussehenif [ ! -z $OSEM_USER ];
?
Nun weiß ich auch nicht, ob nur ich damit ein Problem habe, weil das ws_update Skript bei mir auch nicht richtig läuft, wo das patchen schief geht und ich immer noch nicht weiß warum.
Aber vielleicht ist es ja hier ein anderes Problem -
@viper4iob Kannst du auch nicht finden, klassicher C&P-Fehler.
Die einfache *if variable; ..." funktioniert schon, denn alles was "nicht leer ist" liefert hier ein true und die Bedingung wird wahr. Ich habe es jetzt aber auf die eher geläufige [ "$var" != "" ] Variante geändert (+ nun mit der richtigen Variablen ).
BugFix V2.10.1 steht auf GitHub im "master"; einfach "sh" und "sub" tauschen (ggf. Service neu starten)
Enthält noch kleinere Schönheitskorrekturen. -
@sborg said in [Linux Shell-Skript] WLAN-Wetterstation:
@viper4iob Kannst du auch nicht finden, klassicher C&P-Fehler.
Die einfache *if variable; ..." funktioniert schon, denn alles was "nicht leer ist" liefert hier ein true und die Bedingung wird wahr. Ich habe es jetzt aber auf die eher geläufige [ "$var" != "" ] Variante geändert (+ nun mit der richtigen Variablen ).
BugFix V2.10.1 steht auf GitHub im "master"; einfach "sh" und "sub" tauschen (ggf. Service neu starten)
Enthält noch kleinere Schönheitskorrekturen.Danke, für das schnelle Beheben.
Mein Linux versucht aber beiif variable;
den Inhalt als Kommando auszuführen, wenn dort etwas gesetzt ist und bei einem Leerstring, liefert es true zurück. Hier ein kleiner Test, 2 identische Skripte, bei einem ist die Variable OSEM_USER leer und bei dem anderen gesetzt:So ist es besser lesbar:
viper@kubix:/opt/wetterstation$ cat test_leer.sh #!/bin/bash OSEM_USER= if $OSEM_USER; then echo -e "\n${RE} [FEHLER:] ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!\n";fi viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ cat test_gesetzt.sh #!/bin/bash OSEM_USER=ahg123 if $OSEM_USER; then echo -e "\n${RE} [FEHLER:] ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!\n";fi viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ ./test_leer.sh [FEHLER:] ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt! viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ ./test_gesetzt.sh ./test_gesetzt.sh: Zeile 5: ahg123: Befehl nicht gefunden viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ bash --version GNU bash, Version 5.0.17(1)-release (x86_64-pc-linux-gnu)
-
@viper4iob Witzig, oder auch nicht...
Mache mal spaßeshalber den Gegentest direkt in der Console:
a=1 test $a && echo "Gesetzt" || echo "Nö" test $b && echo "Gesetzt" || echo "Nö"
-
@sborg said in [Linux Shell-Skript] WLAN-Wetterstation:
a=1 test $a && echo "Gesetzt" || echo "Nö" test $b && echo "Gesetzt" || echo "Nö"
Erst direkt in der Konsole, dann als Skript:
viper@kubix:/opt/wetterstation$ a=1 viper@kubix:/opt/wetterstation$ test $a && echo "Gesetzt" || echo "Nö" Gesetzt viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ test $b && echo "Gesetzt" || echo "Nö" Nö viper@kubix:/opt/wetterstation$ ./test.sh Gesetzt Nö
-
@viper4iob
Ich glaube ich habs:if $OSEM_USER;... if [ $OSEM_USER ];...
Ersteres führt zu oben genannten Problem, mit eckigen Klammern geht es.
EDIT
Hier nochmal alles:viper@kubix:/opt/wetterstation$ cat test_leer.sh #!/bin/bash OSEM_USER= if [ $OSEM_USER ]; then echo -e "\n${RE} [FEHLER:] ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!\n";fi viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ cat test_gesetzt.sh #!/bin/bash OSEM_USER=ahg123 if [ $OSEM_USER ]; then echo -e "\n${RE} [FEHLER:] ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt!\n";fi viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ ./test_leer.sh viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ ./test_gesetzt.sh [FEHLER:] ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt! viper@kubix:/opt/wetterstation$
-
@viper4iob Trotzdem sehr eigenartig, da "test" die Vereinfachung von "if - then - else" ist und in der Console funktioniert, im Skript dann aber wieder nicht.
Memo to me: Also sicherheitshalber, wenn faul, dann zumindest in [] oder gleich die Langvariante nehmen...
-
@sborg said in [Linux Shell-Skript] WLAN-Wetterstation:
@viper4iob Trotzdem sehr eigenartig, da "test" die Vereinfachung von "if - then - else" ist und in der Console funktioniert, im Skript dann aber wieder nicht.
Memo to me: Also sicherheitshalber, wenn faul, dann zumindest in [] oder gleich die Langvariante nehmen...
Naja, das Kommando
test
hat in der Konsole und im Skript das gleiche Ergebnis geliefert.
Aber die Kombination aus dem if-Statement ohne Klammern scheint problematisch zu sein.In der Konsole passiert genau der gleiche Fehler, Vergleich if ohne und mit []:
viper@kubix:/opt/wetterstation$ OSEM_USER= viper@kubix:/opt/wetterstation$ echo $OSEM_USER viper@kubix:/opt/wetterstation$ if $OSEM_USER; then echo "gesetzt";fi gesetzt viper@kubix:/opt/wetterstation$ if [ $OSEM_USER ]; then echo "gesetzt";fi viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ viper@kubix:/opt/wetterstation$ OSEM_USER=zgh123 viper@kubix:/opt/wetterstation$ echo $OSEM_USER zgh123 viper@kubix:/opt/wetterstation$ if $OSEM_USER; then echo "gesetzt";fi zgh123: Befehl nicht gefunden. viper@kubix:/opt/wetterstation$ if [ $OSEM_USER ]; then echo "gesetzt";fi gesetzt viper@kubix:/opt/wetterstation$
-
Zum Thema zurück
Ich habe jetzt die sh und sub Dateien bei mir aktualisiert.
Nun scheitere ich aber am Punkt 2 des Install Guides genau an der gleichen Stelle.
Das Skript bricht ab, weil nun wirklich ein user gesetzt ist und man kann dann sie SenseBox nicht registrieren.Die Registrierungsmail habe ich zwischen den beiden Aufrufen bestätigt.
Alle Eingaben korrekt [J/N]: J Lege neuen SenseBox-User an... OK Speichere User und Passwort in wetterstation.conf ab... OK Vor dem fortfahren nun bitte zuerst die Email-Adresse verifizieren (Email von OpenSenseMap im Posteingang)... viper@kubix:/opt/wetterstation$ ./wetterstation.sh --osem_reg [FEHLER:] ABBRUCH! Es ist bereits ein Username für OpenSenseMap in der Konfiguration gesetzt! viper@kubix:/opt/wetterstation$
Ich denke diese if-Abfrage, ob der user schon vorhanden ist, sollte erst kommen, wenn man die Frage nach dem Einrichten eines neuen Users mit Ja bestätigt hat, also nach hier:
echo -en "\n$WE Neuen SenseBox-User registrieren [${GR}Ja/Nein${WE}]: $GE" read JN if [ ! $JN ]; then JN="Nein"; fi if [ $JN == "Ja" ]; then