1 (edytowany przez feedhorn 2014-02-26 14:56:27)

Temat: E3131 HILINK z MR3020 - ulatwienia

Witam serdecznie grono kolegow, uzytkownikow modemu E3131 HILINK w opcji z routrem TL MR3020.
Jest to moje pierwsze wejscie na forum po namowie przez kol. Cezarego i chce sie podzielic skryptem umozliwiajacym automatyczne wylaczenie  i wlaczenie  napiecia 5V na modem E3131 HILINK przy braku uzytkownikow zalogowanych do MR3020.
Rozwiazanie pozwala na zwolnienie zajetosci  pasma GSM w moim przypadku  to AERO2, kiedy nie korzystam z internetu.
Router z modemem zainstalowany jest na strychu pod kalenica, aby miec  lepszy sygnal  z BTS-a i nie tracic sygnalu wcz  na polaczeniu modemu dlugim kablem z antena. Modem z routrem polaczony jest  0.5mb kabelkiem USB a moj komputer laczy sie z MR3020 po WIFI.
W TL MR 3020 wgrany jest soft  Gargoyle:1.5.11.7,  pozwala na wieksza moc WIFI  - max 18 dB - sila sygnalu: znakomita !!

Sprawdzanie aktywnosci adresow IP odbywa sie  co 1 minute.
Prace skryptu bardzo latwo sprawdzic, ze przy braku uzytkownikow zalogowanych do MR3020 po 1 minucie przestaje swiecic dioda LED w modemie, A kiedy ktos sie zaloguje to po 1 minucie zaswieci dioda LED i modem sie polaczy.
Stan pracy modemu mozemy odczytywac za pomoca skryptu w drugim moim postcie tego tematu.

Skrypt nalezy umiescic w katalogu

    #/bin/5v_modem_usb1.sh

nalezy tez dodac linie w CRONTAB aby co 1 minute sie uruchamial

*/1 * * * * /bin/5v_modem_usb1.sh

Nazwa pliku  ze skryptem  5v_modem_usb1.sh

Po zapisaniu skryptu nalezy mu nadac status uruchamiania

   /bin#chmod 755 5v_modem_usb1.

#!/bin/sh
#
#
# ON / OFF  modemu typu E3131 HILINK-  przy braku aktywnych
# IP z puli z DHCP ROUTER A  TL-MR3020
#
#
# stala startowa do liczenia adresow IP w pliki z puli DHCP
z=0
# stala startowa do liczenia aktywnych adresow z puli DHCP
y=0
#
# pobiera znaki po spacji w 3 kolumne z pliku /tmp/dhcp.leases
      for i in $(cut -d ' ' -f 3 /tmp/dhcp.leases);

      do

#   spawdza czy w pliku jest adres IP z puli DHCP i zlicza
    i    f [ $i > 0 ];
            then
         z=$((z+1))

# sprawdza pingiem czy adres IP  jest aktywny
         ping -q -c 1 -W 1 $i > /dev/null;

# zliczanie aktywnych adresow IP
           if [ $? -eq 0 ];
              then
            y=$((y+1))

# konczenie petli

           fi
         fi
       done
#
#
# sterowanie napiecem +5V na port USB - ROUTER TL MR3020
#
# sprawdzanie czy brak aktywnego adresu z DHCP  MR3020

     if [ $y = 0 ];
       then

#
# wylaczenie napiecia na port USB
         (echo 0 > /sys/class/gpio/gpio8/value)

#
# linia nizej po zdjeciu # pokazuje info o stanie pracy modemu
#        (echo "modem wylaczony I  Y= $y  Z= $z")

# jezeli nie spelniony jest warunek powyzszy - jest min. jeden  aktywny adres  IP z DHCP MR3020
           else
# wlaczenie napiecia na port USB
           (echo 1 > /sys/class/gpio/gpio8/value)

# linia nizej po zdjeciu # pokazuje info o stanie pracy modemu
#         (echo "modem wlaczony II   Y=$y  Z= $z")
# konczenie petli sterowania napieciem 5V   
            fi
#
#
# Ostatnia korekta z dnia   31.01.2014
#  FUT
#  koniec skryptu
#

Zycze zadowolenia z pracy skryptu i prosze o uwagi i sugestie.

Prosze tez o informacje czy dziala to na innych routerach TL serii MR .
Pozdrawiam FEEDHORN

2 (edytowany przez feedhorn 2014-02-26 15:01:28)

Odp: E3131 HILINK z MR3020 - ulatwienia

