51
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

IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 2: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 3: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 4: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 5: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 6: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 7: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 8: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 9: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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.

Page 10: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 11: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 12: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 13: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 14: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 15: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 16: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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.

Page 17: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 18: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 19: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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())

Page 20: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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)

Page 21: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 22: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 23: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 24: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 25: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 26: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 27: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 28: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 29: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 30: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 31: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 32: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 33: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 34: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 35: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 36: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 37: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 38: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 39: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 40: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 41: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 42: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 43: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 44: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 45: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 46: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 47: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 48: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 49: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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

Page 50: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

* 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

Page 51: IMPLEMENTACIÓ D'UNA LLIBRERIA PER ENVIAR ...deeea.urv.cat/public/PROPOSTES/pub/pdf/1297pub.pdfi un programa, emmagatzemen el resultat de la detecció de contaminants a un fitxer de

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