Antennen Autosensing: Unterschied zwischen den Versionen

Aus Weimarnetz Wiki
Zur Navigation springen Zur Suche springen
(fehler weg)
(→‎Skript: besser!)
Zeile 32: Zeile 32:
 
#!/bin/sh
 
#!/bin/sh
  
WIFIDEV=$(awk 'sub(":","") {print $1}' /proc/net/wireless)
+
logger "AUTOANT-WAHL: Start..."
 +
 
 +
RX=$(nvram get wl0_antdiv)
 +
TX=$(nvram get ff_txant)
 +
 
 +
if [ "$RX" = "-1" ] && [ "$TX" = "-1" ];then
 +
 
 +
eval $(netparam)
 
PAUSE=$(awk '{if($1=="LinkQualityWinSize")s=$2;if($1=="HelloInterval"){print s*$2;exit}}' /etc/olsrd.conf)
 
PAUSE=$(awk '{if($1=="LinkQualityWinSize")s=$2;if($1=="HelloInterval"){print s*$2;exit}}' /etc/olsrd.conf)
 +
ENDE=0
  
 
logger "AUTOANT-WAHL: Antenne A einstellen und $PAUSE sek. warten..."
 
logger "AUTOANT-WAHL: Antenne A einstellen und $PAUSE sek. warten..."
Zeile 39: Zeile 47:
 
wl -i $WIFIDEV txant 0
 
wl -i $WIFIDEV txant 0
 
sleep $PAUSE
 
sleep $PAUSE
 +
 
WERTE=$(wget -O - http://127.0.0.1:8080/nodes|awk -F"[< =>]" '{
 
WERTE=$(wget -O - http://127.0.0.1:8080/nodes|awk -F"[< =>]" '{
 
  if(s==1&&$0=="</table>")exit
 
  if(s==1&&$0=="</table>")exit
Zeile 47: Zeile 56:
 
   }
 
   }
 
  if($3=="width")s=1}
 
  if($3=="width")s=1}
  END{printf("%i;%i;%i",z,p,etx)}')
+
  END{printf("%i;%i;%i;%s",z,p,etx*100,etx)}')
 
NACHBAR1=$(echo "$WERTE"|cut -d";" -f1)
 
NACHBAR1=$(echo "$WERTE"|cut -d";" -f1)
 
PAKETE1=$(echo "$WERTE"|cut -d";" -f2)
 
PAKETE1=$(echo "$WERTE"|cut -d";" -f2)
 
ETXSUM1=$(echo "$WERTE"|cut -d";" -f3)
 
ETXSUM1=$(echo "$WERTE"|cut -d";" -f3)
logger "AUTOANT-WAHL: Nachbarn,Pakete,ETXsum = $NACHBAR1,$PAKETE1,$ETXSUM1"
+
ETXSUM=$(echo "$WERTE"|cut -d";" -f4)
 +
logger "AUTOANT-WAHL: Nachbarn,Pakete,ETXsum = $NACHBAR1,$PAKETE1,$ETXSUM1,$ETXSUM"
 +
 
 +
/etc/init.d/S53olsrd restart
  
 
logger "AUTOANT-WAHL: Antenne B einstellen und $PAUSE sek. warten..."
 
logger "AUTOANT-WAHL: Antenne B einstellen und $PAUSE sek. warten..."
Zeile 57: Zeile 69:
 
wl -i $WIFIDEV txant 1
 
wl -i $WIFIDEV txant 1
 
sleep $PAUSE
 
sleep $PAUSE
 +
 
WERTE=$(wget -O - http://127.0.0.1:8080/nodes|awk -F"[< =>]" '{
 
WERTE=$(wget -O - http://127.0.0.1:8080/nodes|awk -F"[< =>]" '{
 
  if(s==1&&$0=="</table>")exit
 
  if(s==1&&$0=="</table>")exit
Zeile 65: Zeile 78:
 
   }
 
   }
 
  if($3=="width")s=1}
 
  if($3=="width")s=1}
  END{printf("%i;%i;%i",z,p,etx)}')
