You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
The text was updated successfully, but these errors were encountered:
viper4gh
changed the title
openSenseMap Upload
openSenseMap Upload mit USE_AVG_WIND auf true
Dec 14, 2022
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
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 :)
Ich glaube da sind 2 Probleme beim Upload zu openSenseMap.
Aktuell sieht das so aus:
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}
seinPunkt2:
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:
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.
The text was updated successfully, but these errors were encountered: