Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
IMPLEMENTACIÓ D'UNA LLIBRERIA PER
ENVIAR MISSATGES D'ALARMA I ENVIAR
FITXERS PER INTERNET.
TITULACIÓ: Enginyeria Tècnica Industrial Especialitat Electrònica Industrial
AUTOR: Jordi Gonzalez Muñoz
DIRECTOR: Xavier Vilanova Salas
DATA: Juny / 2008
1. Índex.
1.1. Índex general.
1. Índex...................................................................................................................................21.1. Índex general...............................................................................................................21.2. Índex de figures...........................................................................................................3
2. Introducció..........................................................................................................................52.1. Antecedents.................................................................................................................52.2. Objectius del projecte..................................................................................................5
3. Memòria descriptiva............................................................................................................63.1. Anàlisis de requeriments..............................................................................................63.2. Possibles solucions i solució adoptada.........................................................................7
3.2.1. Mòdem.................................................................................................................73.2.2. Portabilitat...........................................................................................................83.2.3. Connexió remota..................................................................................................9
3.3. Descripció..................................................................................................................113.3.1. Tipus de programa idonis per utilitzar aquesta llibreria......................................113.3.2. Introducció funcional de la llibreria...................................................................133.3.3. Avís d'alarmes mitjançant SMS..........................................................................133.3.4. Ordres de control mitjançant SMS.....................................................................153.3.5. Enviament de fitxers a un servidor d'Internet.....................................................163.3.6. Connexió remota................................................................................................163.3.7. Fitxers de configuració de la llibreria.................................................................17
3.4. Funcions de la llibreria..............................................................................................183.4.1. Estructura de les funcions de la llibreria............................................................183.4.2. Inicialització de la llibreria: init_sms()...............................................................203.4.3. La funció update_msg().....................................................................................213.4.4. Funció handler_rs232()......................................................................................233.4.5. Enviament de fitxers per FTP.............................................................................25
3.4.5.1. Funció send_file_FTP()..............................................................................263.4.6. Funció management_alarm().............................................................................273.4.7. Funció action_sms()...........................................................................................303.4.8. Connexió i desconnexió d'Internet.....................................................................34
3.4.8.1. Funció connect_isp()..................................................................................343.4.8.2. Funció disconnect_isp().............................................................................35
3.4.9. Enviament i recepció de missatges SMS............................................................363.4.9.1. Funció send_sms_AT()...............................................................................373.4.9.2. Funció read_sms_AT()...............................................................................38
3.4.10. Configuració del port sèrie...............................................................................403.4.10.1. Funcións set_modem() i reset_modem()..................................................40
4. Pressupost.........................................................................................................................414.1. Amidaments................................................................................................................41
4.1.1. Software.............................................................................................................414.1.2. Hardware...........................................................................................................41
4.2. Preus unitaris.............................................................................................................424.2.1. Software.............................................................................................................424.2.2. Hardware...........................................................................................................42
2
4.3. Pressupost general.....................................................................................................424.3.1. Software.............................................................................................................424.3.2. Hardware...........................................................................................................424.3.3. Pressupost d'execució material...........................................................................43
5. Annexes.............................................................................................................................435.1. Instal·lació de la llibreria...........................................................................................435.2. Configuració de la connexió a Internet......................................................................445.3. Pàgines del programador............................................................................................455.4. P.O.S.I.X....................................................................................................................495.5. Programes que han ajudat a desenvolupar la llibreria................................................505.6. Bibliografia................................................................................................................51
1.2. Índex de figures.
Figura 1: Modem GPRS..........................................................................................................8Figura 2: cygwin.....................................................................................................................9Figura 3: Control remot.........................................................................................................10Figura 4: Diagrama de flux simplificat d'un programa idoni per utilitzar la llibreria.............11Figura 5: Diagrama de flux simplificat d'un programa idoni utilitzant la llibreria.................12Figura 6: Sistema d'avís d'alarmes.........................................................................................14Figura 7: Ordres de control...................................................................................................15Figura 8: Enviament de fitxers per Internet...........................................................................16Figura 9: Estructura de les funcions de la llibreria................................................................19Figura 10: Diagrama de flux de la funció init_sms().............................................................20Figura 11: Diagrama de flux de la funció update_msg()........................................................22Figura 12: Diagrama de flux de la funció handler_rs232.......................................................25Figura 13: Diagrama de flux send_file_ftp().........................................................................26Figura 14: Diagrama de flux general de management_alarm()..............................................27Figura 15: Diagrama de flux management_alarm() enviant SMS..........................................28Figura 16: Diagrama de flux management_alarm() rebent SMS...........................................29Figura 17: Diagrama de flux management_alarm() alarma desactivada................................30Figura 18: Diagrama de flux general de la funció action_sms()............................................31Figura 19: Diagrama de flux de la funció action_sms() apagar o reiniciar PC......................32Figura 20: Diagrama de flux de la funció action_sms() enviant averia solucionada..............32Figura 21: Diagrama de flux de la funció action_sms() control remot..................................33Figura 22: Diagrama de flux de la funció connect_isp()........................................................35Figura 23: Diagrama de flux de la funció disconnect_isp()...................................................36Figura 24: Diagrama de flux de la funció send_sms_AT()....................................................38Figura 25: Diagrama de flux de la funció send_sms_AT()....................................................39Figura 26: Diagram de flux de les funcions set_modem() i reset_modem()..........................41
3
Agraïments:
A Xavier Vilanova per la confiança dipositada en mi per desenvolupar aquest
projecte.
A Nicolau Canyellas per la seva ajuda inicial en la realització d'aquest projecte.
A Raul Calavia tant per l'ajuda en la documentació d'aquest informe com en el
disseny de l'algoritme.
A Roser Inglés pel suport rebut durant aquest projecte.
A Maripaz Belanche per l'ajuda rebuda en la correcció ortogràfica d'aquest informe.
A la meva família pel suport rebut durant aquest projecte.
A totes aquelles persones que realitzen documents tècnics i els pengen gratuïtament a
Internet.
A totes aquelles persones que realitzen software lliure.
4
2. Introducció.
2.1. Antecedents.
La Universitat Rovira i Virgili està treballant en diferents vies de recerca. Una d'elles
és el reconeixement de contaminants en el CO2 mitjançant sensors de gasos. El sector
industrial, interessat pels resultats de les seves investigacions, ha encarregat diferents equips
per la detecció de contaminants que s'instal·laran en naus industrials .
Tots els equips que s'han desenvolupat, formats bàsicament per sensors, un ordinador
i un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de
l'ordinador. El sector industrial demana que aquests equips siguin capaços d'avisar en temps
real de la detecció del contaminant detectat. Per aquest motiu, s'ha d' afegir un sistema d'avís
d'alarmes mitjançant missatges SMS. Aquest sistema ha d'enviar missatges SMS d'alarma a
diferents telèfons mòbils fins que algun d'aquests respongui amb un altre missatge SMS,
notificant que l'alarma ha estat rebuda. Per una altra banda, el sector industrial també vol
tenir un històric dels resultats de les deteccions de contaminants sense haver d'accedir als
equips. Per aquest motiu, es vol que el fitxer resultant de la detecció s'enviïn a un servidor
d'Internet.
Com es pot veure, es necessita un programa genèric que s'adapti fàcilment als
programes ja realitzats. Aquests programes, a dia d'avui, funcionen amb el sistema operatiu
Linux. No obstant, en un futur es poden realitzar programes amb Windows. El programa que
es vol desenvolupar en aquest projecte s' inclourà, principalment, en programes per la
detecció de contaminants en el CO2, malgrat tot, el seu ús pot ser molt interessant en
qualsevol altre programa, ja sigui un programa d'us industrial o d'ús domèstic, com seria el
cas de la domòtica, etc...
2.2. Objectius del projecte
Els objectius del programa genèric que s'ha de realitzar es detallen a continuació:
1. Enviar un fitxer periòdicament a un servidor d' Internet.
5
2. Crear un sistema d'avís d'alarmes mitjançant missatges SMS. Aquests sistema
bàsicament ha d'enviar missatges SMS quan es detecti una situació d'alarma o de
perill a diferents telèfons mòbils. Aquest sistema també s'haurà d'assegurar que el
missatge SMS ha sigut rebut correctament.
3. Acceptar ordres mitjançant SMS amb la finalitat de controlar els equips informàtics.
Aquestes ordres han de ser fàcilment modificables i/o ampliables per adaptar-les a
cada situació.
4. Permetre connexions remotes. Això permetrà solucionar problemes i/o realitzar un
manteniment de l'equip a distància sense la necessitat de desplaçar-se, reduint així, el
cost que suposa aquests desplaçaments.
5. Facilitar la integració amb altres programes.
6. Portabilitat. Aquest programa primordialment ha de funcionar amb Linux, però s'ha
de deixar oberta la possibilitat d'utilitzar en un futur el sistema operatiu Windows.
7. Fàcil configuració.
8. Generar fitxers per informar de l'estat del programa. Aquests fitxers serviran per
detectar possibles errors i/o mal ús dels usuaris.
3. Memòria descriptiva
3.1. Anàlisis de requeriments
En aquest apartat es descriurà quins requisits s'han de tenir en compte per tal de
complir els objectius del projecte.
Un dels objectius a realitzar és desenvolupar unes funcions genèriques que sigui
fàcilment adaptable a altres programes. Una solució és empaquetar aquestes funcions a una
llibreria. Amb aquest mètode es tindrà totes les funcionalitats que donarà la llibreria en un
fitxer, el qual, es podrà incloure amb molta facilitat en altres programes informàtics.
La llibreria que es vol realitzar haurà d'enviar i rebre missatges SMS i també enviar
fitxers per Internet, per tant, és necessari un mòdem. Degut a què l'equip informàtic estarà
situat en naus industrial on no hi haurà ni endoll de línia telefònica ni tampoc un endoll de
xarxa, és necessari que aquest mòdem disposi d'una connexió sense fils GPRS.
6
Com s'ha comentat, la llibreria ha d'enviar fitxers a un servidor d'Internet. Per aquest
motiu, es fa necessari que l'equip estableixi una connexió amb un proveïdor d'Internet i
aquest donarà l'accés a Internet.
Una altre requeriment a tenir en compte és que la llibreria ha de ser capaç de rebre
connexions remotes. Per realitzar aquesta tasca s'utilitzarà un programa addicional ja que
això reduirà el temps de desenvolupament d'aquest projecte.
S' intentarà que la llibreria a desenvolupar sigui funcional amb Linux i amb
Windows. Si es vol aconseguir aquest objectiu, la llibreria haurà d'utilitzar funcions basades
en algun estàndard.
3.2. Possibles solucions i solució adoptada
En aquest apartat es descriurà quins elements externs a la llibreria es requereixen per
tal que la llibreria realitzi els objectius d'aquests projecte. A més a més, es detallaran les
possibles solucions existents actualment i quines s'han triat finalment.
3.2.1. Mòdem.
Com s'ha comentat, l'equip ha de disposar d'un mòdem amb connexió sense fils
GPRS i ha de complir amb els següents requisits:
1. Connexió l'equip informàtic mitjançant USB o RS232 perquè aquests estan presents
en la gran majoria d'ordinadors actuals.
2. Enviar i rebre missatges SMS.
3. Baix cost.
Inicialment es va plantejar la possibilitat d'utilitzar un telèfon mòbil en lloc d'un
mòdem ja que el telèfon mòbil compleix amb els requisits anteriorment comentats. Malgrat
tot, l' enviament i recepció de missatges SMS i la configuració per la connexió a Internet
varia bastant en funció de la marca i/o model. Pel contrari, al mercat existeixen uns mòdem
enfocats a la indústria on l' enviament i recepció de missatges SMS i la configuració per la
7
connexió a Internet estan molt més estandaritzats.
Finalment, el mòdem escollit ha estat el mòdem industrial Siemens MC35i. Aquest
mòdem té una antena molt sensible que emet a una potència molt superior als telèfons
mòbils. A més a més, aquest mòdem és molt econòmic.
Figura 1: Modem GPRS
Com s'ha anat comentant, aquest mòdem haurà d'enviar i rebre missatges SMS i
enviar fitxers a un servidor d'Internet. Per tant, tenim tres tasques, les quals s'han de realitzar
amb un sol mòdem. A més a més, amb aquest mòdem no es pot mantenir simultàniament la
connexió a Internet mentre s'envia o es rep un missatge SMS, en conseqüència, la llibreria
haurà de gestionar la utilització del mòdem per realitzar aquestes tasques.
Per una altra banda, la llibreria ha d'enviar fitxers a un servidor d'Internet, per tant
aquesta, mitjançant el mòdem, ha d'establir una connexió amb el proveïdor d'Internet. Per
simplificar tot el procés de connexió a Internet, s'ha optat que aquesta tasca la realitzi un
programa extern a la llibreria anomenat “pppd”.
3.2.2. Portabilitat
La llibreria que es vol crear ha de funcionar primordialment amb Linux, però hem de
deixar oberta la possibilitat d'utilitzar Windows.
Actualment, existeix un estàndard anomenat P.O.S.I.X. (portable operating system)
que garantitza que un programa funcioni amb una sèrie de sistemes operatius com: QNX,
BSD, MacOSX, etc. Per fer que un programa basat en l'estàndard P.O.S.I.X. funcioni amb
Windows és necessari un programa addicional anomenat “cygwin”, el qual, es pot
descarregar gratuïtament des d'Internet. A continuació es mostra una figura esquemàtica del
8
funcionament del programa cygwin.
Malgrat tot, fer un programa basat exclusivament en l'estàndard P.O.S.I.X. no és
possible ja que hi ha algunes funcions no contemplades en aquest estàndard. Aquest projecte
ha de fer que la llibreria sigui funcional amb Linux i si en un futur es volgués fer-la cent per
cent compatible amb Windows s'haurien de fer unes modificacions molt senzilles.
3.2.3. Connexió remota
Com s'ha comentat, per realitzar el control remot s'utilitzarà un programa extern.
La utilitat principal de la connexió remota és realitzar un manteniment i/o solucionar
problemes a l'equip informàtic a distància, per tant, el programa de control remot desitjat és
aquell que permeti un control absolut de l'equip. Degut a aquest tipus de control que es
desitja és important que les dades transferides durant el procés de la connexió remota
estiguin encriptades.
Aquest programa de control remot s'intentarà que sigui gratuït ja que així
9
Figura 2: cygwin.
s'aconseguirà reduir el cost d'aquest projecte. També s'intentarà que el programa tingui
versions disponibles per a Windows per així aconseguir que la llibreria funcioni amb aquest
sistema operatiu.
El programa de control remot que es pot escollir es el “OpenSSH”. Un altre bon
candidat podria ser la versió gratuïta del VNC, però la encriptació que ofereix “OpenSSH”
és una de les més segures que existeixen a la actualitat.
Per una altra banda, per establir una connexió remota amb l'equip s'ha trobat un
mètode molt genèric que permetrà al personal de manteniment realitzar aquesta tasca sense
complicacions. A continuació es mostra el procés a realitzar per establir una connexió
remota:
10
Figura 3: Control remot
Equip informàticque es vol controlarremotament
Personal de manteniment
1. Petició de
connexió remota a través d'un missatge SMS.
2. Enviament de l'adreça d' Internet (la IP).
3. S'obté l'adreça
d'Internet de l'equip a controlar remotament
4. S'inicia la
connexió remota
3.3. Descripció.
3.3.1. Tipus de programa idonis per utilitzar aquesta llibreria.
Com s'ha comentat aquesta llibreria pretén que serveixi per un gran ventall de
programes que detectin situacions d'alarma, per exemple la detecció d'un contaminant
perillós, i desitgin notificar aquesta alarma mitjançant missatges SMS i/o mitjançant fitxers
enviats a un servidor d'Internet. Degut al fet que la llibreria s'incorporarà a altres programes
s'ha de crear fitxers de configuració que permetin aquesta incorporació i/o adaptabilitat amb
molta facilitat. A continuació es mostra un diagrama de flux simplificat d'aquests tipus de
programes:
La gran majoria de programes que detecten alguna situació d'alarma solen guardar el
resultat de la detecció d'alarmes en un fitxer. Doncs bé, l'objectiu d'aquesta llibreria és
facilitar a aquests programes d'unes noves funcions que permetin notificar aquestes alarmes
per missatges SMS o mitjançant fitxers enviats a un servidor d'Internet. Per una altra banda,
aquests programes moltes vegades necessiten un manteniment i/o solucionar problemes i, per
aquest motiu, és interessant poder realitzar aquestes tasques remotament.
11
Figura 4: Diagrama de flux simplificat d'unprograma idoni per utilitzar la llibreria
Programa idoniper utilitzar aquesta
libreria
Crida a lafunció detectar_alarmes()(Aquesta funció detecta alarmes)
Les deteccions de les alarmes son guardades
en un fitxer
Arribats a aquest punt, ja s'ha vist per quin tipus de programes serà útil aquesta
llibreria. Llavors un requisit molt important és que la llibreria sigui molt fàcil d'utilitzar per
aquests tipus programes i que no impliquin gaires modificacions en aquests. Per aquest
motiu, es proposa que els programes que vulguin utilitzar aquesta llibreria simplement hagin
de modificar el seu diagrama de flux com el que es mostra a continuació:
12
Figura 5: Diagrama de flux simplificat d'un programa idoni utilitzant la llibreria
El Programa idoniutilitzant aquesta
libreria
Crida a lafunció detectar_alarmes()
Alarma detectada
Crida a una funció encarregadad'enviar missatges SMS informant
del perill detectat
Les deteccions de les alarmes son guardades
en un fitxer
SI
NO
Crida a una funció encarregada deNO enviar missatges SMS
Crida a una funció encarregadad'inicialitzar la llibreria
A gran trets, la llibreria únicament enviarà missatges SMS quan els programes ho
sol·licitin (quan detectin una situació d'alarma i desitgin notificar-ho). Per una altra banda, la
llibreria haurà d'enviar automàticament a un servidor d'Internet el fitxer que genera el
programa amb el resultats de les deteccions d'alarmes.
3.3.2. Introducció funcional de la llibreria.
Un dels objectius principals d'aquest projecte és desenvolupar tot un sistema
d'entrega de missatges d'alarma mitjançant SMS. La funcionalitat d'aquest sistema és enviar
missatges SMS. Per una altra banda, amb la finalitat d'assegurar-se que els missatges SMS
son notificats correctament, s'ha optat perquè la persona que ha rebut aquest missatge
contesti amb un altre missatge SMS notificant que ha rebut el missatge d'alarma (missatge
d'acknowledge). En el cas que aquest no rebi el missatge d'acknowledge, el missatge
d'alarma s'enviarà a una altre telèfon mòbil registrat en un fitxer de configuració. Aquest
fitxer de configuració farà la funció d'agenda de telèfons. El funcionament del sistema
d'entrega de missatges d'alarma serà explicat a continuació, en el apartat 3.3.3.
Un altre objectiu és que s'han de rebre missatges SMS, ja sigui per que s'està esperant
un missatge d'acknowledge o perquè els usuaris vulguin enviar un missatge de control a
l'equip mitjançant SMS.
L'últim objectiu és enviar un fitxer periòdicament a un servidor d'Internet. Per
realitzar aquesta tasca s'ha d'utilitzar un mecanisme que estigui molt estandarditzat a
Internet. Per aquest motiu, com a mecanisme d'enviament de fitxers per Internet s'ha
d'utilitzar el FTP (file transfer protocol).
3.3.3. Avís d'alarmes mitjançant SMS.
Quant a l'equip es produeixi una alarma, s'ha de enviar un missatge d'alarma al
primer telèfon mòbil de l'agenda. Si durant un temps no es rep un missatge d'acknowledge,
s'ha de tornar a enviar el mateix missatge d'alarma al següent telèfon mòbil de l'agenda.
Aquests procés s'ha de repetir fins que algun telèfon mòbil de la agenda respongui mitjançant
un missatge acknowledge. Un cop rebut aquest missatge d'acknowledge, s'ha d'interpretar
que l'alarma ja ha estat notificada i no ha de tornar a enviar cap més missatge d'alarma. En el
13
cas de que ningú respongui amb un missatge acknowledge, l'enviament de missatges SMS
es cancel·larà. A continuació es mostra gràficament el procés comentat:
Cada missatge d'alarma ha de tenir un identificador. Aquest identificador s'utilitzarà
en el missatge d'acknowledge per tenir la certesa de que el missatge d'alarma ha estat
notificat correctament. Per una altra banda, els missatges SMS a vegades no s'envien
instantàniament. Per tant, en el missatge d'alarma s'ha d'indicar l'hora en la que s'ha produït
l'alarma. Com a conclusió, en el missatge d'alarma s'ha d'incloure la següent informació:
Identificador: és un nombre que identifica el missatge.
Missatge d'alarma: Es el missatge que rebrà el telèfon mòbil.
Data: Indicarà la data a la qual s'ha produït la alarma.
Si durant l'enviament d'un missatge d'alarma, es desactiva l'alarma, la llibreria ho ha
de detectar i ha d'enviar un missatge informant que l'alarma s'ha desactivat.
14
Figura 6: Sistema d'avís d'alarmes
Missatge d'alarma
No ha contestat
Missatge d'acknowlege
Missatge d'alarma
Agenda detelèfons
3.3.4. Ordres de control mitjançant SMS.
La llibreria ha de ser capaç de rebre missatges SMS. Aquests missatges rebuts podran
ser un missatge d'acknowledge o bé un missatges de control. Els missatges de control han de
ser processats per la llibreria.
Les ordres de control que s'han habilitat són: apagar o reiniciar l'equip informàtic,
saber l'estat del programa (encès o parat) i activar la connexió remota. En el cas de que es
rebi una ordre desconeguda, la llibreria ha d'enviar un missatge SMS informant que l'ordre
rebuda es incorrecte.
15
Figura 7: Ordres de control
Agenda detelèfons
MOBIL 1Lectura de missatgestemporitzats
1. Missatges d'acknowlege
2. Apagar o reiniciar el PC
3. Estat correcte de funcionament
4. Control remot
Està al'agenda
El missatge s'esborra
No està a l'agenda
3.3.5. Enviament de fitxers a un servidor d'Internet.
La llibreria ha de ser capaç d'enviar un fitxer generat per el programa que utilitza
aquesta llibreria. A més a més aquest fitxer s'ha d'enviar per FTP periòdicament al mateix
servidor d'Internet. La periodicitat de l'enviament del fitxer s'ha de poder fixar en un fitxer de
configuració ja que així el programa podrà fixar el temps entre fitxers enviats al servidor.
Es possible que, depén de cada programa que utilitzi aquesta llibreria, el servidor de
FTP canviï, per aquest motiu, s'ha de crear un fitxer específic on contindrà el nom del
servidor i les dades necessàries per connectar-se a aquest servidor (login i password).
Abans d'enviar el fitxer per FTP és necessari connectar-se a Internet. La llibreria ha
de fer una crida al programa “pppd” encarregat de connectar-se a Internet. Un cop la llibreria
s'hagi connectat a Internet es començarà l'enviament del fitxer al servidor de FTP. Durant el
procés d'enviament del fitxer per FTP, l'enviament i recepció de missatges SMS s'ha de
quedar inhabilitat ja que el mòdem no pot realitzar simultàniament totes aquestes tasques.
3.3.6. Connexió remota.
La connexió remota amb l'equip es realitza per Internet. El personal de manteniment
que desitgi un control remot de l'equip necessita conèixer l'adreça d'Internet, la IP, de l'equip.
Aquest equip cada vegada que es connecta a Internet, el proveïdor, li facilita una IP diferent.
Per aquest motiu, quant la llibreria rebi un missatge SMS informant que es vol realitzar el
control remot, s'ha de connectar a Internet i enviar la IP obtinguda al servidor de FTP.
D'aquesta manera el personal de manteniment únicament connectant-se al servidor de FTP
16
Figura 8: Enviament de fitxers per Internet
Connexió a Internetmitjançant el pppd
Servidor de F.T.P.
podrà conèixer la IP de l'equip i iniciar el control remot.
Un cop enviada la IP al servidor de FTP, la llibreria ha d'activar el control remot
mitjançant el programa “OpenSSH”.
3.3.7. Fitxers de configuració de la llibreria.
Per adaptar la llibreria al programa que la utilitzarà s'han creat tres fitxers de
configuració.
Un fitxer de configuració és el comentat en l'apartat 3.3.5. el qual fa referència al
servidor de FTP. Aquest fitxer únicament contindrà el nom del servidor i el login i password
requerits per enviar el fitxer per Internet. Aquest fitxer s'anomena “ftp.conf”. El format
d'aquest fitxer es mostra a continuació:
ftp.urv.esanonymous
3123
S'ha creat fitxer on hi haurà el temps desitjat entre els missatges SMS que rebran els
telèfons mòbils, el temps entre les lectures dels missatges de control o d'acknowledge, el
temps entre els enviaments del fitxer per FTP, el nom del fitxer el qual es vol enviar i per
últim també hi ha el port sèrie on tenim connectat el mòdem. Aquest fitxer s'anomena
“sms.conf”. El format d'aquest fitxer es mostra a continuació:
/dev/ttyS0 Dispositiu per defecte
15 Minuts entre SMS
1 Minuts entre les lectures dels SMS
./datos.csv Fitxer a enviar via FTP
30 Minuts entre els enviaments del fitxer per
Internet.
15 Actualització dels comptadors.
17
L'últim fitxer de configuració requerit per la llibreria és el fitxer on contindrà la llista
de telèfons. Els nombres de telèfons d'aquest fitxer serà als que s'enviaran el missatges
d'alarma i els que podran enviar missatges de control i d'acknowledge. Aquest fitxer
s'anomena “agenda.list”. El format d'aquest fitxer es mostra a continuació:
677356377
670061207
3.4. Funcions de la llibreria.
3.4.1. Estructura de les funcions de la llibreria.
Com ja s'ha comentat en l'apartat 3.3.1, el programa que pretengui utilitzar aquesta
llibreria ha d'inicialitzar la llibreria amb la funció init_sms(). L'objectiu de la funció
init_sms() és inicialitzar variables globals, preparar el servei d'enviament i recepció de
missatges SMS i activar l'enviament de fitxers per FTP. Per una altra banda la llibreria també
necessita una funció que li serveixi al programa per activar o desactivar els enviaments de
missatges SMS. Aquesta funció s'ha anomenat update_msg().
La llibreria quant detecti l'activació d'una alarma, provocat per la crida a la funció
update_msg(), ha d'enviar cada cert temps un missatges SMS. També ha de llegir missatges
SMS que diferents telèfons mòbils hagin enviat a l'equip. Per últim, també s'ha d'enviar un
fitxer per Internet cada cert temps. Per tant, la llibreria necessita una funció que temporitzi
aquestes tasques. La funció encarregada de realitzar aquesta temporització és la funció
handler_rs232(). A partir d'aquesta funció es cridarà a les funcions management_alarm() i
send_file_FTP() les quals es detallaran a continuació amb la seva finalitat. A partir d'aquestes
funcions s'aniran cridant a la resta de funcions implementades a la llibreria.
La funció send_file_FTP() té com a finalitat enviar un fitxer per FTP. Abans d'enviar
el fitxer aquesta funció s'ha de connectar a Internet i, un cop finalitzat l'enviament del fitxer
per FTP, s'ha de desconnectar. La connexió es realitzarà amb la funció connect_isp() i la
desconnexió es farà amb la funció disconnect_isp().
Com que la llibreria ha d'enviar missatges SMS a diferents telèfons mòbils i ha de
rebre missatges SMS, s'ha creat una funció que gestioni aquestes tasques. Aquesta funció
18
s'ha anomenat management_alarm(). Aquesta funció cridarà a les funcions action_sms(),
send_sms_AT() i read_sms_AT().
Degut a la necessitat de què s'han d'executar ordres de control de diferents telèfons
mòbils, s'ha creat una funció específica per realitzar aquesta tasca, la qual s'anomena
action_sms(). D'aquesta manera si es vol afegir noves ordres de control únicament s'haurà de
modificar aquesta funció.
Les funcions send_sms_AT() i read_sms_AT() tenen com objectiu enviar i rebre un
missatge SMS respectivament. Per realitzar aquesta tasca, aquestes funcions han d'obrir i
tancar el port serie (COM) de l'ordinador mitjançant unes funcions anomenades
set_modem() i reset_modem().
A continuació es mostra una figura que il·lustra com es van fent les crides de les
funcions d'aquesta llibreria.
19
Figura 9: Estructura de les funcions de la llibreria
set_modem()reset_modem()
handler_rs232()
action_sms()
conect_isp()disconect_isp()
send_file_FTP()
management_alarm()
send_sms_AT
read_sms_AT()
Seqüènciade cridesde les funcionsde la llibreria
init_sms() Programa que detecta situacions
d'alarma
Crida a la funció update_msg()
(Aquesta funció activa una alarma que provoca que el handler_rs232
comenci el procés d'enviarmissatges SMS)
Alarma activada(provocat per la crida
de la funció update_msg())
3.4.2. Inicialització de la llibreria: init_sms()
Per inicialitzar d'aquesta llibreria, incialment s'ha de cridar a la funció init_sms().
Aquesta funció llançarà a la funció principal de la llibreria (handler_rs232()), la qual
s'executarà, per defecte, cada 15 segons. Aquesta funció s'explicarà amb més detall
posteriorment. A continuació es mostra el diagrama de flux de la funció init_sms():
20
Figura 10: Diagrama de flux de la funcióinit_sms()
Init_sms()
Obrim l'agenda de telèfons(Aquest fitxer conté els
telèfons mòbils que rebran els missatges SMSi podran enviar missatges de control)
Obrim el fitxer de configuració de la llibreria(Aquest fitxer conté el
temps entre missatges SMS, entre la lectura de SMS i entrefitxers enviats per FTP
Llança la funció principal de la llibreriahandler_rs232()
(Aquesta funció s'executarà contínuamentcada 15 segons)
Return
Obrim el fitxer de configuració del servidor de FTP
(Aquest fitxer conté el l'adreça del servidor d'Internet i el seu login i password)
3.4.3. La funció update_msg().
Com s'ha comentat en l'apartat 3.3.1. els programes que pretenguin utilitzar aquesta
llibreria necessiten una funció per indicar a la llibreria que es pretén enviar missatges SMS.
Aquesta funció s'ha anomenat update_msg(). La mateixa funció serà utilitzada quan el
programa ja no vulgui enviar més missatges de SMS.
Aquesta funció, la update_msg(), activarà o desactivarà l'enviament de missatges
SMS en funció del text del missatge que se li passa com a paràmetre d'entrada. Si el text del
missatge conté la paraula “alarma” s'activarà tot el procés d'avís de missatges d'alarma
mitjançant SMS (comentat en el apartat 3.3.3.). En el cas que el missatge no contingui la
paraula “alarma” es desactivarà l'entrega de missatges SMS.
21
22
Figura 11: Diagrama de flux de la funció update_msg()
update_msg(missatge)(missatge: és el contingut del missatge
a enviar per SMS)
Missatge en curs = Missatge
Return
NO
SI
Activació de l'alarma
missatge conté laparaula �alarma�
missatge = missatge en curs(missatge en curs: es el missatge d'alarma
que s'envia per SMS )
Desactivació de l'alarma
Return
Return
SI
NO
3.4.4. Funció handler_rs232()
L'equip informàtic disposa d'un mòdem per realitzar les següents tasques: enviar i
rebre un missatge SMS i enviar un fitxer per FTP. Atès que només es disposa d'un únic
mòdem, no es pot enviar un fitxer per Internet mentre es llegeix un missatge SMS o s'està
llegint un missatge. En conseqüència, es necessita una funció que planifiqui l'ús del mòdem.
La funció que realitza aquesta planificació és handler_rs232().
La lectura de missatges SMS es realitza per enquesta, és a dir, cada cert temps s'ha
d'interrogar al mòdem perquè ens informi si s'ha rebut un nou missatge SMS. Aquest temps
s'ha fixat, per defecte, en un minut.
L'enviament de missatges d'alarma es produeix quant s'activa una alarma. En aquest
precís moment, s'envia un missatges d'alarma al primer telèfon mòbil de l'agenda. Si en 15
minuts no es rep un missatge d'acknowledge, s'ha de tornar a enviar el missatge SMS al
següent telèfon mòbil de l'agenda.
El fitxer que s'ha d'enviar a un servidor d'Internet s'ha d'enviar, per defecte, cada 5
minuts.
Tal com s'ha comentat en els paràgrafs superior es necessita controlar el temps per
enviar i rebre SMS i l'enviament de FTP per separat, pel que es dedueix que es necessiten
tres comptadors, la missió dels quals sigui comptar temps. Un comptador per enviar
missatges d'alarma (fixat en 15 minuts), altre comptador per a la lectura de missatges SMS
(fixat en 1 minut) i l'últim comptador per a enviar el fitxer per FTP (fixat en 5 minuts). La
funció handler_rs232() s'executarà amb un interval fixat 15 segons. Aquests 15 segons seran
la base de temps dels comptadors.
En el cas que els tres comptadors vencin s'ha de fixar una preferència. Es considera
que el més important és enviar missatges d'alarma, seguit de la lectura del missatges SMS i,
finalment, enviar el fitxer per FTP.
23
24
handler_rs232()
Esperem 15 segons
Activem FLAGContador 2 = TIMEOUT 2(FLAG: activa l'enviament de missatges d'alarma)(TIMEOUT 2: ens fixa el temps entre missatgesd'alarma
Desactivacióde l'alarma
Activaciód'una alarma
FLAG activat contador 2 = 0
Crida a la función management_alarm(OK)
(Enviem un missatge amb el text: �Avaria solucionada�)
Crida a la función management_alarm(SEND)
(Enviemel missatge d'alarma)
SI
SI
Contador 1 = TIMEOUT 1(TIMEOUT 1: ens fixa el temps entre les lecturesde SMS.
contador 1 = 0
Crida a la funciónmanagement_alarm(READ)
(Llegim missatge de control o missatge d'acknowledge)(Si es rep un missatge d'acknowledge, FLAG es desactivarà)
Decrementemcontador 2
SI
SI
Decrementemcontador 1
contador 1 = TIMEOUT 1
1
NO
SI
NO
NO
NO
contador 2 = TIMEOUT 2
Desactivem FLAG
2
3.4.5. Enviament de fitxers per FTP.
El procés d'enviament de fitxers per FTP consisteix, primerament, en connectar-se al
servidor de FTP, a continuació ens identifiquem amb el servidor (enviem el login i el
password) i finalment s'envia el fitxer al servidor. Tot aquest procés es realitza amb una
llibreria anomenada ftplib, la qual es pot descarrega gratuïtament des d'Internet.
Tot aquest procés comentat anteriorment, s'ha agrupat en una funció anomenada
send_file_ftp(), la qual s'explica a continuació.
25
Figura 12: Diagrama de flux de la funció handler_rs232
contador 3 = 0Crida a la función
send_file_FTP()(Enviem el fitxer per FTP)
Decrementremcontador 3
contador 3 = TIMEOUT 3
1
2
3.4.5.1. Funció send_file_FTP().
Aquesta funció s'encarrega d'enviar un fitxer per FTP. Abans d'enviar un fitxer per
FTP, la llibreria s'ha de connectar a Internet mitjançant el programa “pppd” i posteriorment,
ha de realitzar tot el procés comentat anteriorment. A continuació es mostra el diagrama de
flux de la funció.
26
Figura 13: Diagrama de flux send_file_ftp()
Send_file_FTP()
Crida a la funció connect_isp()
(Aquesta funció es connecta a Internet)
Connexió al servidor de FTP
Enviem login/password
al servidor de FTP
Enviem el fitxer
Desconnexió del servidor FTP
Crida a la funció disconnect_isp()
(Aquesta funció es desconnecta d'Internet)
Return
3.4.6. Funció management_alarm().
Aquesta funció gestiona els missatges SMS que s'envien i que es reben. Els missatges
que s'envien són els missatges d'alarma, que s'envien a diferents telèfons mòbils, o el
missatge que informa quan una alarma s'ha desactivat. Per una altra banda, aquesta funció
també s'encarrega de llegir els missatges rebuts.
A continuació es mostra el diagrama de flux:
Si ACCIÓ és SEND llavors s'envia un missatge SMS al telèfon mòbil corresponent.
En cas de que sigui el primer missatge d'alarma s'incrementa l'identificador. A continuació
es mostra el diagrama de flux:
27
Figura 14: Diagrama de flux general de management_alarm()
management_alarm(ACCIÓ)(Acció: parámetre d'entrada a la funció)
Acció READ(Llegim missatges SMS)
OK(Enviem missatge amb el text:averia solucionada)
SEND(Enviem missatgeSMS)
3
1
2
Si ACCIÓ és READ llavors es llegeix un missatge SMS. En el cas de què el missatge
llegit sigui un missatge d'acknowledge es desactiva l'enviament de missatges d'alarma
(desactivant FLAG). Si s'ha rebut un missatge SMS d'algun telèfon mòbil de l'agenda es
cridarà a la funció action_sms() amb l'objectiu de executar l'ordre de control. A continuació
es mostra el diagrama de flux:
28
Figura 15: Diagrama de flux management_alarm() enviant SMS
Llegim el nombre del telèfon mòbil
(El nombre s'obté seqüencialment de l'agenda)
Incrementem el ID(ID es un codi que identifica el
missatge d'alarma)
Crida a la funciósend_sms_AT()
(Enviem el missatge d'alarma amb l'identificador, ID)
Return
1
Primermissatge SMS
SI
NO
Si ACCIÓ és OK llavors s' envia un missatge SMS a tots els telèfons mòbils als que
es va enviar un missatge d'alarma. A continuació es mostra el diagrama de flux:
29
Figura 16: Diagrama de flux management_alarm() rebent SMS
Crida a la funcióread_sms_AT()
(Llegim un missatge SMS)
Missatge de
acknowledge
Desactivem FLAG(FLAG activat s'envien missatges
d'alarma)
Crida a la funcióactions_sms()
(Aquesta funció executa les ordres de control)
2
SI
NOReturn
Return
Un missatge d' acknowledge és un missatge rebut d'un telèfon mòbil que està en l'agenda i que el missatge contingui el identificador d'un missatge d'alarma en curs
3.4.7. Funció action_sms().
Aquesta funció executa les ordres de control enviades pels telèfons mòbils de
l'agenda. En el cas de que el missatge rebut no correspongui amb cap ordre implementada la
llibreria enviarà un missatge informant que la ordre és incorrecte.
Les ordres de control (ACCIÓ) poden ser: apagar o reiniciar l'ordinador, estat de la
llibreria i activar el control remot.
30
Figura 17: Diagrama de flux management_alarm()alarma desactivada
Crida a la funciósend_sms_AT()
(Enviem el missatge SMS de �averia solucionada� a tots los telèfons mòbils als que vam enviar el missatge d'alarma)
Return
3
Si ACCIÓ és apagar o reiniciar l'ordinador, la llibreria executa les ordres “halt” i
“reboot” respectivament. Aquestes ordres únicament funcionen en alguns sistemes operatius
Unix.
31
Figura 18: Diagrama de flux general de la funció action_sms()
action_sms(ACCIÓ)ACCIÓ: es l'ordre de control
que es vol realitzar
Acció1
3
2
Apagar o reiniciar l'ordinador Estat
Activar el controlremot
Ordreimplementada
SI
NOCrida a la funciósend_sms_AT()
(Enviem un menssatge indicantque l'ordre és incorrecte)
Return
Si ACCIÓ és saber l'estat de la llibreria, únicament s'envia un missatge SMS indicant
que la llibreria està funcionant.
En el cas que ACCIÓ sigui activar el control remot es començarà tot un procés que es
detalla a continuació:
32
Figura 19: Diagrama de flux de la funció action_sms() apagar o reiniciar PC
1
Apagar
Executem l'ordre �HALT�(Aquesta orde apaga
l'ordinador)
Executem l'ordre �REBOOT�(Aquesta orde reinicia
l'ordinador)
SI
NO
ReturnReturn
Figura 20: Diagrama de flux de lafunció action_sms() enviant avaria
solucionada
2
Crida a la funciósend_sms_AT()
Enviem un missatge SMS amb eltext �OK�
Return
33
Figura 21: Diagrama de flux de la funció action_sms() control remot
3
Activem el control remot(Executem el programa �OpenSSH�)
Crida a la funció connect_isp()
(Aquesta funció es connecta a Internet)
Crida a la funciónsend_file_FTP()
(Enviem un fitxer per FTP amb la IP)
Esperem a que l'usuari esconnecti per control remot
usuariconnectat
Esperem a que l'usuari es desconnecti del control remot
usuaridesconnectat
Return
Crida a la funció disconnect_isp()
(Aquesta funció es desconnecta d'Internet)
Tanquem el control remot(Parem el programa �OpenSSH�)
SI
NO
SI
NO
Com es intuir del procés de control remot, aquest paralitzarà totes les comunicacions
de la llibreria (enviar i rebre missatges SMS i enviar el fitxer al servidor d'Internet).
3.4.8. Connexió i desconnexió d'Internet.
A continuació es mostraran les funcions encarregades de connectar-se i desconnectar-
se d'Internet. Aquestes funcions utilitzen el programa gratuït “pppd”. Un gran inconvenient
d'aquest programa es que no compleix amb l'estàndard POSIX, per tant, si es volgués
utilitzar aquestes funcions en Windows s'haurien de reescriure.
3.4.8.1. Funció connect_isp().
Aquesta funció té com objectiu connectar-se a Internet mitjançant el programa
“pppd”. Quan aquest programa es connecti a Internet es guardarà un fitxer que contindrà
l'adreça d'Internet, la IP, de l'ordinador. Aquesta adreça ens servirà per establir la connexió
remota amb l'ordinador.
34
3.4.8.2. Funció disconnect_isp().
Aquesta funció té com objectiu desconnectar-se d'Internet. Per aconseguir això,
únicament s'ha de tancar el programa “pppd”. Durant el desenvolupament d'aquesta funció es
va observar que aquest programa se li demanava que tanqués la connexió a Internet i no ho
feia, per solucionar aquest problema, se li ha de demanar que finalitzi aquesta connexió
reiteradament (normalment amb dos vegades es suficient).
35
Figura 22: Diagrama de flux de la funcióconnect_isp()
connect_isp()(Aquesta funció es connecta
a Internet)
Connexió a Internet(Executem el programa �pppd�)
Estemconnectatsa Internet
Guardem l'adreçad'Internet en un fitxer (la I.P.)
(Aquest fitxer s'enviarà al servidorde FTP)
Return
SI
NO
3.4.9. Enviament i recepció de missatges SMS.
L'enviament i recepció de missatges SMS a través del mòdem es realitzen mitjançant
comandes AT.
Per enviar un missatge SMS s'han de seguir uns passos:
1. Configurar el mòdem en mode text. Això s'aconsegueix enviant la cadena de
caràcters: "AT+CMGF=1\r".
2. Configurem el nombre del telèfon mòbil del destinatari del missatge SMS que es vol
enviar. Això s'aconsegueix enviant la cadena de caràcters:
"AT+CMGS=TELÈFON\r".
3. Enviem els caràcters que formen el missatge SMS i un cop finalitzat s'ha d'enviar un
caràcter especial: \x1A (Control-Z).
36
Figura 23: Diagrama de flux de la funciódisconnect_isp()
disconnect_isp()(Aquesta funció es desconnecta
de Internet)
Tanquem la connexió a Internet.
(Tanquem el programa �pppd�).
Estemconnectats
NO
Return
SI
Per llegir un missatge SMS s'han de seguir uns passos:
1. Configurar el mòdem en mode text. Això s'aconsegueix enviant la cadena de
caràcters: "AT+CMGF=1\r".
2. Indiquem al mòdem quin missatge SMS de la targeta SIM (POS) es vol llegir. Això
s'aconsegueix enviant la cadena de caràcters: "AT+CMGR=POS\r\n".
Per esborrar un missatge SMS simplement s'ha d'enviar la següent cadena de
caràcters: "AT+CMGD=POS\r\n". On POS indica la posició del missatge SMS en la targeta
SIM que es vol esborrar.
3.4.9.1. Funció send_sms_AT().
Aquesta funció té com a finalitat enviar un missatge SMS. Això s'aconsegueix
enviant les comandes AT descrites anteriorment.
Aquesta funció crida a set_modem(), que obre i configura el port sèrie.
Posteriorment, s'envia una sèrie de cadenes de caràcters per configurar el mode text i el
destinatari del missatge SMS. A continuació s'envia al mòdem el missatge d'alarma que
rebran els telèfons mòbils de l'agenda. A aquest missatge d'alarma se li afegeix l'hora actual
perquè el destinatari del missatge s'assabenti de l'hora exacte en que s'ha produït l'alarma . El
diagrama de flux de la funció es detalla a continuació:
37
3.4.9.2. Funció read_sms_AT().
Aquesta funció llegeix un missatge SMS de la targeta SIM del mòdem.
Aquesta funció crida a set_modem(), que obre i configura el port sèrie.
Posteriorment, s'envia una sèrie de cadenes de caràcters per configurar el mode de treball
amb el mòdem (mode text) i indicar quin missatge SMS de la targeta SIM del mòdem GPRS
38
Figura 24: Diagrama de flux de lafunció send_sms_AT()
send_sms_AT()(Aquesta funció envia un
missatge SMS)
Crida a la funcióset_modem()
(Aquesta funció obre la comunicació ambel mòdem)�
Crida a la funcióreset_modem()
(Aquesta funció tanca la comunicació ambel mòdem)�
Enviem al mòdem la cadena"AT+CMGF=1\r"
(Aquest ordre li diu al mòdem que volemtreballar en mode texte)
Enviem al mòdem la cadena"AT+CMGS=TELÈFON\r"
(TELÈFON: és el telèfon al qual enviarem elmissatge SMS)
Enviem al mòdem el missatge SMSmés l'hora actual
Return
es vol llegir. La posició del missatge a llegir sempre serà la primera. Un cop llegit el
missatge, es borra el missatge de la targeta SIM.
Aquest mòdem quan rep un missatge SMS, el guarda en la primera posició lliure de
la targeta SIM, és per aquest motiu, que la llibreria, únicament, llegeix la primera posició de
la targeta SIM.
39
Figura 25: Diagrama de flux de la funció send_sms_AT()
read_sms_AT()(Aquesta funció llegeix un
missatge SMS)
Crida a la funcióset_modem()
(Aquesta funció obre la comunicació ambel mòdem)�
Enviem al mòdem la cadena"AT+CMGF=1\r"
(Aquest ordre li diu al mòdem que volemtreballar en mode texte)
Enviem al mòdem la cadena"AT+CMGR=POS\r\n"
(POS: és el missatge SMS que volemllegir)
Llegim del mòdem el missatge SMS
Return
Crida a la funcióreset_modem()
(Aquesta funció tanca la comunicació ambel mòdem)�
Borrem del mòdem el missatge SMS llegit
3.4.10. Configuració del port sèrie.
Per configurar el port sèrie s'ha optat per utilitzar unes funcions contemplades en
l'estàndard P.O.S.I.X. D'aquesta manera s'assegurarà el funcionament en el sistemes
operatius que complexin amb aquest l'estàndard.
La configuració del port sèrie es realitza mitjançant la funció set_modem (). Aquesta
funció, com s'ha vist, es crida cada vegada que es vol enviar o rebre un missatge SMS
mitjançant les funció send_sms_AT() i read_sms_AT(). Un cop s'hagi enviat o rebut un
missatge es crida a la funció reset_modem() amb la finalitat de tancar el port sèrie. Aquest
procediment d'obrir i tancar el port sèrie cada vegada, s'ha fet així per evitar problemes
d'accés al port sèrie amb el programa “pppd” encarregat de connectar-se a Internet i les
funcions d'enviar o rebre missatges SMS.
3.4.10.1. Funcións set_modem() i reset_modem().
La funció set_modem() té com a finalitat obrir el port sèrie, guardar la configuració
del port sèrie i configurar-lo adequadament. La funció reset_modem() únicament restaura la
configuració que es tenia abans de configurar-lo i tanca el port sèrie.
40
4. Pressupost.
4.1. Amidaments.
4.1.1. Software.
REF DESCRIPCIÓ QUANTITAT
SOFT1 Desenvolupament de lallibreria en C
320h.
4.1.2. Hardware.
REF DESCRIPCIÓ QUANTITAT
HW1 Modem GSM/GPRS 1
41
Figura 26: Diagram de flux de les funcions set_modem() i reset_modem()
set_modem()(Aquesta funció obre la
comunicació amb el mòdem i elconfigura)
Configurem el port sèrie ontenim connectat el mòdem
Return
reset_modem()(Aquesta funció tanca la
comunicació amb el mòdem)
Tanquem el port sèrie ontenim connectat el mòdem
Return
Guardem la configuració actual del port sèrie
Restaurem la configuració anterior del port sèrie
Obrim el port sèrie ontenim connectat el mòdem
4.2. Preus unitaris.
4.2.1. Software.
DESCRIPCIÓ PREUS EN LLETRES PREU
Desenvolupament de lallibreria
quaranta-cinc euros / hora
�45 / h
4.2.2. Hardware.
DESCRIPCIÓ PREUS EN LLETRES PREU
Modem GSM/GPRS Cent vuit euros 108 �
4.3. Pressupost general.
4.3.1. Software.
REF NUM. UNITATS DESCRIPCIÓ PREUUNITARI
IMPORT
SOFT1 320 h. Desenvolupamentde la llibreria
45 � 14400 �
4.3.2. Hardware.
REF NUM. UNITATS DESCRIPCIÓ PREU UNITARI IMPORT
HW1 1 ModemGSM/GPRS
108 � 108 �
42
4.3.3. Pressupost d'execució material
CAPÍTOL DESCRIPCIÓ IMPORTS TOTAL
1 Hardware 108 �
2 Software 14400�
Total execució material 14508 �
5. Annexes.
5.1. Instal·lació de la llibreria.
Per utilitzar aquesta llibreria es requereixen dos programes, el openssh, encarregat de
acceptar una connexió remota, i el ppp, encarregat de connectar-se a Internet. També es
necessita una llibreria anomenada ftplib3-dev, utilitzada per enviar fitxers per FTP.
Per instal·lar aquest programes en Debian GNU/Linux s'ha de teclejar aquesta ordre:
apt-get install ssh ppp ftplib3-dev
Un cop instal·lats el programes anteriorment comentats, s'ha d'accedir a la carpeta de
la llibreria i teclejar: ./configure && make.
Aquestes ordres crearan un fitxer anomenat �libsms.a�. Llavors per utilitzar aquesta
llibreria amb un programa que es digui, per exemple, PROGRAMA.c s'ha de fer el següent:
# gcc �pthread �lftp PROGRAMA.c libsms.a �o PROGRAMA.exe
(gcc és el compilador)
Després s'han de copiar les carpetes SMS i PPP existents en la carpeta de la llibreria a
on es troba el programa compilat (PRORAMA.exe).
43
5.2. Configuració de la connexió a Internet.
Com s'ha comentat al llarg de tot el projecte la connexió a Internet la realitza el
programa �pppd�.
Un cop instal·lat el programa s'han de col·locar dos fitxers en unes carpetes concretes.
El primer fitxer és el �enelmasalla� i s'ha de col·locar en /etc/ppp/peers. L'altre fitxer és
�mc35i_connect� i s'ha de col·locar en la carpeta /etc/chatscripts/. A continuació es mostren
el contingut d'aquests fitxers:
Fitxer �enelmasalla�:
connect "/usr/sbin/chat -s -v -f /etc/chatscripts/mc35i_connect"
disconnect "chat -- \d+++\d\c OK ath0 OK"
/dev/modem
115200
crtscts
modem
noipdefault
usepeerdns
defaultroute
noauth
Explicació:
Connect i disconnect Envia les comandes AT al mòdem perconnectar-se i desconnectar-se d'Internet.
/dev/modem El port serie del ordinador on tenimconnectat el mòdem.
115200 Velocitat del port serie.Ctrcrts Control de fluxe. El nostre mòdem es per
software (ctrcrts).Modem El mòdem MC35i utilitzat en aquest
projecte requereix aquesta opció.Noipdefault Especifica al pppd que la IP és dinàmica.Usepeerdns Diem al pppd que el nostre servidor
d'Internet ens donarà les DNS.DefaultrouteNoauth
Fitxer �mc35i_connect�:
44
ABORT BUSY
ABORT "NO CARRIER"
ABORT VOICE
ABORT "NO DIALTONE"
TIMEOUT 30
"" ATZ
OK ATQ0V1E1S0=0&C1&D2+FCLASS=0
OK AT&F
OK AT\^SGAUTH=1+CGDCONT=1,\"IP\",\"movistar.es\",\"0.0.0.0\",0,0
OK ATDT*99***1#
CONNECT \d\c
Explicació:
ATZ Resetegem el mòdem GPRS.
ATQ0V1E1S0=0&C1&D2+FCLASS=0
Configuració del mòdem.
AT^SGAUTH=1+CGDCONT=1,"IP","movistar.es","0.0.0.0",0,0
Configuració del mòdem per establir unaconnexió a Internet. Aquesta ordre ésdiferent per cada mòdem.
ATDT*99***1# Aquesta ordre serveix per connectar-se aInternet.
5.3. Pàgines del programador.
init_sms(int thread)
SYNOPSIS
#include<sms.h>int init_sms(void)
PARÀMETRES
thread: indica si es vol activar el thread handler_rs232().
DESCRIPCIÓ
Funció encarregada d'inicialitzar la llibreria. Abans d'utilitzar qualsevol funció de la llibreriaes necessari cridar aquesta funció.
VALOR DE RETORN
45
Retorna 0 si la inicialització ha estat correcta, en cas contrari, retorna 1.
update_msg()
SYNOPSIS
#include<sms.h>int update_msg(char msg_new[160]);
PARÀMETRES
msg_new: Missatge d'alarma a enviar.
DESCRIPCIÓ
Envia missatges SMS als destinataris continguts a la agenda.list fins que l'alarma siguidesactivada.
VALOR DE RETORN
Retorna 0 en el cas de que el missatge introduït (msg_new) sigui igual que el missatge que
s'està enviant. En cas contrari retorna 1.
send_file_FTP()
SYNOPSIS
#include<sms.h>#include<ftplib.h>int send_file_FTP(const char *input)
PARÀMETRES
input: Fitxer a enviar mitjançant el protocol FTP.
DESCRIPCIÓ
Envia un fitxer a un servidor de FTP.
VALOR DE RETORN
Retorna 0 en cas d'èxit. En cas contrari retorna 1.send_sms_AT()
SYNOPSIS
#include<sms.h>
46
int send_sms_AT(const char msg[160], const char *tel)
PARÀMETRES
msg: Missatge SMS a enviar.
tel: Nombre del destinatari el qual rebrà el missatge SMS.
DESCRIPCIÓ
Aquesta funció envia un missatge SMS mitjançant comandes AT.
VALOR DE RETORN
Retorna 0 en cas d'èxit, en cas contrari retorna 1.
read_sms_AT()
SYNOPSIS
#include<sms.h>int read_sms_AT(int POS, INPUT_SMS *sms_in)
PARÀMETRES
POS: Posició de memòria del missatge SMS.
Sms_in: Estructura de dades on es guarden les dades del missatge SMS llegit.
DESCRIPCIÓ
Llegim un missatge SMS. La informació del missatge es guarda en l'estructura sms_in:
typedef struct{char msg[400], // Contingut del missatge llegit.
sender[13]; // Telèfon que ha enviat el missatge.int friends, // Telèfon contingut a l'agenda.
frustrated, // Error en la lectura del missatge.ID; // Identificador.
}INPUT_SMS;
VALOR DE RETORN
Retorna 0 en cas d'èxit, en cas contrari retorna 1.
delete_sms()
47
SYNOPSIS
#include<sms.h>int delete_sms(int POS)
PARÀMETRES
POS: Posició de memòria de la targeta SIM que es vol esborrar un missatge SMS.
DESCRIPCIÓ
Aquesta funció borra un missatge SMS.
VALOR DE RETORN
Retorna 0 en cas d'èxit, en cas contrari retorna 1.
connect_isp()
SYNOPSIS
#include<sms.h>int connect_isp(void)
PARÀMETRES
No requereix paràmetres d'entrada.
DESCRIPCIÓ
Aquesta funció es connecta a Internet mitjançant el programa pppd.
VALOR DE RETORN
Retorna 0 en cas d'èxit, en cas contrari retorna 1.
disconnect_isp()
SYNOPSIS
#include<sms.h>int disconnect_isp(void)PARÀMETRES
No requereix paràmetres d'entrada.
DESCRIPCIÓ
Aquesta funció es desconnecta de Internet mitjançant el programa pppd.
48
VALOR DE RETORN
Retorna 0 en cas d'èxit, en cas contrari retorna 1.
5.4. P.O.S.I.X.
POSIX és l'acrònim de Portable Operating System Interface; la X prové de UNIX. El
terme POSIX va ser suggerit per Richard Stallman en resposta a la demanda de la IEEE, que
buscava un nom fàcil de recordar.
Actualment el POSIX se divideix en tres parts:
* POSIX.1, Core Services (implementa les crides del ANSI C estàndard). Inclueix:
o Creació i control de processos
o Senyals
o Excepcions de punt flotant
o Excepcions per violació de segment
o Excepcions per instrucció il·legal
o Error del bus
o Temporitzadors
o Operacions de fitxers i directoris
o Pipes
o Biblioteca C.
o Instruccions d'entrada/sortida i de control de dispositiu (ioctl)
* POSIX.1b, extensiones para tiempo real:
o Planificació (scheduling) amb prioritat
o Senyals de temps real
o Temporitzadors.
o Semàfors
o Intercanvi de missatges (message passing)
o Memoria compartida
o Entrada/sortida síncrona i asíncrona
o Boqueix de memòria
49
* POSIX.1c, extensions pels fils d'execució (threads):
o Creació, control i neteja de fils d'execució
o Planificació (scheduling)
o Sincronització
o Tractament de senyals
5.5. Programes que han ajudat a desenvolupar la llibreria.
Programa MOTOR
Autor Konstantin Klyagin
Web http://konst.org.ua/motor/
Sistema operatiu POSIX :: BSD :: FreeBSD, POSIX :: Linux
Breu descripció IDE (integrated programming environment).
Programa GCC
Autor The GCC team
Web http://gcc.gnu.org/
Llicència GPL, GPL v2
Breu descripció Compilador.
Programa GDB
Autor Stan Shebs
Web http://sources.redhat.com/gdb/
Llicència GPL
Breu descripció Depurador.
Programa DDD (Data Display Debugger)
Autor Andreas Zeller
Web http://www.gnu.org/software/ddd/
Breu descripció És un GUI (graphical user interface) perGDB, DBX i XDB.
Programa MINICOM
Autor Martin Godisch
50
Web http://alioth.debian.org/projects/minicom/
Breu descripció Programa per comunicació serie.
Programa PPPD
Autor Paul Mackerras.
Web http://www.samba.org/ppp/
Sistema operatiu Linux, Solaris 2, *BSD, SunOS 4, DigitalUnix, SVR4, NeXTStep, and Ultrix
Breu descripció Programa resident en memòria queimplementa el protocol PPP.
Programa FTPLIB
Autor Thomas Pfau
Web http://nbpfaus.net/~pfau/ftplib/
Sistema operatiu Windows 95/98/ME/NT/2000/XP, Linux iUnix.
Llicència GPL
Breu descripció Llibreria amb funcions per enviar fitxers perFTP.
Programa PORTABLE OPENSSH
Autor Damien Miller
Web http://www.openssh.com/
Llicència BSD
Breu descripció Implementació dels protocols SSH1 i SSH2.
5.6. Bibliografia.
Funcionament dels threads:http://www.llnl.gov/computing/tutorials/pthreads/
Configuració del port sèrie basats en l'estàndard P.O.S.I.X.:
�Serial programming guide for POSIX Operating Systems� per Michael R. Sweet.
�Aplicaciones de microprocessadores e interfaces� per Juan Ramón Jiménez.
51