btsapp - czyli applet do sprawdzania cid/lac

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

Moderator: Moderatorzy

ODPOWIEDZ
boskar
Stały użytkownik forum
Posty: 68
Rejestracja: 2010-05-05, 10:24
Lokalizacja: Katowice

btsapp - czyli applet do sprawdzania cid/lac

Post autor: boskar »

Wybaczcie nowy wątek, ale tamten ( http://www.bez-kabli.pl/viewtopic.php?t=30587 ) już się pierwotnie ma nijak do swojego tematu.

Prezentuję wersję publiczną 0.4 appletu do sprawdzania BTSów pod linuksem.

Rejestr zmian:
- Zarzucono obsługę clf/csv na rzecz bazy sqlite - celem poprawy wydajności (znacznej!) - wyszukiwanie w bazie zawierającej wszystkie rekordy z btsearch.pl (poprzez eksport clf) trwa jakieś 5 razy krócej niż poprzednio, kiedy w bazie było tylko jedno województwo

- Zawieszono rozwój ściągaczki bazy - jest chwilowo zbędna, program samodzielnie ściąga pełną bazę sqlite z mojego serwera, postaram się dbać o jej aktualność w miarę możliwości :)

- Bazę trzyma się w ~/.btsapp.sqlite a program można trzymać gdziekolwiek - problem z wersji 0.2 rozwiązany

- Udoskonalono funkcje odpowiedzialne za wybór urządzenia w NM - obecnie program używa pierwszego dostępnego modemu GSM jaki znajdzie (można użyć n-tego urządzenia - linia 72: 0 zamień na (n-1)

- Dostosowano program do NetworkManagera 0.9.0 - niestety wymagało to wyłączenia obsługi PppStats (czekamy na ponowne zaimplementowanie tej funkcji w NM)

Pakiety perla których teraz program wymaga:

libgtk2-trayicon-perl
libgtk2-notify-perl
libgtk2-perl
libnet-dbus-perl
libdbd-sqlite3-perl
libdbi-perl
libwww-perl
libformat-human-bytes-perl (w nadziei że obsługa PppStats wróci szybko).

uncompress-bunzip2 należy do pakietów rdzennych perla.

Planowany rozwój:

Pobieranie LAC/CID bezpośrednio z modemu - być może wprowadzę tryb zupełnie pomijający dbus (to, że mój główny modem, bazujący na hso nie wyświetla aktualnego BTSa jest dość irytujące :D)


Program dostępny tutaj: http://paste.debian.net/134101/

ściągnąć stąd: http://paste.debian.net/download/134101 zapisać jako btsapp.pl, nadać uprawnienia wykonywania, odpalić, poczekać na ściągnięcie bazy, korzystać.
Cezary
Stały użytkownik forum
Posty: 123
Rejestracja: 2010-11-11, 18:04
Lokalizacja: Warszawa

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: Cezary »

Chyba źle szukasz w bazie CID'a. Mój to 65641 co daje 10069h czyli 1 (RNC) i 69h (105) jaki CID. Powoduje to nieznalezienie danych, mimo że 105/1 w w bazie jest.

[ Dodano: 2011-10-04, 21:12 ]
PS. wykłada się jak w trakcie działa modem zostanie wyciągnięty. Jakieś ładnie wyjście by się z przydało w takiej sytuacji.
https://eko.one.pl - prawie wszystko o OpenWrt
boskar
Stały użytkownik forum
Posty: 68
Rejestracja: 2010-05-05, 10:24
Lokalizacja: Katowice

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: boskar »

Twojego BTSa niestety nie ma w bazie z której skorzystałem:

http://btsearch.pl/szukaj.php?search=65 ... 1&mode=std

rozdziału na RNC i konkretny ID nie stosowałem, szczerze to nawet nie bardzo się orientuję o co chodzi... ;)

Sama baza powstała poprzez Eksport CLF z btsearch.pl, a następnie import clf (zgodnego przecież z csv) do sqlite.

Pierwotnie chciałem użyć btsearch.xls (tego co jest w zipie, top_netinfo z tego korzysta o ile pamiętam), niestety ta baza nie zawiera współrzędnych GPS, które wykorzystuję. (Do otwierania mapy po kliknięciu w applecik).

Obsługa wyciągania modemu i wykrywania modemu w trakcie pracy programu - cóż, możnaby to zaimplementować, w sumie nie powinno być z tym dużo roboty. Pytanie tylko jakie powinno być oczekiwane zachowanie programu? Wyświetlać komunikat "brak modemu" i po jego podpięciu ponownie go wykrywać?
Jak znajdę chwilę to napiszę co trzeba (obawiam się że dopiero w okolicach 15 grudnia do tego siądę :/)

MM o ile pamiętam udostępnia odpowiedni sygnał informujący o tym że modem został wyciągnięty.
Cezary
Stały użytkownik forum
Posty: 123
Rejestracja: 2010-11-11, 18:04
Lokalizacja: Warszawa

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: Cezary »

Ale 69h jest. Pisałem - nie rozdzielasz rnc od cida, niektóre modemy dają lcid i musisz to uwzględnić przy szukanie w bazie.

To jest "mój" bts: http://btsearch.pl/szukaj.php?search=69 ... 8&mode=adv , warszawa ursynów.
https://eko.one.pl - prawie wszystko o OpenWrt
boskar
Stały użytkownik forum
Posty: 68
Rejestracja: 2010-05-05, 10:24
Lokalizacja: Katowice

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: boskar »

Hm. Twój BTS w mojej bazie wygląda tak.

MCCMNC = 26017,
CID = 00105
LAC = 00021
RNC = 00001
POSLAT = 52.137222
POSLON = 21.065
POSRAT = 0
DESCRIPTION = Warszawa - Ursynów, ul. Przy Bażantarni 3 (dzwonnica kościoła bł. Władysława z Gielniowa) [MAZ:10010:1:U900-2963]
RFU = 0


Możesz mi wrzucić to, co u Ciebie daje GetLocation w całości?
Dobrze rozumiem że te 4 ostatnie cyfry w hex będą odpowiadać za CIDa w postaci z bazy, a pozostałe pierwsze to RNC?
Cezary
Stały użytkownik forum
Posty: 123
Rejestracja: 2010-11-11, 18:04
Lokalizacja: Warszawa

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: Cezary »

Tak, dokładnie tak masz dzielić.

GetLocation() daje 260,17,15,10069
https://eko.one.pl - prawie wszystko o OpenWrt
boskar
Stały użytkownik forum
Posty: 68
Rejestracja: 2010-05-05, 10:24
Lokalizacja: Katowice

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: boskar »

Ech, poprawię w wolnej chwili, chwilowo jakoś nie bardzo mogę się za to zabrać... (studia ;)

[ Dodano: 2011-10-07, 14:04 ]
http://paste.debian.net/134829/ - publiczna 0.5

Wersja uwzględniająca niezerowe RNC.

Uwaga, wymagane ręczne usunięcie bazy (zmiana typów kolumn z niezdefiniowanego na INT celem umożliwienia wyszukiwania nie zmieniła rozmiaru bazy ani o bajt, więc zastosowana metoda sprawdzania czy jest nowa baza nie wystarcza. Kiedy typ był niezdefiniowany a RNC miało wartość 00000 wyszukiwanie z parametrem RNC = "0" nie działało.)

Prawdopodobnie mamy problem z obsługą kodowania w Gtk, wydawało mi się że już to kiedyś naprawiałem.



// dodano:

http://paste.debian.net/135051/ - wersja 0.6, rozwiązany problem z kodowaniem informacji o BTSie

Problem wydaje się być głębszy, najpewniej jest w samej bazie - natomiast zastosowane rozwiązanie działa poprawnie.
boskar
Stały użytkownik forum
Posty: 68
Rejestracja: 2010-05-05, 10:24
Lokalizacja: Katowice

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: boskar »

Chwilowo zawieszam zabawy z tą aplikacją z prostego powodu - Czasy gnome3 w Debianie sid nastały, co skutkuje tym, że aplikacja w ogóle nie chce się uruchomić, prawdopodobnie będę musiał poczekać aż odpowiednie perlowe biblioteki dla nowego gtk dojdą do debiana.

Jednak jestem otwarty na wszelkie poprawki, tyle że chwilowo nawet nie mam jak ich przetestować ;)
boskar
Stały użytkownik forum
Posty: 68
Rejestracja: 2010-05-05, 10:24
Lokalizacja: Katowice

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: boskar »

Projekt nie umarł, żyje, choć za dobrze się nie ma. Wersja aktualna:

http://paste.debian.net/163927/ - wersja publiczna 0.7

Na ten moment u mnie wszystko działa poprawnie - na serwerze są bazy w sqlite pod Aero2 i takie będą się ściągać jeśli nie zmienimy my $aktualizuj_baze = TRUE; na FALSE

Nie mam niestety czasu na przygotowanie skryptu do ściągania baz w zależności od operatora bezpośrednio z btsearch, wrzucam to czego sam używam.

Jeśli ktoś potrzebuje innego operatora i ogarnia sqlite - niech wyłączy aktualizuj_baze , i zaimportuje plik .clf do tabeli bts w bazie sqlite - zwykły .import da radę.
boskar
Stały użytkownik forum
Posty: 68
Rejestracja: 2010-05-05, 10:24
Lokalizacja: Katowice

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: boskar »

https://github.com/boskar/btsapp

Nowa strona projektu, w systemie git.

Baza jest przestarzała, serwer gdzie trzymałem bazę jest już nieaktywny.
Awatar użytkownika
ra-v
Mistrz bezprzewodowy
Posty: 1529
Rejestracja: 2009-11-08, 22:59
Lokalizacja: Fryzjer City

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: ra-v »

W openSUSE 12.2
(...)
libnotify-devel (Notifications Library) - z zależnościami

I na tym już poległem - za dużo tego;-)
Mam bład

Kod: Zaznacz cały

linux-1:/home/rafalh/Pobrane/Gtk2-Notify-0.05 # make
cp build/IFiles.pm blib/arch/Gtk2/Notify/Install/Files.pm
cp lib/Gtk2/Notify.pm blib/lib/Gtk2/Notify.pm
cp /home/rafalh/Pobrane/Gtk2-Notify-0.05/build/notify.typemap blib/arch/Gtk2/Notify/Install/notify.typemap
cp build/notify-autogen.h blib/arch/Gtk2/Notify/Install/notify-autogen.h
[ XS xs/Notify.xs ]
[ CC xs/Notify.c ]
In file included from /usr/lib/perl5/vendor_perl/5.16.0/x86_64-linux-thread-multi/Gtk2/Install/gtk2perl.h:28:0,
                 from ./perl_notify.h:1,
                 from xs/Notify.xs:1:
/usr/lib/perl5/vendor_perl/5.16.0/x86_64-linux-thread-multi/Pango/Install/pango-perl.h:24:25: fatal error: pango/pango.h: Nie ma takiego pliku ani katalogu
compilation terminated.
make: *** [xs/Notify.o] Błąd 1
Ostatnio zmieniony 2013-02-03, 16:40 przez ra-v, łącznie zmieniany 1 raz.
Internet 70GB/nolimit: Huawei E3372s-153+TP-LINK MR3420 v2
Telefon: Moto G 1gen / Lumia 625 / iPhone 4 / Nokia 6310i
moher
Specjalista bezprzewodowy-senior
Posty: 379
Rejestracja: 2011-02-02, 15:43
Lokalizacja: Szczecin

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: moher »

Przecież napisane czarno na białym, że nie masz plików nagłówkowych pango, czyli najprawdopodobniej potrzebujesz paczki libpango-dev(el) czy jak to się nazywa w suse.
Awatar użytkownika
ra-v
Mistrz bezprzewodowy
Posty: 1529
Rejestracja: 2009-11-08, 22:59
Lokalizacja: Fryzjer City

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: ra-v »

Przecież napisane czarno na białym
Białe na czarnym;-)
Namęczyłem się żeby wyszukać te poprzednie, doinstalowałem ładnych parędziesiąt MB dodatków, ale nadal nic z tego.


