Instalacja, konfiguracja oraz opis funkcji oprogramowania gammu w systemie z rodziny debian.

W artykuje zaprezentowana zostanie instalacja oraz konfiguracja oprogramowania do wysyłania i odbierania wiadomości sms za pomocą telefonu komórkowego lub modemu USB – gammu. Po udanej konfiguracji przejdziemy do wysyłania wiadomości sms, typowych i nietypowych.

Instalacje wykonamy na systemie z rodziny debian, Raspberry Pi OS (dawny Raspbian) zainstalowany na urządzeniu Raspberry Pi 2 model B+ oraz podłączonym modemie GSM Huaweii E3131. Urządzenie jest kompatybilne z malinką a na obecnej wersji systemu nie trzeba instalować dodatkowego oprogramowania usb_modeswitch.

Przechodzimy do instalacji gammu. Logujemy się do urządzenia Raspberry Pi przez ssh za pomocą putty z Windows, przez terminal z systemu Linux lub dowolnego innego oprogramowania. Instrukcja instalacji systemu Raspberry Pi OS za pomocą programu Raspberry Pi Imager dostępna jest tu.

Żebyśmy mieli najnowsze oprogramowanie na początek po zalogowaniu wykonujemy następujące polecenia:

sudo apt update
sudo apt upgrade
sudo reboot

Następnie przechodzimy do instalacji niezbędnego oprogramowania. Możemy zainstalować tylko niezbędne oprogramowanie za pomocą polecenia:

sudo apt install mc gammu

lub zainstalować dodatkowe oprogramowanie do wykonywania skryptów php które opisujemy na tym blogu tu.

sudo apt install mc gammu apache2 php

Przechodzimy do konfiguracji gammu. Modem USB w moim przypadku Huaweii E3131 w obecnej wersji systemu wyświetla się poprawnie, system wykrył modem jako urządzenie „Modem/Networkcard” a nie jako storage dysk. Można to sprawdzić za pomocą polecenia:

lsusb

Na starszych systemach np. Raspbian modem może pojawić się jako Storage, czyli dysk (urządzenie pamięci masowej):
Bus 001 Device 003: ID 12d1:14fe Huawei Technologies Co., Ltd. Modem (Mass Storage Mode)

Powodem tego jest slot na kartę SD w modemie E3131. W takim przypadku trzeba użyć modeswitch. W celu zainstalowania softu modeswitch wydajemy polecenia:

sudo apt-get install usb-modeswitch

Na obecnej wersji systemu to polecenie pokaże zainstalowaną najnowszą wersję tego programu. W starszej wersji systemu po poprawnym zainstalowaniu oprogramowania modeswitch zmieniamy tryb pracy modemu z „Mass Storage Mode” na „Modem/Networkcard” za pomocą polecenia:

sudo usb_modeswitch -v 0x12d1 -p 0x14fe -V 0x12d1 -P 0x140c -m 0x01 -M "55534243123456780000000000000011060000000000000000000000000000"

Powyższe polecenie może inaczej wyglądać ze względu na wersje modemu GSM.

Po wykonaniu tego polecenia, lsusb wygląda tak:

Bus 001 Device 004: ID 12d1:1c05 Huawei Technologies Co., Ltd. Broadband stick (modem on)

lub

Bus 001 Device 006: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard

Przechodzimy do konfiguracji gammu. Tworzymy plik konfiguracyjny za pomocą polecenia:

mcedit ~/.gammurc

Do utworzonego pliku wklejamy poniższą konfiguracje:

[gammu]
port = /dev/ttyUSB0
model =
connection = at19200
synchronizetime = yes
logfile =
logformat = nothing
use_locking =
gammuloc =

W powyższej konfiguracji najważniejszy jest port do którego podłączony jest modem GSM, w tym przypadku jest to port ttyUSB0.

Sprawdzić jakie porty są aktywne można za pomocą polecenia:

ls /dev/ttyUSB*

