
Zasięg GSM w conky.
Moderator: Moderatorzy
- COVERek
- Stały użytkownik forum
- Posty: 93
- Rejestracja: 2008-07-10, 20:23
- Lokalizacja: Łódź
Zasięg GSM w conky.
Czy jest możliwość pokazania jakości zasięgu w conky? Bo ogólnie jak jest jakaś komenda w terminalu co by pokazała at+csq to da się wynik wkomponować jakoś. 

Linux User #462372 || Ubuntu User #20118
- COVERek
- Stały użytkownik forum
- Posty: 93
- Rejestracja: 2008-07-10, 20:23
- Lokalizacja: Łódź
Re: Zasięg GSM w conky.
Nikt mi nie pomógł to sobie sam poradziłem. Także chętnie podzielę się z Wami moimi spostrzeżeniami.
A więc musimy mieć zainstalowany program 'wvdial' z odpowiednią dla naszego modemu konfiguracją. U mnie wygląda ona następująco:
Następnie należy stworzyć własny skrypt o następującej treści dla programu conky. W moim przypadku jest to plik o nazwie gsm w katalogu .moje/
Teraz nie pozostaje nam nic innego jak dodanie do conky wywołania skryptu.
Ot i to wszystko, teraz conky będzie nam wskazywał zasięg w procentach.
A więc musimy mieć zainstalowany program 'wvdial' z odpowiednią dla naszego modemu konfiguracją. U mnie wygląda ona następująco:
Kod: Zaznacz cały
coverek@box:~$ cat /etc/wvdial.conf
[Dialer Defaults]
Modem = /dev/ttyHS0
Baud = 115200
Init = AT+COPS?
Init2 = AT+CSQ
Stupid Mode = 1
Kod: Zaznacz cały
#!/bin/bash
wvdial &> /tmp/csq
gsm=`cat /tmp/csq | grep +CSQ: | rev | cut -c -5 | rev > /tmp/csq`
range=`sed -e 's/,/./' /tmp/csq`
gsm=$range/32*100
gsm1=`echo $gsm | bc -l`
echo "scale=1;i=$gsm1/1;scale=0;j=$gsm1/1;j +(i-j>=.5)"|bc
rm /tmp/csq
Kod: Zaznacz cały
${execi 60 ~/.moje/gsm} %
Linux User #462372 || Ubuntu User #20118
-
- *Mistrz bezprzewodowy*
- Posty: 22036
- Rejestracja: 2006-08-14, 17:59
- Lokalizacja: Polska
Re: Zasięg GSM w conky.
Nie tyle z niechęci COVERek, a tyle, że sami nie wiedzieliśmy.COVERek pisze:Nikt mi nie pomógł to sobie sam poradziłem.

Bardzo dziękujemy.COVERek pisze:Także chętnie podzielę się z Wami moimi spostrzeżeniami.

- COVERek
- Stały użytkownik forum
- Posty: 93
- Rejestracja: 2008-07-10, 20:23
- Lokalizacja: Łódź
Re: Zasięg GSM w conky.
Niestety tak polecane nowe Ubuntu 9.10 zawiodło ponownie...
Program wvdial nie moze sie wdzwonic w modem i dostaje taki komunikat...
Da sie cos z tym zrobic?
Program wvdial nie moze sie wdzwonic w modem i dostaje taki komunikat...
Kod: Zaznacz cały
--> Cannot open /dev/ttyHS0: Device or resource busy
Linux User #462372 || Ubuntu User #20118
- raven18
- Specjalista bezprzewodowy-junior
- Posty: 291
- Rejestracja: 2007-11-28, 13:27
- Lokalizacja: /home
Re: Zasięg GSM w conky.
Usuń (przez purge) Network Managera, to on blokuje.
ps. przez kogo polecane? chyba nie na tym forum
ps. przez kogo polecane? chyba nie na tym forum

- COVERek
- Stały użytkownik forum
- Posty: 93
- Rejestracja: 2008-07-10, 20:23
- Lokalizacja: Łódź
Re: Zasięg GSM w conky.
znaczy ze jak ? :>
na 9.04 wszystko ladnie latalo.
na 9.04 wszystko ladnie latalo.

