Antennen Autosensing: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(fehler weg) |
(→Skript: besser!) |
||
Zeile 32: | Zeile 32: | ||
#!/bin/sh | #!/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) | 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..." | ||
− | |||
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..."