Witam serdecznie grono kolegow.
Ponizej przekazuje skrypt do odczytu podstawowych danych z modemu E3131  HILINK bez potrzeby wprowadzania go w tryb zwyklego modemu sterowanego komendami AT.
Modem pracuje z routerem TL  MR3020 i soft Gargoyle:1.5.11.7
Odczyt danych odbywa sie z konsoli,  wynik pokazuje podstawowe dane jak opis na koncu skryptu

Skrypt nalezy umiescic w katalogu

    #/bin/hilink.sh

Nazwa pliku  ze skryptem     hilink.sh

Po zapisaniu skryptu nalezy mu nadac status uruchamiania

  /bin# chmod 755 hilink.sh

22.02.2014r.
Skrypt zostal ulepszony o dwa parametry - wlekosci rzeczywiste
Sile sygnalu  i CSQ .


#!/bin/sh
# odczyt danych z modemu HILINK bez trybu modemu 
  wget -t 25 -O /tmp/E3231-status http://192.168.1.1/api/monitoring/status > /dev/null 2>&1
  wget -t 25 -O /tmp/E3231-plmn http://192.168.1.1/api/net/current-plmn  > /dev/null 2>&1
  wget -t 25 -O /tmp/E3231-signal http://192.168.1.1/api/net/signal-para > /dev/null 2>&1
  wget -t 25 -O /tmp/E3231-trafic http://192.168.1.1/api/monitoring/traffic-statistics > /dev/null 2>&1


#   szukanie danych w pliku z danymi typu HTML
    Status_Polaczenia=`cat /tmp/E3231-status | grep ConnectionStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    Sila_Sygnalu=`cat /tmp/E3231-signal | grep Rscp | cut -d '<' -f 2 | cut -d '>' -f 2`
    CSQ_Sygnalu=`cat /tmp/E3231-signal | grep Ecio | cut -d '<' -f 2 | cut -d '>' -f 2` 
    Typ_Sieci=`cat /tmp/E3231-status | grep CurrentNetworkType | cut -d '<' -f 2 | cut -d '>' -f 2`
    Adres_IP=`cat /tmp/E3231-status | grep WanIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Primary=`cat /tmp/E3231-status | grep PrimaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Secendary=`cat /tmp/E3231-status | grep SecondaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    Nazwa_Sieci=`cat /tmp/E3231-plmn | grep FullName | cut -d '<' -f 2 | cut -d '>' -f 2`
    ID_Sieci=`cat /tmp/E3231-plmn | grep Numeric | cut -d '<' -f 2 | cut -d '>' -f 2`
    Nazwa_Sieci=`cat /tmp/E3231-plmn | grep FullName | cut -d '<' -f 2 | cut -d '>' -f 2`
    ID_Sieci=`cat /tmp/E3231S2-plmn | grep Numeric | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Polaczenia=`cat /tmp/E3231-trafic | grep CurrentConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Calkowity=`cat /tmp/E3231-trafic | grep TotalConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`


    DATE=`date "+%F  %H:%M:%S"`
    CSQ=$((CSQ_Sygnalu+32))
    Sila_Sygnalu="$((Sila_Sygnalu)) dB"
    clear

# Sprawdzanie stanu polaczanienia
      if [ $Status_Polaczenia = 900 ] 
        then 
     Polaczenie="Laczenie"
       elif [ $Status_Polaczenia = 901 ]
       then
     Polaczenie="Polaczony"
       elif [ $Status_Polaczenia = 902 ]
       then
     Polaczenie="Rozlaczony"
       elif [ $Status_Polaczenia = 903 ]
       then
     Polaczenie="Rozlaczanie"
      elif [ $Status_Polaczenia = 25 -o 26 ]
        then
     Polaczenie="BLAD LACZENIA"
      else 
     Polaczenie="Brak danych"
      fi 


# Sprawdzanie typu sieci 
      if [ $Typ_Sieci = 1 ]
         then
        Siec="EDGA"
      elif [ $Typ_Sieci = 3 ]
         then
          Siec="UMTS"
      elif [ $Typ_Sieci = 4 ]
        then
          Siec="HSPA"
      elif [ $Typ_Sieci = 5 ]
        then
          Siec="HSDPA"
      elif [ $Typ_Sieci = 7 -o 9 ]
         then
          Siec="HSPA+"
      else
           Siec="BRAK DANYCH"
      fi

# sprawdzanie nazwy sieci
       if [ $Nazwa_Sieci = "PLAY" ]
        then
           Nazwa_Sieci="PLUS ROAMING"
       else
           Nazwa_Sieci=$Nazwa_Sieci
        fi     

