Temat: E3131 HILNIK - Connect / Disconnect - automatyzacja ze skryptu
Witam serdecznie grono kolegow, uzytkownikow modemu E3131 HILINK w opcji z routrem TL MR3020.
W zalaczeniu przesylam skrypt do sterowania modemem E3131 HILINK polaczonym z routerem TP-LINK MR3020 z softem Ggargoyle-1.6.0.2.
Mysle, ze poprawna praca skryptu bedzie tez na routerach innych typow.
WAZNE !!: Modem ciagle pracuje w trybie HILINK.
Rozwiazanie pozwala na zwolnienie zajetosci pasma GSM w moim przypadku to AERO2, kiedy nie korzystam z internetu.
Router i modem sa umieszczone na strychu aby miec lepszy sygnal GSM.
W ten sposob pozbylem sie dlugiego kabla koncentrycznego pomiedzy antena YAGA na pasmo GSM 900MHz a modemem E3131 HILINK.
Straty sygnalu GSM na kablu antenowym byly na poziomie 5 dB, a ja teraz lacze sie routerem po WIFI.
Wskazane tez jest aby modem do routera polaczyc kabelkiem USB okolo 0.5 metra aby ograniczyc wzajemne ooddzialywanie - fali radiowej.
Skrypt realizuje nastepujace funkcje:
1 - sprawdza czy sa uzytkownicy polaczeni z routerem - po WIFI lub LAN.
2 - jezeli sa, to wlacza napiecie +5V na USB - wlacza zasilanie modemu E3131 HILINK
3 - jezeli nie, to przerywa polaczenie z GSM - wyslylajac do modemu rozkaz DISCONNECT
4 - jezeli nie, to wylacza napiecie +5V na USB - wylacza zasilanie modemu E3131 HILINK
5 - po wlaczeniu napiecia +5V na USB, sprawdza czy modem jest polaczony z siecia GSM.
6 - jezeli nie, to wznawia polaczenie - wyslylajac do modemu rozkaz CONNECT ( 5 prob co 7 sek )
------------------------------------------------------------------------------------
WAZNE ! dla posiadaczy karty pamieci w modemie na EXTROOT-a.
Dzialnie skryptu mozna ograniczyc do sprawdzania statusu polaczenia z GSM i ewentualnego dzialania ( CONNECT / DISCONNECT ) bez wylaczania napiecia +5V na port USB.
Pominac pkt 4. i dokonac zmiany w skrypcie - miejsca opisane.
--------------------------------------------------------------------------------------
Dzialanie skryptu mozna obserwowac na przegladarce - wywolujac DISCONNECT na WebUI modemu - http://192.168.1.1/html/index.html
Skrypt zalecane jest umiescic w katalogu
#/etc/config/5v_modem_usb2.sh
nalezy tez dodac linie w CRONTAB aby co 1 minute sie uruchamial
*/1 * * * * /etc/config/5v_modem_usb2.sh
Nazwa pliku ze skryptem 5v_modem_usb2.sh
Po zapisaniu skryptu nalezy mu nadac status uruchamiania
#chmod 755 /etc/config/5v_modem_usb2.sh
Kod skryptu:
#!/bin/sh
# wlaczenie modemu typu E3131 HILINK- i wznawianie polaczenia z siecia GSM
#
# 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
if [ $i > 0 ];
then
z=$((z+1))
# sprawdza pingiem czy adres IP z pliku /tmp/dhcp.leases 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 warunku czy ilosc aktwnych adresow z DHCP jest rowna 0
if [ $y = 0 ];
then
#
# Rozlaczenie modemu z siecia GSM
#
Cl1="POST /api/dialup/dial HTTP/1.1"
Cl2="Host: 192.168.1.1"
Cl3="Content-Length: 75"
Cl4="<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><Action>0</Action></request>"
echo -e "$Cl1\r\n$Cl2\r\n$Cl3\r\n\r\n$Cl4\c" | nc 192.168.1.1 80
sleep 2
#
# wylaczenie napiecia na port USB
#
# WAZNE dla posiadaczy karty pamieci w modemie na EXTROOT-a
# Linie nizej zahaszowac jezeli nie chcemy wylaczac napiecia +5V na USB .
(echo 0 > /sys/class/gpio/gpio8/value)
#
# jezeli nie spelniony powyzszy warunek - jest aktwny adres IP
else
# wlaczenie napiecia na port USB
(echo 1 > /sys/class/gpio/gpio8/value)
sleep 2
# dczyt danych z modemu HILINK o statusie polaczenia
wget -t 25 -O /tmp/E3131-status http://192.168.1.1/api/monitoring/status > /dev/null 2>&1
St_P=`cat /tmp/E3131-status | grep ConnectionStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
fi
#
# sprawdzanie statusu polaczenia z siecia GSM
#
c=0
#
while [ $St_P != 901 -a $y -gt 0 -a $c -lt 6 ]; do
Cl1="POST /api/dialup/dial HTTP/1.1"
Cl2="Host: 192.168.1.1"
Cl3="Content-Length: 75"
Cl4="<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><Action>1</Action></request>"
echo -e "$Cl1\r\n$Cl2\r\n$Cl3\r\n\r\n$Cl4\c" | nc 192.168.1.1 80
sleep 7
wget -t 25 -O /tmp/E3131-status http://192.168.1.1/api/monitoring/status > /dev/null 2>&1
St_P=`cat /tmp/E3131-status | grep ConnectionStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
# liczenie prob polaczenia
#
c=$((c+1))
done
#
#FUT
# Wersja z dnia 02.03.2014
#
# koniec skryptu
#Zachecam kolegow do sprawdzenia dzialania skryptu z routerami do ktorych sa podlaczone inne modemy USB typu HILINK i podzielenie sie uwagami.
Prosze o uwagi i ewentualne sugestie.
Konczac, chce podziekowac wszystkim, ktorzy udzieli pomocy, ze skrypt dziala SUPER.
W dniu 12.03.2014 skrypt zostal przetestowany z modemem E303 polaczonym z MR3220 z softem Ggargoyle-1.6.0.2 . Dziala bez uwaga.
W nastepnym moim poscie jest opisana wersja programu pod WINDOWSA, ktora realizuje automatycznie CONNECT - 6 prob w kazdym cyklu uruchomienia.
FEEDHORN