Sunteți pe pagina 1din 23

_______________________________________________________________ Implementare

4. Implementare 4.1. Arhitectura aplicaiei

Soluia aleas pentru implementarea unei instalaii pentru o cas inteligent, este un sistem alctuit din dou componente principale : componenta hardware, menit s ilustreze funcionalitatea a diferite dispozitive ce ar putea fi ntlnite ntr-o cas inteligent i componenta software menit s furnizeze utilizatorului o interfa de control a casei dar i s deserveasc unele funcii de automatizare. Schema bloc ce prezint arhitectura aplicaiei se poate consulta n figura 4.1. Arhitectura componentei software este una de tip client-server i se bazeaz pe tehnologii Internet. Aceast component ruleaz ntr -o aplicaie de server web instalat pe o platform Windows. Comunicarea cu componenta hardware se face prin intermediul portului USB cu ajutorul unor biblioteci de funcii puse la dispoziie de productorul plcii de achiziie de date. Componenta hardware este dezvoltat n jurul unei plci de achiziii de date i control model Velleman k8055. Montajul are, pe lng placa menionat anterior, o parte de achiziie de date realizat cu ajutorul a diferii senzori ct i o parte de control reprezentat prin diferite dispozitive acionabile. n continuare se vor prezenta n detaliu componentele principale ale sistemului.

Figura 4.1 Arhitectura aplicaiei

31

_______________________________________________________________ Implementare

4.2.

Interfaa web

Interfaa web reprezint poarta de acces a utilizatorului n sistemul informatic al casei inteligente. Aceasta ofer utilizatorului posibilitatea de a -i controla locuina i de a citi date n timp real din aceasta. Este structurat n mai multe formulare pentru a facilita o ct mai bun nelegere din partea utilizatorului a diferitelor func ii care i sunt puse la dispoziie. n continuare vom prezenta n detaliu fiecare formular i element de interfa.

4.2.1. Formular de autentificare


Dup cum este normal, un astfel de sistem nu poate fi pus n practic fr a avea un mecanism de securitate adecvat, care s previn accesul neautorizat la controlul locuinei, a sistemului de securitate s.a.m.d. n acest scop a fost implementat un mecanism de autentificare pe baz de parol. La accesarea sistemului cu ajutorul unui browser web, utilizatorul este ntmpinat prima dat de ctre un formular de autentificare, n care acesta trebuie s tasteze o parol valid. n cazul n care este furnizat o parol valid, utilizatorul este redirecionat spre formularul principal de control al locuin ei iar n caz contrar se afieaz o alert n care este informat de acest lucru. Serverul se bazeaz pe existena unui cookie, cu nume specific, pentru a decide care formular s fie afiat. Dac acel cookie nu exist, la accesarea adresei paginii web a aplicaiei, utilizatorului i va fi afi at formularul de logare iar n caz contrar formularul de control al casei. n consecin, n urma validrii parolei este generat un cookie corespunztor care va permite sistemului s afieze formularele, la care, n mod neautentificat, accesul este interzis. Mecanismul de autentificare este implementat cu ajutorul servletului ProcesareLogin gzduit pe partea de server web a aplicaiei. n figura 4.2 este prezentat implementarea funciei ce realizeaz validarea parolei. Sistemul urmeaz urmtorii pai pentru realizarea autentificrii: Se trimite serverului parola criptat cu ajutorul algoritmului MD5. Criptarea este realizat de ctre o funcie JavaScript. Serverul extrage din baza de date parola corect care este deja criptat i o compar cu parola recepionat. Dac nu se poate efectua conexiunea cu baza de date se transmite un mesaj de eroare specific spre client, iar utilizatorul este informat de acest lucru. Dac parolele coincid se genereaz un cookie i serverul trimite ctre browser o cerere de redirecionare spre formularul de control. Cookie-ul nou creat este valabil 24 de ore timp n care nu este necesar o nou autentificare sau pn la apsarea butonului de delogare. Dac parolele nu coincid serverul trimite un rs puns nefavorabil browserului, iar acesta din urm informeaz utilizatorul c parola tastat este greit.

4.2.2. Formularul de schimbare a parolei de acces


Necesitatea asigurrii unui mecanism de securitate adecvat, impune i existena posibilitii ca utilizatorul s schimbe periodic parola de acces. Acest lucru se realizeaz prin intermediul unui formular dedicat acestui scop. Utilizatorul are acces la formularul de schimbare a parolei, evident, doar dup ce s-a 32

_______________________________________________________________ Implementare logat cu succes n sistem. Ca i n cazul mecanismului de autentificare, responsabil cu sarcina schimbrii parolei este un servlet, denumit generic SchimbaParola, gzduit pe server. n figura 4.3 este prezentat funcia, din cadrul servletului, ce realizeaz schimbarea parolei.

Figura 4.2 Funcia care realizeaz validarea parolei Sistemul parcurge urmtorii pai pentru actualizarea parolei: Serverul primete noua parol criptat ca i in cazul mecanismului de autentificare. Se face o verificare prealabil a cookie-ului creat la logare, pentru a se evita o ncercare frauduloas de schimbare a parolei. Dac cookie-ul exist i are valoarea corect se efectueaz conectarea la baza de date i se insereaz noua parol n tabela corespunztoare. n caz de eec la conectarea la baza de date utilizatorul este informat de acest lucru. Deasemenea n cazul decurgerii cu succes a opera iei de schimbare a parolei, utilizatorul este informat de acest lucru.

Figura 4.3 Funcia de actualizare a parolei

4.2.3. Fereastra principal a aplicaiei