Linux User #462372 || Ubuntu User #20118
- raven18
- Specjalista bezprzewodowy-junior
- Posty: 291
- Rejestracja: 2007-11-28, 13:27
- Lokalizacja: /home
Re: Zasięg GSM w conky.
Jakoś blokuje, nie wiem jak. Jeśli coś jest do wszystkiego to jest do niczego. Choć na wszelki wypadek radzę zrobić backup tych paczek, gdyby jednak nie ruszyło przez wvdial.
-
- Stary bywalec bezprzewodowy
- Posty: 11508
- Rejestracja: 2005-10-12, 11:18
- Lokalizacja: Wrocław
Re: Zasięg GSM w conky.
Kto polecał? Opisywaliśmy (głównie ja), że czekamy na nowe Ubuntu, ale potem były też linki do informacji, że sprawia ono problemy.COVERek pisze:Niestety tak polecane nowe Ubuntu 9.10 zawiodło ponownie...
Pozdr, (R) BliSki. (tm)
Pytania dotyczące kwestii technicznych tylko na forum. Pamiętaj PW to nie helpdesk.
Pytania dotyczące kwestii technicznych tylko na forum. Pamiętaj PW to nie helpdesk.
- COVERek
- Stały użytkownik forum
- Posty: 93
- Rejestracja: 2008-07-10, 20:23
- Lokalizacja: Łódź
Re: Zasięg GSM w conky.
Trochę się zmieniło u mnie w conky od ostatniego czasu, więc się pochwalę.
Może się komuś przyda takie FAQ.
Musimy utworzyć katalog, w którym będziemy trzymać potrzebne nam skrypty i pliki konfiguracyjne. U mnie jest to katalog ~/.moje/conky/. Teraz należy dodać plik konfiguracyjny .wvdialrc dla programu wvdial (jeśli go nie mamy musimy zainstalować) o następującej zawartości.
Teraz dodajemy plik gsm_main z prawami
i wklejamy do niego tą oto zawartość.
Gdzie uruchomienie programu powinno dać nam następujący wynik.
Teraz czas na pobranie informacji dla conky. Jest to plik z uprawnieniami a+x jak wcześniej i o nazwie gsm_per. Jest to skrypt dla zasięgu w procentach,
a tutaj przykładowo plik gsm_name dla nazwy operatora.
Tak samo analogicznie trzeba zrobić dla pozostałych parametrów.
Gdzie za poleceniem grep wpisujemy to co chcemy wyciać po odpaleniu skryptu gsm_main.
Teraz nie pozostaje nam nic innego jak zamontowanie odpowiedniego kodu w .conkyrc. U mnie fragment od połączenia gsm wygląda następująco.
Oto efekt:

To już na tyle. Pewnie można by było coś tutaj uprościć w działaniu, ale mi to wystarczy a Wam się może przyda.
Pozdrawiam;
COVERek
Może się komuś przyda takie FAQ.

