modificarea parametrilor de confort Îndrumător: Prof.dr.ing. Zamfirescu Bălă Constantin Absolvent: Beleiu Ioan -Mihai Specializarea Calculatoare -… [613727]
UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE INGINERIE
DEPARTAMENTUL DE CALCULATOARE ȘI INGINERIE ELECTRICĂ
PROIECT DE DIPLOMĂ
Absolvent: [anonimizat], 2015 –
UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE INGINERIE
DEPARTAMENTUL DE CALCULATOARE ȘI INGINERIE ELECTRICĂ
PROIECT DE DIPLOMĂ
Sistem pentru monitorizarea și
modificarea parametrilor de confort
Îndrumător: Prof.dr.ing. Zamfirescu Bălă Constantin
Absolvent: [anonimizat], 2015 –
Cuprins
1. Introducere ………………………….. ………………………….. ………………………….. ………………………….. ……….. 1
1.1 Prezentarea temei ………………………….. ………………………….. ………………………….. ……………………. 1
1.2 Moti vația alegerii temei ………………………….. ………………………….. ………………………….. ……………. 1
1.3 Cerințe generale ………………………….. ………………………….. ………………………….. ………………………. 2
1.4 Utilitate ………………………….. ………………………….. ………………………….. ………………………….. ……… 3
2. Considerații teoretice ………………………….. ………………………….. ………………………….. ………………………. 4
2.1 Sisteme Android ………………………….. ………………………….. ………………………….. ………………………. 4
2.2 Raspberry Pi ………………………….. ………………………….. ………………………….. ………………………….. .. 8
2.3 Sistemul de operare Raspbian ………………………….. ………………………….. ………………………….. …. 10
2.3.1 Instalarea Raspbian ………………………….. ………………………….. ………………………….. …………. 10
2.3.2 Remote Raspberry Pi ………………………….. ………………………….. ………………………….. ……….. 12
2.3.3 Remote Desktop cu Putty și Xming ………………………….. ………………………….. ………………… 16
2.4 Servere web și aplicații web ………………………….. ………………………….. ………………………….. …….. 18
2.4.1 Servere web ………………………….. ………………………….. ………………………….. …………………… 18
2.4.2 Aplicații web ………………………….. ………………………….. ………………………….. …………………… 22
2.5 Relee și senzori de temperatură și umiditate ………………………….. ………………………….. …………. 23
2.5.1 Relee ………………………….. ………………………….. ………………………….. ………………………….. … 23
2.5.2 Senzori de temperatură și umiditate ………………………….. ………………………….. ……………… 24
3. Rezolvarea temei de proiect ………………………….. ………………………….. ………………………….. …………… 25
3.1 Cercetări în domeniu ………………………….. ………………………….. ………………………….. ……………… 25
3.1.1 Vision: Towards an Extensible App Ecosystem for Home Automation through Cloud –
Offload 25
3.1.2 Living with an Intelligent Thermostat: Advanced Control for Heating and Cooling Systems
27
3.2 Proiectarea sistemului ………………………….. ………………………….. ………………………….. ……………. 29
3.2.1 Analiza și specificarea ceri nțelor ………………………….. ………………………….. ……………………. 29
3.2.2 Proiectarea bazei de date ………………………….. ………………………….. ………………………….. … 31
3.2.3 Arhitectura sistemului ………………………….. ………………………….. ………………………….. ……… 36
3.3 Dezvoltarea aplicației ………………………….. ………………………….. ………………………….. ……………… 38
3.3.1 Mediul de dezvoltare ………………………….. ………………………….. ………………………….. ………. 38
3.3.2 Structura modulelor ………………………….. ………………………….. ………………………….. ………… 41
4 Concluzii ………………………….. ………………………….. ………………………….. ………………………….. ………….. 66
4.1 Gradul de îndeplinire a obiectivelor ………………………….. ………………………….. ……………………… 66
4.1.1 Obiective îndeplinite ………………………….. ………………………….. ………………………….. ……….. 66
4.1.2 Obiective neîndeplinite ………………………….. ………………………….. ………………………….. ……. 66
4.2 Dificultăți întâmpinate ………………………….. ………………………….. ………………………….. ……………. 66
4.3 Dezvoltări ulterioare ………………………….. ………………………….. ………………………….. ………………. 67
5 Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. ………. 68
1 1. Introducere
1.1 Prezentarea temei
Acest proiect de diplomă a urmă rit implementarea unui sistem pentru monitorizarea si
modificarea parametrilor de con fort din interiorul unei locuințe. Parametrii de confort aleș i in
realizarea ac estui proiect sunt temperatura ș i umiditatea.
Acest sistem poate fi folo sit de orice persoană care doreș te monitorizarea ș i modificarea
parametr ilor de confort dintr -o locuinț ă. Sistemul pe rmite modificarea de la distanță a acestor
parametri.
1.2 Motivația alegerii temei
Odată cu dezoltari majore in calcul , rețele și tehnologia bazată pe senzori, obiectele de uz casnic
de acasă devin din ce î n ce mai automate , conectate și inteligente . Pentru tehnologia în domeniul
caselor automatizate , accentul a fost pus pe confort, comoditate și o cât mai bună experiență a
utilizatorului . Economisirea energiei a devenit unul dintre obiectivele pentru obiectele de uz
casnic mai ales că prețul energiei î n ultimul deceniu a crescut cu aproape 170% . Cu această
conștientizare de creș tere a consumului de energie și necesitatea pentru modernizarea liniilor de
produse existente , mulți producă tori au fost interesaț i în adăug area de noi funcții de economisire
a energiei pentru aparatele consumatoare de energie .
Alegerea acest ei teme a fost motivată î n principal din dorinț a de a realiza un sistem util pentru
monitorizarea si modifica rea parametrilor de confort , eficient d in punct de vedere energetic, ușor
de folosit și mai ales un sistem care să permită utilizatorului folosirea sist emului din orice arie
geografică .
Aplicați a a fost realizată folosind cunoșt ințele dobândite în facultate pe parcursul celor 4 ani. De –
a lungul acestor ani de studiu, am asimilat cunoștințe relevante în realizarea aplicației, din
cursurile:
Inginerie software
Programare orientată pe obiect
Dezvoltarea aplicațiilor WEB
2 Tehnologii pentru d ezvoltare a de a plicații
Proiectarea bazelor de date
Acest sistem va reduce atât efortul utilizatorului câ t și costul energiei folosite pentru menținerea
temperaturii la un anumit nivel dorit de utilizator.
1.3 Cerințe generale
Automatizarea caselor este un domeniu de actualitate care va fi exploatat într-o masură mai mare
pe viitor. Companii precum Google, Siemens, Phillips au deja pe piață produse destinate acestui
segment.
O casă automatizată este o casă echipata cu senzori și activatori de diferite tipuri pentru a
monitor iza activitățile și mișcarea, pentru a monitoriza situațiile de risc, cum ar fi incendiile și
alarme le de fum. În general există trei co mponente principale asociate caselor inteligente: un set
de senzori, un set de activatori pentru controlul senzorilor și alte echipamente, cum ar fi mașini
de gătit, ferestre, sisteme de încălzire și așa mai departe, precum și facilități de calcul la care
senzorii și activatorii sunt conectați .
Ca ș i alternativă pentru termostatul clasic, am propus realizarea unui termostat inteligent sau
altfel spus a unui sistem pentru monitorizarea și modificar ea parametrilor de confort; ca și plus
față de un termostat clasic fiind monitorizată ș i umiditatea. Pentru realizarea sistem ului au fost
folosite ca ș i resurse hardware: Raspberry Pi (mini -computer) la care a fost conec tat un senzor
pentru temperatură și umiditate precum și o placă cu două relee pe post d e activator pe ntru
sistemul de încălzire și ră cire a locuinț ei. Monitoriza rea precum ș i modi ficarea tempraturii si a
umidităț ii se face prin intermediul unui d ispozitiv bazat pe Android pe care a fo st instalat in
prealabil aplicația Android specifică sistemului dezvoltat.
Utilizatorul sistemului va putea ca prin intermediul folosirii unei aplicatii Android să verifice
temperatura și umiditatea curentă dintr -un ambient î n care a fost instalat sistemul bazat pe
Raspberry Pi . Acest lucru se poate face de oriunde, atât timp cât există o conexiune la internet ,
atât pentru sistem cât și pentru aplicația Android . De asemen ea utilizatorul va putea vedea ș i un
grafi c detaliat al istoricului evoluț iei temperaturii și umidității pentru o perioadă de timp dorită.
În plus, util izatorul va putea primi notificări în cazul î n care an umite limite superioare precum ș i
inferioare set ate de acesta pentru temperatură ș i umiditate au fost depăș ite.
3 Prin aceste facilități am dorit să ofer utilizatorului o cât mai bună experiență în timpul folosirii
aplicației, precum și opțiunea de personalizare, ținând cont de faptul că valoarea temperaturii
poate fi oarecum subiectivă pentru diferiț i indivizi.
1.4 Utilitate
Un prim motiv pentru care un termostat inteligent conectat la internet este util este faptul că va
da proprietarilor de locuințe posibilitatea să monitorizeze și să controleze termostatul de oriunde,
folosind o tabletă sau un smartphone.
În al doilea rând, într-o casă tipică sistemele de încălzire și răcire reprezintă mai mult de jumătate
din energia consumată într -o casă . Așadar t ermostatele inteligente pot ajuta utilizatorii la
reducerea facturilor la utilități, dacă sunt eficiente din punct de vedere energetic.
În al treilea râ nd, un termostat inteligent poate de asemenea sa uș ureze viaț a oamenilor c u nevoi
speciale, prin faptul că nu va fi nevoie de deplasare pentru monitorizarea sau controlul
parametrilor de confort di n locuinț a proprie , așa cum este nevoie pentru un termostat clasic
instalat pe perete .
4 2. Considerații teoretice
2.1 Sisteme Android
Android este un sistem de operare mob il (OS) bazat pe nucleul Linux și dezvoltat în prezent de
Google . Cu o interfață utilizator bazată pe manipularea directă , Android este destinat în primul
rând pentru dispozitivele mobile cu ecran tactil , cum ar fi smartphone -uri și tablete , cu interfețe
specializate pentru televizoare (Android TV), autoturisme ( Android Auto ), și ceasuri de mână
(Android Wear ).În ciuda faptului că este destinat în primul rând pentru dispoz itive cu ecran
tactil , acesta a fost , de asemenea, utilizat în console de jocuri , camere digitale , PC -uri și alte
electronice . În 2015, Android este cel mai u tilizat sistem de operare [3].
În prezent dispozitivele mobile au căpătat o importanță deosebit de mare în viața de zi cu zi a
oamenilor. O importantă categorie este reprezentată de către telefoanele mobile. Odată cu
creșterea numărului utilizatorilo r, crește și numărul facilităților care se găse sc pe piață. Începând
de la telefoane simple, utilizate doar pentru a face apeluri, telefoanele mobile ne -au schimbat
viața și au devenit parte din ea. În prezent, ele nu mai sunt folosite doar pentru apeluri, ci au
nenumărate funcționalități, cum ar fi ca mera foto și video, redarea conținutului audio, TV,
browser web etc. Și odată cu noile tehnologii, programe și sisteme de operare noi sunt necesare
[2].
Sistemul de operare Android este un sistem de operare apărut recent pe piața de dipozitive
mobile. Acest sistem este atractiv pentru dezvol tatori deoarece oferă librării și utilitare pentru
dezvoltarea de aplicaț ii open source.
Sistemul de operare Android este compus din 4 nivel uri [4]:
1. Nivelul aplicație (aplicațiile fiind dezvoltate în limbajul java și rulate pe motorul Dalvik)
Android deține un set foarte larg și standardizat de API -uri și librării, dezvoltatorii putând folosi
aceste API -uri pentru a crea jocuri și aplicații, Java făcâ nd astfel aplicațiile Android portabile pe
dispozitivele care suportă sistemul de operare. Programul Java nu rulează direct pe Android, ci
este convertit într -un cod de octeți Dalvik. Astfel, sistemul poate rula orice aplicație , atât timp
cât ea poate fi convertită în codul Dalvik.
5 2. Framework -ul
Framework -ul Android este un set de API -uri care dă posibilitatea dezvoltatorilor de a scrie
aplicații repede și ușor. Constă din instrumente pentru crearea elementelor interfeței grafice cum
ar fi : butoane, c âmpuri text, câmpuri pentru imagini, precum și din instrumente de sistem cum ar
fi intent -uri(pentru pornirea altor aplicații sau activități sau p entru deschiderea fișierelor).
3. Librăriile de sistem
Librăriile de sistem de pe android sunt construite în principiu pe C și C++, fiind astfel rapide și
eficiente. Din moment ce librăriile rulează deasupra kernelului Linux, există o mulțime de
drivere și librării dispon ibile care pot fi customizate.
4. Kernel -ul Linux
Kernel -ul linux a fost ales deoarece s -a dovedit a fi stabil și puternic. Linux are un bun
management al memoriei, un bun management al proceselor și dispune de funcții cum ar fi
comunicația TCP/IP. Pentru un producător de hardware, primul lucru care trebuie făcut pentru a
construi o platforma A ndroid este de a crea un driver pe kernel -ul Linux.
Fig.2 -1 Arhitectura sistemului Android
Aplicațiil e Android sunt compuse din următoarele componente de baz ă [5]:
6 • activități
• servicii
• manager de conținut
• receptori de emisie(broadcast receiver)
• intent
Activitatea reprezintă interfața cu utilizatorul, o aplicaț ie Android poate avea una sau mai multe
activită ți. Fiecare activitatea are un ciclu de viata independent de ciclul de viata al procesului
asociat aplicaț iei. Acti vitățile își pot păstra starea ș i datele acesteia pot fi salvate sau restarate. O
aplicație poate avea cicluri de viaț ă multiple.
Fig.2 -2 Ciclul de viață al unei activități
7 Serviciu l este reprezentat de o sarcină care este ex ecutată in fundal, fără interacț iunea directă cu
utilizatoru l si este gestionat de o instanț ă a clasei " Service".
Inten t este entitatea folosită pentru descrierea unei opera țiuni care este pregătită pentru a fi
executată. De fapt este un mesaj transmis către o altă componentă pentru a anunț a o anumită
opera țiune. Este reprezentată de un mesaj asincron folosit pentru a activa servicii sau activită?i.
Intenț ia este gestionată de o instan ță a clasei "Intent".
Manag erul de con ținut este un API folosit pentru a gestiona datele priate ale aplica ției, este ca un
sistem de administrare de date ce descrie o alternativă la sistemul de fiș iere, baze de d ate SqlLite
sau orice alta soluț ie de stocare persistentă.
Receptorul d e emisie este o c omponentă care răspunde la anunț uri difuzate la nivel de sistem,
similar cu conceptul de handler global. Acesta este implementat de o subclasă a clasei
"BroadcastReceiver".
Fiecare componentă realizează un rol diferit în comportamentul fin al al aplicației , și fiecare
poate fi activată individual (chiar și de către alte aplicații).
De vreme ce Android este un produs open -source, producătorii având posibilitatea de a -l
modifica în mod gratuit, nu există configurații hardware sau software s tandard. Totuși, Android
implementează următoarele funcționalități [1] :
stocare – folosește SQLite, o bază de date relațională ce utilizează resurse puține
conectivitate – suportă GSM/CDMA, GPR S, EDGE, 3G, IDEN, EV -DO, UMTS,
Bluetooth (inclusiv A2DP si AVRCP), WiFi, LTE, WiMAX
WiFi Direct – tehnologie care permite aplicațiilor să se descopere și să se interconecteze
peste o conexiune punct -la-punct având lățime de bandă mare
Android Beam – o tehnologie bazată pe NFC (Near Field Communication) care permit e
utilizatorilor să partajeze conținut instant, prin apropierea dispozitivelor mobile
respective
mesagerie – atât SMS cât și MMS
navigare pe Internet – bazat pe motorul open source pentru navigare WebKit impreună cu
motorul JavaScript de la Chrome V8 supor tând HTML5 și CSS3
8 multimedia – suportă formatele H.263, H.264 (într -un container 3GP sau MP4), MPEG -4
SP, AMR, AMR -WB (într -un container 3GP), AAC, HE -AAC (într -un container MP4
sau 3GP), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF si BMP
grafică – 2D opti mizată, 3D (OpenGL ES)
senzori – accelerometru, cameră foto, busolă digitală (magnetometru), senzor de
proximitate, GPS / AGPS
multi -touch – suportă ecrane cu posibilitate de contact în mai multe puncte concomitent
multi -tasking – permite rularea de aplicații cu mai multe fire de execuție
GCM (Google Cloud Messaging) – serviciu ce permite dezvoltatorilor să trimită date de
dimensiuni mici către utilizatori pe dispozitive Android, fără a avea nevoie de o soluție
de sincronizare pr oprietară
multi -Language – suport pentru text unidirecțional și bidirecțional
suport pentru aplicații Flash (până în versiunea 4.3)
legătură la Internet – suportă partajarea conexiunilor la Internet ca punct de distribuție cu
fir / fără fir
2.2 Raspberry Pi
Raspberry Pi este un SBC (Single -Board Computer) de dimensiunile unui card de credit, produs
în UK de către Raspberry Pi Foundation cu scopul de a promova învățarea noțiunilor de bază din
domeniul informaticii în școli [15].
Fig.2 -3 Rapberry Pi
Raspberry Pi se poate conecta la un monitor sau TV si folosește tastatura si mouse -ul standard.
Este un mic device ca re permite oamenilor de toate vârstele să exploreze tainele computerelor si
9 să înveț e limbaje de pro gramare ca Python sau Scratch. Este ca pabil sa facă tot ceea ce se
așteaptă ș i de la un desktop PC: de la navigarea pe internet până la redarea videourilor high –
definition.
Unitatea centrală de procesare a unui Raspberry Pi este un BC M2835, un full Hd optimizat ca și
cost. Conceput și optimizat pentru eficiență economică , BCM2835 foloseș te tehnologia
Broadcom’s VideoCore pentru a permite aplicațiilor media playback, î nregistrare, streaming
media, graphică ș i 3D gaming. BCM2835 are dispon ibil un array de pini GPIO. Acești pini pot
fi configuraț i ca pini de intrare sau de iesire. Acești pini sunt folosiț i pentru a conecta Raspberry
Pi la perificeric ele pe care dorim sa le controlă m.
Deși este un computer ieftin ș i simplu , Raspberry Pi se distinge de alte computere folosite in
viața de zi cu zi , mai ales pentru că Raspberry Pi poate fi utilizat în proiecte electronice deoarece
are o interfață de pini input -output .
Hardware , cum ar fi LED -uri și motoare , pot fi controlate cu ajutorul pinilor GPIO pentru ieșiri,
în timp ce butoane și senzo ri pot fi citite pentru intrări .
Fig.2 -4 Pini GPIO Rapberry Pi(1) Fig.2 -5 Pini GPIO Rapberry Pi(2)
Cea mai bună parte în a avea aceasta facilitate este că se pot scrie programe pur și simplu la fel
de ușor și eficient cum ar fi fost scrise pentru un computer desktop . Ceea ce diferențiază
Raspberry Pi față de un microcontroller tipic este faptul că Raspberry Pi are alte câteva periferice
cum ar fi tastatura , mouse ul , monitor ul , precum și un port Ethernet , care are capacitatea de a
acționa atât ca intrare cât și ca ieșire .
10 2.3 Sistemul de operare Raspbian
Raspberry Pi are un si stem de operare Linux, care e ste core -ul kernelului; pe lângă acesta ma i are
o colecț ie de drivere, ap licații ș i serv icii care toate sunt î ncorporate in sistemul de operare. Multe
versiuni de Linux au evoluat de -a lungul anilor. Cele mai popul are pentru desktop sunt Ubuntu și
Fedora, fiecare avâ nd o comunitate mare de utilizatori [8].
Cum Rapsberry Pi este bazat pe un chipset diferit de cel al PC -urilor tipice, fiind baza t pe un
chipset mobil, are bineînțeles alte configuraț ii. Procesorul (Broadcom) conține multe trăsături
care necesită drivere speciale ș i care nu sunt incluse in sistemele Unix standard. Cele mai multe
desktopuri au multă memo rie și spatiu de stocare dar Rapberry Pi este limitat in privinț a acesto r
resurse .
Au fost create versiuni de Linux special pentru Raspberry Pi. Sistemul de operare pe care il
folosim pentru Raspberry Pi este Raspbian OS.
Cei doi developeri care au contribuit cel mai mult la proiect ul Raspbian sunt Mike Thompson ș i
Peter Green. Dezvoltarea s istemului nu ar fi fost posibilă fără participarea activă a comunităț ii
Raspberry Pi.
2.3.1 Instalarea Raspbian
Raspberry Pi nu are o memorie non -volatila integrat ă deoarece a fost p roiectat să coste cât de
puțin posibil. Î n schimb vine cu un slot pentru u n SD card care are rolul de spaț iu de stocare
principal. Pentru a rula Raspbian trebuie ca inițial să instală m sistemul pe card.
Mărimea recomandată pentru SD card este de minimum 4 GB, dar mă rimile mai mari sunt
binevenite.
Inainte de a instala sistemul de operare pe cardul SD, trebuie obținută o copie a lui, de obicei
descărcată de pe internet, de obicei într -un format .zip care trebuie extras intr-un fisi er de
imagine. Indiferent de fișierul imagine descă rcat p rocesul de instalare este acelaș i [12].
Primul pas in crearea SD ca rdului este formatarea corecta. Trebuie parcurși următorii paș i pentru
instalarea sistemului pe cardul SD:
11 1. Descă rcarea imaginii pentru Raspberry Pi de pe pagina raspberry.org sau de pe un torrent,
dar trebuie asigurat faptul că imaginea este pentru Ra spberry Pi, astfel s -ar putea să nu
funcț ioneze.
2. Extrage rea fiș ierului descărcat î ntr-un fisier .img .
3. Introducerea cardul ui SD î n cititor ul pentru carduri SD .
4. Descărcarea Win32DiskImager într-un format de tip arhivă. Utilitarul
Win32DiskImager poate fi rulată ș i de pe un card de memorie USB .
Fig.2 -6 Fereastra Win32DiskImager utility
5. Extragerea fiș ierului din arhivă și apoi rularea utilitarul ui Win32DiskImager.
6. Localizarea fisierul ui rezultat anterior.
7. Selectarea comenzii Write si se așteaptă terminarea procesului .
8. Închiderea programul ui și scoaterea cardul ui SD.
9. Cardul poate fi acum introdus î n Raspberry Pi .
Alte componente hardware necesare pentru Raspberry Pi sunt:
Un adaptor micro usb pentru alimentare. Paremetrii pentru alimentare sunt 5 V la ~ 1 A
Un cablu ethernet pentru conexiunea la internet.
O tastatura usb
Un mouse usb
Un display HDMI. Î n lipsa unui display HDMI se poate folosi modul remote.
12 2.3.2 Remote Raspberry Pi
În cazul în care nu există hardware -ul necesar pentru a utiliza Raspberr y Pi ca ș i un computer o
altă modalitate poate fi folosită : modul remote.
Un sistem remote este un computer sau device care a fost configurat să funcționeze fără un
monitor, tastatură sau mouse. Un sistem remote este controlat de obicei printr -o conexiune de
rețea.
Protocolul folosit pentru a rula Raspberry Pi în modul remote se numeș te SSH (shell securizat )
.Este un protocol care permite ca datele să fie transferate între două dispozitive într-o rețea ,
folosind un canal securizat . Cele două versiuni ale protocolului sunt SSH1 (sau SSH- 1) și SSH2
(sau SSH- 2). Utilizate în principal în Linux și sistemele de operare multiutilizator UNIX , SSH a
fost dezvoltat ca înlocuitor pentru Telnet și alte protocoale nesecurizate de acces la distanță care
trimit informații , chiar parole , în text clar , lăsând posibilitatea de a fi descoperite prin analiza
traficului de rețea . SSH este menită să asigure confidențialitatea și integritatea datelor transmise
prin intermediul unei rețele nesigure .
Pentru a rula o conexiune SSH, un client SSH trebuie să fie utilizat , precum și SSH trebuie , de
asemenea, activat pe dispozitivul pe care se doreș te conexiu nea.
Clientul utilizat este numit Putty , un program gratuit open -source , care emulează un terminal ,
fiind un client de SSH, Telnet , rlogin și TCP, precum ș i un client pentru consola serială . Numele
"PuTTY" nu are o semnificație specială , reflectă doar procedura "de TTY " unde "TTY" se referă
la "terminal " în terminologia UNIX (TTY este prescurtarea de la Teletype ).
Putty a fost dezvoltat inițial pentru utilizarea cu Microsoft Winfows, dar a fost mai târziu
dezvoltat și pe alte sisteme de operare. Pentru platformele UNIX există versiuni oficiale, iar
pentru Mac OS și Mac OS X se dezvoltă în continuare. Există și versiuni neoficiale pentru
sisteme ca Symbian sau Windows Mobile.
Putty a fost dezvoltat și întreținut de Simon Tatham, în prezent fiind un software în stadiul beta.
13 Înainte de autentificare a pe Raspberry Pi folosind SSH, trebuie permis acest lucru de către
Raspberry Pi [18]. Pentru acesta , trebuie executate următoarele comenzi :
1. Primul pas îl reprezintă autentificarea în sistem cu următoarel e informații (în cazul în
care informațiile de autentificare nu au fo st în prealabil schimbate):
Username: pi Password:raspberry
2. Trebuie acordate privilegii de root utilizatorului :
Fig.2 -7 Acordarea de privilegii root
3. Directorul curent trebuie schimbat spre “/boot”
Fig.2 -8 Schimbarea directorului curent spre directorul „boot”
14
4. Apoi, se activează SSH pentru Raspberry Pi:
Fig.2 -9 Activarea SSH
5. Restartarea dispozitivului Raspberry va activa automat SSH.
Notă : În acest stadiu este recomandat ă obținerea adresei IP al dispozitivului Raspberry Pi; acest
lucru se poate prin comanda “ifconfig”.
Fig.2 -10 Obținerea adresei IP a dispozitivului Raspberry Pi
15 Adresa IP a dispozitivului se află imediat după câmpul “inet addr” care apare dup ă executarea
comenzii menționate mai sus. Adresa IP este în acest caz “192.168.1.100”.
După acestea sistemul este pregătit pentru modul remote. Pentru aceasta , se deschide Putty, se
introduce adresa IP al dispozitivului Raspberry în câmpul Host Name și se bifează SSH ca și
Connection Type .
Fig.2 -11 Fereastra Putty
Dupa parcurgerea acestor paș i, utilizarorul va trebui să introducă informațiile de autentificare și
va avea acces la sistem:
Fig.2 -12 Remote Raspberry Pi
16 2.3.3 Remote Desktop cu Putty și Xming
Dacă se dorește o interfață grafică pentru modul remote, există o opțiune pentru vizualizarea
desktopului Raspberry Pi direct pe computer . Aceasta se numește remote desktoping și oferă
utilizatorului aceleași funcționalități ca și în cazul în care Raspberry Pi ar fi fost conectat la un
monitor HDMI cu o tastatură și un mouse USB.
Acest lucru se realizează prin folosirea XMing. Xming este un display server X11 pentru
sistemele de operare Microsoft Windows, inclusive Windows XP sau versiuni m ai recente.
Xming oferă X Window System display server , un set de aplicații tradiționale eșantion X și
instrumente, precum și un set de fonturi. Dispune de suport pentru mai multe limbi și are Mesa
3D, OpenGL, și capabilități le extensii lor grafice GLX 3D [14].
Serverul Xming X se bazează pe Cygwin / X, X.Org Server . Este cross -compilat pe Linux cu
suita de compilato are MinGW și biblioteca multi -threading Pthreads -Win32. Xming rulează
nativ pe Windows și nu are nevoie de niciun software de emulare terț. Xming poate fi utilizat cu
implementări de Secure Shell (SSH) pentru a transmite în siguranță sesiuni X11 de la alte
computere . Suportă PuTTY și ssh.exe , și vine cu o versiune de plink.exe PuTTY . Proiectul
Xming oferă , de asemenea, o versiune portabilă pentru PuTTY .
Software -ul a fost recomandat de către autori de cărți pe tema freev software -ului atunci când este
nevoie un server gratuit X, și este descris ca simplu și mai ușor de instalat , deși mai configurabil
decât alte opțiuni populare gratuite cum ar fi Cygwin / X.
După instalarea Xming pe Microsoft Windows , pentru a începe desktoping ul la distanță, se
urmează aceeași procedură de autentificare prin Putty în modul remote , dar X11 forwarding
checkbox trebuie să fie bifată din categoria ssh / x11 de Putty, și de asemenea procesul Xming
trebuie sa ruleze pe mașina Windows.
17
Fig.2 -13 Activarea X11 forwarding din Putty
Dupa ce se face acest lucru , iar utilizatorul este autentificat în sistem , prin comanda " lxsession"
se va porni serviciul desktoping la distanță și se va deschide o fereastră nouă care conține spațiul
de lucru de la distanță .
Fig.2 -14 Executarea comenzii “lxsession”
18
Fig.2 -15 Remote Desktop pentru Raspberry Pi
2.4 Servere web și aplicații web
2.4.1 Servere web
Serverele ocupă un loc impo rtant în tehnologia informatiei , la fel ca și minicomputerele în trecut,
care însă au fost înlocuite. Un server este o aplicație pe computer , uneori chiar un computer
întreg, care operează continuu în rețeaua sa și așteaptă solicitări din partea altor calc ulatoare din
rețea. Serverele pot fi folosite simultan și pentru alte scopuri, dar când nevoile o cer, ele pot fi
rezervate exclusiv pentru funcția de server. De exemplu, un calculator se poate folosi într -un
birou simultan pentru două scopuri, ca stație d e lucru și ca server pentru celelalte calculatoare din
birou. Cuvântul server provine din cuvântul englez to serve – a servi: calculatorul server poate în
principiu deservi întreaga rețea de calculatoare clienți, pentru a asigura accesul la toată paleta de
forme de conectare și servicii. Deseori unul și același computer poate juca ambele roluri, și de
server, și de client, în același timp. Numele de server este un alt termen pentru Host computer –
computer gazdă, spre deosebire de alte elemente "inteligente " din rețea cum ar fi routerele și
switch -urile [13].
19 În zilele noastre serverele se aseamănă fizic cu celelalte calculatoare uzuale, deși configurația
hardware este deseori optimizată pentru funcționarea lor ca servere. Multe componente de
hardware sunt i dentice cu cele ce le găsim într -un calculator personal. Totuși serverele rulează
sisteme de operare și programe specializate care sunt foarte diferite față de cele folosite pe
calculatoare le persona le și stațiile de lucru.
Diferența majoră între computerele personale și servere nu este partea hardware ci partea de
software . Pe servere rulează sisteme de operare care sunt special proiectate pentru acestea. De
asemenea ele rulează aplicații special proiectate pentru procesele dorite.
Sistemul de operare Microsoft Windows este predominant în rândul computerelor personale, dar
în lumea serv erelor cele mai populare sisteme de operare sunt FreeBSD, Sun Solaris și
GNU/Linux – care derivă și sunt asemănătoare cu sistemul de operare UNIX. UNIX a fost
proiectat inițial pentru microcomputere și pentru servere, care au înlocuit treptat
microcomputerele. UNIX a fost o alegere logică și eficientă ca sistem de operare pentru servere.
Sistemele de operare orientate spre servere au multe prop rietăți în comun, care să le facă mai
compatibile între ele, cum ar fi: lipsa interfeței grafice GUI (sau existând doar o opțiune GUI);
abilitatea de a reconfigura sistemul (hardware și software) în unele cazuri fără oprirea sistemului;
facilități de a cre a copii de siguranță (backup -uri) pentru datele importante, la intervale de timp
frecvente și/sau regulate; posibilitatea de a muta date între diferite partiții sau dispozitive printr –
un mod „transparent” (invizibil, nederanjant) pentru utilizator; capacit ăți flexibile și complexe de
lucru în rețea; proprietăți (daemoni în UNIX sau servicii în Windows) care fac ca execuția
programelor să fie mai eficientă; sistem de securitate etanș, protecția datelor și a memoriei. De
asemenea aceste sisteme de operare pen tru servere, în multe cazuri interacționează cu senzori
hardware, pentru a detecta anumite stări cum ar fi: supraîncălzirea, defecțiuni la microprocesor
sau hard -disc, sau alte tipuri de avertizări, astfel ca operatorul uman să poată acționa pentru
remedie rea defecțiunilor.
Deoarece în unele cazuri cerințele server elor sunt diametral opuse calculatoarelor personale, este
foarte dificil să se proiecteze un sistem de operare care să se preteze pentru ambele medii la fel
de bine; sistemele de operare pot fi cr oite pentru calculatoare personale, fără însă să fie ideale și
pentru servere, și vice -versa.
20 Windows este mai puțin folosit la servere decât cea mai recentă versiune al popularului Mac OS
X (acesta este bazată pe UNIX și dă acces complet utilizatorilor să i la sistemul de operare UNIX)
din familia sistemelor de operare pentru calculatoare personale și unele sisteme de operare având
structura de bază proprie (cum ar fi z/OS); dar majoritatea serverelor folosesc sisteme de operare,
versiuni ale UNIX sau clone le acestuia. Chiar și în cazul popularului sistem de operare
GNU/Linux de tip UNIX, folosit frecvent pe servere, sistemul poate fi ideal pentru servere, dar
poate fi nesatisfăcător pentru calculatoarele personale.
Apariția serverelor bazate pe microproceso are a facilitat apariția mai multor versiuni ale
sistemului de operare UNIX care rulează pe microprocesoare de tip Intel x86 sau AMD,
incluzând Solaris, GNU/Linux și FreeBSD. De asemenea familia sistemelor de operare
Microsoft Windows rulează pe dispozitiv e de tip Intel sau AMD, iar începând cu sistemul de
operare Windows NT s -au încorporat anumite caracteristici care fac posibilă utilizarea acestuia
pe servere.
Aplicațiile pentru servere sunt specifice, realizate pentru a executa numai operații de tip serv er,
la fel ca și aplicațiile pentru calculatoarele personale sau de tip mainframe, care sunt proiectate
special pentru mediile respective.
Majoritatea aplicațiilor server se remarcă prin faptul că sunt total neinteractive; ele nu afișează
informații pe ecr an și nici nu așteaptă comenzi de la utilizator. De fapt ele lucrează discret cu
serverul și conlucrează doar cu stațiile de lucru (clienții) care sunt legate la server. Aceste tipuri
de aplicații se numesc daemoni în terminologia UNIX, și servicii în term inologia Windows.
Aplicațiile server pornesc, de obicei, în momentul pornirii serverului, continuând să ruleze până
când serverul este oprit. Un server care primește numai cereri folosește aceleași tipuri de aplicații
tot timpul, și nu poate confirma calcu latorului care a emis cererea că aceasta a fost îndeplinită.
Unele aplicații server din anumite sisteme de servere pornesc doar în momentul când primesc o
cerere de la un client, iar după ce au satisfăcu t-o se opresc din nou.
Aproape toată structura Intern etului se bazează pe modelul de client -server. Multe milioane de
servere din toată lumea sunt conectate la Internet și rulează continuu. Majoritatea serviciilor
oferite pe Internet rulează pe servere: Web; Domain Name System ; e-mail sau poștă electronică;
21 FTP sau transfer de fișiere; instant messaging sau mesagerie instantă; fișiere audio și video;
jocuri ș.a.m.d. Pentru orice acțiune care este inițiată de un utilizator al Internetului, unul sau mai
multe servere interacționează cu ut ilizatorul precum și în tre ele.
Termenul de "server w eb" se poate referi la partea hardware sau software , sau la ambele .
Pe partea de hardware , un server web este un computer care stochează fișierele componente a
unui site (de exemplu documente HTML , imagini , fișiere CSS, fișiere JavaScript ) și le transmite
la dispozitivul utilizatorului final . Acesta este conectat la Internet și poate fi accesat prin
intermediul unui nume de domeniu ca de exemplu csac.ulbsibiu.ro .
Pe partea de software, un server de web include mai multe componente care controlează modul
în care utilizatorii accesează fișiere le web găzduit e de exemplu de un server HTTP . Un server
HTTP este un software care înțelege URL -uri (adrese web) și HTTP (protocolul utilizat de
browser pentru a vizualiza pagini Web ).
Fig.2 -16 Un browser care contactează un DNS și apoi un server web
La nivelul cel mai de bază , ori de câte ori un browser are nevoie de un fișier găzduit pe un server
web, browser -ul solicită fișierul prin HTTP . În cazul în care cererea ajunge la serverul de web
potrivit (hardware), serverul HTTP (software) trimite documentul solicitat către solicitant , de
asemenea, prin intermediul HTTP .
22 2.4.2 Aplicaț ii web
O aplicație web este un program care rulează într -un browser web și este creata într -un limbaj de
programare interpretabil de către browser (cum ar fi o combinație de JavaScript, HTML și CSS),
și se bazează pe un browser web pentru interacțiune. Aplicațiile Web sunt populare din cauza
omniprezenței browserelor web și comoditatea de a folosi u n browser web ca și client.
Capacitatea de a actualiza și menține aplicații web fără distribuirea și instalarea software -ului pe
potențial de mii de calculatoare client este un motiv cheie pentru popularitatea lor. O alta mare
calitate a aplicaților web o reprezinta faptul ca sunt imune la schimbarea sistemelor de operare
(Windows/Linux/Machintos, etc.). Aplicații web comune includ webmail, vânzare on -line cu
amănuntul, licitații online, wiki -uri și multe alte funcții. Aplicațiile web sunt disponibile oricâ nd,
24/7 de la orice terminal conectat la internet, oferin d astfel o accesibilitate de ne egalat .
Pentru a publica un site web e nevoie fie de un server static fie de un server dinamic .Un server
web static constă dintr -un calculator (hardware), cu un server HTTP (software). Un server web
dinamic constă dintr -un server de web static plus software suplimentar, cel mai adesea un server
de aplicații și o bază de date . Se numește "dinamic" , deoarece serverul de aplicații actualizează
fișierele găzduite înainte de a le trimite la browser -ul clientului prin intermediul serverului
HTTP .[20]
De exemplu , pentru a produce paginile w eb finale existente în browser , serverul de aplicație s-ar
putea să umple un șablon HTML cu conținut dintr -o bază de date . Site-uri, cum ar fi Yahoo sau
Wikipedia au multe mii de pagini web , dar ele nu sunt documente HTML reale , doar câteva
șabloane HTML și o bază de date gigant . Această configurare ușurează întreținerea și livrarea
conținutul ui.
23
Fig.2 -17 Vedere simplificată a modului de lucru a unui server web
Diagrama anterioară prezinta o vedere simplificată a modului de lucru a servere lor web:
Cereri le merg mai întâi la un server web, care servește fișiere ( imagini, fișiere text , fișiere
HTML ). Acest lucru se face pentru conținutul static .
Cererile pot fi, de asemenea, transmis e mai departe către un "server aplicație" (care poate
fi orice, CGI, FastCGI , un interpretor de php, sau un container de servlet ) care
prelucrează scripturi server -side și care poate accesa baze de date .
2.5 Relee și senzori de temperatură și umiditate
2.5.1 Relee
Un releu este un comutator acționat electric. Multe relee utilizează un electromagnet pentru a
opera un comutator mecanic, dar alte principii de funcționare sunt de asemenea folosite, cum ar
fi cele de la relee le semiconductoare. Releele sunt utilizate atunci când este necesar controlul
unui circuit de către un semnal de m ică putere (cu izolare electrică totală între control și
circuitele controlate), sau în cazul în care mai multe circuite trebuie să fie controlate prin
utilizarea unui semnal. Primele relee au fost folosite în circuitele de telegraf pe distanțe lungi ca
amplificatoare: au repetat semnalul care venea de la un circuit și il retransmitea pe un alt circuit.
24 Releele au fost utilizate pe scară l argă în centrale telefonice si î n primele calculatoare pent ru a
efectua operațiuni logice.
Fig.2 -18 Placă cu două rele e
Acționarea bobinelor releelor , în contextul sistemului de monitorizare și modificare a
parametrilor de confort cu ajutorul unui Raspberry și a unei plăci cu două relee, se face pri n
tranzistoare (incluse pe placă), care se conectează la pinul 5 V Raspberr y PI, ceea ce inseamn ă ca
placa nu solicită aproape deloc pinii GPIO Raspberry PI din punct de vedere al curentului
consumat de aceasta (curentul necesar este tras din pinul de 5V, iar pinii GPIO dau doar
comanda).
2.5.2 Senzori de temperatură și umiditate
DHT22 este un senzor simplu de temperatură și umiditate. Acesta foloseș te un senzor de
umiditate capacitiv și un termistor pentru a mă sura a erul din jur ș i transmite un semnal digital pe
pinul de date (nu este nevoie de pini analogi). Este destul de simplu de folosit, dar necesită o
sincronizare destul de atentă pentru a citi date le. Singurul dezavantaj cu adevă rat real al acestui
senzor este faptu l că se poti citi date noi doar o dată la un interval de două secunde [16].
Fig.2 -19 Senzorul de tempe ratură și umiditate DHT22
25 Specifica țiile tehnice ale senzorului DHT22 sunt :
Tensiune de alimentare 3.3 -6V
Curent 1 -1.5mA
Curent standby 40 -50 uA
Umiditate 0-100% RH
Temperatura -40 – 80 C
Acuratete umiditate + -2% RH
Acuratete temperatura + -0.5 C
3. Rezolvarea temei de proiect
3.1 Cercetări în domeniu
3.1.1 Vision: Towards an Extensible App Ecosystem for Home Automation through
Cloud -Offload
Autori : Yuichi Igarashi Kaustubh Joshi, Matti Hiltunen,Richard Schlichting
Ideea principală
Apariția unui ecosistem de aplicații mobile pentru smartphone -uri a transformat modul în care
miliarde de oamen i interactionează cu lumea digitală . Poate un ecosistem similar de aplicații
casnice și de automatizare a clădirilor să transforme modul în care trăim în lumea fizică ? Și
există un dispozitiv asemanator smartphone -ului în jurul căruia un astfel de ecosistem ar putea fi
dezvoltat ? Autorii propun dezvoltarea unui dispozitiv „home -controller” cu adevă rat flexibil
permițând extinderea capabilităților acestuia prin resurse cloud . Astfel , aplicațiile ar putea rula
fie pe „home -controller” atunci când este posibil precum și parțial sau complet pe resurse cloud
atunci când este necesar .
Rezultate
Figura de mai jos ilustrează componentele și interacțiunile lor într-un sistem de automatizare
îmbunătățit in care „home controllerul” a fost înlocuit cu un sistem hibrid constitutit din tr-un
„home -controller” precum ș i elemente bazate pe cloud. Dispozitivele pentru casă (senzori și
actuatori) precum ș i alte elemente sunt situate in casă, î n timp ce elementele bazate pe cloud sunt
situat e la un centru de date .
26
Au fost efectuate experimente preliminare pentru a demonstra fezabilitatea și necesitatea de
cloud offload pentru home -controller . Experimentele au fost efectuate pe urmă torul hardware . Ca
element pentru casa (home -controller) , a fost folosit un Raspberry Pi cu un 700MHz ARM core
și 512 MB de RAM care rule 3.6.11+ kernel OS Raspbian și un Z-wave daughter -board conectat
la Raspberry Pi printr -un port serial așa cum se arată în figura . 2. ZWave este liderul in
tehnologia de comunicare wireless pentru case inteligente. Element ul de cloud este un PC cu un
3.10GHz Intel sistem dual core și 4GB de RAM , care rulează Ubuntu 12.04 .
În acest experiment , s-a utilizat USB / IP pentru tunelare între elementul cloud și dispozitivele
USB . Rețeaua în acest experiment a fost un 100Mbps LAN . Experimentul a arătat că serverul
poate controla de la distanță dispozitive uș oare, cum ar fi un mouse și o tastatură , dar nu poate
27 captura fluxul video pe un server din cauza pierderilor de cadru . Aplicaț ia pentru streaming
video necesită un control avansat de sincronizare a captură rii cadrelor video întregi . În acest
caz,e nevoie de un mecanism mai bun de transfer decât USB / IP.
În cele din urmă , s-a folosit un home controler local pentru a mă sura CPU Load pentr aplicaț ia
Z-Way și pentru aplicațiile de redare video .Aplicaț ia Z-Way a consumat in medie circa 15% din
resursele CPU și 2% din memorie . Aplicațiile de redare video , cum ar fi guvcview și freekinect ,
au avut nevoie î n medie circa 20 % din resursele procesorului și 6% din memorie pentru rata de
320×240 rezoluție , la 20 frame/s , si aproximativ 40 % din resursele procesorului (până la circa
50%) și 7% din memorie pentru 800×600 rezol uție , la 20 frame/s . De asemenea , experimentul a
demonstrat că un dispozitiv cu resurse limitate nu ar putea susține două camere web în același
timp.
Chiar și aceste experimente foarte preliminare arată atât necesitatea , cât și potențialul arhitecturii
home controller -ului cloud -offloaded.
Concluzii
Deși problema cloud -offload ului a primit mare atenție în literatura de specialitate , cele mai multe
au fost în contextul offloadingul de pe telefoane mobile și tablete . S-a demonstrat prin exemple și
rezultate experimentale preliminare că automatizare a caselor prezintă următoarele caracteristici
care nu sunt de obicei găsite în setările mobile : a) un model de interacțiune mai relaxat care
poate tolera întârzieri în reț ea, b) un model de timesharing diferit compus din multiple aplicații
care au nevoie să fie în permanență operațional e, și c) o nevoie critică pentru funcționare a
deconectat ă.
3.1.2 Living with an Intelligent Thermostat: Advanced Control for Heating and Cooling
Systems
Autori : Rayoung Yang, Mark W. Newman
Ideea principală
Pentru a înțelege mai bine oportunitățile și provocările de a trai cu un sistem inteligent în casă ,
autorii au studiat experiența trăită cu un termostat inteligent ș i anume, Nest . Nest utilizează
învățarea automată , detectarea mișcă rii și tehnologia de rețea , precum și caracteristici ale eco-
28 feedback -ului. Nest a apărut pe piață î n octombrie 2012 și a captat atenția datorită ușurintei î n
utilizare (control de la distanță) precum și ajutorul dat î n reducerea energiei c onsumate in casa.
Rezultate
Au fost realizat e șase interviuri cu posesori al termostatului inteligent Nest și un jurnal de studiu.
Participanții au spus că motivația lor pentru achiziționarea unui Nest a fost determinată de
dorința de a încerca un dispozitiv "cool" cu funcții avansate și care arată frumos , precum și
pentru a economisi energie . Toți participanții au menționat economia de energie ca fiind una
dintre motivația lor pentru a cumpă ra termostatul Nest . Participanții au spus că posibilitatea de a
economisi bani i-a motivat î n a cumpara termostatul Nest , dar au fost mai impresionaț i de
caracteristicile avansate pe care le oferă Nest, cum ar fi programarea automată , accesul de la
distanță și aspectul elegant .
Concluzii
Interfețel e web îmbunătățite sau aplicaț iile mobile au schimbat interacțiunea dintre utilizatori și
sistemul automatizat din casă . De asemenea inteligibilitatea și inexactitatea sistemului
influențează modul în care participanț ii percep și se adaptează la sistem . În cele din urmă ,
controlul convenabil asupra sistemului și limitările tehnologice ar fi putut împiedicat economia
de energie dorită .
29 3.2 Proiectarea sistemului
3.2.1 Analiza și specificarea cerințelor
Înțelegerea contextului conform domeniului de aplicare
Acest sistem de monitorizare si modificare a parametrilor de confort pentru sisteme mobile
Android oferă utilizatorilor posibilitatea de a monitoriza în timp real evoluția temperaturii
respectiv umidității din ambient, având de asemenea posibilitatea de a și seta temperatura dorită .
Un astfel de sistem trebuie să fur nizeze informații referitoare la valoarea parametrilor de confort,
acest lucru trebuind să se facă în timp real . Vizualizarea acestor informații trebuie să fie posibilă
oricând, prin intermediu l unui dispozitiv mobil bazat pe sistemul de operare Android care să aibă
acces la serviciul de internet.
Un sistem de monitorizare și modificare a parametrilor de confort trebuie să aibă în structura sa
trei componente esențiale, și anume:
Componenta care preia informații leg ate de valorile parametrilor de confort și le transmite
spre server , dar de asemenea este și componenta care trimite comanda de pornire sau oprire a
sistemului de încalzire sau răcire, dacă temperatura dorită de utilizator nu conformă cu cea
existentă
Componenta care preia informațiile de pe server și le oferă utilizatorului prin intermediul
unui dispozitiv mobil bazat pe Android
Un server care realizează legătura între celelalte două componente ale sistemului
Sistemul trebuie să confer e utilizatorului posibilitatea de a accesa inform ațiile preluate de
senzorul de temperatură și umiditate în orice moment de timp, furnizarea acestor informații
de către componenta care le preia trebuind să se facă in mod continuu .
Pentru ca utilizatorul s ă poată accesa aceste informații pe un alt dispozitiv, componenta care
oferă informațiile în formă finală utilizatorului trebuie să fie reprezentată de către o aplicație
Android, ținând cont de faptul că sistemul Android este foarte răspândit.
30 Serviciile oferite de un sistem de monitorizare și modificare a parametrilor de confort trebuie să
asigure anumite criterii esențiale:
Acces doar persoanelor autorizate
Furnizarea de informați i în momentul apariției acestora
Posibilitatea de a comanda sistemul de în călzire și răcire a locuinței în timp real
Utilizatorul acestui sistem beneficiază de urmatoarele facilități in ceea ce privește monitorizarea
și modificarea parametrilor de confort :
Date despre valoarea parametrilor de confort în timp real
Date despre evoluția parametrilor de confort în ultima perioadă de timp, afișate sub forma
unui grafic
Setarea intervalului de timp la care parametrii de confort să fie înregistrați
Setarea temperaturii dorite în ambient, acest lucru putând duce la pornirea/oprirea sist emului
de încălzire sau răcire a casei, în funcție de temperatura setată de utilizator
Primirea unor notificări, dacă acest lucru de dorește de către utilizator, atunci cand
temperatura respectiv umiditatea au depășit anumite praguri sau au coborât sub anu mite
praguri setate de beneficiarul sistemului
Cerințe specifice bazei de date
Este necesar ca baza de date a sistemului să cuprind ă următoarele informații:
Date despre dispozitiv ul care monitorizează ș i modifică parametrii de confort
Date despre utilizatorul sistem ului
Date referitoare la parametrii de confort
Date referitoare la temperatura setată de utilizator
Cerințe specifice sistemului
Pentru ca sistemul să respecte cerințele și să îndeplinească funcționalităț ile unui sistem de
monito rizare și modificare a parametrilor de confort , aplicațiile din care acest sistem constă
trebuie să ofe re următoarele funcționalități:
Aplicația pentru dispozitivul Android:
31 Permite înregistrarea și autentificarea utilizatorului în sistem
Afișează informaț ii referitoare la valorile parametrilor de confort
Trimite către server valoarea temperaturii dorită de utilizator
Permite setarea unor anumite praguri superioare și inferioare pentru parametrii de confort
Permite primirea de notificări, dacă utilizatorul dorește acest lucru, atunci când valorile
parametrilor de confort depășeșc anumite praguri sau scad saub anumite praguri
Permite setarea intervalului de timp la care valorile parametrilor de confort să fie înregistrate
Fișierele de gestiune de la nivelul server -ului:
Primesc informațiile de la aplicația Android sau de la aplicația Pyhton aflată pe dispozitivul
Raspberry Pi
Se conectează la baza de date
Stochează informațiile în tabelele corespunzătoare din baza de date
Trimit către aplicația Android respectiv Python anumite informații cerute de acestea
Aplicația Python disponibilă pe Raspberry Pi :
Preia valorile temperaturii respectiv umidității înregistrate de senzor
Trimite către server valorile parametrilor de confort
Primește de la server anumite setări, cum ar fi intervalul de timp la care să înregistreze
valorile parametrilor de confort precum și temperatura dorită în ambient de către utilizator
Dă comanda de pornire sau oprire către sistemul de încălzire sau către sistemul de răcire dac ă
este cazul
3.2.2 Proiectarea bazei de date
Baza de date a sistemului este una de tip MySQL. Este una dintre cele mai folosite sisteme d e
baze de date si este foarte uș or de in tegrat în alte tipuri de aplicaț ii (web -based applic ations,
desktop applications).
În cadrul bazei de date a sistemului sunt necesare următoarele informații:
Date despre dispozitivul care monitorizează și modifică parametrii de confort
Date despre utilizatorul sistemului
Date referitoare la parametrii de confort
Date referitoare la tempe ratura setată de utilizator
32 Tabela Devices :
În tabela Devices sunt stocate informații referitoare la toate dispozitivele existente care
inregistreaza si modifica parametrii de confort . Sync_frequency repr ezintă intervalul de timp la
care Raspberry Pi conectat cu senzorul de te mperatură și umiditate, verifică daca temperatura
curentă înregistrată plus sau minus indice le de confort (comfort index) este mai mare sau mai
mică decât temperatura setată de utilizator.
Fig.3 -1 Tabela Devices
ID – reprezintă cheia primară a tabelei Devices și ID -ul dispozitivului Rapberry Pi
NAME – reprezintă numele dispozitivului
SYNC_FREQUENCY – reprezintă intervalul de timp la care dispozitivul va salva
parametrii de confort in baza de date.
COMFORT_INDEX – reprezintă o abatere permisă de utilizator de la temperatura dorită
Tabela Parameters :
În cadrul tabelei Parameters sunt stocate informații referitoare la parametrii de confort . Aici sunt
salvate valorile temperaturii și umidității înregistrate de fiecare dipozitiv la un anumit interval de
timp setat de utilizator (sync_frequency).
Fig.3 -2 Tabela Parameters
33
ID – reprezintă cheia primară a tabelei Parameters
DEVICE_ID – reprezintă cheia străină a tabelei Parameters și ID -ul dispozitivului de care
aparține inregistrarea dn tabel
TEMPERATURE – reprezintă temperatura
HUMIDITY – reprezintă umiditatea
DATE – reprezintă data în care au fost înregistrate valorile parametrilor de confort
Tabela Desired_temperatures :
În cadrul tabelei Desired_temperatures sunt stocate informații referitoare la temperaturile setate
de utiizator/i . Aici sunt salvate temperaturile setate de utlizator pentru fiecare dispozitiv. Între
tabelele Device s si Desired_temperatures există o relaț ie de tip unu la unu, la un moment da
putând ex ista doar o singu ră temperatură setată de utilizator.
Fig.3 -3 Tabela Desired_temperatures
DEVICE_ ID – reprezintă cheia primară a tabelei Desired_temperatures și in acelasi timp
este si cheie straina
DESIRED_TEMPERATURES – reprezintă temperatura dorita/setata de utilizator pentru
un dispozitiv. Doar o singura temperatura poate fi setata la un moment dat pentru un
dispozitiv.
Tabela Users :
Tabela Users conține informații referitoare la utilizatorii care pot folosi dispozitivul precum și
preferintele u tilizatorilor legate de notificări ; informații precum dacă se dorește primirea de
notificări pe aplicația Android, în cazul î n care temperatura sau umiditatea dep ășesc un anumit
34 prag setat de utilizator, precum ș i dacă se află sub un anumit prag. Între tabelele Device s si Users
există o relatie de unu la mai mulți, mai mulți utilizatori putând controla acelaș i dipozitiv.
Fig.3 -4 Tabela Users
ID – reprezintă cheia primară a tabelei Users și ID -ul utilizatorului
DEVICE_ID – reprezintă cheia străină a tabelei Users și ID-ul dispozitivului
NAME – reprezintă numele utilizatorului
EMAIL – reprezintă adresa de email a utilizatorului
NOTIFICATION – reprezintă un flag care indică dacă utilizatorul dorește primirea de
notificări
NOTIFICATION_TOKEN – reprezintă o cheie genera tă de GCM ( Google Cloud
Messaging)
NOTIFY_MIN_TEMP – prag inferior pentru temperatură
NOTIFY_MAX_TEMP – prag superior pentru temperatură
NOTIFY_MIN_HUMIDITY – prag inferior pentru umiditate
NOTIFY_MAX_HUMIDITY – prag superior pentru umiditate
35 Diagrama finală a bazei de date:
Fig.3 -5 Diagrama bazei de date
În final, după proiectarea structurii tabelelor aferente bazei de date, relațiile dintre aceste tabele
au fost realizate. Între tabela Devices și tabelele Users și Parameters există o relație one -to-many
(unu-la-mai-multe) , deoarece mai mulți utilizatori pot controla același dispozitiv și de asemenea
un dispozitiv înregistrează valorile parametrilor de confort în mod continuu. Între tabela Devices
și Desired_temperatures există o relație one -to-one ( unu-la-unu). Aceast ă alegere e motivată
deoarece utilizatorul poate seta la un moment dat doar o singură temperatură dorită .
36 3.2.3 Arhitectura sistemului
În figura următoare este prezentată arhitectura conceptuală a sistemului de monitorizare. Aceasta
reprezintă imaginea de ansamblu a structurii, comunicației, funcționalităților sistemului precum
și a informațiilor furnizate de acesta și de modulele în cadrul cărora acestea sunt furnizate.
Fig.3 -6 Arhitectura sistemului
Sistemul constă din:
O aplicație Python la nivelul Raspberry Pi, care gestionează datele primite de la senzor și
comanda sistemul de încălzire și răcire a locuinței prin intermediul releelor
Un server, la nivelul căruia sunt prezente fișiere al căror scop este de a administra datele
provenite de la aplicația Android și de la aplicația Python și de a le stoca în baza de date
Baza de date, localizată la nivelul server -ului
37 Aplicație Android instalată pe dispozitivul mobil al utilizatorului care va monitoriza și
modifica parametri i de confort din locuință
Prima aplicație este concepută pentru a rula pe dispozitivul Raspberry Pi și pentru a transmite
date la un interval reg ulat de timp ,setat de utilizator, către baza de date. Aplicația Python de la
nivelul Raspberry Pi trebuie să funcționeze în mod continuu și are nevoie permanent de o
conexiune la internet.
În momentul citirii valorilor parametrilor de confort de către senzor , sunt preluate de către
aplicația Python de la novelul dispozitivului Raspberry Pi și transmise mai depar te către fișierele
de la nivelul server -ului, într -un anumit format. Aceste fișiere primesc informația provenită de la
Raspberry Pi , se conectează la baza de date și stochează aceste informații apoi în tabelele
corespunzătoare din cadrul bazei de date.
În momentul autentificării cu succes a utilizatorului sistemului și a accesării aplicației Android ,
acesta poate și modifica informațiile referitoare la valorile parametrilor de confort . Aceste
informații sunt preluate /modificate din/în baza de date de la niv elul serverului prin intermediul
unor cereri HTTP POST către server, care gestionează aceste cereri cu ajutorul unor fișiere PHP .
Interacțiunea dintre utilizatorul sistemului, dispozitivul Raspberry Pi care înregistrează în mod
continuu valorile parametri lor de confort și aplicația Android folosită de utilizator poate fi
observată în figura următoare:
Fig.3 -7 Diagrama use case a sistemului
38 3.3 Dezvoltarea aplicației
3.3.1 Mediul de dezvoltare
Implementarea proiectului este realizată cu ajutorul a trei limbaje de programare: Java, PHP si
Python . Pe lângă aceste limbaje, unele biblioteci online gratuite au fost folosite, care sunt
disponibile pentru descărcare pe Internet. Aceste biblioteci sunt utilizate pentru o solu ție mai
bună a sistemului și o punere în aplicar e mai u șoară.
Limbaje de programare, tehnologii și tehnici utilizate:
JAVA – limbaj de programare orientat pe obiecte, care are scopul de a dezvolta aplicatii
care implica dependenț e minime între componentele sale
Android – platforma open -source pentru dez volta re de software
Python – limbaj de programare de inalt nivel ș i foarte raspandit, care pune accent pe
lizibilitatea codului iar si ntaxa permite programatorilot să exprime concepte în mai puține
linii de cod decât ar fi posibil î n limbaje precum Java si C++.
PHP – limbaj de programare care este proiectat în special pentru aplica ții la nivel de
server și dezvoltare web, dar care pot fi, de asemenea, utilizat ca un limbaj de programare
de uz general pentru a furniza date de la server către clien ți
MySQL – din Martie 2014 este al doilea cel mai răspândit sistem open -source de
management al bazelor de date relaț ionale (RDBMS).
Librării utilizate:
org.apache.http -bibliotecă utilizată în aplica ții Java pentru a avea acces la metode de web
request. O clasa personalizată care controlează toate request -urile POST și GET se
bazează pe această bibliotecă .
org.apache.json -bibliotecă care se ocupă de conversiile de tipuri de date Java (ex. string)
care rezultă dintr -un request în obiecte JSON cu care se lucrează mai u șor.
com.jjoe64.graphview – este o biblioteca open -source pentru desenarea de grafice in
aplicaț ii Android
39 Android Studio
Aplicația pentru dispozitivul mobil a fost dezvoltată folosind Android Studio, un mediu de
dezvoltare software (mediu de dezvoltare integrat – IDE), iar sistemul pe care s -a rulat emularea
sistemului Android este reprezentat de un sistem Windows pe 64 de biti [6].
Alegerea mediului Android Studio este motivată de căt re următorii factori:
Suportul pentru build bazat pe Gradle al Android Studio
Posibilitatea de refactoring și de quick fix specifice Android sporită față de cea din Eclipse
Autocompletarea IntelliJ a Java
Dezvoltarea componentelor bazată pe template -uri
Design-ul de interfață mai rapid al Android Studio
Posibilitatea de modificare a interfeșei prin instrumentul de design
Folosirea modulelor în locul spațiilor de lucru din Eclipse
Posibilitatea de previzualizare a interfeței
Java
Limbajul de programare Java a fost ales din mai multe motive:
Folosirea sa la scară largă, precum și cunoașterea sa
Posibilitatea de a fi rulat pe o mașină virtuală fără a fi nevoie de recompilare pentru
dispozitive mobile diferite
Securitatea sa sporită, o caracteristică esențială a unei aplicații dintr -un sistem de
monitorizare
Instrumentele de dezvoltare disponibile
Compatibilitatea cu multe dispozitive mobile
PHP
PHP este un limbaj de scripting server -side proiectat pentru dezvoltare web, dar, de asemenea,
folosit ca un limbaj d e prog ramare cu scop general [17].
40 Codul PHP este, de obicei, prelucrat de un translator PHP, care este de obicei implementat ca
modul nativ un server web sau un Common Gateway Interface (CGI) executabil. După codul
PHP este interpretat și execu tat, serve rul de web trimite ieș ire rezultată a clientului său, de
obicei, în formă de o parte a paginii web a generat – de exemplu, cod PHP poate genera o pagină
web de c od HTML sau o imagine.
PHP poate lucra cu o mare varietate de tipuri de date, cum ar fi numere întregi, numere în virgulă
mobilă, valori booleene și începând cu PHP 3, chiar obiecte personalizate pot fi declarate și
utilizate.
PHP are sute de funcții oferite de funcționalitatea de limbă de bază și mai multe mii disponibile
prin diferite extensii; ac este funcții sunt bine documentate în documentația on -line PHP. Cu toate
acestea, biblioteca built -in are o mare varietate de convenții de numire și inconsecvențe asociate.
Funcții suplimentare pot fi definite de către dezvoltator.
MySQL
Motivele alegerii limbajului de interogare a bazelor de date MySQL sunt:
Securitatea limbajului
Accesibilitatea limbajului, parolele fiind criptate și multiple straturi de securitate fiind incluse
Scalabilitate, MySQL putând utiliza până la 50 de milioane de rânduri sau ma i mult
Bună administrare a memoriei, prevenind pierderile de informații
Portabilitate, rulează pe multe sisteme de operare
Python
Python este un limbaj de programare multi -paradigmă dinamică, creat în 1989 de către
programatorul olandez Guido van Rossum. Van Rossum este la această zi un lider al comunității
de dezvoltatori lucrand la evoluția și perfecționarea limbii Python si la implentarea de baza,
CPython, scrisa în C.
41 Python este un limbaj multifunctional folosit, de exemplu, de către companii ca Googl e si Yahoo
pentru programarea aplicatiilor web, dar există, de asemenea, o serie de aplicații științifice și de
asemenea aplicatii de divertisment programate parțial sau integral în Python.
Creșterea de popularitate precum si puterea sa a dus la adaptarea Python ca limbaj de programare
principal folosit de programatori specializați și chiar la predarea în mediul academic. Din acest
motiv, o multime de sisteme bazate pe Unix, inclusiv Linux, BSD, Mac OS X și Raspbian au
interpretorul Python preinstalat.
Python se concentrează pe curățenia și simplitatea codului, si sintaxa permite dezvoltatorilor să –
și exprime ideile pragmatice într -un mod mai clar și concis decât în alte limbaje de programare
ca C. În ceea ce privește paradigma de programare, Python poate servi software atat limbajului
orientat -obiect , dar, de asemenea, permite programarea imperativă, funcțională sau procedurala.
Implementarea principala Python este scrisa în C și, astfel, poartă numele CPython. Această
implementare este un software gratui t și este administrat de Fundația pentru Software Python.
3.3.2 Structura modulelor
Aplicația Python pentru Raspberry Pi
Python Web connectivity
Python se bucură de o comunitate de dezvoltatori activi care împărtășesc munca folosind
biblioteci open -source care fac sarcini complexe simple . Câteva dintre aceste biblioteci ne
usureaza mai mult sau mai puțin munca pentru conectarea proiectelor noastre la Internet sau
pentru a face lucruri cum ar fi obținerea de date despre vreme , tendințele pe rețelele sociale sau
acționează ca un server web.
Lucrul cu internetul necesită instalarea catorva biblioteci . Unele dintre aceste biblioteci vor fi
prezentate în cele ce urmează .
Libraria Python Requests
Requests este o bibliotecă Apache2 HTTP licențiata, scrisă în Python , care permite utilizatorului
să pună în aplicare funcționalitate a HTTP într-o aplicație , cum ar fi conectarea la servere .
Pentru a instala Requests , este necesara următoarea comandă : "sudo apt-get install python –
requests"
42
Fig.3 -8 Instalarea bibliotecii Requests
Rularea codului Python folosind shell
O opțiune pentru a rula cod Python este prin intermediul shell Python . Aceasta se poate face
folosind comanda "python" și este nevoie ca utilizatorul sa execute in linia de coman dă scriptul
Python care se doreș te a fi rulat [10].
Fig.3 -9 Python Shell
43 Rularea codului Python folosind scripturi
O altă opțiune pentru a rula cod Python este de a folosi bucăț i de cod organizate în scripturi
concepute pentru a face o treabă specifică, script -uri care sunt salvate în fișiere și care pot fi
utilizate ulterior. Această operație se face de obicei cu ajut orul unui interpretor care ajută
dezvoltatorul la gestionarea codului.
IDLE este un IDE pentru Python, care a fost conceput cu implementar ea implicită a limbajului
inca de la versiunea 1.5.2b1. Acesta este distribuit ca o parte opțională de pachete Python pentru
o multime de versiuni de Linux. Acesta este programat în Python și foloseste setul de
instrumente Tkinter GUI.
IDLE este destinat p ersoanelor care invata programare și are un design destul de simplu.
Caracteristicile IDLE incluse conform fisierului „Readme” sunt:
• editor de text cu suport multi -fereastră, evidențierea sintaxei și completarea automată.
• fereastra Shell în Python pen tru testare.
• debugger cu funcție pas cu pas, puncte de oprire și vizibiltatea stivei cu apelurile functiilor.
Pentru a crea un nou sc ript de IDLE în modul remote, trebuie să lansați comanda "idle" din linia
de comandă.
Fig.3 -10 Mediul de dezvoltare in tegrat IDLE
44 Va a părea o fereastră IDLE , după care utilizatorul trebuie să selecteze „new” , să scrie codul și
să salveze scriptul cu extensia „.py.”
După aceasta, script -ul poate fi rulat din linia de comandă prin comanda "sudo python script.py ".
Citirea valorilor î nregistrate de senzor
Pentru citirea valorilor parametrilor de confort, respectiv a temperaturii și umidității, înregistrate
de către senzorul DHT22, s -a folosit librăria Adafruit Python DHT.
Pentru orice platformă trebuie facută o verif icare că sistemul este capabil de a compila extensii
Python . Pe Debian / Ubuntu / Raspbian se verifică capabilitatea sistemului prin comenzile :
apt-get update
sudo apt -get install build -essential python -dev
Citirea valorilor înregistrate din senzor s -a făcut prin apelul funcției furnizate de librărie , unde ca
și parametri sunt senzorul, respectiv pinul la care este conectat :
current_humidity ,current_temperature = dht.read_retry(dht.DHT22, 4)
Salvarea valorilor î nregistrate de senzor
Pentru salvarea valorilor înregistrate de senzor se face o cerere HTTP POST către fișierul PHP
de la nivelul serverului care va gestiona datele primite de la Raspberry Pi. Astfel spus va salva
aceste informații în baza de date MySQL de la nivelul serverulu i.
Codul Python de la nivelul Raspberry Pi care inițiaza cererea HTTP POST :
45 Codul PHP de la nivelul serverului care gestionează cererea primită de la Raspberry Pi :
Frecvenț a de sincronizare
Frecvența de sincronizare reprezintă intervalul de timp setat de utilizator în aplicația Android și
este intervalul de timp la care valorile parametrilor de confort înregistrate de senzor vor fi salvate
în baza de date MySQL de la nivelul serverului.
Crontab
Cron este un instrument pentru planificare a de joburi pe sistemele Unix , cum ar fi comenzi sau
scripturi pentru a rula la ore stabilite și intervale ; joburi, care pot varia de la back -up de dosare
aparținând utilizatorului pana la logarea informațiilor legate de CPU [9].
Comanda " crontab" deschide tabelul cron și permite utilizatorului sa editeze lista de sarcini
programate la un moment stabilit ; se face de către fiecare utilizator individual . Fiecare utilizator
într-un sistem are propriul sau tabel cron.
Formatul de intrare cron este alcătuit din șase componente : Minut , oră, ziua din luna , lună a
anului , zi a săptămânii și comanda ce s e doreste a fi executată .
46
Fig.3 -11 Intrările în crontab
Cronjob
Cron job-ul este o comandă sau un script pe sistemele Unix programat să ruleze la ore stabilite
sau un interval de timp.
Pentru a salva valorile înregistrate de senzor la un interval de timp stabilit de utilizator vom crea
un cronjob la nivelul Raspberry Pi, care are un sistem de operare bazat pe Unix și anume
Raspbian OS.
Cronjobul în acest caz este un script shell care de fiecare dată când va rula va citi frecvența de
sincronizare setată de utilizator, va rula scriptul menit să salveze valorile parametrilor de confort
înregistrate de senzor, va verifica dacă este cazul să pornească sau să oprească unul dintre
sistemele de încalzire sau de răcire a locuinței și nu în ultimul rând se va reprograma să ruleze la
intervalul de timp ( frecvența de sincronizare ) setat de utilizator.
47 Comanda pentru pornirea sistemului de încălzire/răcire
Comanda pentru pornirea sistemului de încălzire sau răcire se face prin intermediul releelor.
Fiecare dintre cele două relee este conectat la un pin GPIO de la nivelul Raspberry Pi. Sistemul
de încălzire este conectat la pinul 23, iar sistemul de răcire este conectat la pinul 24 al Raspberry
Pi.
Indicele de confort (comfort_index) este setat de utilizator la nivelul aplicației Android :
Se verific ă dacă temperatura setată de utilizator se află în intervalul (temperatura curentă – indice
de confort, temperatura curentă + indice de confort). Dacă se află în acest interval atunci nu este
necesară pornirea niciunuia dintre sistemele de încălzire sau răcire a locuinței. Dacă temperatura
curentă este mai mare decât acest interval atunci este necesară pornirea sistemului de în călzire,
iar dacă este mai mică se recurge la pornirea sistemului de răcire.
48 Aplicația Android
Scopul aplicației Android, pr ezentă pe dispozitivul mobil , este de a prelua valorile parametrilor
de confort, respectiv ale temperaturii si umiditatii inregistrate de catre dispozitivul Raspberry Pi
prin intermediul unui request HTTP POST către fișierele de la nivelul server -ului care se ocupă
cu administrarea datelor primite de la Rapsberry Pi cat si de la aplicația Android și salvarea lor în
baza de da te. Funcționalitatea acestor fișiere de la nivelul server -ului, precum și a celor de la
nivelul aplicației web va fi descrisă într -un capitol ulterior. În cadrul acestui capitol se dorește
explicarea funcționării aplicației de pe dispozitivul mobil Android .
Fișierul AndroidManifest
Fiecare aplicație Android trebuie să conțină un fișier AndroidManifest.xml (cu exact această
denumire) în directorul său rădăcină. Fișierul manifest conține informații esențiale care trebuie
oferite de către aplicație sistemulu i Android, informații pe care sistemul trebuie să le aibă
înaintea rulării codului oricărei aplicații [7].
Printre roluril e fișierului manifest se numără:
Denumirea pachetului Java pentru aplicație. Numele pachetului deservește ca identificator
unic pentr u aplicație
Descrie componentele aplicației – activitățile, serviciile, broadcast receiver -ele, content
provider -ele din care este compusă aplicația.
Numește clasele care implementează fiecare componentă și precizează capabilitățile acesteia
Declară de ce permisiuni are nevoie aplicația pentru a accesa părți protejate ale API -urilor și
pentru a interacționa cu alte aplicații
Declară nivelul minim al API -ului Android cerut de către aplicație
Pentru aplicația Android din cadrul sistemului:
49 – Precizează numel e pachetului – identificator unic al aplicației
– Permisiunile de care aplicația are nevoie pentru a rula printre care se numara permisiunea
de a accesa serviciul de internet .
50
– În interiorul blocului application sunt prezentate componentele aplicației, clasele
corespunzătoare componentelor, ordinea apariției lor, respectiv relațiile dintre acestea .
51 Principalele functionalită ți ale aplicaț iei Android sunt:
Înregistrarea utilizatorului în sistem pe baza unui DEVICE_ID corespunză tor dispozitivu lui
Raspberry Pi deți nut.
Autentificarea î n sistem a utilizatorului ( ace st lucru se poate face doar dacă în prealabil
înregistrarea utilizatorului s -a realizat cu succes)
Vizualizarea ultimelor valorilor ale parametrilor de confort (temperatura si umidita te)
inregistrate de Raspberry Pi
Vizu alizarea unui istoric al evoluți ei parametrilor de confort.
Setarea temperaturii dorite
Setarea unor preferinț e cum ar fi indicele de confort precum și opț iunea de a fi notificat dacă
temperatură și umidititatea au depă sit anumite praguri setate de utilizator.
Diagrama claselor
În următoarele figuri va fi prezentată diagrama claselor din cadrul aplicației pentru dispozitivul
mobil Android, funcționalitatea acestor clase urmând a fi apoi descrisă.
Fig.3 -12 Diagra ma de clase a aplicației Android(1)
52
Fig.3 -13 Diagrama de clase a aplicației Android (2)
53 JSON
JSON sau JavaScript Object Notation, este un format standard deschis care utilizează text lizibil
pentru a transmite obiecte de date formate din perechi atribut -valoare. Acesta este utilizat în
principal pentru a transmite date între un server și aplicații web, ca alternativă l a XML [11] .
Deși inițial derivat din limbajul de scriptic JavaScript, JSON este un format de date independent
de limbaj, și codul d e analiză și generarea de date JSON este disponibil intr -o mare varietate de
limbaje de programare. JSON este limitat la valori de tip text sau număr, valori binare nu sunt
acceptate. JSON este un subset de specificații JavaScript și așa el este susținută direct în
JavaScript.
Structurile de date JSON se bazează pe perechi cheie -valoare. Cheia este reprezentat ă de un șir și
valoarea poate fi fie o valoare numerică, boolean, string sau un obiect.
Un obiect JSON înce pe cu "{" și se termină cu "}".
Exemplu de mesaj JSON:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
54 Clasa JSONParser
Clasa JSONParser este responsabilă pentru comunicarea cu serverul si gestionează cererile
HTTP POST venite dinspre dispozitivul Android precum și răspunsul venit dinspre server in
format JSON.
Aici se în cearcă convertirea răspunsului primit de la server î n format JSON:
55 Înregistrarea utilizatorului
Captura de ecran de mai jos provine din RegisterActivity.java :
56 Autentificarea utilizatorului
Captura de ecran de mai jos provine din LoginActivity.java :
57 Temperatură ș i umiditate
Preluarea din baza de date MySQL a ultimelor valori ale temperaturii si umiditatii se face printr –
o cerere HTTP POST dinspre dispozi tivul Android spre server. Ca ș i parametru se transmite
doar DEVICE_ID (id-ul dispozitivului Raspberry Pi). Serverul va t rimite ca și ră spuns ultima
valoar e a temperaturii si umiditatii î nregistrate, data in care au fost înregistrate, precum ș i ce
valoare a temperaturii a fost setată cel mai recent de catre utilizator.
Captura de ecran de mai jos provine din MainActivity.java :
58 Setare temperatură
Setarea temperaturii se face la fel , printr -o cerere HTTP POST că tre server, cu parametrii
DEVICE_ID ș i DESIRED_TEMPERATURE.
Captura de ecran de mai jos provine din MainActivity.java :
59 Grafic cu istoricul evoluț iei parametrilor de confort
Pentru dese narea graficului a fost folosită biblioteca open -source GraphView [ 19]. A fost
necesară declararea î n interiorul layou tului specific activităț ii a unui element de tipul:
60 La fel ca s i in celelal te cazuri se va iniția o cerere HTTP POST că tre server care va returna o lista
de va lori a parametrilor de confort î nregistrate pentru ultimele X zile.
Captura de ecran de mai jos provine din HistoryActivity.java :
După care lista de valori pentru te mperatura si umiditate va fi adăugată graficului:
Setarea preferinț elor utilizatorului
Utilizatorul poate de asemenea să seteze diferite preferinț e dintre care cele mai importante sunt:
Indicele de conf ort (comfort index) – reprezintă o abatere permisă de uti lizator de la
temperatura setată de acesta. Astfel spus să luam un exemplu simplu: daca temperatura setată
de utilizator este de 23 gr ade Celsius, temperatura curentă înregistrată este de 22 grade
Celsius iar indicele de confort are valoarea de 2 gr ade Celsius atunci sistemul de încă lzire nu
va po rni, deoarece temperatura setată de acesta se afla in abaterea permisa.
61 if ( desired_temperature > current_temperature + comfort_index ){
turn_on( central_heating );
turn_off( cooling_system );
}elseif ( desired_temperature < current_temperature – comfort_index){
turn_off( central_heating );
turn_on( cooling_system );
}else{ turn_off( central_heating );
turn_off( cooling_system ); }
Setarea unui flag pentru notifică ri
Setarea unui interval al temperaturi i pentru ca atunci câ nd temperatura curenta nu se
încadrează în acel interval să se primească o notificare
Setarea unui interval al umidităț ii pentru ca atunci câ nd umiditatea curentă nu se încadrează
în acel interval să se primească o notificare
Setar ea frecvenț ei de timp la care să se salveze valorile parametrilor in baza de date
62 Notifică ri
Pentru implementarea sistemului de not ificări s-a folosit tehnologia Google Cloud Messaging si
a fost nevoie de înregistrarea la Google Cloud Messaging din GOOGLE API Console si
obținerea unui Sender ID ș i a unui API key pentru Google Cloud Messaging precum ș i creare a
de cod la nivel de server pentru a salva registration_id de la Google Cloud in baza noastră de
date și pentru a trimite notifică ri catre dispozitivul mobil Android .
Fig.3 -13 Diagrama arhitecturii GCM
63 Mai jos este o captura de ecran care contine codul implementat la nivel de server pentru
trimiterea de notificari catre dispozitivul mobil:
64 De asemenea la nivelul aplicatiei Android a fost impleme ntat un listener pentru notifică rile
venite din partea serverului:
Captură de ecran cu un exemplu de notificare :
65 Fișierele de gestionare a informațiilor de la nivelul server -ului
Legătura dintre module, clasele Android ș i fișierele de gestionare
MODUL Clasă Android Fișier gestionare
(http://1 .cateisibiu.ro/)
Înregistrare Register Activity index .php
Autentificare LoginActivity index.php
Parametri de confort MainActivity get_most_recent_parameters .php
Setare temperatura MainActivity update_desired_temperature .php
Istoric HistoryActivity get_all_parameters .php
Setare preferinte SettingsActivity save_settings.php
Operațiile din cadrul fișierelor
În cadrul fiecărui fișier de gestionare a informațiilor se realizează conexiunea la baza de date
MySQL prin intermediul numelui de server, utilizatorului, parolei și al numelui bazei de date.
Fiecare fișier de gestionare preia datele transmise prin metoda HTTP POST și le inserează în
baza de date sau actualizeaz ă anumite informații î n baza de date. De asemenea anumite fiș iere de
gestionare PHP doar returneză ca și răspuns către aplicația Android sau către aplicația
disponibilă la nivelul dispozitivului Rapberyy Pi , date existente in baza de date . Un exemplu ar fi
datele necesare (valorile parametrilor de confort) pentru desenarea graficului cu istoricul
evolutiei parame trilor de confort pentru o anumită perioada de timp.
66 4 Concluzii
4.1 Gradul de î ndeplinire a obiectivelor
4.1.1 Obiective îndeplinite
Sistemul realizat îndeplinește cu succes funcționalitățile de care are nevoie un sistem de
monitorizare și modificare a parametrilor de confort , și anume:
Acces doar persoanelor autorizate
Furnizarea de informați i în momentul apariției acestora
Posibilita tea de a comanda sistemul de încălzire și răcire a locuinței
Aceste funcționalități au fost îndeplinite atât prin alegerile referitoare la proiectarea sa, precum și
prin cele referitoare la tehnologiile prin care a fost implementat.
4.1.2 Obiective neîndeplinite
Principalul obiectiv care nu a fost pe deplin îndeplinit este reprezentat de către posibilitatea de a
comanda sistemul de încălzire sau răcire a locuinței în timp real . Acest lucru nu s -a putut
implementa, în momentul actual existând o întâr ziere de un minut între momentul în care
utilizatorul dă comanda de pornire/oprire a sistemului de încălzire și răcire a locuinței și
momentul în care sistemul o să se conformeze comenzii date de utilizator. Acest lucru se
întâmplă din cauza faptului că in tervalul minim de timp la care un script poate fi programat să
ruleze pe un sistem UNIX este de un minut.
4.2 Dificultăți întâmpinate
Pe parcursul dezvoltării și implementării sistemului au fost întâmpinate dificultăți. Dintre acestea
pot fi enumerate:
Realiza rea mecanismului pentru înregistrarea în mod constant a valorilor parametrilor de
confort precum și realizarea mecanismului de comandă a sistemului de încălzire și răcire a
locuinței
67 Înțelegerea mecanismului de funcționare al sistemului de notificări imple mentat cu Google
Cloud Messaging
4.3 Dezvoltări ulterioare
Ca și dezvoltări ulterioare putem enumera :
Setarea temperaturii prin control vocal
Implementarea aplicației pentru interfeță web, IOS, Windows Phone OS, Blackberry OS
Implementarea unui algoritm pentru îmvățarea obiceiurilor utilizatorului în ceea ce privește
interacțiunea acestuia cu sistemul de monitorizare și modificare al parametrilor de confort
Implementarea mai multor programe pentru termostat
Adăugarea unui s enzor pentru detecția incendiilor
Adăugarea unui senzor pentru măsurarea concentrației de monoxid de carbon
Adăugarea unui senzor pentru lumină, respectiv posibilitatea de reglare automată a iluminării
din ambient
68 5 Bibliografie
[1] A guide to the Andr oid operating system,
http://connect.dpreview.com/post/8437301608/guide -to-android -os
[2] Android, http://www.engineersgarage.com/articles/what -is-android -introduction
[3] Android (operating system),
https://en.wikipedia.org/wiki/Android_%28operating_system%29
[4] Android (sistem de operare),
https://ro.wikipedia.org/wiki/Android_%28sistem_de_operare%29
[5] Android developer, www.developer.andr oid.com
[6] Android Studio – https://en.wikipedia.org/wiki/Android_Studio
[7] App Manifest – https://developer.android.com/guide/topics/manifest/manifest -intro.html
[8] About Raspbian , http://www.raspbian.org/RaspbianAbout
[9] Cron and Crontab, http://www.raspberrypi.org/documentation/linux/usage/cron.md
[10] IDLE(Python), http://en.wikipedia.org/wiki/IDLE_(Python)
[11] Introducing Json, http://json.org/
[12] RPi Easy SD Card Setup, http://elinux.org/RPi_Easy_SD_Card_Setup
[13] Server web, https://ro.wikipedia.org/wiki/Server
[14] Xming, http://en.wikipedia.org/wiki/Xming
[15] What is a Raspberry Pi, http://www.raspberrypi.org/help/what -is-a-raspberry -pi
[16] Senzor DHT22, http://www.adafruit.com/products/385
[17] PHP manual, http://php.net/manual/ro/index.php
[18] Richardson, Matt; Wallace, Shawn: Getting started with Raspberry Pi, Publisher:
O’Reilly, 2012
[19] Graph View Android, http://www.android -graphview.org/
[20] What is a web server, https://developer.mozilla.org/en -US/Learn/What_is_a_web_server
[21] Stackoverflo w, www.stackoverflow.com
[22] W3schools , www.w3schools.com
[23] Wikipedia, www.wikipedia.com
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: modificarea parametrilor de confort Îndrumător: Prof.dr.ing. Zamfirescu Bălă Constantin Absolvent: Beleiu Ioan -Mihai Specializarea Calculatoare -… [613727] (ID: 613727)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
