Automatic SMS sender -> gammu + usb modem + Raspberry Pi

Iata  ca de sarbatori vine si necesitatea de a trimite prietenilor, cunostintelor sau familiei SMS-uri

elaborate sau nu, oricum continatoare de mesaje si urari de bine.

Pentru o lista de X  (a se citi peste 20 ) recipienti operatiunea devine destul de laborioasa si cumva complicata.

Cel mai simplu ar fi exportarea contactelor dorite din smartphone intr-un fisier CSV ( e plin de astfel de aplicatii ),  editarea unei liste

pe baza acestor contacte ( parteneri de afaceri, colegi, familie, rude, etc ) si livrarea mesajului in consecinta.

Personal am ajuns la o solutie tehnica ieftina, rapida si incredibil de la indemana : RaspberryPi ( sau linux computer ) + usb modem ( cat mai comun ) + cartela GSM valida.

Pasi :

1. Se exporta si se creeaza un fisier CSV cu nume / numerele dorite . De ce CSV ? E usor de prelucrat in WIN / Linux si necesara pentru a pastra o corelare nume – numar de telefon.

2. Se prelucreaza lista astfel obtinuta in Linux.

3. Se utilizeaza gammu ca si utilitar pentru trimiterea de SMS-uri. Personal prefer sa fac un script in care sa rafinez optinile si textul de trimis ca mai apoi sa execut cap-coada totul

pentru toata lista de destinatari.

4. Salvarea log-ului pentru eventuale comparari / referinte in viitor ( de multe ori e bine sa stii cand si cui ai trimis mesaje ca sa nu incurci lucruririle sau sa sicanezi prim mesaje repetate ).

 

Teoria fiind prezentata, trecem la pasii efectivi :

1. Instalarea utilitarului GAMMu

sudo apt-get install gammu

2. Conectarea unui modem usb la RaspPi. Pe piata sunt multe modemuri ce functioneaza nativ,  fara instalare expresa.  Ce este totusi foarte important de retinut

este ca de multe ori aceste modemuri sunt de putere mare, deci un USB powered hub serios, de macara 1000 mA e absolut necesar.

Ca si hardware, pesonal folosesc un HUAWEI E220. ( http://www.okazii.ro/cautare/huawei+e220.html?fuzzy=0&autoc=write )

Am testat cu succes si acest produs ( chipset Intel,  500 mW – 2 W, antena telescopica, old school ) http://www.okazii.ro/componente-computere/modem/gprs-modem-usb-simcom-100-nou-115-2kbps-retail-a133221648 .

In primul rand, daca este definit un cod PIN, e necesara introducerea acestuia :

root@daisypi:/daisypi/exec/sms_modem#gammu entersecuritycode PIN 1234

alfel, acest pas se poate ignora.

Cel mai simplu mod de a verifica ca totul e  instalat si in ordine :

root@daisypi:/daisypi/exec/sms_modem# gammu identify

Device : /dev/ttyUSB0
Manufacturer : Huawei
Model : E220 (E220)
Firmware : 11.117.10.03.99
IMEI : 3589540xxxxxxx
SIM IMSI : 2261xxxxxxxxxx

Un alt lucru usor de verificat este lista de SMS-uri salvate pe cartela prin comanda :

root@daisypi:/daisypi/exec/sms_modem#gammu getallsms

3. Prelucrarea listei de contacte CSV. In urmatoarele, voi presupune ca lista e creata in WIN, de tipul

Nume, Telefon

de forma

Ion, 742xxxxxx

Vasile,732xxxxxx

Fisierul existent este copiat pe RapsPi ( WinSCP e un utilitar excelent pentru acest lucrur ce permite chiar editarea on-the-fly a fisierelor linux ).

Mai intai se formateaza fisierul :

root@daisypi:/daisypi/exec/sms_modem#dos2unix lista_contacte.csv

Daca utilitarul dos2unix nu este instalat, atunci : sudo apt-get install dos2unix

Prelucram automat lista, creand o noua lista, intr-un nou fisier ce va contine doar numerele de telefon.

Acest lucru se poate face dinamic, oricand, folosind ca si lista sursa lista_contacte.csv nou copiata si formatata :

cat lista_contacte.csv | sed ‘s/ /_/g’ | sed ‘s/\,/ /g’ | awk ‘{print “0″ $2}’ | sort | uniq > lista_prieteni_urari_prelucrata.txt

daca numerele de telefon din lista deja contin “0″ ca si prefix standard, atunci comanda va arata astfel :

cat lista_contacte.csv | sed ‘s/ /_/g’ | sed ‘s/\,/ /g’ | awk ‘{print $2}’ | sort | uniq > lista_prieteni_urari_prelucrata.txt

4.  Prin folosirea repetata a comenzii gammu se trimite cate un sms fiecarui numar de telefon din lista :

sudo echo “Mesaj de trimis” | /usr/bin/gammu –sendsms TEXT numar_telefon

sau urmatorul script in BASH :

( De retinut ca mesajele pot avea maxim 160 de caractere ! )

#!/bin/sh

a=0

while read line
do

a=$(($a+1));
echo “—–”
echo $a $line;
sudo echo “Mesaj de trimis” | /usr/bin/gammu –sendsms TEXT $line
echo “=====”

done < “lista_prieteni_urari_prelucrata.txt”
echo “Final line count is: $a”;

Succes si atentie sporita la mesajele transmise . In cateva minute zeci de mesaje vor ajunge la prieteni prin acest script,  asadar

textul trebuie scris corect, concis si la obiect.

 

Adresa repository pe GITHUB :

 

https://github.com/DaisyPi/daisypi/tree/master/exec/sms_modem

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>