Musimy utworzyć katalog, w którym będziemy trzymać potrzebne nam skrypty i pliki konfiguracyjne. U mnie jest to katalog ~/.moje/conky/. Teraz należy dodać plik konfiguracyjny .wvdialrc dla programu wvdial (jeśli go nie mamy musimy zainstalować) o następującej zawartości.
Kod: Zaznacz cały
[Dialer Defaults]
Abort on Busy = off
Modem = /dev/ttyHS1
Baud = 115200
Init = AT+COPS?
Init2 = AT+CSQ
Init3 = AT+CREG=2
Init4 = AT+CREG?
Init5 = AT+CGMM
Init6 = AT_OCTI?
Init7 = AT_OWCTI?
Stupid Mode = 1
Kod: Zaznacz cały
$ chmod a+x gsm_main
Kod: Zaznacz cały
#!/bin/bash
wvdial -C /home/coverek/.moje/conky/.wvdialrc2 &> /tmp/gsm
cp /tmp/gsm /tmp/gsm2
gsm=`cat /tmp/gsm | grep +CSQ: | rev | cut -c -5 | rev`
csq=`echo $gsm | cut -c -2`
gsm=`echo $gsm | cut -c -2 > /tmp/gsm`
range=`sed -e 's/,/./' /tmp/gsm`
dbm=`echo "($range*2)-113"|bc`
gsm=$range/31*100
gsm1=`echo $gsm | bc -l`
percent=`echo "scale=1;i=$gsm1/1;scale=0;j=$gsm1/1;j +(i-j>=.5)"|bc`
lac=`cat /tmp/gsm2 | grep +CREG: | cut -f2 -d\"`
cid=`cat /tmp/gsm2 | grep +CREG: | cut -f4 -d\"`
system=`cat /tmp/gsm2 | grep +COPS: | cut -f3 -d\" | rev | cut -c -1`
lac=`printf "%d\n" 0x$lac`
cid=`printf "%d\n" 0x$cid`
if [ "$system" == 0 ]; then
mode=`cat /tmp/gsm2 | grep _OCTI: | cut -f1 -d\,`
if [ "$mode" == 1 ]; then
tech="GSM"
elif [ "$mode" == 2 ]; then
tech="GPRS"
elif [ "$mode" == 3 ]; then
tech="EDGE"
fi
elif [ "$system" == 2 ]; then
mode=`cat /tmp/gsm2 | grep _OWCTI: | cut -f2 -d\: | rev | cut -c -1`
if [ "$mode" == 1 ]; then
tech="UMTS"
elif [ "$mode" == 2 ]; then
tech="HSDPA"
elif [ "$mode" == 3 ]; then
tech="HSUPA"
elif [ "$mode" == 4 ]; then
tech="HSPA"
fi
fi
xxx=`echo $csq | rev |cut -c -1`
if [ "$xxx" == "," ]; then
end=`echo $csq | cut -c -1`
csq="$end"
else
csq="$csq"
fi
name=`cat /tmp/gsm2 | grep +COPS: | cut -f2 -d\"`
echo -e "Percent: $percent \nName: $name \nLAC: $lac \nCID: $cid \ndBm: $dbm \nCSQ: $csq \nTech: $tech" > /tmp/gsm_info
rm /tmp/gsm && rm /tmp/gsm2
cat /tmp/gsm_info
Teraz aby komputer pobierał dane raz na minutę, no chyba że ręcznie za pomocą odpalenia skryptu (nie miałem koncepcji jak zrobić to częściej) musimy dodać na końcu tą oto linijkę do pliku /etc/crontab.coverek@box:~/.moje/conky$ ./gsm_main
[sudo] password for coverek:
Percent: 35
Name: Plus
LAC: 33141
CID: 59142
dBm: -91
CSQ: 11
Tech: UMTS
Kod: Zaznacz cały
*/1 * * * * root /home/UŻYTKOWNIK/.moje/conky/gsm_main
Kod: Zaznacz cały
#!/bin/bash
per=`cat /tmp/gsm_info | grep Percent | tail -l | awk '{print $2}'`
if [ -z $per ]; then
per=`printf b.d.`
else
per="$per %"
fi
Kod: Zaznacz cały
#!/bin/bash
name=`cat /tmp/gsm_info | grep Name | tail -l | awk '{print $2}'`
if [ -z $name ]; then
name=`printf b.d.`
else
name="$name"
fi
echo $name
Gdzie za poleceniem grep wpisujemy to co chcemy wyciać po odpaleniu skryptu gsm_main.
Kod: Zaznacz cały
name=`cat /tmp/gsm_info | grep NAZWA | tail -l | awk '{print $2}'`
Kod: Zaznacz cały
${if_existing /sys/class/net/hso0/operstate }
${color0}Operator: ${color1}${execi 10 ~/.moje/conky/gsm_name}${alignr}${color0}System: ${color1}${execi 5 ~/.moje/conky/gsm_tech}
${color0} Siła: ${alignr}${color1}${execi 5 ~/.moje/conky/gsm_dbm} dBm, ${execi 5 ~/.moje/conky/gsm_per}, CSQ ${execi 5 ~/.moje/conky/gsm_csq}
${color0} LAC: ${color1}${execi 5 ~/.moje/conky/gsm_lac}${alignr}${color0}CID: ${color1}${execi 5 ~/.moje/conky/gsm_cid}
${color0} Adres(hso0): ${color1} ${alignr}${addr hso0}
${color0} Brama: ${color1}${alignr}${gw_ip hso0}
${color0} WAN: ${color1}${alignr}${execi 60 ~/.moje/wan}
${color0} Host: ${color1}${alignr}${execi 60 ~/.moje/host-hs0}
${color2} ${font Pointers:size=11}¤${font} ${downspeedf hso0}kB/s ${alignr}${upspeedf hso0}kB/s ${font Pointers:size=11}@${font}
${color1} ${downspeedgraph hso0 20,87 2c333c 6b7b90 -t} ${upspeedgraph hso0 20,87 2c333c 6b7b90 -t}
${color1} ${totaldown hso0}${alignr}${totalup hso0}

To już na tyle. Pewnie można by było coś tutaj uprościć w działaniu, ale mi to wystarczy a Wam się może przyda.
Pozdrawiam;
COVERek

Linux User #462372 || Ubuntu User #20118