Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem mit openSenseMap Upload bei USE_AVG_WIND auf true #48

Closed
viper4gh opened this issue Dec 14, 2022 · 2 comments
Closed

Problem mit openSenseMap Upload bei USE_AVG_WIND auf true #48

viper4gh opened this issue Dec 14, 2022 · 2 comments
Labels
bug Something isn't working fixed fixed in future version

Comments

@viper4gh
Copy link

viper4gh commented Dec 14, 2022

Ich glaube da sind 2 Probleme beim Upload zu openSenseMap.
Aktuell sieht das so aus:

	let ii=0
	unset OSeM_DATA
	for i in "${SENSEBOX_IDSENSOR[@]}"
	do

        #Windgeschwindigkeit aktuell oder per 10 Minuten-Durchschnitt
         if [ ${USE_AVG_WIND} == "true" ] && [ ${i} == 7 ]; then
           if [ ! -z ${WIND_AVGSPEED_10M} ]; then
              OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${WIND_AVGSPEED_10M}\"}"
            elif [ ! -z ${MESSWERTE[27]} ]; then
              OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${MESSWERTE[27]}\"}"
            else
              OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${MESSWERTE[${SENSEBOX_IDMESSWERT[ii]}]}\"}"
           fi
          else
           OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${MESSWERTE[${SENSEBOX_IDMESSWERT[ii]}]}\"}"
         fi

        #Windrichtung aktuell oder per 10 Minuten-Durchschnitt
         if [ ${USE_AVG_WIND} == "true" ] && [ ${i} == 8 ]; then
           if [ ! -z ${WIND_AVGANGEL_10M} ]; then
              OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${WIND_AVGANGEL_10M}\"}"
            elif [ ! -z ${MESSWERTE[26]} ]; then
              OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${MESSWERTE[26]}\"}"
            else
              OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${MESSWERTE[${SENSEBOX_IDMESSWERT[ii]}]}\"}"
           fi
          else
           OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${MESSWERTE[${SENSEBOX_IDMESSWERT[ii]}]}\"}"
         fi


         let ii++
	done

Punkt 1:
if [ ${USE_AVG_WIND} == "true" ] && [ ${i} == 7 ]; then
if [ ${USE_AVG_WIND} == "true" ] && [ ${i} == 8 ]; then
${i} ist die Sensor-ID und nicht der Schleifenzähler, d.h. es müsste ${ii} sein

Punkt2:
Jetzt wird es etwas komplizierter.
Wir haben 2 Haupt if Schleifen, eine für Windgeschwindigkeit und eine für Windrichtung.
Beide haben einen else-Zweig.
Wenn jetzt beispielsweise USE_AVG_WIND auf true steht und die Schleife beim Counter 7 landet, dann geht er zwar in den ersten if-Block und nimmt dann einen 10 min Durchschnittswert der Windgeschwindigkeit. Leider geht er dann aber auch in den else Block der 2. if Schleife, die eigentlich für die Windrichtung ist, und hängt den Wert wieder mit dem normalen Windgeschwindigkeitswert auch noch an. OSeM nimmt dann den letzten der beiden Werte.