W openSUSE 12.2 trzeba doinstalować:
  • perl-Net-DBus-GLib (Extension for the DBus GLib bindings) - z zależnościami
  • Format Human Bytes - instrukcja w pliku README po wypakowaniu
  • perl-Gtk2-TrayIcon (Perl interface to the EggTrayIcon library)
  • perl-DBI (Database independent interface for Perl - z zależnościami
  • libnotify-devel (Notifications Library) - z zależnościami
  • pango-devel - z zależnościami
  • gtk2-devel - z zależnościami
I teraz jest problem - zainstalowałem perl-Gtk2-Notify ale nadal twierdzi że

Kod: Zaznacz cały

afalh@linux-1:~/Pobrane/btsapp-master> ./btsapp.pl 
$[ used in numeric lt (<) (did you mean $] ?) at /usr/lib/perl5/vendor_perl/5.16.0/XML/Twig.pm line 7286.
$[ used in numeric lt (<) (did you mean $] ?) at /usr/lib/perl5/vendor_perl/5.16.0/XML/Twig.pm line 7292.
$[ used in numeric lt (<) (did you mean $] ?) at /usr/lib/perl5/vendor_perl/5.16.0/XML/Twig.pm line 7304.
Can't locate Gtk2/Notify.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.16.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.16.0 /usr/lib/perl5/vendor_perl/5.16.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.16.0 /usr/lib/perl5/5.16.0/x86_64-linux-thread-multi /usr/lib/perl5/5.16.0 /usr/lib/perl5/site_perl/5.16.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.16.0 /usr/lib/perl5/site_perl .) at ./btsapp.pl line 27.
BEGIN failed--compilation aborted at ./btsapp.pl line 27.
Próbowałem skompilować

Kod: Zaznacz cały

rafalh@linux-1:~/Pobrane/Gtk2-Notify-0.05> make
[ CC xs/Notify.c ]
xs/Notify.c: In function ‘XS_Gtk2__Notify_new’:
xs/Notify.c:333:2: error: too many arguments to function ‘notify_notification_new’
In file included from /usr/include/libnotify/notify.h:27:0,
                 from ./perl_notify.h:3,
                 from xs/Notify.xs:1:
/usr/include/libnotify/notification.h:114:21: note: declared here
xs/Notify.c: In function ‘XS_Gtk2__Notify_new_with_status_icon’:
xs/Notify.c:387:2: warning: implicit declaration of function ‘notify_notification_new_with_status_icon’ [-Wimplicit-function-declaration]
xs/Notify.c:387:9: warning: assignment makes pointer from integer without a cast [enabled by default]
xs/Notify.c: In function ‘XS_Gtk2__Notify_attach_to_widget’:
xs/Notify.c:453:2: warning: implicit declaration of function ‘notify_notification_attach_to_widget’ [-Wimplicit-function-declaration]
xs/Notify.c: In function ‘XS_Gtk2__Notify_attach_to_status_icon’:
xs/Notify.c:474:2: warning: implicit declaration of function ‘notify_notification_attach_to_status_icon’ [-Wimplicit-function-declaration]
xs/Notify.c: In function ‘XS_Gtk2__Notify_set_geometry_hints’:
xs/Notify.c:497:2: warning: implicit declaration of function ‘notify_notification_set_geometry_hints’ [-Wimplicit-function-declaration]
make: *** [xs/Notify.o] Błąd 1
Internet 70GB/nolimit: Huawei E3372s-153+TP-LINK MR3420 v2
Telefon: Moto G 1gen / Lumia 625 / iPhone 4 / Nokia 6310i
moher
Specjalista bezprzewodowy-senior
Posty: 379
Rejestracja: 2011-02-02, 15:43
Lokalizacja: Szczecin

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: moher »

Ustaw zmienną środowiskową PERL5LIB na ścieżkę do folderu z plikiem Notify.pm przed odpleniem btsapp, albo odpalaj przez:

Kod: Zaznacz cały

perl -I /ścieżka/do/folderu/z/biblioteką btsapp.pl 
boskar
Stały użytkownik forum
Posty: 68
Rejestracja: 2010-05-05, 10:24
Lokalizacja: Katowice

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: boskar »

Wiecie co panowie, ja to jednak odchudzę, połowa z tych bibliotek jest niepotrzebna.

Specjalnie dla Was wersja odchudzona:

https://github.com/boskar/btsapp/tree/minimal

Zależy od gtk-trayicon, dbi, i net-dbus.

Wywaliłem obsługę notyfikacji mimo że działały, ale widzę że więcej z tego szkody niż pożytku ;)
Awatar użytkownika
ra-v
Mistrz bezprzewodowy
Posty: 1529
Rejestracja: 2009-11-08, 22:59
Lokalizacja: Fryzjer City

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: ra-v »