+
  END{printf("%i;%i;%i;%s",z,p,etx*100,etx)}')
 
NACHBAR2=$(echo "$WERTE"|cut -d";" -f1)
 
NACHBAR2=$(echo "$WERTE"|cut -d";" -f1)
 
PAKETE2=$(echo "$WERTE"|cut -d";" -f2)
 
PAKETE2=$(echo "$WERTE"|cut -d";" -f2)
 
ETXSUM2=$(echo "$WERTE"|cut -d";" -f3)
 
ETXSUM2=$(echo "$WERTE"|cut -d";" -f3)
logger "AUTOANT-WAHL: Nachbarn,Pakete,ETXsum = $NACHBAR2,$PAKETE2,$ETXSUM2"
+
ETXSUM=$(echo "$WERTE"|cut -d";" -f4)
 +
logger "AUTOANT-WAHL: Nachbarn,Pakete,ETXsum = $NACHBAR2,$PAKETE2,$ETXSUM2,$ETXSUM"
  
 
if [ "$ENDE" != "1" ];then logger "AUTOANT-WAHL: Nachbaranzahl vergleichen...";fi
 
if [ "$ENDE" != "1" ];then logger "AUTOANT-WAHL: Nachbaranzahl vergleichen...";fi
Zeile 88: Zeile 102:
 
  wl -i $WIFIDEV txant 0
 
  wl -i $WIFIDEV txant 0
 
  logger "AUTOANT-WAHL: Antenne A wird genommen..."
 
  logger "AUTOANT-WAHL: Antenne A wird genommen..."
fi
 
 
  else
 
  else
 
  logger "AUTOANT-WAHL: Antenne B wird genommen (bzw. gelassen)..."
 
  logger "AUTOANT-WAHL: Antenne B wird genommen (bzw. gelassen)..."
 
fi
 
fi
 +
 +
fi
 +
 +
logger "AUTOANT-WAHL: Ende..."
 +
 
</pre>
 
</pre>

Version vom 26. August 2006, 17:50 Uhr

Warum

  • hat man _eine_ bessere Antenne an sein Geraet geschraubt, hat man folgendes Problem:
  • Es ist immer wieder problematisch herauszufinden, welcher Antennenanschluss nun tatsaechlich auf welche Antenne zeigt. Antenne A ist manchmal links und manchmal rechts, je nach dem welche Wurst die Frau am Linksys-Fliessband zum Fruehstueck auf dem Broetchen hatte

Wie

  • einmal beim start des routes wird folgendes erledigt:
    • Antenne A einstellen.
    • eine komplette Windowsize warten
    • messen:
      • wieviel nachbarn
      • wieviel olsr-pakete
      • summe aller etx-werte
    • Antenne B einstellen.
    • eine komplette Windowsize warten
    • messen:
      • wieviel nachbarn
      • wieviel olsr-pakete
      • summe aller etx-werte
  • Vergleich von
    • Nachbaranzahl -> bessere Antenne hat mehr Nachbarn -> fertig
    • wenn Nachbarzahl gleich:
    • OLSR-Pakete -> bessere Antenne hat mehr Pakete empfangen -> fertig
    • wenn OLSR-Pakete gleich:
    • Summe ETX-Werte -> bessere Antenne hat geringere Summe -> fertig

Aber?

  • Das Messprotokoll ist zugaenglich und es wird eine Moeglichkeit geben, den Automatismus zu verbieten bzw. eine eigene Vorgabe zu treffen.

Skript

  • dieses Skript am besten nach /etc/init.d/S54antennen_autosensing kopieren
#!/bin/sh

logger "AUTOANT-WAHL: Start..."

RX=$(nvram get wl0_antdiv)
TX=$(nvram get ff_txant)

if [ "$RX" = "-1" ] && [ "$TX" = "-1" ];then

eval $(netparam)
PAUSE=$(awk '{if($1=="LinkQualityWinSize")s=$2;if($1=="HelloInterval"){print s*$2;exit}}' /etc/olsrd.conf)
ENDE=0

logger "AUTOANT-WAHL: Antenne A einstellen und $PAUSE sek. warten..."
wl -i $WIFIDEV antdiv 0
wl -i $WIFIDEV txant 0
sleep $PAUSE

WERTE=$(wget -O - http://127.0.0.1:8080/nodes|awk -F"[< =>]" '{
 if(s==1&&$0=="</table>")exit
 if(s==1){
  z++
  p=p+$21
  etx=etx+$33
  }
 if($3=="width")s=1}
 END{printf("%i;%i;%i;%s",z,p,etx*100,etx)}')
NACHBAR1=$(echo "$WERTE"|cut -d";" -f1)
PAKETE1=$(echo "$WERTE"|cut -d";" -f2)
ETXSUM1=$(echo "$WERTE"|cut -d";" -f3)
ETXSUM=$(echo "$WERTE"|cut -d";" -f4)
logger "AUTOANT-WAHL: Nachbarn,Pakete,ETXsum = $NACHBAR1,$PAKETE1,$ETXSUM1,$ETXSUM"

/etc/init.d/S53olsrd restart

logger "AUTOANT-WAHL: Antenne B einstellen und $PAUSE sek. warten..."
wl -i $WIFIDEV antdiv 1
wl -i $WIFIDEV txant 1
sleep $PAUSE

WERTE=$(wget -O - http://127.0.0.1:8080/nodes|awk -F"[< =>]" '{
 if(s==1&&$0=="</table>")exit
 if(s==1){
  z++
  p=p+$21
  etx=etx+$33
  }
 if($3=="width")s=1}
 END{printf("%i;%i;%i;%s",z,p,etx*100,etx)}')
NACHBAR2=$(echo "$WERTE"|cut -d";" -f1)
PAKETE2=$(echo "$WERTE"|cut -d";" -f2)
ETXSUM2=$(echo "$WERTE"|cut -d";" -f3)
ETXSUM=$(echo "$WERTE"|cut -d";" -f4)
logger "AUTOANT-WAHL: Nachbarn,Pakete,ETXsum = $NACHBAR2,$PAKETE2,$ETXSUM2,$ETXSUM"

if [ "$ENDE" != "1" ];then logger "AUTOANT-WAHL: Nachbaranzahl vergleichen...";fi
if [ "$NACHBAR1" -gt "$NACHBAR2" ] && [ "$ENDE" != "1" ];then ENDE=1;ANT=A;fi
if [ "$NACHBAR1" -lt "$NACHBAR2" ] && [ "$ENDE" != "1" ];then ENDE=1;fi

if [ "$ENDE" != "1" ];then logger "AUTOANT-WAHL: Paketanzahl vergleichen...";fi
if [ "$PAKETE1" -gt "$PAKETE2" ] && [ "$ENDE" != "1" ];then ENDE=1;ANT=A;fi
if [ "$PAKETE1" -lt "$PAKETE2" ] && [ "$ENDE" != "1" ];then ENDE=1;fi

if [ "$ENDE" != "1" ];then logger "AUTOANT-WAHL: ETX-Summen vergleichen...";fi
if [ "$ETXSUM1" -lt "$ETXSUM2" ] && [ "$ENDE" != "1" ];then ENDE=1;ANT=A;fi
if [ "$ETXSUM1" -gt "$ETXSUM2" ] && [ "$ENDE" != "1" ];then ENDE=1;fi

if [ "$ANT" = "A" ]
 then
 wl -i $WIFIDEV antdiv 0
 wl -i $WIFIDEV txant 0
 logger "AUTOANT-WAHL: Antenne A wird genommen..."
 else
 logger "AUTOANT-WAHL: Antenne B wird genommen (bzw. gelassen)..."
fi

fi

logger "AUTOANT-WAHL: Ende..."