Zasięg GSM w conky.

Wszystko na temat internetu za pomocą sieci komórkowych pod systemem Linux.

Moderator: Moderatorzy

ODPOWIEDZ
Awatar użytkownika
COVERek
Stały użytkownik forum
Posty: 93
Rejestracja: 2008-07-10, 20:23
Lokalizacja: Łódź

Zasięg GSM w conky.

Post autor: COVERek »

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
Awatar użytkownika
COVERek
Stały użytkownik forum
Posty: 93
Rejestracja: 2008-07-10, 20:23
Lokalizacja: Łódź

Re: Zasięg GSM w conky.

Post autor: COVERek »

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:

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
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/

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
Teraz nie pozostaje nam nic innego jak dodanie do conky wywołania skryptu.

Kod: Zaznacz cały

${execi 60 ~/.moje/gsm} %
Ot i to wszystko, teraz conky będzie nam wskazywał zasięg w procentach.
Linux User #462372 || Ubuntu User #20118
ja.michal
*Mistrz bezprzewodowy*
Posty: 22031
Rejestracja: 2006-08-14, 17:59
Lokalizacja: Polska

Re: Zasięg GSM w conky.

Post autor: ja.michal »

COVERek pisze:Nikt mi nie pomógł to sobie sam poradziłem.
Nie tyle z niechęci COVERek, a tyle, że sami nie wiedzieliśmy. :)
COVERek pisze:Także chętnie podzielę się z Wami moimi spostrzeżeniami.
Bardzo dziękujemy. :ok:
Awatar użytkownika
COVERek
Stały użytkownik forum
Posty: 93
Rejestracja: 2008-07-10, 20:23
Lokalizacja: Łódź

Re: Zasięg GSM w conky.

Post autor: COVERek »

Niestety tak polecane nowe Ubuntu 9.10 zawiodło ponownie...
Program wvdial nie moze sie wdzwonic w modem i dostaje taki komunikat...

Kod: Zaznacz cały

--> Cannot open /dev/ttyHS0: Device or resource busy
Da sie cos z tym zrobic?
Linux User #462372 || Ubuntu User #20118
Awatar użytkownika
raven18
Specjalista bezprzewodowy-junior
Posty: 291
Rejestracja: 2007-11-28, 13:27
Lokalizacja: /home

Re: Zasięg GSM w conky.

Post autor: raven18 »

Usuń (przez purge) Network Managera, to on blokuje.

ps. przez kogo polecane? chyba nie na tym forum :cwaniak:
Awatar użytkownika
COVERek
Stały użytkownik forum
Posty: 93
Rejestracja: 2008-07-10, 20:23
Lokalizacja: Łódź

Re: Zasięg GSM w conky.

Post autor: COVERek »

znaczy ze jak ? :>
na 9.04 wszystko ladnie latalo. :)
Linux User #462372 || Ubuntu User #20118
Awatar użytkownika
raven18
Specjalista bezprzewodowy-junior
Posty: 291
Rejestracja: 2007-11-28, 13:27
Lokalizacja: /home

Re: Zasięg GSM w conky.

Post autor: raven18 »

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.
zDaleKi
Stary bywalec bezprzewodowy
Posty: 11508
Rejestracja: 2005-10-12, 11:18
Lokalizacja: Wrocław

Re: Zasięg GSM w conky.

Post autor: zDaleKi »

COVERek pisze:Niestety tak polecane nowe Ubuntu 9.10 zawiodło ponownie...
Kto polecał? Opisywaliśmy (głównie ja), że czekamy na nowe Ubuntu, ale potem były też linki do informacji, że sprawia ono problemy.
Pozdr, (R) BliSki. (tm)
Pytania dotyczące kwestii technicznych tylko na forum. Pamiętaj PW to nie helpdesk.
Awatar użytkownika
COVERek
Stały użytkownik forum
Posty: 93
Rejestracja: 2008-07-10, 20:23
Lokalizacja: Łódź

Re: Zasięg GSM w conky.

Post autor: COVERek »

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.

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
Teraz dodajemy plik gsm_main z prawami

Kod: Zaznacz cały

$ chmod a+x gsm_main
i wklejamy do niego tą oto zawartość.

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
Gdzie uruchomienie programu powinno dać nam następujący wynik.
coverek@box:~/.moje/conky$ ./gsm_main
[sudo] password for coverek:
Percent: 35
Name: Plus
LAC: 33141
CID: 59142
dBm: -91
CSQ: 11
Tech: UMTS
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.

Kod: Zaznacz cały

*/1 * * * * root /home/UŻYTKOWNIK/.moje/conky/gsm_main
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,

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
a tutaj przykładowo plik gsm_name dla nazwy operatora.

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
Tak samo analogicznie trzeba zrobić dla pozostałych parametrów.
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}'`
Teraz nie pozostaje nam nic innego jak zamontowanie odpowiedniego kodu w .conkyrc. U mnie fragment od połączenia gsm wygląda następująco.

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}
Oto efekt:
Obrazek

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 :cwaniak:
Linux User #462372 || Ubuntu User #20118
ODPOWIEDZ