***CIEKAWOSTKA
Jeżeli korzystamy z innego systemu linuxowego np. ubuntu lub debian często zdarza się że wysyłka sms jest możliwa tylko dla użytkownika root. Aby umożliwić wysyłkę wszystkim użytkownikom wystarczy nadać odpowiednie uprawnienia do portu USB z podłączonym modemem GSM za pomocą polecenia:

sudo chmod a+rw /dev/ttyUSB0

Wysyłanie sms za pomocą gammu.

Mamy już wszystko zainstalowane oraz skonfigurowane więc czas na wysłanie pierwszej wiadomości sms. Do modemu GSM musi być włożona aktywna karta SIM z możliwością wysyłania sms. W moim przypadku jest to Plus na kartę. W celu wysłania najprostszej wiadomości sms wydajemy polecenie:

echo "WiAdOmOsC TeStOwA" |gammu sendsms TEXT 601321321

gdzie numer 601321321 jest wymyślony, w to miejsce należy podstawić numer telefonu odbiorcy.

Ważną rzeczą jest to żeby numer wpisać poprawnie jak na przykładzie powyżej. Numer telefonu w innej formie nie zostanie zrozumiany przez gammu, przez co nie zostanie wysłany sms a program zwróci błąd. Numer poprawny to 9 cyfr bez spacji. Niepoprawne formaty numerów:

  • +48601321321
  • +48 601321321
  • +48 601 321 321
  • 48601321321
  • 48 601321321
  • 48 601 321 321
  • 601 321 321

Powyższe polecenie za pomocą którego wyślemy sms o treści „WiAdOmOsC TeStOwA” możemy napisać również w takiej formie:

gammu sendsms TEXT 601321321 -text "WiAdOmOsC TeStOwA"

Jeżeli wiadomość zawiera tylko jedno słowo, nie musimy zapisywać jej pomiędzy znakami cudzysłowu ” „. Przykład:

echo WiAdOmOsC |gammu sendsms TEXT 601321321
gammu sendsms TEXT 601321321 -text WiAdOmOsC

Powyższe zaprezentowane przykłady poleceń wysyłają zwykłe standardowe wiadomości sms. Nadszedł czas na wysyłanie wiadomości specjalnych.

Standardowa wiadomość sms niestety nie może zawierać polskich znaków, jeżeli zawiera i tak zostanie wysłana w czystej postaci bez takich znaków (ąśćżółę). Gammu posiada możliwość wysłania wiadomości z polskimi znakami, jedynym minusem wysłania takiej wiadomości jest ograniczenie ilości znaków do jednego sms. Dozwolona ilość znaków w jednej wiadomości sms to 160, a w przypadku wiadomości sms z polskimi znakami to 70 znaków (co możemy obejść używając innych poleceń zaprezentowanych poniżej :) ).

Wiadomość sms z polskimi znakami wysyłamy za pomocą polecenia:

echo "WiAdOmOsC śćłąęó" |gammu sendsms TEXT 601321321 -unicode

lub drugim sposobem:

gammu sendsms TEXT 601321321 -text "WiAdOmOsC śćłąęó" -unicode

Zwykła wiadomość sms przeważnie w telefonie wyświetla się jako zamknięta koperta w którą należy kliknąć żeby wyświetlić zawartość wiadomości. Można jednak wysłać wiadomość sms flash której treść od razu zostanie wyświetlona na urządzeniu odbiorczym np. telefonie, tzw. wiadomość Class 0 SMS. W celu wysłania wiadomości flash należy wykonać polecenie:

echo "WiAdOmOsC TeStOwA" |gammu sendsms TEXT 601321321 -flash

Podmiana poprzednio wysłanej wiadomości. Wysyłamy wiadomość sms o treści „WiAdOmOsC TeStOwA 1”, a następnie wysyłamy kolejną wiadomość która zastąpi poprzednio wysłaną o innej treści np. : „WiAdOmOsC TeStOwA 2”. Pierwsze polecenie:

echo "WiAdOmOsC TeStOwA 1" |gammu sendsms TEXT 601321321 -replacemessages 1

Odbiorca otrzyma wiadomość o treści „WiAdOmOsC TeStOwA 1”. Po wykonaniu kolejnego polecenia, wiadomość sms zamieni się na urządzeniu odbiorcy na wiadomość z poniższego polecenia czyli „WiAdOmOsC TeStOwA 2” :

