Własna bramka SMS

Od jakiegoś czasu chodzi mi po głowie własna bramka SMS. Daje to możliwość wysyłania SMS’ów jak i informowania mnie co się dzieje z serwerem nawet jeśli nie ma internetu. Dodatkowo można tak skonfigurować system SMS że wysyłająć specjalny SMS na naszą bramke da odpowiedź z działania skryptu.
Tyle teorii po co, a teraz zaczynamy konfigurację.

Do wysyłania SMS zastosuję modem HUAWEI E173U-2. Model ten wybrałem ponieważ współpracuję z AERO2 i w razie czego będę mógł go użyć właśnie do tego. Jeśli zastanawiasz się czy Twój model będzie współpracował zapraszam zajrzeć na stronę: wammu.eu/phones/
Kartę sim wybrałem prepaid PLAY, oczywiście każda inna się nada, aby tylko modem lub telefon nie miał blokady SIM na operatora. Ja używam karty bez PIN, i taki opis będzie. Jeśli znajdę chwilę wolną to postaram się dodać także co należy zmienić aby działało z kartą która ma włączony PIN.

Teorii tyle teraz zaczynamy działać.
Wkładamy modem do portu USB i wykonujemy lsusb, powinien pojawić się wpis z modem:

Bus 002 Device 004: ID 12d1:1436 Huawei Technologies Co., Ltd.

następnie możemy sprawdzić pod jaki port USB podpięty jest modem:

$dmesg
...
USB Serial support registered for GSM modem (1-port)
option 2-2:1.0: GSM modem (1-port) converter detected
usb 2-2: GSM modem (1-port) converter now attached to ttyUSB1
option 2-2:1.3: GSM modem (1-port) converter detected
usb 2-2: GSM modem (1-port) converter now attached to ttyUSB2
option 2-2:1.4: GSM modem (1-port) converter detected
usb 2-2: GSM modem (1-port) converter now attached to ttyUSB3
usbcore: registered new interface driver option
option: v0.7.2:USB Driver for GSM modems
...

jeśli nie mamy podobnych wpisów to znaczy że modem jest podłączony jako dysk, wtedy należy zmienić mu idVendor, ja do tego używam usb_modeswitch, dzięki temu automatycznie wszystko ładnie się podnosi. Nie opisuje tutaj tego ponieważ w moim systemie już to wszystko zadziałało, gdyż miałem zainstalowanego usb_modeswitch.

inny sposób na sprawdzenie podłączenia to:

$ls -l /dev/ttyU*
crw-rw---T 1 root dialout 188, 0 sty 8 08:01 /dev/ttyUSB0
crw-rw---T 1 root dialout 188, 1 sty 4 14:16 /dev/ttyUSB1
crw-rw---T 1 root dialout 188, 2 sty 7 10:53 /dev/ttyUSB2
crw-rw---T 1 root dialout 188, 3 sty 11 11:24 /dev/ttyUSB3

następny krok to instalacja programu do obsługi z konsoli:

$apt-get install gammu

Teraz możemy już sprawdzić podłączenie poprzez gammu:

$gammu-detect
; Configuration file generated by gammu-detect.
; Please check The Gammu Manual for more information.

[gammu]
device = /dev/ttyUSB0
name = Phone on USB serial port FTDI USB__-__Serial
connection = at

[gammu1]
device = /dev/ttyUSB1
name = Phone on USB serial port HUAWEI_Technology HUAWEI_Mobile
connection = at

[gammu2]
device = /dev/ttyUSB2
name = Phone on USB serial port HUAWEI_Technology HUAWEI_Mobile
connection = at

[gammu3]
device = /dev/ttyUSB3
name = Phone on USB serial port HUAWEI_Technology HUAWEI_Mobile
connection = at

[gammu4]
device = /dev/ttyS1
name = Phone on serial port 1
connection = at

[gammu5]
device = /dev/ttyS2
name = Phone on serial port 2
connection = at

[gammu6]
device = /dev/ttyS3
name = Phone on serial port 3
connection = at

Do poprawnego działa potrzebuję pliku konfiguracyjnego w

$cat ~/.gammurc
[gammu]

port = /dev/ttyUSB1
model = E173
connection = at115200
synchronizetime = yes
logfile =
logformat = nothing
use_locking =
gammuloc =

Sprawdźmy informację o modemie:

$gammu identify
Urządzenie : /dev/ttyUSB3
Manufacturer : Huawei
Model : E173 (E173)
Firmware : 11.126.85.02.52
IMEI : 867749013402619
SIM IMSI : 260060062882054

A co jeśli nie mamy pliku konfiguracuyjnego:

$gammu identify
Warning: No configuration file found!
Ostrzeżenie: No configuration read, using builtin defaults!
Error opening device, it doesn't exist.

Teraz możemy wysłać pierwszego SMS:

$echo "testowy sms" |gammu sendsms TEXT 123456789
If you want break, press Ctrl+C...
Sending SMS 1/1....waiting for network answer
..OK, message reference=13

No i po kilku sekundach mam na telefonie SMS od swojej bramki.
Daję odpowiedź na telefonie i sprawdzimy czy mogę odbierać:

$gammu getallsms
Location 1, folder "Skrzynka odbiorcza", SIM memory, Inbox folder
SMS message
SMSC number : "+48790998250"
Sent : pon, 13 sty 2014, 11:24:25 +0100
Coding : Default GSM alphabet (no compression)
Remote number : "+48123456789"
Status : UnRead

Odp.

Teraz trzeba by było jakiś automat. Wybrałem do tego gammu-smsd.

$apt-get install gammu-smsd

Utworzyć bazę pod system i załadować strukturę bazy:
/usr/share/doc/gammu-smsd/examples/mysql.sql.gz

Po czym konfiguruję program:

$cat /etc/gammu-smsdrc
[gammu]
port = /dev/ttyUSB1
model = E173
connection = at115200
logformat = textall

[smsd]
CommTimeout = 5
ReceiveFrequency = 5
service = sql
driver = native_mysql
user = Uzytkownik_DB
password = Haslo_DB
pc = Host_DB
database = Nazwa_DB
logformat = textall
logfile = /var/log/gammu-smsd/gammu-smsd.log
deliveryreport = log
# Increase for debugging information
debuglevel = 0

No i można uruchomić demona:
$/etc/init.d/gammu-smsd start

Jak wszystko mamy poprawnie skonfigurowane to można się już cieszyć własną bramką SMS.

Wysłanie SMS poprzez gammu-smsd to:

mysql> INSERT INTO outbox (DestinationNumber, TextDecoded) VALUES ('+48123123123','testowy smsik');

Aby jednak nie łączyć się za każdym razem do bazy to dobrze by było mieć jakiś interfejs. Tutaj mamy do kilka propozycji, ja wybrałem kalkun.

instalacja polega na:
1) Wybór domeny
2) Konfiguracja domeny
3) Pobranie źródła ze strony powyżej.
4) Rozpakowanie
5) Konfiguracja połączenia do bazy, baza ta sama co do gammu-smsd
6) Wejście na domenę jaką wybraliśmy dla naszego Kalkun
7) Konfiguracja poprzez WEB
8) Wykasowanie katalogu install
9) Zalogowanie się do Kalkun, default login: kalkun, hasło kalkun
10) Ja zmieniłem wielkość przechowywanych danych o użytkoniku na bazie danych user-> username z 12 na 50, wtedy standardoow wszytskie SMS będzie można podpisywać własnym imieniem i nazwikiem.
11) Zmiana loginu i hasła
12) doipsanie do /etc/gammu-smsdrc w [smsd] zmiannej:
runonreceive = /SCIEZKA_DO_KALKUN/scripts/daemon.sh
13) edytowanie /SCIEZKA_DO_KALKUN/scripts/daemon.sh i konfiguracja zmiennej DAEMON
15) edytowanie /SCIEZKA_DO_KALKUN/scripts/daemon.php i konfiguracja zmiennej $url
16) resatrt gammu-smsd /etc/init.d/gammu-smsd restart

Można cieszyć się własną bramką SMS