n urma efecturii cu succes a procesului de autentificare, utilizatorul este redirecionat spre fereastra principal a aplicaiei. Aceasta permite utilizatorului s vizualizeze date colectate n timp real din locuina sa, s controleze diferite dispozitive din aceasta i deasemenea are posibilitate de a accesa alte ferestre din aplicaie. Fereastra de control este structurat n mai multe seciuni, pentru a asigura o ocupare ct mai eficient a spaiului de pe ecran i deasemenea pentru a asigura o ct mai bun prezentare a funciilor care i sunt puse la dispoziie utilizatorului. Fiierul responsabil cu afiarea acestei ferestre este index.jsp cruia i mai sunt asociate i diferite fiiere cu funcii 33

_______________________________________________________________ Implementare JavaScript pentru dinamizare i comunicarea cu serverul ct i stiluri CSS pentru partea de design a ferestrei. n continuare vom prezenta i analiza fiecare seciune din fereastra.

4.2.3.1. Starea conexiunii


Aceast seciune are simplul rol de a informa utilizatorul cu privire la starea conexiunii dintre serverul web i componenta hardware. Dei, datorit unor vicii de proiectare a plcii de achiziie de date care duc la incapacitatea utilizatorului de a rezolva de la distan problemele de conexiune, el trebuie informat cu privire la genul acesta de probleme i astfel s tie c orice aciune ar face prin intermediul interfeei, ea nu se va regsi n mediul fizic al casei sale. Deasemenea orice informaie afiat ca fiind citit de la senzori, nu mai este relevant n cazul unor probleme de conexiune. n figura 4.3 este prezentat modul n care starea conexiunii i este prezentat utilizatorului. De menionat faptul c la accesarea interfeei web, utilizatorul este informat printr-un mesaj de tip alert, c a aprut o problem de comunicaie ntre cele dou componente ale sistemului.

Figura 4.4 Starea conexiunii cu componenta hardware

4.2.3.2. Controlul manual al dispozitivelor acionabile


Una din funciile de baz ale sistemului aflat n discuie este aceea de a oferi utilizatorului posibilitatea s controleze direct diferite dispozitive acionabile aflate n locuina sa. n figura 4.5 sunt prezentate elementele din cadrul interfeei care permit efectuarea acestei funcii. Elementele de control au fost realizate ntr-o manier user-friendly sub forma unor butoane animate. S-a ales aceast soluie din dorina de a facilita o ct mai bun ntelegere, din partea utilizatorului, a evenimentului care l-a produs apsarea acelui buton. De exemplu: la apsarea butonului ce are ca pictogram un bec care nu ilumineaz, acesta i va schimba pictograma ntr-un bec care ilumineaz i viceversa la o nou apsare. Acest lucru este ilustrat n figura 4.5. Din punct de vedere al tehnologiei utilizate pentru implementarea acestor butoane, s-a folosit un tag HTML de tipul <img>. De animarea i preluarea evenimentelor de la aceste butoane se ocup o clas realizat cu tehnologia JavaScript, denumit generic Buton. Constructorul clasei primete ca argument id-ul butonului care se dorete a fi animat. Metodele acestei clase asigur schimbarea pictogramelor butonului la 3 evenimente posibile: la clic, la intrarea cu mouse-ul pe suprafaa butonului i la prsirea cu mouse-ul a acestei suprafee. n figura 4.6 este prezentat clasa menionat anterior i crearea a cte unui obiect aferent fiecrui buton, la ncrcarea paginii.

34

_______________________________________________________________ Implementare

Figura 4.4 Formularul de control manual al dispozitivelor

Figura 4.5 Buton animat n ceea ce privete controlul instalaiei de climatizare este evident faptul c utilizatorul dorete mai mult dect o simpl opiune pornit/oprit ci dorete o modalitate de a seta instalaia gradual. n acest scop, pentru controlul ventilatorului ce reprezin o instalaie de climatizare am ales un buton de tip slide-bar care permite o setare incremental a turaiei de funcionare (a temperaturii ambientale). Deasemenea, dup cum se poate observa n figura 4.5, pentru o mai bun ntelegere a funcionalitii butonului slide, deasupra sa se afl imaginea unui termometru care sugereaz c deplasarea slide-ului spre dreapta duce la o cretere a temperaturii iar o deplasare spre stnga o scdere a acesteia. Pentru realizarea acestui tip de control s-a utilizat tag-ul HTML de tip <input type=range> care face parte din recent introdusul standard HTML5. De menionat este faptul c acest tip de control se afieaz corect doar n browserul Chrome iar n celelate browsere testate se afieaz, n loc de un buton slide, o csu text n care se poate introduce manual o valoare. n ciuda acestui inconvenient funcionalitatea aplicaiei nu este afectat.

4.2.3.3. Validarea/invalidarea senzorilor


Preluarea de date din locuin se face de ctre mai muli senzori de diferite tipuri. O prezentare n amnunt a acestora se va face n capitolul dedicat componentei hardware. Pentru a asigura o ct mai bun flexibilitate a sistemului, utilizatorul are posibilitatea de a valida sau invalida senzorii din locuin. Un senzor valid va produce o reacie din partea sistemului n momentul n care este supus unui stimul, iar un senzor invalidat nu va produce 35

_______________________________________________________________ Implementare nicio reacie. Astfel, la invalidare, senzorii nu sunt fizic dezacvtivai ci doar sistemul ignor semnalele de la acetia. Utilizatorul are posibilitatea s valideze/invalideze oricare senzor la un moment dat, n orice combinaie, neexistnd nicio constrngere n acest sens.

Figura 4.6 Clasa Buton i crearea de obiecte la nrcarea paginii Pentru realizarea acestei funcii am apelat la un buton de tipul checkbox realizat cu tag-ul HTML de tip <input type=checkbox>. Astfel un checkbox bifat reprezint un senzor activ i viceversa. n figura 4.7 este prezentat formularul de validare/invalidare a senzorilor.

Figura 4.7 Formular de validare/invalidare senzori

4.2.3.4. Datele citite de la senzori