echo "WiAdOmOsC TeStOwA 2" |gammu sendsms TEXT 601321321 -replacemessages 1

Pierwsza wiadomość nie będzie już dostępna dla odbiorcy, na urządzeniu zostanie tylko i wyłącznie druga wiadomość.

Powyższe polecenia można łączyć, czyli wysłać wiadomość flash a następnie ją podmienić na inną za pomocą polecenia:

gammu sendsms TEXT 601321321 -text "WiAdOmOsC TeStOwA 1" -flash -replacemessages 1

a następnie podmienić za pomocą polecenia:

gammu sendsms TEXT 601321321 -text "WiAdOmOsC TeStOwA 2" -flash -replacemessages 1

W powyższych poleceniach „replacemessages 1”, 1 jest to id wiadomosci. Id pierwszej wiadomości musi zgadzać się z id drugiej wiadomości wysłanej. Jeżeli tak się nie stanie wiadomość nie zostanie podmieniona, tylko wyświetli się jako kolejna.

Wysyłanie kilku wiadomości scalonych w jedną wiadomość u odbiorcy. Możemy również wysłać wiadomość sms przekraczającą 160 znaków. Za pomocą standardowego polecenia do adresata dotrą 2 lub więcej wiadomości sms, jednak jeżeli wiadomość wysłana zawiera dużo ważnych informacji, odbiorca nie będzie czytał tylu wiadomości i uzna je za spam. Istnieje możliwość wysłania kilku wiadomości w taki sposób, żeby u odbiorcy wyświetliły się jako jedna wiadomość scalona / połączona. Możemy zrobić to za pomocą polecenia:

echo "dzien dobry, to tresc smsa bez polskich znakow zawierajaca dokladnie 160 znakow, tyle zajmuje jedna wiadomosc sms. Jezeli liczba znakow 160 zostanie przekroczona to zostana wyslane dwie lub wiecej wiadomosci sms." |gammu sendsms TEXT 601321321 -len 2

W powyższym poleceniu użyłem 212 znaków, wiadomość u odbiorcy zostanie wyświetlona jako jeden sms.

Jak widać wysyłanie wiadomości z gammu nie jest takie trudne, a co za tym idzie i jest już bardziej skomplikowane można podłączyć pod to skrypty bash lub php (równie dobrze inny język programowania) i zautomatyzować cały proces np. wysyłając wiadomość do swoich klientów z newsletterem lub informacją o nowej ofercie. W innych artykułach znajdziecie opis krok po kroku jak za pomocą gammu wysyłać wiadomości ze skryptów php link, a w naszym sklepie dostępny jest do zakupu skrypt php który wysyła takie wiadomości z listy z pliku .txt, link.

Do czego przydaje się wysyłanie wiadomości e-mail lub sms z pliku z listy ? Przykładem może być posiadanie sklepu internetowego lub innego interesu przynoszącego zyski czyli firmy. W ten sposób możemy dotrzeć do swoich klientów wysyłając im reklamę o zbliżającym się wydarzeniu, nowym produkcie itp.

Odbieranie wiadomości sms z gammu.

W celu odebrania wszystkich wiadomości sms za pomocą gammu wydajemy polecenie:

gammu getallsms

Za pomocą gammu można również wyświetlić listę folderów sms za pomocą polecenia:

gammu getsmsfolders

co nam wyświetli :

Możemy również pobrać wiadomości tylko z jednego folderu np. INBOX, w tym celu polecenie:

gammu getallsms 1

Usuwanie wiadomości sms. W celu usunięcia wszystkich wiadomości sms wydajemy polecenie:

gammu deleteallsms 1

gdzie 1 to numer folderu do usunięcia wiadomości.

Uruchomienie kodu USSD za pomocą gammu. Prosta sprawa, na stronie dostawcy numeru i karty SIM sprawdzamy krótkie kody, wydajemy polecenie:

gammu getussd '*121#

jest to kod na sprawdzenie stanu i ważności pakietów w Plus na kartę.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *