Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Pozostała mi ostatnia rzecz do ogarnięcia z tym modem LTE, czyli SMS. Byłem zmuszony wywalić modemmanager/modem-manager-gui, bo one niestety zajmowały cały modem dla siebie i nie szło z niego korzystać. Nie działały polecenia na /dev/ttyUSB*, nie działał wvdial, nie działały SMS/USSD przy połączeniu, no i nie wchodził NDIS. Czyli same minusy dla modemmanagera. xD
Teraz już trochę więcej wiem jak to połączenie z modemem jest realizowane i udało mi się wypracować scenariusz, gdzie modem nawiązuje połączenie w NDIS. W ten sposób interfejsy w /dev/ttyUSB* pozostają wolne (jeden z nich jest używany tylko przy nawiązywaniu połączenia). Mając dwa wolne (bo tyle ten modem ma w standardzie), na jednym z nich mogę uruchomić demona gammu-smsd, który monitoruje nadchodzące SMS. Na drugim interfejsie mogę odpalić graficznego wammu, lub operować via textowy gammu i wysyłać SMS i kody USSD (choć tutaj mam straszne opóźnienie, z 1-2 min.).
Tak czy inaczej, gdy nadchodzi SMS, w logu jest generowana taka wiadomość:
Apr 08 21:59:25 morfikownia gammu-smsd[18235]: Read 1 messages Apr 08 21:59:25 morfikownia gammu-smsd[18235]: Received IN20160408_215920_00_+48600123456_00.txt
Problem w tym, że to jest w logu systemowym. Ja do pełni szczęścia potrzebuje wizualnej notyfikacji + dźwięk. Tak jak to było robione w modem-manager-gui. Zajrzałem do konfiguracji w pliku /etc/gammu-smsdrc no i tam są do określenia min. te poniższe parametry:
RunOnReceive = RunOnFailure = RunOnSent =
No i w sumie wystarczyłoby coś dopisać w tym RunOnReceive , tylko pytanie jest co? Jak przy pomocy tego parametru posłać wiadomość via notify-send ? xD Bo jak tam wpiszę normalne polecenie [b]notify-send "test"[/b] , to nic się nie dzieje. W logu jest:
Apr 08 22:13:04 morfikownia gammu-smsd[23884]: Read 1 messages Apr 08 22:13:04 morfikownia gammu-smsd[23884]: Received IN20160408_221251_00_+48600123456_00.txt Apr 08 22:13:04 morfikownia gammu-smsd[24392]: Starting run on receive: notify-send "test" IN20160408_221251_00_+48600123456_00.txt Apr 08 22:13:04 morfikownia gammu-smsd[23884]: Process finished successfully
Coś tu się inaczej to konfiguruje?
Ostatnio edytowany przez morfik (2016-04-10 23:11:44)
Offline
Jak odpalisz notify-send w konsoli tty (nie terminalu), to dochodzą, czy masz radosny komunikat "cannot open DISPLAY", czy coś podobnego?
Może najpierw rzuć okiem na to:
https://forum.dug.net.pl/viewtopic.php?pid=299634
Chociaż do SMS to ja bym radził zastanowić się nad zenity, matedialog czy kdialog, albo czymś innym, co otwiera okienko z przyciskami zamknij, odpowiedz teraz, zapisz.
Ostatnio edytowany przez Jacekalex (2016-04-08 23:05:50)
Offline
Z roota pod TTY nie przychodzą ale żadnego błędu nie ma. Ze zwykłego usera dochodzą. Ale i tak raczej odpuszczę sobie te notyfikacje, bo znalazłem pro haxa. xD
Przejrzałem trochę manuala i kilka linków z googla. Tam były przykładowe skrypty. To na ich postawie zrobiłem taki:
#!/bin/sh SMS_MESSAGES=1 PROGRAM=/bin/echo for i in `seq $SMS_MESSAGES` do eval "$PROGRAM Number: \"\${SMS_${i}_NUMBER}\" \| Message: \"\${SMS_${i}_TEXT}\"" eval "echo \${SMS_${i}_TEXT}" | gammu-smsd-inject TEXT +48600123456 done
Tam są dwie akcje. Pierwsza wyświetla dane SMS, tj. numer i treść w logu. Mechanizm zapisuje te dane w plikach w /var/ ale mniejsza o to. Druga akcja wyciąga wiadomość SMS i forwarduje to na numer telefonu. W efekcie dostaje powiadomienie na komórkę z treścią wiadomości SMS, który przyszedł na komputer. xD
Dobrze, że play ma darmowe sms/rozmowy w swojej sieci, bo już ze 300 tych smsów wysłałem. xD
Offline
A po co to SMSami załatwiać?
Nie lepiej SMSy z Gammu do Jabbera wysyłać?
Ekologicznie, za darmo, z porządnym szyfrowaniem, da się to całkiem grzecznie oskrypcić.
Większość smartfonów już jakieś klienty Jabbera obrabia.
Z roota pod TTY nie przychodzą ale żadnego błędu nie ma. Ze zwykłego usera dochodzą. Ale i tak raczej odpuszczę sobie te notyfikacje, bo znalazłem pro haxa. xD[/quote]
Kod:
cat `which udevmess` #!/bin/bash MESSAGE="$*" for NUMBER in `ls /tmp/.X11-unix | awk -F"X" '{print $2}'`; do env DISPLAY=":$NUMBER" notify-send -t 50000 "${MESSAGE}"; done;SOA#1
Ostatnio edytowany przez Jacekalex (2016-04-08 23:26:59)
W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem para bellum ;) | Pozdrawiam :)
Offline
Tu chodzi o co innego. Bo ten modem ma normalny numer i na nim jest aktywowany net LTE za free z play. Co miesiąc te usługę trzeba odnawiać. Zanim ją ściągną to wysyłać mają powiadomienie. I próbowałem rozwiązać kwestię jak to powiadomienie otrzymać w sposób widoczny. No to mój PC musi te SMS przetwarzać i albo je wyświetlać na kompie albo przesyłać na telefon. Nie wiem jeszcze jak to się zachowywać będzie gdy komputer będzie off. Czy pobierze te SMS i wyśle, czy oleje. xD
Właśnie przetestowałem tryb offline. Wiadomości się kolejkują i tylko jak modem się podłączy i demon zacznie nasłuchiwać, to zaraz odbierze wszystkie wiadomości i po chwili je prześle na komórkę. Także full wypas. xD
Ostatnio edytowany przez morfik (2016-04-09 00:32:17)
Offline
hej to weź jakiegoś arta na portalu dug albo do faq grzmotnij, też bym se zrobił :p
Offline
W sumie to tu nie ma za bardzo o czym pisać. xD
Instalujesz gammu-smsd i odpalasz. Ja na systemd mam usługę gammu-smsd.service . Edytujesz sobie plik /etc/gammu-smsdrc i wrzucasz do niego to:
[gammu] port = /dev/ttyUSB1 connection = at115200 name=Huawei E3372 model=at [smsd] service = files logfile = syslog debuglevel = 0 pin = "" CheckSecurity = 0 CheckBattery = 0 #SendTimeout = 30 #CommTimeout = 15 ReceiveFrequency = 5 inboxpath = /var/spool/gammu/inbox/ outboxpath = /var/spool/gammu/outbox/ sentsmspath = /var/spool/gammu/sent/ errorsmspath = /var/spool/gammu/error/ RunOnReceive = /opt/skrypty/sms-rec-sh
No i tworzysz sobie ten skrypcik i wrzucasz to:
#!/bin/sh SMS_MESSAGES=1 PROGRAM="/bin/echo -e" for i in `seq $SMS_MESSAGES` do eval "$PROGRAM \"Number: \${SMS_${i}_NUMBER} | Message: \${SMS_${i}_TEXT}\"" eval "$PROGRAM \"Numer: \${SMS_${i}_NUMBER}\nWiadomosc: \${SMS_${i}_TEXT}\"" | gammu-smsd-inject TEXT +48600123456 done
Info masz tutaj:
https://wammu.eu/docs/manual/smsd/inject.html
https://wammu.eu/docs/manual/smsd/config.html
Ostatnio edytowany przez morfik (2016-04-09 10:58:55)
Offline
Gammu obrabia wszystkie bazy SQL, jakby było więcej SMS albo ktoś chciał dożywotnie archiwum z łatwym dostępem z innych programów, to może się przydać.
Jeśli natomiast chcesz większe cuda, to zamiast Gammu możesz Freeswitcha zapiąć do tego modemu, i przy okazji będzie Ci przekazywał rozmowy prosto na komórkę, będziesz też mógł z niego dzwonić przez dowolnego klienta Voip, o ile dostaniesz się przez sieć Play do kompa (noip? dyndns? + odblokowanie portów przychodzących), albo będzie też jakaś inna rurka ze stałym IP i domeną.
Freeswitch też ładnie potrafi przekazywać SMSy np do maila, i nazad, poprzez zewnętrzne skrypty.
Pozdro
Offline
Tu jeszcze naskrobałem taką ciekawą regułę dla udeva. Może komuś się przyda:
ACTION=="add", KERNEL=="ttyUSB?", SUBSYSTEM=="tty", \ ENV{ID_VENDOR_ID}=="12d1", \ ENV{ID_MODEL_ID}=="15b6", \ ENV{ID_USB_INTERFACE_NUM}=="00", \ SYMLINK+="huawei-E3372-0", \ ENV{REMOVE_CMD}="/bin/systemctl stop gammu-smsd.service" , \ RUN+="/bin/systemctl start gammu-smsd.service" ACTION=="add", KERNEL=="ttyUSB?", SUBSYSTEM=="tty", \ ENV{ID_VENDOR_ID}=="12d1", \ ENV{ID_MODEL_ID}=="15b6", \ ENV{ID_USB_INTERFACE_NUM}=="01", \ SYMLINK+="huawei-E3372-1" ACTION=="add", KERNEL=="ttyUSB?", SUBSYSTEM=="tty", \ ENV{ID_VENDOR_ID}=="12d1", \ ENV{ID_MODEL_ID}=="15b6", \ ENV{ID_USB_INTERFACE_NUM}=="02", \ SYMLINK+="huawei-E3372-2"
W skrócie, tworzy ona statyczne nazwy interfejsów dla modemu. One będą niezmienne i nie mają na nie wpływu ilość urządzeń oraz ich kolejność podłączania. Do tego, usługa odpowiedzialna za odbieranie/wysyłanie SMS jest startowana po podłączeniu modemu i ubijana po wyciągnięciu modemu. To zapobiega błędom w logu w przypadku, gdy usługa jest aktywna, a modemu nie ma. To też przy okazji poprawia całą konfigurację w szeregu aplikacji, jak wammu czy wvdial.
Offline
Nie czaję, po co symlinki nazywasz huawei-3372-X, [b]/dev/modemX[/b], [b]/dev/gsmX[/b] albo [b]/dev/lteX[/b] byłoby prostsze do używania,
i bardziej "ekologiczne".
Offline
[quote=Jacekalex]Nie czaję, po co symlinki nazywasz huawei-3372-X, [b]/dev/modemX[/b], [b]/dev/gsmX[/b] albo [b]/dev/lteX[/b] byłoby prostsze do używania,
[b]i bardziej "ekologiczne".[/b][/quote]
No........... Mniej pamięci!
Offline
[quote=morfik]A jakbym miał kilka tych modemów i chciał je podłączyć jednocześnie? xD[/quote]
To by ci liczba numerków poszła do góry.
Zawsze też możesz wyczarować numer portu USB, i zrobić np /dev/gsm421,
gdzie 4 i 2 to
Bus 004 Device 002:
Póki nie podłączysz więcej modemów, niż masz portów USB, problemu nie będzie. XD
Ostatnio edytowany przez Jacekalex (2016-04-10 08:59:48)
Offline
Uzależnianie nazwy od portów USB jak i po "ID" są już domyślnie zrobione w:
$ ls -al /dev/ttyUSB* crw-rw---- 1 root dialout 188, 0 2016-04-09 12:17:10 /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 1 2016-04-09 12:17:10 /dev/ttyUSB1 $ ls -al /dev/serial/by-id lrwxrwxrwx 1 root root 13 2016-04-09 12:17:10 usb-HUAWEI_MOBILE_HUAWEI_MOBILE_0123456789ABCDEF-if00-port0 -> ../../ttyUSB0 lrwxrwxrwx 1 root root 13 2016-04-09 12:17:10 usb-HUAWEI_MOBILE_HUAWEI_MOBILE_0123456789ABCDEF-if01-port0 -> ../../ttyUSB1 $ ls -al /dev/serial/by-path lrwxrwxrwx 1 root root 13 2016-04-09 12:17:10 pci-0000:00:1d.0-usb-0:1.3:1.0-port0 -> ../../ttyUSB0 lrwxrwxrwx 1 root root 13 2016-04-09 12:17:10 pci-0000:00:1d.0-usb-0:1.3:1.1-port0 -> ../../ttyUSB1
Mnie ani to ID nie satysfakcjonuje, ani tym bardziej ścieżki USB, bo te jak ulegną zmianie, to zmienia się również i nazwa. xD Ja jednak wolę swoją huawei-E3372-0. Poza tym, zawsze ktoś może sobie dać huawei0 i też będzie ok. xD
Offline
[quote=morfik]W sumie to tu nie ma za bardzo o czym pisać. xD[/quote]
jest o czym pisać, bo w faq to zastanie na wieki, a w forum utonie. gugel nie wszystko wyłapie.
Offline
Co ma wisieć, nie utonie. Ja i tak jak to forum przeszukuję, to korzystam z googla z filtrem site: , bo ta szukajka co jest na forum, to ona nigdy nic nie potrafi znaleźć. xD Tak patrzę na googla to wątek w oparciu o "sms + notyfikacje" ma 13 pozycje. A jak da się "smsd + notyfikacje", to jest pierwszy, także całkiem wysoko. xD Nie łapie za to w ogóle gammu-smsd, to zmienię lekko nazwę tematu i zacznie łapać.
Offline
[quote=morfik]Co ma wisieć, nie utonie. Ja i tak jak to forum przeszukuję, to korzystam z googla z filtrem site: , bo ta szukajka co jest na forum, to ona nigdy nic nie potrafi znaleźć. xD Tak patrzę na googla to wątek w oparciu o "sms + notyfikacje" ma 13 pozycje. A jak da się "smsd + notyfikacje", to jest pierwszy, także całkiem wysoko. xD Nie łapie za to w ogóle gammu-smsd, to zmienię lekko nazwę tematu i zacznie łapać.[/quote]
no widzisz, ty myślisz i dobrze kombinujesz, ale nie wszyscy tak robią. a rozwiązanie jest dobre i warte zapamiętania. no wiec nie leć w kule i pisz ten artykuł
Ostatnio edytowany przez rychu (2016-04-10 23:37:32)
Offline
Doszedłem do wniosku, że gammu-smsd ssie. xD Tzn. może może jest ok ale jeśli w grę wchodzą minimalistyczne rozwiązania jak OpenWRT, to gammu zwyczajnie się nie zmieści. Niby osiągnąłem wszystko co chciałem na tym oprogramowaniu ale potrzebowałem też jakiegoś sposobu, który by mi te smsy ogarnął na routerze, a ten ma tylko do dyspozycji 16M flash i ten gammu się nie chciał mi zmieścić.
Szukając rozwiązania tego problemu natrafiłem na [deb]smstools[/deb]. Co ciekawe ten pakiet jest zarówno w debianie jak i OpenWRT i bez problemu się mieści na flashu routera i jeszcze sporo luzu zostaje.
W końcu udało mi się wypracować dość ciekawe rozwiązanie implementujące wszystkie ficzery z gammu. Do tego doszło jeszcze kilka innych ciekawych rzeczy. Jak coś to tu jest [url=https://github.com/morfikov/files/blob/master/configs/etc/smsd.conf]config smsd[/url] , a tu [url=https://github.com/morfikov/files/blob/master/scripts/smstools-lte-script.sh]skrypt do smsów[/url]
W sumie to ten skrypt ma w zamiarze odcinać net jak wyłączą darmowe LTE i włączyć go ponownie jak przywrócą. No i oczywiście powiadać o tym na komórkę. xD W testach wiadomości od operatora GSM spoofowałem i wygląda, że ten mechanizm działa ale jak to będzie w praktyce to się okaże za jakieś 24 dni. xD Nie jestem pewien czy przejdzie ten kod USSD, niby powinien.
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00015 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00151 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.133.129.8' WHERE u.id=1 |
0.00065 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.133.129.8', 1732827484) |
0.00042 | SELECT * FROM punbb_online WHERE logged<1732827184 |
0.00040 | SELECT topic_id FROM punbb_posts WHERE id=300427 |
0.00005 | SELECT id FROM punbb_posts WHERE topic_id=28521 ORDER BY posted |
0.00047 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=28521 AND t.moved_to IS NULL |
0.00007 | SELECT search_for, replace_with FROM punbb_censoring |
0.00096 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=28521 ORDER BY p.id LIMIT 0,25 |
0.00078 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28521 |
Total query time: 0.0055 s |