NEWS
[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...
-
@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. -
@viper4iob k, dann wär das ja geklärt!
so solls ja auch sein... -
@sborg
Die openSenseMap Registrierung hat nun ohne Probleme funktioniert.
Danke nochmal für den Fix.Noch eine Frage dazu: Falls später mal ein Sensor dazu kommt (z.B. ein Feinstaub Sensor), kann man das "Sensoren registrieren" einfach noch einmal aufrufen, oder muss man das dann manuell einpflegen?
-
Mir ist gerade noch etwas anderes aufgefallen: bei der Windstärke auf wetter.com kommen mir die Werte ganz schön hoch vor.
Hier zum Vergleich ein EChart aus iobroker von der Windgeschwindigkeit heute 8 Uhr bis jetzt (maximal ca. 11 km/h) und gestern Nachmittag (maximal ca 15 km/h):
Und von wetter.com die letzten 24 Stunden:
Als Beispiel: 15:09 Uhr sagt das EChart 15,12 km/h und wetter.com hat 15:10 Uhr 46,4 km/h angegeben.
Bei openSenseMap passen die Werte, das habe ich gerade nochmal verglichen.
Jetzt weiß ich nicht, ob wetter.com irgendetwas komisches mit den Daten macht oder irgendetwas umgerechnet werden muss.
Der Taupunkt bei wetter.com stimmt auch nicht ganz überein, aber der wird glaube nicht hochgeladen, d.h. den berechnen die selbst.
Vielleicht kann das nochmal jemand checken, der den Upload zu wetter.com auch aktiv hat. -
@viper4iob sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Als Beispiel: 15:09 Uhr sagt das EChart 15,12 km/h und wetter.com hat 15:10 Uhr 46,4 km/h angegeben.
kann es sein, daß du da die windböen nimmst? gerade bei mir nachgeschaut. wind ca 17kmh, böen bis 45kmh...
-
Was heißt nehmen? Das macht ja alles das Skript.
In der Skript config sind nur die ID und das PW von wetter.com hinterlegt. Ich kann also nicht angeben, was wie hochgeladen wird, es sei denn ich würde das Skript umschreiben..Ich habe aber mal im Skript nachgeschaut, da gibt es die Zeile :
WC_URL+="&windstaerke=${MESSWERTE[6]}&luftdruck=${MESSWERTE[10]}&niederschlagsmenge=${MESSWERTE[11]}"
Und
MESSWERTE[6]
scheint die normale Windgeschwindigkeit zu sein:echo -e "Windgeschwindkeit\t: $GR${MESSWERTE[6]}$WE km/h" echo -e "Windböengeschwindkeit\t: $GR${MESSWERTE[7]}$WE km/h" echo -e "max. Windböe\t\t: $GR${MESSWERTE[21]}$WE km/h"
Und ein EChart von der maximalen Windgeschwindigkeit/Böen sieht so aus (max ca. 20 km/h):
Laut wetter.com Wettervorhersage sind heute für hier für den ganzen Tag 5-7 km/h Wind vorhergesagt, das passt auch zu den Daten, die die Wetterstation liefert, die schwanken zwar etwas mehr, aber nie mehr als um die 10 km/h.
Aber in den Upload-Daten ins wetter.com Netzwerk zeigt der Graph heute schon mehrmals über 20 km/h und im Durchschnitt vielleicht so um die 10 km/h an, das passt irgendwie nicht zusammen.
Die anderen Werte wie Temp oder Luftfeuchte oder Luftdruck passen aber, so dass ich zumindest ausschließen kann, dass die Werte von jemand anderem kommen. -
@viper4iob sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Was heißt nehmen? Das macht ja alles das Skript.
sorry, bin heute nicht ganz auf der höhe. hast ja recht.
trotzdem kommt mir der grüne chart vor wie mit böen. -
hab gerade bei mir nachgeschaut.
Stimmt, auf Wetter.com werden hier falsche Werte angezeigt.
Grafana (richtig)
Wetter.com (falsch)
-
@negalein said in [Linux Shell-Skript] WLAN-Wetterstation:
hab gerade bei mir nachgeschaut.
Stimmt, auf Wetter.com werden hier falsche Werte angezeigt.
Grafana (richtig)
Wetter.com (falsch)
An Grafana habe ich vorhin gar nicht gedacht, das hätte ich auch liefern können
Da sieht man es auf jeden Fall nochmal deutlicher.
Ich dachte vielleicht Wetter.com braucht den Wert in m/s, aber die Werte geteilt durch 3,6 wären dann vielleicht wieder zu wenig. -
@viper4iob sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Noch eine Frage dazu: Falls später mal ein Sensor dazu kommt (z.B. ein Feinstaub Sensor), kann man das "Sensoren registrieren" einfach noch einmal aufrufen, oder muss man das dann manuell einpflegen?
Das geht nur manuell. Die anderen Werte bzw. IDs sind statisch. So ist bspw. "1" immer die Außentemperatur. Die IDs der Zusatzsensoren sind aber dynamisch, je nach dem was der User so alles hat und wann sie sich melden. Dazu müsste ich höchstens noch ein Array anlegen mit den Bezeichnungen um darüber dann zweifelsfrei die ID automatisch zu ermitteln.
Da kommen wir dann aber zu einem bereits hier im Thread schon öfters (ne, es braucht hier keiner >3k Posts zu lesen ) erwähntem "Problemchen": geht nicht davon aus, dass mir selbst alles auffällt. Da brauche ich schon Hilfe/Input von euch. Vieles (wie Zusatzsensoren) habe ich schlichtweg einfach nicht oder anderes nutze ich nicht selbst (zB. ein Userwunsch). Deswegen wäre obige Funktion meinerseits schon fragwürdig, weil ich da mal nix vorher testen kann. Neue Sensoren kann ich dank der Datenstrings einfach mal so einpatchen und simulieren als ob ich einen hätte (ändert natürlich dann nie seine Werte ).Genauso verhält es sich mit der Windstärke bei wetter.com. Ich schick da zwar die Daten hin, aber eigentlich nur um auch zu sehen ob alles funktioniert. Wenn natürlich jemand mit den Daten was anfangen kann, um so besser
Es gibt nirgends eine Beschreibung zur API. Dass sie zur "Winterzeit" pauschal einfach eine Stunde abziehen ist mir auch nur zufällig aufgefallen. Ich bin, da die Anzeige der Seite es auch so ausgibt, davon ausgegangen, dass sie es als km/h wollen. Ev. sollen es aber Knoten, Beaufort oder what else sein...?
Bei den anderen APIs habe ich Infos dazu bzw. kann ich dort eine Einheit angeben. Ich habe jetzt mal den Support von wetter.com angeschrieben ob sie mir eine Dokumentation freundlicherweise zukommen lassen können. -
@sborg
Bzgl. wetter.com API konnte ich auch nichts weiter finden. Danke fürs Nachfragen bei wetter.com.Weil wir gerade schon bei der Einheit für Windgeschwindigkeit sind: die Grafana Windrose zeigt als Einheit m/s an und das scheint man auch nicht ändern zu können, habs zumindest nicht gefunden.
Da die Windgeschwindigkeiten in der DB in km/h sind, muss man in Grafana beim Query dann noch durch 3,6 teilen. -
Antwort habe ich zwar noch keine, aber die API/Server ist seit >24h tot...
Deswegen habe ich mal eine Ausgabe der Datenübertragung bei der Option --debug mit eingebaut (im Syslog werden mittlerweile die Meldungen unterdrückt):
Ist dann in der kommenden Beta drin. -
wetter.com API geht seit heute kurz vor 10 Uhr wieder.
-
Bei wetter.com scheint es aber nicht nur (oder überhaupt?) ein Serverausfall gewesen zu sein. IMO stehen die Daten nun auch recht zeitnah zur Verfügung. Vorher konnten schon mal 20 Minuten ins Land gehen bevor die aktuellen Daten sichtbar waren...
Ich habe eben den letzten Beta-Stand auf GitHub hochgeladen. Falls nichts weiter passiert ist dies dann der RC.
"sub" + "sh" tauschen genügt, dann wie üblich Service neu starten:systemctl restart wetterstation
Changelog:
~ Bugfix 'jq'-Fehlermeldungen von 0:00 Uhr bis 01:00 Uhr ~ Bugfix Fehlermeldung "bereits existierender User" bei der OSeM-Registrierung obwohl keiner angelegt + bei Option '--debug' werden, sofern aktiviert, nun auch die Daten an den/die Wetter-Dienst(e) geschickt und deren Meldung(en) ausgegeben ~ Fix auftretende Fehlermeldung falls SimpleAPI nicht erreichbar war ~ Codeoptimierungen
-
Dann hat der Ausfall auch etwas Positives gehabt.
Gabs eigentlich von wetter.com irgendeine Rückmeldung wegen der Windstärke?Mir ist es nur gestern wieder aufgefallen, da es gestern wirklich mal etwas stürmisch war.
Laut wetter.com wären wir hier gerade noch am Orkan vorbei geschrammt (Windstärke 12 ab 118 km/h). Und das ist ja nur der normale Windwert, nicht mal max oder max Böen, max Böen war laut Wetterstation bei knapp 49 km/h.