Ich habe jetzt mal die ganze for Schleife etwas umrangiert und die sieht jetzt bei mir so aus:

        let ii=0
        unset OSeM_DATA
        for i in "${SENSEBOX_IDSENSOR[@]}"
        do

          #Windgeschwindigkeit aktuell oder per 10 Minuten-Durchschnitt
          if [ ${USE_AVG_WIND} == "true" ]; then
            if [ ${ii} == 7 ]; then
              if [ ! -z ${WIND_AVGSPEED_10M} ]; then
                OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${WIND_AVGSPEED_10M}\"}"
                #echo -e "OSeM Upload - use calculated 10 min average speed - ${i}: ${WIND_AVGSPEED_10M}"
              elif [ ! -z ${MESSWERTE[27]} ]; then
                OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${MESSWERTE[27]}\"}"
                #echo -e "OSeM Upload - use 10 min average speed directly from weatherstation - ${i}: ${MESSWERTE[27]}"
              else
                OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${MESSWERTE[${SENSEBOX_IDMESSWERT[ii]}]}\"}"
                #echo -e "OSeM Upload - use normal speed - ${i}: ${MESSWERTE[${SENSEBOX_IDMESSWERT[ii]}]}"
              fi

            #Windrichtung aktuell oder per 10 Minuten-Durchschnitt
            elif [ ${ii} == 8 ]; then
              if [ ! -z ${WIND_AVGANGEL_10M} ]; then
                OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${WIND_AVGANGEL_10M}\"}"
                #echo -e "OSeM Upload - use calculated 10 min average direction - ${i}: ${WIND_AVGANGEL_10M}"
              elif [ ! -z ${MESSWERTE[26]} ]; then
                OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${MESSWERTE[26]}\"}"
                #echo -e "OSeM Upload - use 10 min average direction directly from weatherstation - ${i}: ${MESSWERTE[26]}"
              else
                OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${MESSWERTE[${SENSEBOX_IDMESSWERT[ii]}]}\"}"
                #echo -e "OSeM Upload - use normal direction - ${i}: ${MESSWERTE[${SENSEBOX_IDMESSWERT[ii]}]}"
              fi
            else
               OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${MESSWERTE[${SENSEBOX_IDMESSWERT[ii]}]}\"}"
               #echo -e "OSeM Upload - AVG_WIND true - ${i}: ${MESSWERTE[${SENSEBOX_IDMESSWERT[ii]}]}"
            fi
          else
             OSeM_DATA="${OSeM_DATA}{\"sensor\":\"${i}\", \"value\":\"${MESSWERTE[${SENSEBOX_IDMESSWERT[ii]}]}\"}"
             #echo -e "OSeM Upload - AVG_WIND false - ${i}:  ${MESSWERTE[${SENSEBOX_IDMESSWERT[ii]}]}"
          fi

          let ii++
        done

Ich habe bei mir USE_AVG_WIND in der config auf true und meine Wetterstation liefert direkt die 10 min Durschnittswerte.
Bei mir scheint es jetzt so zu gehen.
Ich habe in jedem if Statement mal echos eingebaut, aber deaktiviert.
Falls das jemand bei sich prüfen will, kann man die ganzen echos einfach wieder aktivieren und dann im syslog checken, ob er in die richtigen if Statements springt.

@viper4gh viper4gh changed the title openSenseMap Upload openSenseMap Upload mit USE_AVG_WIND auf true Dec 14, 2022
@viper4gh viper4gh changed the title openSenseMap Upload mit USE_AVG_WIND auf true Problem mit openSenseMap Upload bei USE_AVG_WIND auf true Dec 14, 2022
@SBorg2014
Copy link
Owner

Hi, brauchst du nicht zu glauben, ist beides so ;-)
Die ID wird nie 7 oder 8 sein (was aber der Schleifenzähler sein sollte), Ist bloß nie aufgefallen da er dann per "else"-Zweig ja trotzdem Daten überträgt.
...und das 2. ist ein Designfehler.
Kommt dann ebenfalls mit in die 20er. Danke :)

@SBorg2014 SBorg2014 added the bug Something isn't working label Dec 18, 2022
SBorg2014 added a commit that referenced this issue Dec 20, 2022
~ fix Wolkenbasis (keine Werte falls Taupunkt negativ) / Issue #46 (viper4iob)
~ fix Wetterwarnung (Reif) / Issue #47 (viper4iob)
~ fix OpenSenseMap für Stationen die 10-Minutendurchschnittswerte bereits liefern / Issue #48 (viper4iob)
@SBorg2014 SBorg2014 added the fixed fixed in future version label Dec 20, 2022
@SBorg2014
Copy link
Owner

fixed in V2.20.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working fixed fixed in future version
Projects
None yet
Development

No branches or pull requests

2 participants