Kod: Zaznacz cały

./btsapp.pl                                            
$[ used in numeric lt (<) (did you mean $] ?) at /usr/lib/perl5/vendor_perl/5.16.0/XML/Twig.pm line 7286.                                                                           
$[ used in numeric lt (<) (did you mean $] ?) at /usr/lib/perl5/vendor_perl/5.16.0/XML/Twig.pm line 7292.                                                                           
$[ used in numeric lt (<) (did you mean $] ?) at /usr/lib/perl5/vendor_perl/5.16.0/XML/Twig.pm line 7304.                                                                           
$VAR1 = '/org/freedesktop/NetworkManager/Devices/2';                                                                                                                                
org.freedesktop.ModemManager.Modem.OperationNotSupported: Modem has no location capabilities                                                                                        
/org/freedesktop/NetworkManager/Devices/2/org/freedesktop/ModemManager/Modems/0
Internet 70GB/nolimit: Huawei E3372s-153+TP-LINK MR3420 v2
Telefon: Moto G 1gen / Lumia 625 / iPhone 4 / Nokia 6310i
boskar
Stały użytkownik forum
Posty: 68
Rejestracja: 2010-05-05, 10:24
Lokalizacja: Katowice

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: boskar »

Kod: Zaznacz cały

org.freedesktop.ModemManager.Modem.OperationNotSupported: Modem has no location capabilities   
Jaki to modem?
--edit
Niestety wygląda na to, że ModemManager jeszcze dla tego modemu po prostu nie obsługuje lokalizacji, nawet w postaci LAC/CID, albo też mój program działa nieprawidłowo.
Obie rzeczy są prawdopodobne.
Awatar użytkownika
ra-v
Mistrz bezprzewodowy
Posty: 1529
Rejestracja: 2009-11-08, 22:59
Lokalizacja: Fryzjer City

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: ra-v »

ZTE MF636

A w minicomie przy pomocy AT nie da się wyciągnąć identyfikatora nadajnika?
Internet 70GB/nolimit: Huawei E3372s-153+TP-LINK MR3420 v2
Telefon: Moto G 1gen / Lumia 625 / iPhone 4 / Nokia 6310i
boskar
Stały użytkownik forum
Posty: 68
Rejestracja: 2010-05-05, 10:24
Lokalizacja: Katowice

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: boskar »

Da się, "AT+CGREG?" albo "AT+CREG?"

Problem w tym, że podczas połączenia ModemManager zajmuje pliki urządzenia na wyłączność.

Swego czasu chyba nawet usiłowałem napisać wersję tego skryptu która pobierałaby to bezpośrednio z konsoli, ale w końcu od tego jest ModemManager żeby go używać...

Osobiście polecam picocom zamiast minicoma ;)
boskar
Stały użytkownik forum
Posty: 68
Rejestracja: 2010-05-05, 10:24
Lokalizacja: Katowice

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: boskar »

a tak swoją drogą, co do "org.freedesktop.ModemManager.Modem.OperationNotSupported: Modem has no location capabilities " - byłeś podłączony?

Ja ostatnio miałem podobną sytuację przy braku podłączenia, powinno działać bez tego i z reguły działa.
Problem w tym że wywołanie funkcji właczenia modemu w ModemManagerze wywołuje od razu nawiązanie połączenia, więc nie bardzo chcę włączać modem na siłę w skrypcie.
Awatar użytkownika
ra-v
Mistrz bezprzewodowy
Posty: 1529
Rejestracja: 2009-11-08, 22:59
Lokalizacja: Fryzjer City

Re: btsapp - czyli applet do sprawdzania cid/lac

Post autor: ra-v »

a tak swoją drogą, co do "org.freedesktop.ModemManager.Modem.OperationNotSupported: Modem has no location capabilities " - byłeś podłączony?
Połączony z internetem
Internet 70GB/nolimit: Huawei E3372s-153+TP-LINK MR3420 v2
Telefon: Moto G 1gen / Lumia 625 / iPhone 4 / Nokia 6310i
ODPOWIEDZ