#  Liczenie czasu polaczenia 
           if [ $Czas_Polaczenia -ge 3600 ]
              then
            Czas_PH=$((Czas_Polaczenia/3600));
            Czas_PM=$((((Czas_Polaczenia-$Czas_PH)*3600)/60));
            Czas_PS=$(((Czas_Polaczenia-$Czas_PH)/360));  
           
            elif [ $Czas_Polaczenia -ge 600 ]
             then
            Czas_PH="00"
            Czas_PM=$((Czas_Polaczenia/60));
            Czas_PS=$((Czas_Polaczenia-$Czas_PM*60)); 
            
             elif [ $Czas_Polaczenia -ge 60 ]
              then 
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
            
             else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
             fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_PS -lt 1 ]
                  then
                Czas_PS="00"
            elif [ $Czas_PS -lt 10 ]
                  then
                Czas_PS="0"$Czas_PS
             fi
                                                                                 
            if [ $Czas_PM -lt 1 ]
                  then
                Czas_PM="00"
            elif [ $Czas_PM -lt 10 ]
                  then
                Czas_PM="0"$Czas_PM
             fi

            if [ $Czas_PH -lt 1 ]
                  then
               Czas_PH="00"
            elif [ $Czas_PH -lt 10 ]
                  then
            Czas_PH="0"$Czas_PH
              fi
                                                               
                                      
#  Liczenie czasu calkowitego polaczenia
             if [ $Czas_Calkowity -ge 3600 ]
                    then
             Czas_CH=$((Czas_Calkowity/3600))
             Czas_CM=$(((Czas_Calkowity-$Czas_CH*3600)/60))
             Czas_CS=$((Czas_Calkowity-($Czas_CH*3600)-(Czas_CM*60)))
           
             elif [ $Czas_Calkowity -ge 600 ]
                    then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
          
             elif [ $Czas_Calkowity -ge 60 ]
           
                   then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
  
              else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))

              fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_CS -lt 1 ]
                  then
               Czas_CS="00"
            elif [ $Czas_CS -lt 10 ]
                  then
               Czas_CS="0"$Czas_CS
             fi
                           
             if [ $Czas_CM -lt 1 ]
                   then
               Czas_CM="00"
             elif [ $Czas_CM -lt 10 ]
                   then
               Czas_CM="0"$Czas_CM
             fi
                                                                                                                                                                                                                         
            if [ $Czas_CH -lt 1 ]
                 then
             Czas_CH=" 00"
           
             elif [ $Czas_CH -lt 10 ]
                 then
             Czas_CH=" 0"$Czas_CH
           
             elif [ $Czas_CH -lt 100 ]
                 then
             Czas_CH=$Czas_CH
            fi
            

            
# przygotowanie wysietlenia danych o polaczeniu GSM  
     
    (echo "======================================") 
    (echo "       $DATE")
    (echo "--------------------------------------")
    (echo "    MODEM  HUAWEI E3131    HILINK    ")
    (echo "--------------------------------------")
    (echo "Stan Lacza z BTS  :  $Polaczenie")
    (echo "Nazwa Sieci       :  $Nazwa_Sieci")
    (echo "ID_Sieci          :  $ID_Sieci")
    (echo "Sila Sygnalu      : $Sila_Sygnalu")
    (echo "CSQ               :  $CSQ")
    (echo "Czas polaczenia   :  $Czas_PH:$Czas_PM:$Czas_PS")
    (echo "Czas calkowity    :  $Czas_CH:$Czas_CM:$Czas_CS")
    (echo "Typ Sieci         :  $Siec")
    (echo "Adres IP          :  $Adres_IP")
    (echo "DNS podstawowy    :  $DNS_Primary")
    (echo "DNS rezerwowy     :  $DNS_Secendary")
    (echo "======================================")
#    sleep 1
# FUT
# ostania korekta  26.02.2014
# Koniec skryptu
#

Zycze zadowolenia z uzywania skryptu i prosze o uwagi i sugestie .

Dla zainteresowanych wymiana WebUI w modemie E3131 HILINK podaje linki - nie jest to najnowsza wersja.
http://3ginfo.ru/request381.html
WebUI sprawdzony a modem dziala poprawnie.
Ta wersja WebUI posiada odczyt sygnalu i adresow IP w zakladce
Network status
Wymiana przebiegla bez problemow nie trzeba zadnych pomocniczych programow tylko nalezy pamietac aby pozamykac wszystkie programy i wylaczyc ANTYVIRA  i miec pewnosc ze pradu nie zabraknie w ciagu 5 minut.

Pozdrawiam serdecznie FEEDHORN