O alt funcie important a sistemului aflat n discuie, este aceea de a i prezenta utilizatorului date citite, n timp real, din locuina sa. Nu toi senzorii din locuin produc date relevante pentru utilizator, drept urmare pe interfa sunt afiate doar o parte din datele colectate de sistem. n figura 4.8 este prezentat seciunea ferestrei aplicaiei unde sunt afiate aceste date. Una din cele mai banale informaii pe care le poate afla un utilizator despre locuina sa este temperatura ambiental. O alt informaie care este afiat, este starea de nchidere sau deschidere a unor ui sau ferestre. Informaia este relevant, de exemplu, n cazul n care utilizatorul dorete s plece de acas i vrea s afle rapid dac toate cile de acces din locuin sunt asigurate. Starea alarmei din locuin este o alt informaie pe care utilizatorul o poate afla n timp real. n cazul strii de nchidere a uilor/geamurilor i a strii alarmei, informaia este prezentat sub form textual dar i sub forma unor pictogrme sugestive. De exemplu: n cazul n care fereastra este nchis, pe interfa se va afia imaginea unei ferestre nchise iar n cazul n care sistemul detecteaz c geamul s-a deschis, imaginea respectiv se va schimba, n timp real, n una ce reprezint un geam deschis.

36

_______________________________________________________________ Implementare

Figura 4.8 Colaj cu seciunile unde sunt afiate informaii Informaiile sunt preluate de pe server i actualizate pe interfa de ctre o funcie JavaScript care se autoapeleaz la intervale regulate de timp. Aceast funcie realizeaz prelurile de date n mod asincron, astfel c nu este necesar o remprosptare a paginii pentru a se actualiza informaiile citite din sistem. n figura 4.9 este prezentat funcia menionat anterior.

Figura 4.9 Funcia care preia date de la server i actualizeaz interfaa

4.2.3.5. Setri i jurnalul de alarme


Ca parte integrant a sistemului casei inteligente este i un subsistem menit s asigure securitatea locuinei n faa ameninrii intruilor dar i a diferitelor evenimente neprevzute care pot cauza daune materiale cum ar fi, de exemplu, o scurgere de ap. Acest subsistem este alctuit din diferii senzori, o alarm cu avertizri acustice i luminoase i serverul web care coordoneaz totul. Modalitatea de funcionare a alarmei este simpl: senzorul detecteaz un stimul (ex. apa de la o eav fisurat), este transmis un semnal serverului care declaneaz alarma acustic i nregistreaz evenimentul ntr-un jurnal. Utilizatorul are posibilitatea, prin intermediul interfeei, s fac unele setri ale subsitemului de alarm, cum ar fi durata avertizrii acustice sau dac dorete o alarm silenioas. Deasemenea poate vizualiza jurnalul de alarme n care sunt nregistrate evenimentele care au dus la declanarea acesteia, ct i data i ora la care a avut loc evenimentul i are posibilitatea de a terge nregistrri individuale cu ajutorul butoanelor de tergere, afiate dinamic la plasarea mouse-ului deasupra jurnalului. n figura 4.10 este prezentat elementul de interfa unde se afieaz acest jurnal. La accesarea site-ului, utilizatorul este informat dac ntre timp s-au petrecut 37

_______________________________________________________________ Implementare evenimente noi n locuina acestuia, printr-un mesaj de tip alert, iar apoi pagina se deruleaz automat la seciunea jurnalului pentru a putea vizualiza aceste noi nregistrri. Noile evenimente sunt ncadrate n jurnal de dou elemente de culoare roie. Datorit faptului c pot exista multe nregistrri n jurnal i pentru a gestiona ct mai eficient spaiul disponibil pe ecran, am optat pentru o component care s ofere o funcie de scroll. Astfel dac spaiul alocat jurnalului este umplut de nregistrri el nu i va mri dimensiunea, deteriornd astfel aspectul paginii, ci se va genera o bar de scroll. Componenta respectiv a fost implementat utiliznd un simplu tag HTML de tip <div> iar pentru a se genera partea de scroll s-au folosit o serie de funcii Jquery.

Figura 4.10 Registrul de alarme

4.2.4. Fereastra de gestiune a evenimentelor programate


O alt funcionalitate major care i este pus la dispoziie utilizatorului este posibilitatea de a programa la anumite date calendaristice i ore, activarea i dezactivarea automat a diferite dispozitive acionabile din locuin. Acest lucru poate fi de folos, de exemplu, pentru automatizarea diferitelor sarcini repetitive sau pentru simularea prezenei umane n locuin pentru a ndeprta poteniali rufctori, n timpul concediilor. Fereastra de gestiune a evenimentelor programate ofer utilizatorului formularele de programare evenimente i lista cu evenimente deja nregistrate, grupate pe date calendaristice. De generarea acestei ferestre se ocup fiierul SimularePrezenta.jsp. Vom prezenta i analiza n continuare cele dou funcii ale acestei ferestre.

4.2.4.1. nregistrarea de noi evenimente


Exist trei dispozitive acionabile n sistem pentru care se pot programa evenimente: iluminatul, sistemul de rulare al jaluzelelor i sistemul de climatizare (ventilatorul). Primele dou dispozitive au fiecare cte dou stri, pornit i oprit, astfel c formularul de programare trebuie s specifice doar data calendaristic, ora la care s se activeze dispozitivul i ora la care s se dezactiveze. n cazul sistemului de climatizare, formularul de programare este ceva mai complex datorit faptului c, controlul pentru acest sistem este unul incremental. Astfel, acest formular conine urmtoarele: temperatura la care se va seta climatizarea, data calendaristic, intervalulul orar n care aceast temperatur este setat i temperatura la care sistemul va reveni dup trecerea acelui interval orar. Formularul amintit poate fi vzut n figura 4.11. Pe lng opiunile enumerate, fiecare formular de programare permite s se seteze o repetare a acelui eveniment: zilnic, sptmnal sau lunar. 38

_______________________________________________________________ Implementare

Figura 4.11 Formular de creare eveniment pentru sistemul de climatizare Introducerea de date n formulare este supus unor validri, dup cum urmeaz: La butoanele de alegere a datei evenimetului programat, nu sunt generate luni, zile sau ani nainte de ziua curent pentru a nu se putea introduce evenimente n trecut, lucru ce ar fi complet inutil. Dac se alege s se programeze un eveniment pentru ziua curent, nu se poate introduce un interval orar plasat nainte de ora i minutul curent. Scopul este, deasemenea, evitarea programrii de evenimente n trecut. Nu se permite ca ora de dezactivare a dispozitivului s fie setat naintea celei de activare. Nerespectarea condiiilor de completare a formularelor de programare prezentate mai sus, duce la imposibilitatea nregistrrii evenimentului. Utilizatorul este avertizat de acest lucru prin mesaje de tip alert. Validrile sunt efectuate de ctre unele funcii JavaScript. n figura 4.12 este prezentat o astfel de funcie.

Figura 4.12 Funcie JavaScript de validare

4.2.4.2. Vizualizarea evenimentelor nregistrate n sistem


Evenimentele care au fost deja programate pot fi vizualizate ntr-o list aflat sub formularul de programare de evenimente. Aceast list prezint evenimentele grupate dup data calendaristic la care se execut. Desemenea, utilizatorul este informat, pentru fiecare eveniment n parte, dac se repet periodic, ora de activare i cea de dezactivare, dar are i posibilitatea de a terge din aceste evenimente. n figura 4.13 este ilustrat lista menionat anterior.

Figura 4.13 Lista de evenimente nregistrate

39

_______________________________________________________________ Implementare

4.3.

Serverul web

Reprezint cea mai important component a aplicaiei i are ca scop, pe lng intermedierea ntre interfaa cu utilizatorul i componenta hardware, rularea algoritmilor care asigur funcionalitile automate ale sistemului dar i comunicarea direct cu placa de achiziie de date pentru preluarea de date i control. Deasemenea serverul mai asigur stocarea a diferite date ntr-un SGBD. Serverul este costruit n ntregime folosind tehnologiile Java Servlet, Java Server Pages, iar schema de principu este prezentat n figura 4.14. Din punct de vedere structural, serverul este alctuit din mai muli aa numii servleturi, care nu sunt altceva dect nite clase Java ce primesc cereri de la partea de client a aplicaiei, fac diverse prelucrri i trimit napoi spre client rspunsuri. Pe lng aceti servleturi, serverul mai include i diferite alte clase de uz general care nu implementeaz neaprat interfaa HttpServlet, cum ar fi: clase de conectare la baza de date, clase derivate din clasa Thread pentru implementarea diferitelor fire de execuie i altele. Ca i aplicaie de webserver s-a ales GlassFish 3.1 datorit compatibilitii excelente cu biblioteca de funcii care faciliteaz comunicaia cu placa de achiziie de date. Structura serverului este urmtoarea: Servleturi: o Comanda o CreazaEveniment o ParametriProgramati o ProcesareLogin o ProgramAutomatizare o SchimbaParola o StergeEveniment Alte clase: o RegistruAlarm o InterfataVelleman o JDBC o Eveniment o EvenimenteProgramate Biblioteci de funcii: o TWUsb.jar o MySQLConnector.jar n continuare vom prezenta i detalia fiecare component a serverului.

4.3.1. Servleturi 4.3.1.1. ProcesareLogin


Acest servlet are ca scop preluarea de la formularul de autentificare a parolei de acces i validarea sau invalidarea acesteia. Funcionalitatea acestuia a fost descris n amnunt la paragraful 4.2.1.

4.3.1.2. SchimbaParola
Acest servlet se ocup cu schimbarea parolei de acces la sistemul informatic de control al casei inteligente. Funionalitatea acestuia a fost prezentat n detaliu la paragraful 4.2.2. 40

_______________________________________________________________ Implementare

Figura 4.14 Schema de principiu a serverului

4.3.1.3. Comanda
Acesta are ca scop activarea sau dezactivarea dispozitivelor acionabile din sistemul casei inteligente. Servletul primete de la formularul de control, prezentat la alineatul 4.2.3.2, informaii despre care dispozitiv trebuie comandat, alege portul de ieire de pe placa de achiziie de date asociat dispozitivului care utilizatorul l dorete comandat i l activeaz sau dezactiveaz folosind funciile din bibilioteca pus la dispoziie de productorul plcii. Dup efectuarea cu succes a comandei dispozitivului, se trimite un rspuns spre formular, iar butoanele animate de pe acestea i schimb pictogramele pentru a reflecta noua a stare a dispozitivului: activ sau inactiv. n figura 4.15 este prezentat funcia, din cadrul acestui servlet, care se ocup cu controlul dispozitivelor i trimiterea spre client a unui rspuns adecvat.

4.3.1.4. ProgramAutomatizare
Este unul din cei mai importani servleturi i are sarcini multiple. Pe lng funciile i metodele aferente, acest servlet mai conine i cteva clase interioare, unele create cu scopul de a asigura diferite funcionaliti automate i altele ce au ca sarcina colectarea de date de la senzori. Cea mai important funcie a acestui servlet este achiziia de date de la unii senzori i, la cerere, trimiterea acestora spre a fi afiate pe interfa. Pentru ceilali senzori care nu produc date menite spre a fi afiate (senzorii care fac parte din subsistemul de securitate al casei), servletul pune la dispoziie nite clase interne care scaneaz senzorii la intervale de timp regulat i produc diverse reacii din partea sistemului, cum ar fi, de exemplu, declanarea alarmei. Acest servlet asigur la cererea utilizatorului activarea sau dezactivarea firelor de execuie care efectueaz prelurile de date de la senzori.

41

_______________________________________________________________ Implementare

Figura 4.15 Funcia ce asigur comanda dispozitivelor Clasele menionate la nceputul paragarfului sunt derivate din clasa Thread, deci fiecare instan a acestora este un fir de execuie separat fa de cel al servletului. Astfel, prin tratarea ntr-o manier paralel a datelor de intrare, se asigur faptul c fiecare senzor are prioritatea maxim posibil. De menionat este faptul c servletul poate activa sau dezactiva fiecare fir de execuie n parte, dup cum primete comand de la formularul de validare/invalidare a senzorilor. Clasele n discuie sunt urmtoarele: Temperatura - scaneaz la intervale regulate convertorul analog digital al plcii de achiziie i convertete valorea citit n temperatur , dup o anumit formul. Mai multe detalii despre funionarea senzorului de temperatur sunt furnizate n subcapitolul 4.3.2.5. SenzorInchidere - acest fir de execuie citete la intervale regulate de timp starea senzorului magnetic. Dac senzorul este activat de un cmp magnetic, se seteaz o variabil care va servi apoi la afiarea pe interfa a faptului c ua este nchis sau deschis. Desemenea, dac este bifat pe formularul de validare/invalidare , acest fir de execuie poate declana alarma cnd senzorul este stimulat. SenzorLuminozitate - acest fir de execuie monitorizeaz prezena sau absena luminii solare, lucru determinat de senzorul de luminozitate. Astfel dac se detecteaz lumin, cum ar fi de exemplu dimineaa la rsrit, firul declaneaz deschiderea jaluzelelor. n momentul n care lumina ncepe s dispar, de exemplu seara, se va declana nchiderea jaluzelelor. DetectareMiscare - acest fir de execuie monitorizeaz senzorul barier infrarou. Cnd fascicolul infrarou este ntrerupt firul declaneaz alarma. SenzorUmiditate - firul de execuie n cauz monitorizeaz starea senzorului de umiditate. Dac senzorul detecteaz o scurgere de ap, firul de execuie va declana alarma. Alarma fir ce se ocup cu activarea i dup un interval de timp,setat de utilizator, dezactivarea alarmei. Celelalte fire de execuie prezentate, lanseaz n execuie acest fir atunci cnd apare un eveniment ce necesit declanarea alarmei. n figura 4.16 este prezentat modul cum un astfel de fir de execuie colecteaz date de la senzor i reacioneaz n consecin. Trebuie menionat faptul c modul de funcionare al senzorilor este prezentat n detaliu n capitolul dedicat componentei hardware.

42

_______________________________________________________________ Implementare

Figura 4.16 Fir de executie ce colecteaz date de la un senzor

4.3.1.5. ParametriProgramati
Acest servlet are simpla sarcin de a prelua unele setri fcute de ctre utilizator n fereastra principal a aplicaiei i s le nregistreze n cmpurile unei clase ce servete ca zon comun de memorie pentru restul claselor i servleturilor aplicaiei. Astfel de setri pot fi, de exemplu, durata n secunde a alarmei acustice sau temperatura setat.

4.3.1.6. CreazaEveniment
Acest servlet preia datele de la fereastra de gestiune a evenimentelor programate i le insereaz ntr-o tabel MySQL denumit sugestiv tblEvenimente, folosind funcii ale unei clase concepute pentru lucrul cu baza de date. Deasemenea, funciile respective asigur generarea nregistrrilor suplimentare n tabela, pentru cazurile n care se opteaz pentru repetarea zilnic, sptmnal respectiv lunar a evenimentului creat. n figura 4.17 este prezentat funcia care asigur nregistrarea evenimentului ct i generarea de nregistrri suplimentare cnd situaia o cere. Algoritmul prezentat n figura 4.17 funioneaz n felul urmtor: servletul preia datele primite de la formular i apeleaz funcia anterior menionat trimind aceste date ca argument. Se nregistreaz evenimentul printe i se verific dac s-a solicitat repetare a evenimentului. n acest caz se creaz un obiect de tip Calendar care s stocheze datele calendaristice intermediare, utilizate la generarea de noi nregistrri. Se intr ntr-o bucl care va rula atta timp ct data calendaristic a obiectului de tip Calendar nu depte un anumit prag, pentru a nu avea o bucl infinit i deci inserarea la nesfrit de nregistrri n baza de date. La fiecare iteraie se face cte o nregistrare n tabela, folosind data calendaristic extras din obiectul amintit, la care se adaug, dup caz, cte 1 zi, o sptmn sau 1 lun. Astfel se genereaz nregistrri asemntoare cu cea printe cu deosebirea c valoarea cmpului ce conine data calendaristic a fiecrei nregistrri nou generate, difer fa de precedenta cu 1 zi,1 sptmn sau 1 lun dup cum a ales utilizatorul pe formular.

43

_______________________________________________________________ Implementare

Figura 4.17 Funcia ce nregistreaz evenimentul ntr-o tabel MySQL

4.3.1.7. StergeEveniment
Acest servlet are simpla sarcin de a terge evenimentele nregistrate n baza de date. Prin apsarea unui buton, asociat unui eveniment, se primete de la fereastra de evenimente programate id-ul acelui eveniment, pe baza cruia se efectueaz tergerea din tabel.

4.3.2. Alte clase importante


Datorit faptului c, container-ul n care ruleaz servleturii este practic o main virtual Java, se pot utiliza i alte clase n proiect nu doar cele ce implementeaz interfaa HttpServlet. Astfel ntr-o aplicaie web bazat pe tehnologiile Java, programatorul are acces la ntregul API al limbajului Java la fel ca ntr-o aplicaie de tip Desktop. Pe serverul web al proiectului aflat n discuie ruleaz, pe lng servleturi, alte clase care faciliteaz diferite operaiuni. n continuare vom prezenta aceste clase i rolul lor n sistem.

4.3.2.1. InterfataVelleman
Aceast clas conine doar cmpuri i metode statice i este folosit ca o zon de memorie comun pentru restul claselor i al servleturilor. Raiunea care a stat la baza crerii 44

_______________________________________________________________ Implementare acestei clase este aceea c placa de achiziie de date nu suport citirea strilor ieirilor i drept urmare trebuie marcat undeva n memoria operaional a serverului c s-a activat s-au dezactivat una din ieirile plcii. Acest lucru este relevant la generarea formularului de control al casei, pentru a se afia corect starea activ sau inactiv a dispozitivelor acionabile.

4.3.2.2. Eveniment
Este o clas de tip bean care stocheaz unele date referitoare la evenimentele programate. Este folosit de ctre algoritmul care asigur acionarea automat a dispozitivelor din sistemul casei inteligente.

4.3.2.3. RegistruAlarma
Este o clas a crei metode permit adugarea de alarme noi n jurnal, atunci cnd senzorii sunt supui unor stimuli. Deasemenea una din metodele acestei clase preia din baza de date i genereaz jurnalul de alarme care este afiat ulterior n fereastra principal a aplicaiei.

4.3.2.4. JDBC
Aceast clas conine metode care faciliteaz operaiunile ce implic tranzaciile de date. De la conectare, executare interogri i pn la preluarea de seturi de date, toate cad n sarcina acestei clase. Practic orice alt clas sau servlet care are de inserat sau extras date din tabelele MySQL apeleaz la aceasta. n figura 4.18 este prezentat funcia care efectueaz conectarea la baza de date i crearea obiectului Statement folosit pentru efectuarea de interogri SQL iar n figura 4.19 este ilustrat diagrama clasei.

Figura 4.18 Funcia de conectare la baza de date

45

_______________________________________________________________ Implementare

Figura 4.19 Diagrama clasei JDBC

4.3.2.5. EvenimenteProgramate
Aceast clas are funcionalitatea cea mai complex dintre toate celelalte clase i servleturi existeni n cadrul serverului web. Principala ei sarcin este aceea de a asigura activarea i dezactivarea automat a dispozitivelor acionabile din casa inteligent, la data i ora corespunztoare fiecrui eveniment nregistrat. Ea trebuie s poat gestiona un numr ct mai mare de evenimente i posibiliti de combinare a acestora. Clasa are n componena sa alte dou clase interne a cror funcionare o controleaz, clase ce fac unele prelucrri, fiecare pe fir de execuie separat. Clasele menionate sunt: ProcesareEvenimente are ca scop preluarea de evenimente din baza de date, parcurgerea pe rnd a fiecrui eveniment i activarea acestora la momentele de timp corecte. Deasemenea, metodele acestei clase adaug evenimentul proaspt activat ntr-o list care va fi prelucrat ulterior de ctre cellat fir de execuie n vederea dezactivrii evenimentului recent activat, la momentul corect de timp. EvenimenteActivate- metodele acestei clase prelucreaz lista cu evenimente active, generat de metodele cel eilalte clase. Lista respectiva este parcurs iterativ iar fiecare eveniment prezent n aceasta este dezactivat la momentul de timp corect. Algoritmul de automatizare funcioneaz astfel: 1. Se preia lista de evenimente din tabela MySql, sortat cresctor dup data calendaristic la care trebuie s aib loc evenimentul, folosind o funcie a clasei JDBC prezentat ntr-un paragraf anterior. Sunt preluate doar acele evenimente care au ca dat ziua curent sau zile viitoare, neavnd sens preluarea de evenimente trecute. 2. Se parcurg iterativ datele preluate. Dac evenimentul de la linia curent din tabela de evenimente trebuie activat la momentul curent, se activeaz. n caz contrar firul se autosuspend pe intervalul de timp pn la momentul cnd trebuie activat. 3. Dup ce firul se revine din starea de suspendare, activeaz evenimentul de la linia curent din tabel i avanseaz la urmtoarea. Se adaug evenimentul proaspt activat ntr-o list i se notific cellalt fir de execuie c s-a mai adugat un eveniment nou. 4. Pe firul de execuie secundar se parcurg iterativ evenimentele deja 46

_______________________________________________________________ Implementare activate, iar cnd momentul de timp este corect pentru fiecare, se dezactiveaz i se terge din list. Este important de precizat faptul c algoritmul automat seteaz n memorie aceleai flaguri, la activarea sau dezactivarea unor dispozitive, ca i n cazul n care aceast operaiune s-ar face manual. Astfel c n momentul n care se activeaz sau dezactiveaz automat un dispozitiv, aceast schimbare este vizibil i pe interfaa cu utilizatorul. n figura 4.20 este prezentat funcia care parcurge evenimentele active i comand dezactivarea acestora.

4.3.3. Biblioteci de funcii


n cadrul proiectului a fost nevoie de un set de biblioteci de funcii pentru comunicarea cu module externe aplicaiei. Acestea sunt introduse n proiect sub forma de arhive de tip .jar, iar pentru apelarea funciilor din aceste arhive se presupune ca mai nti, s se foloseasc o instruciune de tip import n antetul fiierelor care conin clase cu metode apelante. Bibliotecile utilizate n cadrul proiectului sunt: TwUSB.jar bibliotec de funcii utilizate pentru comanda i preluarea de date de la placa de achiziie. Conine funcii pentru conectare, setarea i resetarea ieirilor sau preluarea de date de la intrri. Cteva din funciile acestea ar fi connect(), setDigitalChannnel(), clearDigitalChannel() i altele. MySqlConnector.jar bibliotec de funcii ce faciliteaz conectarea la un server de gestiune a bazelor de date MySQL.

Figura 4.20 Funcia ce parcurge evenimentele activate 47

_______________________________________________________________ Implementare

4.4.

Componenta hardware

n cadrul proiectului Casa Inteligent am realizat i o platform hardware, care s serveasc funcia de suport pentru testarea componentei software i deasemenea s fie o reprezentare demonstrativ a implementrii fizice a infrastructurii unei case inteligente. Aceast platform reunete mai multe dispozitive, cum ar fi diferite tipuri de senzori i dispozitive acionabile care ar putea fi ntlnite ntr-o astfel de cldire. Dezvoltarea componentei hardware a nceput prin asamblarea plcii de achiziie de date i a senzorilor. Aceste dispozitive au fost livrate sub form de kituri de asamblat. n figura 4.21 este prezentat schema bloc a montajului iar n figura 4.22 este ilustrat implementarea fizic a acestuia. Din aceasta se poate deduce faptul c platforma hardware este compus din 3 module importante: partea de achiziii de date reprezentat de senzori, partea de comand reprezentat de dispozitivele acionabile i placa de interfaare ntre mediul fizic al casei i mediul software. n continuare se vor prezenta i detalia cele 3 module enumerate.

4.4.1. Achiziia de date


Se realizeaz prin intermediul diferitelor tipuri de senzori integrai n montaj. Datele colectatea de acetia sunt preluate de placa de achiziie i trimise mai departe spre serverul web. Senzorii au fost alei n asa fel nct s poat fi integrai ntr-o cas inteligent i s fie relevani. Dup modul de funcionare al acestora, n sistem avem dou categorii de senzori: Senzori cu date de ieire digitale - acetia au la ieire un releu care aclaneaz cnd senzorul este stimulat i declaneaz la dispariia stimulului. Astfel se produce la ieire un rspuns binar, 1 sau 0, nchis sau deschis pe care sistemul casei inteligente l interpreteaz corespunztor. n figura 4.23 este prezentat schema de conectare la placa de achiziie a senzorilor digitali. Senzor cu date de ieire analogice - n aceast categorie intr senzorul de temperatur. Acesta are la ieire o valoare de tensiune, pe care convertorul analog-digital al plcii de achiziie o convertete ntr-o valoare numeric, numr care este apoi preluat i convertit de serverul web n temperatur. n figura 4.24 este prezentat schema de conectare la placa a acestui senzor. Vom enumera i prezenta modul de funcionare al fiecrui senzor din montaj.

4.4.1.1. Senzorul de umiditate


Este un senzor digital care reacioneaz cnd intr n contact cu apa sau alte lichide conductoare de electricitate. Este singurul senzor din sistem care are ca surs de tensiune o baterie i nu alimentarea de la reea. Acest senzor are ca scop, ntr-o cas inteligent, detectarea scurgerilor de ap determinat de fisurarea unor evi, defectarea mainii de splat etc. Senzorul aflat n discuie se poate observa n figura 4.22.

4.4.1.2. Senzorul magnetic


Este un senzor digital care nchide circuitul cnd n preajma sa se afl un magnet i l deschide cnd nu se mai afl sub influena cmpului magnetic. Acest senzor funcioneaz ca 48

_______________________________________________________________ Implementare un simplu comutator, drept urmare nu are nevoie de niciun fel de surs de energie. ntr-o cas inteligent un astfel de senzor poate fi montat pe tocul unei ui sau ferestre cu un magnet n apropiere, iar acesta din urm s fie fixat pe partea mobil a uii/ferestrei. n momentul n care ua sau fereastra se deschide, magnetul se deprteaz i astfel senzorul deschide circuitul avnd valorea binar 0 la ieire. n acest mod utilizatorul poate verifica de la distan, prin intermediul interfeei aplicaiei, dac i-a asigurat uile, ferestrele i poate seta s se declaneze o alarm cnd acestea se deschid. Acest senzor poate fi observat n figura 4.22.

Figura 4.21 Schema bloc a componentei hardware

4.4.1.3. Senzorul de luminozitate


Este un senzor digital care reacioneaz la luminozitatea ambiental. n momentul n care lumina atinge un anumit prag de intensitate, releul senzorului aclaneaz avnd astfel un rspuns binar de valoare 1 la ieire, iar cnd intensitatea luminoas scade releul declaneaz. Pragul de luminozitate la care senzorul aclaneaz se poate seta cu ajutorul unor poteniometre aflate pe senzor. Este alimentat de la o surs de tensiune de 12V CC. Scopul acestui senzor n sistem este acela de a declana rularea automat a jaluzelelor dimineaa i de a declana derularea acestora seara, la lsarea ntunericului.

49

_______________________________________________________________ Implementare

4.4.1.4. Bariera infrarou


Este un senzor digital integrat n subsistemul de securitate al casei. Din punct de vedere fizic este alctuit din dou dispozitive: un emitor de raze infraroii i senzorul propriu zis care recepioneaz aceste raze. Dac fascicolul dintre cele dou dispozitive este intrerupt, releul senzorului este declanat, deci valoarea de ieire binar va fi 0. Aplicaia software va interpeta acest 0 primit de la senzor ca semnalnd o prezen strin n locuin i va declana alarma. Senzorul este alimentat de la o surs de tensiune de 12V CC.

Figura 4.22 Componenta hardware

Figura 4.23 Modul de conectare al senzorilor digitali

Figura 4.24 Modul de conectare al senzorului analog 50

_______________________________________________________________ Implementare _______________________________________________________________

4.4.1.5. Senzorul de temperatur


Este singurul senzor analog din sistem. Are ca scop msurarea temperaturii ambienta le i convertirea acesteia ntr-o ntr o valoare de tensiune. Tensiunea de la ieirea senzorului este ulterior converit de convertorul analog-digital al plcii de achizi achizie e ntr-o valoare numeric reprezentat pe 8 bi bii. i. Valoarea de la convertor este preluat de serverul web i convertit n temperatur, dup formula Temperatur=(101 * valoareaCitit/256)-23 -23.

4.4.2. Acionri
Componenta hardware ofer i o parte de acionri, pe lng cea de achizi achiziie ie de date. Partea de acionri este reprezentat de o serie de dispozitive care ar putea fi regsite ntr-o o cas inteligent inteligent, , dispozitive precum alarme, corpuri de iluminat ac acionabile ionabile electronic sau sisteme de rulare/derulare a jaluzelelor. Dispoziti Dispozitivele vele enumerate pot fi observate, integrate n montaj, n figura 4.2 4.22. . Acionrile sunt efectuate de ctre placa de baz a sistem ului prin intermediul a dou tipuri de mecanisme: Acionare digital efectuat printr-un un circuit cu colector deschis. Practic Practic, fiecare ieire digital a plcii este de fapt un comutator care nchide sau deschide circuitul de alimentare al dispozitivelor ce trebuiesc comandate. n figura 4.25 4.25 este prezentat schema de montaj pentru o ac acionare ionare digital. Acionare analogic realizat cu ajutorul tehnicii PWM. Practic, la ieirea analogic a plcii este prezent o valoare de tensiune ajustabil ntre 0 i 5V. n continuare vom prezenta dispozitivele acionabile integrate n sistem.

Figura 4.25 4.2 Dispozitive externe conectate la ieirile digitale ale plcii

4.4.2.1. Iluminatul
Dispozitiv acionabil reprezentat printr printr-un un corp de iluminat i un releu. Partea de comand a bobinei releului releului este conectat la placa de achizi achiziie ie i control dup cum este prezentat n figura 4.2 5 i nseriat cu o surs de tensiune pentru energizarea bobinei . Pe 4.25 circuitul de for releul acioneaz ca un comutator nchiznd sau deschiznd alimentarea cu electricitate la corpul de iluminat. Acesta din urm folose folosete te ca surs de tensiune reeaua de 220V AC iar releul o surs de 12V CC.

4.4.2.2. Sistemul de rulare al jaluzelelor


Este un dispozitiv acionabil des ntlnit n infrastructura caselor inteligente moderne. 51

_______________________________________________________________ Implementare Implementarea acestui dispozitiv realizat n cadrul proiectului aflat n discuie este una pur demonstrativ, neputnd fi aplicat n practic. Astfel pentru ilustrarea unui sistem de rulare a jaluzelelor am folosit un dispozitiv de culisare a capetelor de imprimare de la o imprimant defect. Acest subansmablu are ncorporat un motor electric care asigur deplasarea capetelor pe o in. Pentru schimbarea direciei de culisare a capetelor de imprimare am realizat o punte H electromagnetic, care asigur schimbarea polaritii la bornele motorului electric i implicit direcia de culisare. Dispozitivul este comandat prin doar 3 fire din care unul este masa (polul negativ) iar dou sunt fire de comand. Acionarea se face astfel: cnd un fir de comand este conectat la mas dispozitivul culiseaz la dreapta iar cnd ambele sunt conectate la mas dispozitivul culiseaz la stnga, astfel simulnd nchiderea i deschiderea unor jaluzele. Alimentarea cu energie a releelor de comand i a motorului electric se face de la o surs de tensiune de 12V CC. Acest dispozitiv poate fi observat n figura 4.22.

4.4.2.3. Alarma
Face parte din subsistemul de securitate al locuinei. Este un dispozitiv care are simpla sarcin de a emite semnale acustice i vizuale cnd este acionat de sistem. Ca i implementare s-a folosit o alarm destinat iniial pentru intrarea n locuine. Dispozitivul se poate observa n figura 4.22.

4.4.2.4. Climatizarea
Este un alt dispozitiv acionabil, important, care se regsete n casele inteligente moderne. Sistemele de climatizare sunt, de regul, acionate electronic deci conectarea lor la un sistem centralizat de comand a locuinei nu ar trebui s fie prea dificil. Pentru ilustrarea acestui dispozitiv am folosit un ventilator a crui turaie poate fi controlat prin tehnica PWM, ceea ce l face ideal pentru a fi comandat de ieirea analogic a plcii de baz a sistemului. Alimentarea cu energie a acestuia se face de la o surs de tensiune de 12V CC. Acest dispozitiv poate fi observat n figura 4.22.

4.4.3. Placa de achiziie de date i control


Reprezint elementul central al componentei hardware. Aceast plac realizez interfaarea ntre mediul fizic al locuinei i sistemul informatic al acesteia. n figura 4.26 este prezentat schema bloc a acestei plci. Se pot observa att ieirile, intrrile, conectorul USB ct i elemente de electronic digital i analogic. Placa ofer faciliti de comand digital sau analogic a unor dispozitive i deasemenea preluarea de date de la senzori analogi sau digitali. Ea comunic cu sistemul de calcul prin intermediul portului USB, de unde i primete i alimentarea cu energie. Trebuie menionat faptul c aceast plac nu poate funciona separat de un sistem de calcul. Toate comenzile de activare dispozitive sau citire de date vin din partea sistemului de calcul, placa nesuportnd niciun fel de programare din partea utilizatorului. Drept urmare la ntreurperea conexiunii dintre plac si computer, ieirile acesteia sunt dezactivate, datele nu mai sunt preluate de la senzori practic ntreg sistemul devine inutilizabil. O alt problem care face ca aceast plac s fie nefezabil pentru o aplicaie practic este accea c n cazul ntreruperii conexiunii dintre aceasta i sistemul de calcul din cauze de soft, conexiunea nu poate fi restabilit dect prin resetarea plcii. Resetarea se realizeaz doar prin deconectarea i reconectarea cablului USB. Acest lucru face imposibil depanarea unor probleme de 52

_______________________________________________________________ Implementare conexiune, de la distan, n cazul n care, de exemplu, utilizatorul este plecat n concediu i constat prin intermediul interfeei web c exist probleme de conectare la plac.

Figura 4.26 Schema plcii de achiziie i control

53

S-ar putea să vă placă și