Objavljam program, napisan v Perl-u, ki s pomočjo Device::Modem modula pošlje SMS na neko številko (številko drugega modema ali mobitela). Od centrale zahteva poročilo o dostavi tega SMS-a, nato pa uporabniku sporoči, ali je SMS bil dostavljen ali ne. Rok za dostavo SMS-a je nastavljen na 5 minut.
Klicanje programa: (primeri so v navodilih spodaj)
./program $stevilka,$dev_naprava,$pin,[-f] ali sporocilo za poslat , [lokacija LOG-a (ce -f)]
Kako program sploh deluje?
1. priključi se na modem (/dev/ttyUSB0 naprimer)
2. nastavi modem:
- AT
- AT+CPIN (nastavi PIN)
- AT+CREG (poglej če si priključen na omrežje)
- AT+CSQ (poglej moč signala)
- AT+CNMI (nastavi parametre delovanja modema)
- AT+CSMS (preklopi modem v fazo 2+)
- AT+CSMP (nastavi SMS parametre)
3. izbriši pomnilnik modema
- AT^SLMS (dobi spomin MT(1), MT(2), MT(3) pomnilnikov – SMS spomin
- ali izbriši prvih 75 mest v SIM-u
- briši z AT+CMGD
4. pošlji SMS
- AT+CMGF (navaden 7-bitni tekstovni način SMS-a)
- AT+CMGS (pošlji SMS na dano številko, vpis teksta prekini z CTRL+Z)
5. čakaj največ 6 minut, v 10s korakih preverjaj nove SMS-e, nato na korak 7
6. ko novi SMS-i prispeli:
- AT+CMGL (dobi seznam novih SMS-ov)
- AT+CMGR (preberi vsak SMS posebej)
- obdelaj SMS, če je to navaden SMS, ga prezri, drugače ga obdelaj, obvesti uporabnika ter pojdi na korak 7
7. obvesti uporabnika o statusu SMS-a (glede na odgovor centrale ali pomanjkanje le-tega), odklopi modem ter se zaustavi
————————————————————————————————-
Trenutna različica programa ja 6.2.2
Povezava do perl kode: gsm_6_2_2.pl (šumniki so malo hecni
)
Dodatna navodila:
1. Parametri za program
so: [stevilka] , [/dev/...] , [pin] , [-f , pot do log datoteke] ali
[sms sporočilo]
Primer: ./gsm_6_1_2.pl +38631558798 /dev/ttyUSB0 4299 -f /tmp/abc
Primer: ./gsm_6_1_2.pl +38631338798 /dev/ttyUSB0 4299 Klemen je prevec zivcen
2. Program izpisuje tako na STDOUT kot na LOG (če je bila podana dnevniška datoteka za -f )
--> primer izpisa na
STDOUT: "./gsm_program CRITICAL Modem ni na liniji, NAPAKA"
--> primer izpisa na LOG (ce obstaja): "25/08/2011 08:22:23 OK" (prva beseda je
datum, druga ura, tretja status (OK,ERROR,WARNING) , cetrta je morebitno
poročilo o napakah)
__Primer LOG (2) : "25/08/2011 08:05:37 ERROR Napaka pri pošiljanju SMS-a (AT+CMGS): ERROR"
Če vsebina na STDOUT ni zaželjena, se ga lahko preusmeri na /dev/null , lahko pa se ga tudi
preusmeri v datoteko.
V primeru da prišlo do več napak, je vsaka napaka v novi vrstici:
./gsm_6_1.pl CRITICAL Ne vem ali sem priključen na omrežje!
Nisem prejel odgovora od modema na nastavitev faze 2+ delovanja (AT+CSMS).
Nisem prejel odgovora od modema na nastavitev SMS parametrov.
Nisem prejel odgovora od modema na zahtevo za pridobitev velikosti MT pomnilnika.
Nisem dobil odgovora na pošiljanje SMS-a (AT+CMGS)
Lahko se pa zgodi tudi, da je SMS prispel, vendar je včasih modem zamujal.
Tedaj se namesto OK pojavi WARNING.
./gsm_6_1.pl WARNING Nisem prejel odgovora od modema na zahtevo za
pridobitev velikosti MT pomnilnika.
Izvorna koda je priložena v datoteki gsm_6_2_2.pl