NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@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
-
@viper4iob sorry wenn ich dich falsch verstehe, aber wenn du in der config den user schon drinnen hast, dann brauchst du ja keinen neuen user anlegen...
-
@da_woody Jepp, und genau darum geht es: falls schon ein User angelegt wurde --> dann lege nicht noch mal einen an. Allerdings hat @viper4iob Recht ( ), dass kommt eine Nummer zu früh, denn es wird bei jedem Aufruf ausgeführt, also auch wenn man einen User korrekt angelegt hat (dann existiert er ja völlig zu Recht) und dann beim nächsten Ablauf wieder dort landet
Ich habe es jetzt wie vorgeschlagen hinter / in die Abfrage der Neuuser-Registrierung verschoben. Kommt davon wenn man nachträglich "rumpfuscht" und es dann nicht mehr testen kann
...wie üblich Fix auf GitHub, allerdings mit gleicher Versionsnummer. "sub" tauschen genügt.
-
@da_woody said in [Linux Shell-Skript] WLAN-Wetterstation:
@viper4iob sorry wenn ich dich falsch verstehe, aber wenn du in der config den user schon drinnen hast, dann brauchst du ja keinen neuen user anlegen...
Ja, richtig.
Man ruft aber zum Registrieren der SensorBox das gleiche Skript wieder auf.
D.h. es kommt erst wieder die Frage, ob ein User angelegt werden soll. Da man den User schon in Schritt 1 angelegt hat, müsste man jetzt die Frage mit Nein beabtworten und dann würde er zum Registrieren der Sensor-Box springen, so steht es ja auch im Install Guide.
Soweit kommt er aber gar nicht, weil direkt nach Starten des Skripts geprüft wird, ob in der config schon ein User angelegt ist. Und wenn ja bricht das Skript komplett ab und man hat keine Chance mehr eine SensorBox zu registrieren.
Kurz gesagt, man würde so nie zum Registrieren der SensorBox kommen.Der Check, ob der User schon existiert, darf erst kommen, wenn man die Frage zum Anlegen eines neuen Users mit Ja bestätigt.
Und genau das hat @SBorg jetzt gefixt, kann es aber erst morgen testen.