Lucrare de licen ă ț [601351]

UNIVERSITATEA BABE -BOLYAI Ș
FACULTATEA DE MATEMATICA-INFORMATICA
CLUJ-NAPOCA
Lucrare de licen ă ț
Coordonator tiin ific ș ț
Prof.Dr. Gabriela CZIBULA
Doctorand: [anonimizat]
1

Sistem multiscop Internet Of Things
Cuprins
Motivație………………………………………………………………………………………………………… 4
1. Introducere…………………………………………………………………………………………………… 6
1. 1. Generalitați despre “Internet of Things” ………………………………………………….. 6
1. 2. Generalitați despre aplicație …………………………………………………………………… 9
1. 3. Contribuții………………………………………………………………………………………….. 12
2. Procesul de dezvoltare – aplicația web …………………………………………………………… 14
2. 1. Tehnologii…………………………………………………………………………………………… 14
2. 2. Clasele utilizate în aplicație …………………………………………………………………… 19
2. 3. Baza de date………………………………………………………………………………………… 21
2. 4. Cazurile de utilizare ……………………………………………………………………………… 24
2. 5. Scenariul de logare pe site …………………………………………………………………….. 26
2. 6. Scenariul de înregistrare pe site ……………………………………………………………… 27
3. Procesul de dezvoltare – interacțiunea cu placa ………………………………………………. 29
4. Designul aplicației ………………………………………………………………………………………. 32
5. Testarea aplicației……………………………………………………………………………………….. 33
6. Concluzii…………………………………………………………………………………………………… 35
7.Bibliografie…………………………………………………………………………………………………. 36
2

Sistem multiscop Internet Of Thing
Motiva ție
Este un lucru cert că internetul este tot mai folosit pe zi ce trece. Dacă în anul
2008 procentul utilizatorilor de internet era de aproximativ 15%, în 2015 aproape
jumătate din populația globului (3,2 miliarde) este online și folosește servicii,
protocoale, site-uri și aplicații conectate la internet.1 Și lucrurile nu se opresc aici. În
fiecare zi se lucrează intens la o mai bună dezvolare a infrastructurii pentru ca
internetul să ajungă în cât mai multe locuri.
Oamenii au adoptat internetul în viața lor și îl folosesc zilnic pentru anumite
servcii pe care acesta îl oferă. De asemenea, odată cu acestă explodare, au ajuns tot
mai folosite și dispozitivele care se pot conecta cu ușurința la el (calculatoare,
telefoane mobile, tablete).
Văzând acestea, nu am putut să mă întreb decât cum ar fi dacă toate
dispozitivele pe care noi le folosim în viața nostră ar putea fi conectate la internet. În
acest fel, totul ar putea deveni mai ușor pentru noi, oamenii.
După o perioadă de cercetare, am găsit răspunsul pe care îl căutam și am aflat că
acesta se numește „Internet of Things”. Acest concept are rolul de a face toate
„lucrurile” conectate la internet să comunice între ele. Toate dispozitivele pe care noi
le folosim, în fiecare zi, pentru a ne ușura existența, pot fi controlate cu ajutorul lui.
Defapt, cu puțin hardware, și o conecțiune la internet se poate creea o lume, pentru
toți, plină de oportunitați.
Defapt, într-o lume în care încălzirea globală este o problemă reală, și
resursele planetei scad în fiecare zi tot mai mult, eficientizarea și optimizarea
produselor industriale este esențială. Nu este vorba doar despre o comoditate a
oamenilor, ci mai degrabă despre o nevoie de a reduce cât mai mult consumul.
Lucrarea de față reprezintă un prim pas, personal, pe care l-am făcut în
această lume, a lucrurilor pe care internetul le unește. Aplicația construită ca și
rezultat al cercetarii are nenumărate șanse de dezvolare reală, și poate ajuta utilizatorii
în timp real să comunice sau să acționeze un „lucru” care nu se află cu ei, totul doar
1. Facebook, State of Connectivity 2015: A Report on Global Internet Access
3

Sistem multiscop Internet Of Things
cu câteva click-uri distanța. . Sistemul este construit din doua părți : prima reprezintă
o aplicație web care are rolul de a interacționa cu utilizatorul, de a oferi securitate, și
care are acces la baza de date. Cea de-a doua parte are ca și scop interacțiunea cu o
placă Raspberry Pi 3B care acționează niște senzori, atunci când utilizatorul o cere, și
trimite răspunsul aplicației web care îl va afisa userului.
Partea fascinantă a aplica iilor web, este aceea ca îmbina în cel mai armonios ț
mod funcționalitatea de design-ul. Scopul meu a fost realizarea unei aplica ii utile i ț ș
user-friendly, iș responsive, astfel încât, utilizatorii s ă se bucure de ea, și sa le facă de
fiecare dată plăcere sa navigheze pe site .
4

Sistem multiscop Internet Of Thing
1. Introducere
1.1 Generalita i despre ț “Internet of Things”
“Internet of Things” (prescurtare IoT) tradus în română ca “internetul tuturor
lucrurilor”, este un domeniu al informaticii important și revoluționar care a aparut în
anul 1990 (acesta este anul în care John Romkey a dezvoltat primul dispozitiv, un
toster, care folosea, intuitiv, această tehnologie2). De atunci, lucrurile au evoluat într-
un ritm rapid, iar astăzi acest concept se regăsește în aplicații folosite zi de zi de către
comunitate.
IoT se poate defini ca fiind o trecere de la dispozitivele folosite de utilizatori, la
controlul absolut asupra lor cu ajutorul internetului.
Așadar, putem spune ca acest concept semnifică o structură de obiecte fizice,
sau “lucruri” înzestrate cu componente electronice, soft-uri, senzori, și conecțiuni la
internet, prin care se colectează și se distribuie date. Obiectele sunt unic indentificate,
și pot comunica între ele, local sau global, fară intervenția umana – doar pe baza
conectivitații IP.
De asemenea, când definim acest domeniu ne putem gandi și la conectivitatea
omniprezenta pentru afaceri, guverne și consumatori, având propriile sisteme de
managment, monotorizare, calcule și analiz ă a datelor.
Defapt, nu doar obiectele pot sa fie folosite în aceast ă tehnologie. In IoT, un
“lucru” poate înseamna un om care a avut un implant cardiatic si acum este
monotorizat, un caine căruia i-a fost introdus un micro-cip sub pielea capului, sau o
mașină care are un sistem GPS pentru urmarire aplicat.
Așadar, aceste “obiecte” pot fi orice lucru (sau ființă) căruia i se poate atașa o adresă
IP și care este capabil (ă) sa transmită date într-o rețea de internet.
Datorită faptului că se poate spune că acest concept ajută la îmbunatațirea și
ușurarea vieții, dar și pentru ca inventatorii au vazut un profit foarte mare în
comercializarea acestei tehnologii, IoT este o prezență care se dezvoltă în fiecare an
tot mai mult și care odată cu trecea timpului devine parte din viața oamenilor.
2. PostScapes, History Of IoT, https://www.postscapes.com/internet-of-things-history/
5

Sistem multiscop Internet Of Things
Dupa cum se știe, există deja contoare inteligente care țin evidența și
economisesc – în momentele în care este cazul (prestabilite de utilizator) energia
electrică, sisteme care declanșează un răspuns automat în caz de accident, aplicații
care urmăresc o mașină în cazul în care aceasta a fost furată, sau oferă asistența
tehnică în cazul în care este nevoie (OnStar – SUA, eCall – UE), dar și frigidere care
cunosc alimentele pe care le cumperi cel mai des și care momentan lipsesc.
Totuși, deși conceptul in sine este lăudabil, drumul până aici a depins de multe
ori și de dezvoltarea altor domenii, tehnici, protocoale și tehnologii care la prima
vedere nu par sa aibă vreo legatură cu IoT.
Câteva exemple ar putea fi : apariția codului de bare (1974), apariția dispozitivelor
etichete RFID (Radio Frequency Indentification), apariția protocolului de internet
Ipv6, apariția și îmbunatațirea codurilor QR, aplicațiilor NFC (Near Field
Communication) si SAAS (Software-As-A-Service), dispozitive de comunicare M2M
(Machine-to-Machine), senzori activi, și îmbunatațirea tehnologiei WI-FI.
De asemenea, și factorii economici au avut un impact fundamental în producerea
aplicațiilor care folosesc IoT. De exemplu, faptul ca au scăzut prețurile foarte mult
pentru dispozitivele de stocare a bazelor de date care fac posibilă colectarea, stocarea
și procesarea a miliarde de biți, a avut un rol bine definit in scăderea costurilor pentru
implementarea acestor aplicații.
Nu numai cele de mai sus au ajutat la cresterea explozivă a conceptului IoT.
Unul dintre cei mai importanți factori este reprezentat de apariția și dezvoltarea
algoritmilor de Inteligența Artificiala, Machine Learning si Data Mining.
De ce?
Pentru ca sisteme IoT pot sa colecteze enorm de multă informație pe care daca nu o
gestionează nimeni ar putea rămane doar un volum uriaș de date neinteligibile.
Inteligenta articială poate rezolva aceasta problemă prin luarea unor decizii
acționabile în legătură cu aceste date. Astfel, ea devine tehnologia care dă sens datelor
și produce instrucțiuni semnificative, cum ar fi comenzile date dispozitivelor IoT
pentru a efectua acțiuni specifice potrivite pentru un anumit caz.
Totuși, uneori indentificarea unor modele in toată colecția de date care se poate forma
colectând informație de la dispozitive IoT, și alegerea unora dintre ele, care pot
returna cele mai dorite rezultate, este ceea ce poate aduce o eficiență considerabilă
6

Sistem multiscop Internet Of Thing
rezolvării problemei prezentate. Acesta tehnică se poate implementa folosind Machine
Learning, adică pe baza algoritmilor de învațare, computerele pot acționa fara a fi
programate explicit.
În prezent, există mai multe companii care comercializează produse IoT si
numarul acestora crește in fiecare zi.
Amintim cateva nume importante din piața actuala : Google (cu PowerMeter,
automobilul fară sofer, Glass, NEST, si www.google.org ), IBM, CISCO, Accenture,
SAP, Microsoft, Amazon.
Pentru a răspunde cât mai bine cererilor consumatorilor, IoT s-a diversificat si astfel s-
au creeat mai multe ramuri , amintite mai jos:
Industrial Internet of Things (IioT) – s e concentrează pe transpunerea
conceptului de IoT într-unul care se axează în mod direct pe industrille din toată
lumea.
Scopul acestuia este de a facilita interconecțiunea între oameni, date și mașinile
inteligente. Astfel, impactul devine unul rapid și vizează productivitatea, eficiența, și
operațiile din întreaga industrie existentă.
"Ideea de bază este de a face mașinile care ne conduc economia "mai inteligente", prin
colectarea și analiza datelor, de multe ori in timp real3"
Commercial Internet of Things (CioT) – are ca si domeniu de activitate
în mod specific activitatatea comercială.
Această categorie face o diferența între aplicațiile IoT care există și, de exemplu, sunt
folosite într-o retea privată, cu un scop bine definit acolo, care nu se comercializează
în prezent – și probabil nu vor fi comercializate vreodată – si aplicațiile care se produc
pentru comercializare încă din momentul in care sunt concepute.
Architectural Internet of Things (AioT) – vizează arhitectura diverselor
aplicații care sunt implementate cu ajutorul IoT.
Cercetătorii au realizat că unele produse funcționează mai bine cu ajutor unor
tehnologii și protocoale decat altele, care pot avea doar un domeniu diferit de
activitate.
Astfel, se încearcă să se stabilească o arhitectură standard pentru multiplele domenii
3 Accenture, reclama produse IIOT, s traducere
7

Sistem multiscop Internet Of Things
în care IoT iși face simțită prezența4.
1.2. Generalita ți despre aplica ție
Deoarece timpul reprezintă una dintre problemele secolului, și foarte mulți
oameni își petrec o mare parte din zi departe de casă, am constatat că o aplicație care
ar putea să îi informeze asupra a oricărui loc important pentru ei, într-un timp util,
real, i-ar putea ajuta. Acesta a fost ideea de la care am pornit implementând aplicația.
Sistemul se numește IoTeam. Acest nume are o dublă seminificație. Prezența
cuvântului „IoT” desemnează încă de la primul contact cu softul, principiul
fundamental care s-a aplicat pentru realizarea lui adică „Internet of Things”. Cuvântul
„Team” se referă la ideea de conectivitate omniprezenta a tuturor dispozitivelor.
Acestea formează „o echipă” care acționează cât mai eficient pentru îndeplinirea
scopului final (care este de a satisface dorințele utilizatorului).
Aplicația construită are la bază conceptul de IoT, oferind servicii de conectare,
informare și acționare, în permanență, asupra unor obiecte alese de utilizator.
Am gandit această aplicație pentru a ajuta oamenii sa se afle intr-o continuă conexiune
cu ceea ce le face pl ăcere, sau ceea ce le este util în viata de zi cu zi. Am încercat să
creez ceva care sa creeze, la randul s ău, confort și liniște cu privire la lucrurile
importante, care pot rămâne într-un spațiu important, cand oamenii se deplasează
altundeva.
Aplicația încearcă sa ofere controlul absolut, de la distanță, a tuturor lucrurilor
care se vor a fi controlate, totul cu cateva click-uri. Userul poate să își pornească, de
exemplu, cu ajutorul softului conceput, becurile din casă, de la distantă, sau sa aibă un
raport zilnic a mișcarii care a avut loc în garaj sau oriunde altundeva.
Astfel, utilizatorul face o cerere specificând acțiunea pe care vrea sa o efectueze și
primește un răspuns, de la senzori plasați în locuri strategice pentru a le putea oferi.
Senzorii transmit acest răspuns mai departe, și pe baza lui se poate acționa asupra
anumitor obiecte din jur.
Userul se poate conecta atât de pe telefon (aplicația este una responsive), cât și
de pe un site web pentru a vedea rapoarte și statistici f ăcute pe baza datelor colectate
de dispozitivele IoT.
4 Meet, Internet-of-Things Architecture IoT-A , http://www.meet-iot.eu/deliverables-IOTA/D1_3.pdf
8

Sistem multiscop Internet Of Thing
Practic, toată arhitectura aplicației se poate rezuma la trei mari parți (ilustrată și în
figura 1A)
I. Partea de conectare
Toți senzorii sunt conectați la o placă (modelul pe care l-am folosit este
Raspberry Pi 3 B – vezi figura 1A), unic indentificată, care este dotată cu un
microprocesor, o memorie RAM, un nucleu de procesare video cu o ieșire HDMI și
RCA.
Senzorii comunică prin pinii GPIO cu placa. Deoarece, acest mini-calculator
suportă rularea unor programe și limbaje de programare, controlul asupra senzorilor
se face prin comenzi specifice scrise in limbajul de programare instalat.
Așadar, rolul placii este de a aduna informația de la senzori, pentru a o trimite mai
departe și de a acționa dispozitivele în funcție de apelul făcut de utilizator.
Figura 1A–Structura plăcii folosite.
Sursa: Simon Monk, RaspiRobot Board Version 2 ,
https://github.com/simonmonk/raspirobotboard2
9

Sistem multiscop Internet Of Things
b. Partea de stocare
Placa trimite datele pe care le-a colectat de la senzori, prin API, unei aplicații
web care are și o baza de date în care se vor reține toate acestea, urmând ca mai apoi,
pe baza lor să se facă rapoarte și statistici.
Această parte a proiectului are rolul de a gestiona securitatea aplicației, baza de date
și de API-urile. Aici se fac interogările din baza de date, se iau deciziile, și se
generează rapoartele.
De asemenea, mai există, tot aici, un dashboard pe care userul se poate loga
pentru a putea să vadă anumite lucruri care prezintă interes pentru el, asta in cazul în
care are cont, sau sa se înregistreze, achizitionând astfel pachetul care include placa și
câțiva senzori
Figura 1B – Structura aplicației
10

Sistem multiscop Internet Of Thing
1.3. Contribu ții
Structura lucrării de față, cât și a aplicației, au fost stabilite de mine, după o
documentare temeinică din bibliografie.
M-am documentat pe partea de IoT căutând atât în teoria existentă, cât și
aplicațiile apărute până acum, de la companiile care comercializează produse care
folosesc această tehnologie, pentru a fi sigură că aleg o metodă cât mai optimă de
lucru.
Astfel, mi-am adunat materialele necesare si am început să lucrez la aplicație.
Am ales să lucrez cu placa Raspberry Pi 3 B, cu Symfony (framework-ul PHP folosit
pentru trimiterea apelurilor, login-ul în aplicație, înregistrarea, securitatea și
întreținerea bazei de date), cu Angular (framework-ul de JavaScript folosit pentru
aplicația web), cu NodeJs (pachetul JavaScript folosit pentru a forma webserverul
unde am scris API-urile), Johnny-Five (framework-ul folosit pentru a mă conecta la
placă și a acționa senzorii) și Express (framework-ul Node.js care constuiește
serverul de Node). De asemenea, pentru ca anumite animații de pe pagina de
prezentare am avut nevoie și de librăria JQuery.
Pentru ca site-ul reprezintă o aplicație care comercializeză produse, am
implementat și un sistem de plată prin care utilizatorii să poată plati direct pe site tot
ceea ce achizitonează. Pentru aceasta am inclus libraria Stripe în aplicație.
De asemenea, pentru că am vrut ca produsul să execute operatii cu nivel
optim din punct de vedere a timpului și a spatiului de memorie folosit, am ales ca
aplicația web sa fie SP A (Single Page Application). Am învațat cum să folosesc acest
principiu împreună cu Symfony și cu Angular. Acesta m-a făcut să înțeleg mai bine
diferența dintre front-end și back-end cât și sa aprofundez mai atent ideea de API.
Pentru că IoTeam are rolul și de informare, graficele au reprezentat un mod
intuitiv și eficient de prezentare a informațiilor receptate de senzori. Pentru formarea
și afișarea lor am inclus libraria de JavaScript Hightcharts în aplicație.
Am încercat să respect cât mai mult paradigma OOP (Oriented Object
Programming), iar acesta este unul dintre motivele principale pentru care am ales să
lucrez cu framework-uri. De asemenea, acestea m-au făcut să înteleg mai bine
șablonul MVC (Model – View – Controller ).
Baza de date a fost construită de mine, în așa fel încat să poată raspunde cât
11

Sistem multiscop Internet Of Things
mai repede cererilor făcute de utilizator. Tocmai de accea, am ales sa folosesc o bază
de date relațională, construită cu Doctrine. Pentru asigurarea unui proces de
mentenanță ușor, am ales să includ bundle –ul DoctrineMigration care generează
migrări. O migrare reprezintă un fișier care conține atât cod SQL, cât și PHP, care se
execută după ce s –au făcut modificări la nivelul bazei de date, pentru a adăuga
modificari în entități.
Desigul aplicației îmi aparține. Am încercat sa am un design user-friendly
(adică care să faciliteze experiența utilizatorului cu aplicația), cât mai intuitiv și plăcut
pentru orice user. Am vrut sa intuiesc ce își dorește utilizatorul de la o aplicație care
creează acest fel de servicii pentru a-l ajuta sa găsească cât mai repede ceea ce caută.
Pentru desing, am inclus pachetul Bootstrap și am scris cod CSS. Tot designul
aplicației este responsive (adică se poate adapta ușor și pentru telefon) și aceasta se
întâmplă deoarece mi-am dorit ca utilizatorul să se poate conecta ușor la aplicație
indiferent unde s-ar afla.
Codul JavaScript și CSS este minifiat când ajunge pe server. Am ales să
minifiez codul deoarece această metodă asigură că atunci când se încarcă pagina
totul ajunge pe server, dar se comprima în așa fel încât numărul requesturilor să fie cât
mai mic. De asemenea, și dimensiunea unui fișier minifiat care conține tot ce e nevoie
este, în medie, mult mai mică decât suma tuturor celor care ar trebui să se încarce
individual.
Testarea este foarte importantă deoarece experiența utilizatorului depinde de
mersul aplicației, și acesta nu poate fi unul bun dacă produsul nu a fost testat destul și
au apărut bug-uri în timp ce utilizatorul a folosit aplicația. Oamenii nu vor avea
încredere într-un produs care se prezintă cu slăbiciuni. Tocmai de accea, am realizat
testarea, încercând să elimin toate bug-urile care au aparut în perioada în care am
testat.
12

Sistem multiscop Internet Of Thing
2. Procesul de dezvoltare – aplica ția web
Pentru a realiza aplicația, am trecut prin mai multe etape printre care putem
aminti: definirea obiectului problemei (tehnologia IoT – comunicarea între mai multe
dispozitive), analiza concurenței (am observat că în județul Cluj încă piața nu este
foarte deschisă la acest gen de produs), documentarea (observarea altor aplicații care
folosesc tehnologia IoT, aprofundarea limbajelor de programare, a paradigmelor, a
șabloanelor, și a framework-urilor pe care le-am folosit), realizarea design-ului
realizarea funcționalitații, și testarea.
2.1 Tehnologii
Aplicația se bazează pe arhitectura client-server. Astfel, ea este formata din
trei parți esențiale: clientul, serverul și infrastructura rețelei. Clientul este un
calculator personal de pe care utilizatorul rulează aplicația. La un moment dat,
clientul trimite o cerere către server, acesta fiind un calculator puternic, capabil să
administreze aplicația. Serverul primește cererea, pregătește un răspuns, care este
trimis înapoi la client. (vezi figura 2A)
Figura 2A– Arhitectura Sistemului
Sursa: Infosec Institute, Application Security Testing of Thick Client Applications
http://resources.infosecinstitute.com/application-security-testing-of-thick-client-applications/#gref
La baza proiectării aplicației se află șablonul MVC (Model – View – Controller)
(vezi figura 2B). Asta înseamnă ca există un model (reprezentat ca și un obiect din
lumea reală – în baza de date, de obicei) care are rolul de a stoca datele. Modelul nu
are nici o cunoștiintă despre ceea ce se întâmpla în aplicație. Acesta are doar datele, și
pe baza lor răspunde la anumite interogări, făcute în Controller.
Controller-ul interacționează atât cu utilizatorul cât și cu modelul. Practic, el
13

Sistem multiscop Internet Of Things
primește o cerere de la utilizator, o analizează și decide ce va face în continuare.
Rezultatul creeat de Controller este transmis în View, adică utilizatorului. Userii
nu știu nimic despre modele, ei au acces doar la rezultatul final.
Figura 2B– Sablonul Model –> View -> Controller.
Sursa: Dave Hollingworth, The model-view-controller pattern,
9 Iun. 2016, https://daveh.io/blog/the-model-view-controller-pattern
Acest șablon de proiectare ajută la menținerea și reutilizarea codului deoarece
totul este mult mai bine organizat și structurat. De asemenea, se separă procesul de
dezvoltare (creerea și întreținerea codului), de cel prezentare. Astfel, oamenii care se
ocupa de designul aplicației se pot concentra doar pe acesta, fără să se preocupe
despre ceea ce se întâmplă la nivelul bazei de date, de exemplu. La fel și pentru cei
pasionați de baze de date. Aceștia își pot exercita munca fără sa aibă detalii despre
cum va arata interfața pentru utilizator.5
Aplicația web este structurat ă în bundle-uri. Un bundle se poate traduce ca
fiind un set care conține mai multe fișiere (vezi figura 2C). Acestea se ocupa de
același lucru (adică toate împreună formează funcționalitatea finală pentru o parte
importantă din aplicație).
Fiecare bundle respectă șablonul MVC descris mai sus și poate conține fișiere PHP,
5.Dave Hollingworth, The model-view-contr oller pattern, 9 Iun. 2016, https://daveh.io/blog/the-model-view-controller-pattern
14

Sistem multiscop Internet Of Thing
JavaScript, CSS, SASS. De asemenea, fiecare bundle poate integra mai multe
framework-uri și poate susține implementarea codului de testare6.

Figura 2C – Structura unui bundle in Symfony
Un bundle conține, implicit urmatoarele fișiere:
– Command în care sunt scrise comenzile de populare a bazei de date pentru o testare
cât mai atent făcută.
– Controller în care se găsesc acțiunile rutelor apelate de API-uri.
– Entity care conține clasele corespunzătoare entitaților din baza de date.
– Repository reprezintă folderul în care se fac interogarile către baza de date.
– Services este locul în care se mențin majoritatea funcțiilor din sistem. Un controller
ofera un răspuns dar acesta este decis, de cele mai multe ori într-un serviciu.
– Resources este compus din trei foldere: config (care se ocupă cu organizarea
rutelor), public (aici se găsesc fișierele CSS, SASS, JavaScript, HTML – acestea vor fi
minifiate) și view unde se găsesc template-urile paginilor (pentru ca aplicația este
Single Page Application în view există un singur fișier – index.html.twig care are rolul
de a include toate fișierele JavaScript și CSS necesare)
Acesta este structura de baza a unui bundle. EventListener este un folder
adăugat ulterior și conține niște fișiere PHP care au prioritate și care sunt apelate la
instanțierea unei pagini . Așadar, această strucură nu este una statica, ea se poate
modifica de fiecare data când programatorul simte nevoia sa o facă .
Practic, așa s-au separat și mai mult funcționalitățiile din aplicație.
6.Fabien P., Jonathan H. W., Geoffrey B., Kris W., Hugo H., Thomas R. Stefan K., Fabrice B.,Ryan W., Laurent B., Symfony The Book, (3
Noiembrie 2014), pp. 26
15

Sistem multiscop Internet Of Things
În sistemul prezentat, există trei bundle-uri, FrontBundle, ApiBundle și
SecurityBundle. Primul este destinat părții de prezentare (el conține controllerele
Angular și fișierele HTML), cea de-al doilea pentru comunicarea dintre aplicații
(dintre placă și web – vezi figura 1B), iar SecurityBundle are rolul de a se gestiona
login-ul și înregistrarea userilor în sistem.
Pentru o interacțiune cât mai bună și cât mai plăcută cu utilizatorul, o rapiditate
mai mare de răspuns la cererile lui, dar și datorită faptului că sistemul prezentat se
bazează mult pe comunicare și aceasta se face prin intermediul unor cereri (request-
uri) reprezentate ca și API-uri, aplicația este SP A ( Single-Page-Application ). Aceasta
înseamnă că totul este compus dintr-o singură pagină și toate legăturile cu baza de
date se fac prin intermediul unor apeluri POST și GET către un Controller, printr-o
anumită rută. Aceste apeluri returnează un răspuns în format Json care apoi este
interpretat de către o variabilă Angular. În sistemul prezentat, toate apelurile se fac
prin intermediul framework-ului Angular.
Pagina principală include un modul de Angular care are asociat toate
dependențele necesare pentru o bună funcționare.
Totuși, acesta este structurată în module, directive și controllere pentru a creea
subpagini dependente de pagina principală care au o rută pentru indentificare unică
(generată tot cu Angular – vezi figura 2D). Rutele se creează cu ajutorul modulului
definit de Angular ngRoute, mai exact se folosește provider-ul $routeProvider. După
cum poate observa și în figura 2D, pentru fiecare rută se specifică un controller care
va depozita tot codul Angular de care este nevoie pentru o bună funcționare, și un
fișier (marcat ca și templateUrl în figură) care va avea în componența codul HTML.
Un lucru important de sesizat este că toate aceste pagini sunt construite pe un
singur modul (în figura 2D modulul ‘app’) și implicit vor moșteni totul de la el (de
exemplu, directiva ‘goClick’ va fi recunoscută în toate subpaginile).
API-urile fac legătura dintre Angular și baza de date. Ele reprezintă rute creeate
cu Symfony.
Acestea sunt declarate în fișiere cu extensia .yml din folderul ‘/Resource/config/api/’.
16

Sistem multiscop Internet Of Thing
` Figura 2D – Configurare rute Single Page Application
înr-un controller Angular
La fiecare invocare a unei rute, kernel-ul (reprezentat ca și o clasă în
/app/AppKernel.php ) cere router-ului să inspecteze cererea. R outer-ul returnează
informa ia cu privire la controller-ul ț i funcșția care trebuie executate ( în cazul din
figura 2E SecurityController i mai exact functia changePasswordActionș ). Controller-
ul se execută, i returnează un obiect ș Response care este trimis mai departe .
Figura 2E – Configurare rute Symfony(ruta de schimbare parola)
17

Sistem multiscop Internet Of Things
2.2 Clasele utilizate în aplicație
Sistemul respectă paradigma OOP și din acest motiv, la nivelul de
implementare se lucrează cu clase.
Clasa, într-un anumit limbaj de programare, reprezint ă definirea unui tip de obiecte
abstracte sau concrete, adic ă descrierea proprieta ților, a datelor i a metodelor, a ș
prelucrărilor, posibile asupra datelor. Clasa este, de fapt, o no țiune abstractă, care
define te un anumit tip de obiecte, sau, altfel spus, o clas ș ă reprezintă mulțimea
posibilă a mai multor obiecte de acela i tip. ș
Obiectul, reprezintă analogia în date informatice a unui anumit obiect concret (din
viața reală), sau abstract (un obiect care este definit pentru a ajuta la rezolvarea
problemei date). Acesta este alc ătuit din anumite proprietăți, și conține proceduri și
funcții de prelucrare. Crearea unui obiect presupune specificarea clasei din care face
parte, astfel identificandu-se proprietățile obiectului și modul în care acestea pot fi
folosite si prelucrate.7
În figura 2G este prezentată diagrama de clase din aplicație, pentru fiecare clas ă
specificandu-se propriet ățile și metodele). Trebuie specificat c ă pentru a avea o
imagine cât mai clară asupra diagramei, am ales sa pun pentru proprită țilele din clasa
de tip integer, string, sau boolean notatia de „get()-return field” și „set(field)-return -”
Clasa Users moșteneste clasa
User din FosUserBundle (un bundle
predefinit de Symfony pentru opera țiile
destinate utilizatorilor). Acesta înseamnă
ca clasa Users va mosteni toate
atributele pe care clasa User le deține
(lastLogin, salt, roles, group,
emailCanonical, etc), și toate metodele
de get, set și remove a acestora(vezi
figura 2F). Figura 2F –
FosUserBundle – entitatea User
7 Mihail Buricea, Programarea orientată pe obiecte in C++. Editura Sitech Craiova, 2006 , capitolul 3
18

Sistem multiscop Internet Of Thing
Pe lângă toate acestea, clasa Users mai are și atributele googleId, facebookId (folosite
pentru înregistrarea cu Google respectiv Facebook), firstName, lastName,
profilePicture, consumeHistory (care reprezintă relația cu entitatea ConsumeHistory),
apKey, isActive și board (care reprezintă relația cu entitatea Board)
Figura 2G – Clasele din sistem
19

Sistem multiscop Internet Of Things
2.3 Baza de date
O bază de date este o colecție de date centralizate, creată și menținută
computerizat, în scopul prelucrării datelor în contextul unui set de aplicații.
Prelucrarea datelor se referă la operațiile de introducere, ștergere, actualizare și
interogare a datelor. 8
Rolul unei bazei de date este de a colecta informații din sistemul operațional și
decizional precum și informațiile ce provin din mediul extern i să memoreze aceste ș
date precum și rezultate din prelucrarea lor. De asemenea, aceasta mai trebuie să
asigure accesul la memorie în vederea comunicării datelor stocate, i să prelucreze ș
informațiile la cererea utilizatorilor.
Baza de date se află la nivelul aplica iei web. A țplica ia ț utilizează o bază de date
centralizată – adică datele sunt depozitate pe un sistem central de unde utilizatorii le
acceseaza. Este folosit conceptul client-server, care implică utilizarea unui server de
fișiere centralizat aflat undeva pe o rețea, care pune la dispoziția clientului unități de
disc logic cu fișiere partajate. Serverul de fișiere nu are cunoștințe despre cererile
logice care se prelucrează, dar acționează sub forma unui disc ce poate fi accesat prin
intermediul unei rețele pentru a transfera date de la/spre client. Cu alte cuvinte, se
poate spune că serverul este capabil să în eleagă tipul datelor cerute, reu ind astfel sa ț ș
execute cererile solicitate i să întoarcă un raspuns ș9.
Utilizatorul interac ionează doar cu interfa a grafică, prin intermediul căreia se ț ț
realizează cereri către baza de date, iar mai apoi se realizează interogari pentru a putea
ob ine informa iile dorite.ț ț
Sistemul centralizat al bazei da date asigură: fiablilitatea, protec ia datelor i ț ș
tranzac ii sigure (ac iunea putând fi reparată în cazul apari iei unei erori). De ț ț ț
asemenea, interogările se procesează rapid, întrucât aceste procese au loc pe server.
8. Pribeanu, Costin, Baze de date și aplicații, Editura MatrixRom, 2000
9. D. Sarkar, W. I. Zangwill: File and Work Transfers in Cyclic Queue System , Managment Sciece, V ol. 38, No. 10 (Oct., 1992), pp. 1510-1523
20

Sistem multiscop Internet Of Thing
Securitatea joacă un rol foarte important, mai ales la nivelul bazei de date.
Dacă aceasta va fi compromisă, tot sistemul poate fi compromis. De aceea, m-am
asigurat ca în baza de date să nu ajungă date eronate, injectări, parolele să fie
encriptate, iar informa iile să fie extrase cu aten ie. ț ț
Ca i proiectare tehnica, deoarece am ales fremework-ul Symfony, acesta vineș
integrat cu Doctrine ORM (Object-relational mapping ), o librărie care se focusează
asupra bazelor de date, fiind foarte flexibilă, con inând func ionalită i de bază i ț ț ț ș
interfe e ț.
Detaliile legate de conec iunea aplica iei la baza de date le-am configurat atunci ț ț
când am instalat proiectul Symfony (cu coamanda composer install) i se află în ș
fi ierul /app/config/parametrs.yml.ș
Figura 2H – Conec iunea aplica iei la baza ț ț
După toate cele mentionate mai sus, am creat baza executând următoarea comandă în
terminal:

Figura 2I – Construc ia bazei de date ț
Tabelele le-am creat cu comanda:
Figura 2J – Creerea entit ăilor în Symfonyț
dupa care am introdus numele tabelului urmat de numele bundle-ului.
21

Sistem multiscop Internet Of Things
Pe lângă entitățile create din linia de comandă, a fost nevoie și de entități
generate automat în momentul în care am realizat legături many-to-many, acestea
fiind tabelele intermediare.
Deoarece am vrut ca aplica ia sa fie cât mai adaptabilă, iar acest lucru din punct ț
de vedere a bazelor de date poate însemna ca schema ini ială sa se schimbe în timpul ț
dezvoltării soft-ului, am decis să lucrez cu migrări. Acesta înseamnă că de fiecare dată
cand se fac schimbari la nivelul bazei de date, aceastea se scriu în ni te fi iere ș ș
specifice (localizate în /app/DoctrineMigrations/), care mai apoi se execută. Fiecare
migrare se generează cu comanda:
Figura 2K – Generarea unei migrări
Acestă comandă verifică defapt care sunt diferen ele dintre tabelele existente în baza ț
de date i codul sursă din entită ile care corespund acestora. Aceste modificari se scriu ș ț
într-un fisier care con ine cod recunoscut de SQL, dar i de PHP. ț ș
După ce se generează o nouă migrare, acesta se va executa cu comanda specifică :
Figura 2L – Rularea migrăririlor în Symfony
Sistemul implementat a avut nevoie de ni te date care nu se vor schimba, cât ș
timp aplica ia va rula, niciodată. Un exemplu de acest fel pot reprezenta pinii plăcii ț
Rasbery Pi. Ace tia sunt în număr de 40, au un nume unic prin care se indentifică i ș ș
acesta este configurat odată cu fabricarea plăcii.
De asemenea, am avut nevoie de date pentru testare, prestabilite, înainte de
func ionarea întregii aplica ii (utilizatori, senzori, dispozitive care se pot ac iona iț ț ț ș
plăci)
Pentru toate aceste cazuri am implementat ni te comenzi care se rulează în terminal i ș ș
inserează înregistrari în tabelele din baza de date. Am realizat comenzile în folderul
Command din ApiBundle. Comanda am numit-o load:data, i se ruleaza scriind :ș
Figura 2M – inserare în baza de date
22

Sistem multiscop Internet Of Thing
Tabelele bazei de date din aplicatie sunt ilustrate în figura 2N de mai jos în detaliu.
Figura 2N – Diagrama bazei de date
2.4 Cazurile de utilizare
Un sistem corect, este unul capabil să satisfacă a teptările celor care vor ș
beneficia de el, să inspire încredere, astfel încât oamenii să nu ezite să îl abordeze.
Tocmai de accea am ales să folosesc metoda cazurilor de utilizare, deoarece prin
aceasta se asigură faptul ca utilizatorii vor avea la îndemână o aplica ie care ț
îndepline te cerin ele dorite de ei. ș ț
De asemenea, am dorit să ofer prin aceasta o descriere generală a modului în
care va fi utilizat sistemul, cât i asupra func ionalita ilor ce se doresc a fi oferite de ș ț ț
el.
23

Sistem multiscop Internet Of Things
Cazul 1 : Utilizatorul are cont pe IoTeam
Un utilizator care are cont pe IoTeam va avea posibilitatea de a- i adăuga un ș
nou dispozitiv pe care vrea sa îl controleze, i sa editeze un dispozitiv deja existent ș
(de exemplu, dacă a schimbat pin-ul pe care acesta este legat la placă). De asemenea,
poate să aprindă un bec acum sau să programeze pornirea lui, să pornească o alarmă
acum sau la ora specificată, i să o oprească. El are acces i la grafice ob inute din ș ș ț
informa iile primite de la senzori : câtă energie a consumat săptămâna asta, cât a stat ț
un bec pornit, sau la ce oră au înregistat senzorii de mi care date. ș
Figura 2O – Diagrama cazurilor de utilizare pentr u un utilizator care are cont
24

Sistem multiscop Internet Of Thing
Cazul 2 : Utilizatorul nu are cont pe IoTeam
Un utilizator care nu are cont pe aplica ia poate sa î i creeze unul cumpărând ț ș
placa i câ iva senzori. Pentru ca contul sa devină activ i sa poată beneficia de tot ce ș ț ș
aplica ia ofera (vezi figura 2O) el va trebui să î i plătească aceste dispozitive pe site în ț ș
sec iunea de plă i.ț ț
Figura 2P – Diagrama cazurilor de utilizare pentru un utilizator care nu are cont
2.5. Scenariul de înregistrare pe site
IoTeam este o aplicație destinat ă tuturor utilizatorilor. Sistemul nu este gândit în
a a fel încât ca la înregistrarea unui nou user acesta sa ceară o permisiune unuiș
administrator care sa supravegheze atent ce se întâmplă cu aplica ia.. Tocmai din acest ț
motiv, am ales să mă concentrez foarte mult pe partea de securitate a paginii de
înregistare a unui nou utilizator.
A adar, atunci când cineva vrea sa î i facă un cont pe aplica ie poate sa î i ș ș ț ș
introducă datele personale (nume, prenume, adresa de email i parola) sau acestea pot ș
fi preluate de la retele de socializare: Facebook sau Google.
Odată ce sistemul prime te aceste date (adică utilizatorul apasă butonul ș
25

Sistem multiscop Internet Of Things
„Înregistreaza-te” ), ele ajung în Controller i sunt inserate în tabelul Users (vezi ș
figura 2N). Utilizatorul este în acest moment activ i se poate loga pe site, dar nu are ș
acces la meniul aplica iei. Acestă restrictie este marcată la nivelul bazei de date tot în ț
tabela Users i anume în coloana ș roles acest tip de utilizator va avea rolul de membru
(„ROLE_MEMBER”).
În acest stadiu, când utilizatorul va încerca să se logheze va fi restrictionat pe pagina
de plată care va con ine detalii despre livrare i o implementarea unui sistem de plată ț ș
cu Stripe. Am ales Stripe deoarece reprezintă un sistem de plată foarte folosit în toată
lumea, cu o rată a succesului foarte mare. De asemenea, acesta î i pune la dispozi ie i ț ț ș
multe func ii de validare a conturilor bancare. ț
Până când utilizatorul nu va efectua această plată, nu va avea acees nicăieri altundeva
în sistem. M-am asigurat de acest lucru prin utilizarea firewall-ului pe care l-am
configurat in fiișerul
din /app/config/security.yml.
Deoarece sistemul este implementat Figura 2Q – restrictionarea pe dashboard
cu ajutorul bundle-ului predefinit de Symfony, FosUserBudle, (adică entitatea User
extinde clasa BaseUser care face parte din acest bundle) în security.yml cu ajutorul
unor șabloane de rutare am condi ționat accesul la anumite sec țiuni. In figura 2J se
poate observa ca ruta ^/dashboard nu poate fi accesat ă decat dacă userul are rolul
ROLE_USER iș în acest moment el are ROLE_MEMBER.
După ce userul î i plăte te pachetul pe care l-a comandat, i plata s-a efectuat cu ș ș ș
succes, aceste prime te rolul de user ( ș ROLE_USER) i va avea acces la meniulș
principal al aplica iei. ț
Tot acest proces de înregistrare este ilustrat i în figura 2R. ș
2.6. Scenariul de logare pe site
Logarea reprezint ă, în sens general, modul prin care aplica ia poate să re ină ț ț
anumite informa ii despre un individ care a interac ionat cu sistemul. ț ț
Limbajul de programare PHP creează la logare o sesiune care este valabilă un anumit
timp i care are stocate informa ii despre sesiunea anterioară în special într-o variabilă ș ț
26

Sistem multiscop Internet Of Thing
globală : $_SESSION.10
i Symfony face acela i lucru la logare. Se creeză o sesiune, care con ine dateleȘ ș ț
utilizatorului logat din tabela de Users i informa ii despre sesiunea anterioară. ș ț
Pentru ca aplica ia este Single Page Application tot procesul de logare s-a făcut ț
cu API-uri. Pagina care con ine formularul de login are ata ată (ca i toate paginile din ț ș ș
aplica ie) un controller de AngularJs. Astfel, utlizatorul are acces la formularul de ț
login, din această pagină, care l-a constrâns să introducă username-ul i parola. ș
În momentul în care el a apăsat butonul de „Log in” s-a făcut un apel POST către ruta
care a verificat dacă exista vreo inregistrare cu aceste date în sistem:
fos_user_security_check . În caz afirmativ, Symfony creează sesiunea, iar mai apoi se
trimite un răspuns de succes către Angular care va face redirectul către pagina de
meniu. În cazul în care nici un user nu corespunde datelor introduse, se va returna un
mesaj de eroare.
Figura 2R – procesul de înregistrare
10 Manualul PHP-> Informații de referin ă despre func ii-> Extensii de lucru cu sesiuni-> Sessionsț ț
http://php.net/manual/ro/intro.session.php
27

Sistem multiscop Internet Of Things
3. Procesul de dezvoltare – interac țiunea cu placa
Pentru conecțiunea la senzori și dispozitive, și primirea informațiilor
semnficative de la ei, am folosit o placă Raspberry Pi, modelul 3B. Acesta conține un
microprocesor, o memorie RAM, o interfață Ethernet și WiFi și mai mulți pini.
Putem defini acești pini ca fiind o interfață fizică între placă și lumea exerioară. Ne
putem gândi la ei ca la niște switch-uri pe care le putem activa sau dezactiva (aceștia
sunt pinii digitali de intrare), sau pe care placa îi poate porni sau opri (pinii digitali de
ieșire). Din cei 40 de pini avem 2 pini de alimentare (PWR) cu capacitate 3.3V –
aceștia sunt pinii 1 și 17, 2 pini de capacitate 5V – pinii 2 și 4, 8 pini de GND (masă)
– pinii 6, 9, 14, 20, 25, 30, 34 și 39. De asemenea, mai există 2 pini rezervați pentru
identificarea plăcilor de extensie de tipul Pi HATS – pinii 27 și 28 și 24 de pini GPIO,
unii dintre ei cu funcționalitate dublă (vezi figura 3A). 11
Figura 3A – configurarea pinilor de pe placa Raspberry Pi
Toți pinii GPIO la Raspberry Pi suportă maxim 3.3V . Astfel, conectarea de periferice
11. Utilizarea pinilor GPIO la Raspberry Pi 3 , 25 Apr 2017, https://blog.robofun.ro/2017/04/25/utilizarea-
pinilor-gpio-la-raspberry-pi-3/
28

Sistem multiscop Internet Of Thing
ce implică un nivel de tensiune mai mare de 3.3V va conduce la distrugerea definitivă
a blocului GPIO al plăcii.
Funcționarea pinilor GPIO
Pentru acționa un led, e nevoie trebuie să îl conectăm la un pin de alimentare
(PWD care va avea ca și rezultat 3.3V) și la un pin GND (de masă ,care retuneaza 0V
și care este folosit ca și partea negativă dintr-o baterie ) (vezi figura 3B).
Figura 3B – conectarea unui led
la un pin PWD și unul GND
După ce acest lucru a fost făcut se poate acționa, printr-un limbaj de programare,
adică se poate porni actionând pinul PWD, sau opri- cu ajutorul pinului GND12 .
În sistemul prezentat, acest lucru se întâmplă cu ajutorul framework-ului Jonny Five și
a framework-ului Express. (vezi vigura 3C)
Sistemul prezentat are un senzor de mișcare și mai multe dispozitive care se
vor acționa: două becuri, un buzz-er (care va suna când se pornește alarma), și încă
doua becuri – unul verde și unul roșu – diferite de primele două menționate (acestea
vor lumina când alarma se declanșează). Toate acestea se rețin în baza de date. Pentru
că utilizatorul cumpăra pachetul de pe aplicație și acesta este predefinit de sistem când
el îl primește, pinul pe care se află un senzor sau un dispozitiv este configurat în
comanda load:data (vezi sectiunea 2.2) după cum urmează: pe GPIO27, GPIO22, se
află primele 2 becuri, pe GPIO24 se afla buzz-erul, iar pe GPIO18 se găsește senzorul
de mișcare. D easemenea, pe GPIO04 se va găsi becul verde, iar pe GPIO05 cel roșu.
Ceilal i pini rămân liberi când pachetul va fi livrat unui user, dar utilizator poate să ț
î i adauge noi dispozitive i astfel sa ii ocupe, treptat. ș ș
12 Cambridge, UK, GPIO: MODELS A+, B+, RASPBERRY PI 2 B AND RASPBERRY PI 3 B , 21 mar 2017 ,
https://github.com/raspberrypi/documentation/tree/master/usage/gpio-plus-and-raspi2
29

Sistem multiscop Internet Of Things

Figura 3C – pornirea/oprirea unui led conectat la plac ă cu NodeJs

Senzorul de mișcare folosit este modelul PIR HC-SR501 și se folosește de cele mai
multe ori pentru a detecta prezenta oamenilor. În industrie, este folosit pentru
stingerea sau aprinderea automată a luminii atunci când o persoană intră sau iese
dintr-o încăpere. Acesta detectează o mișcare pâna la 7 metri distanța. Bazat pe o
tehnologie IR, acesta oferă fiabilitate și o tensiune mică de operare. În sistem, acesta
ocupă un singur pin pe placă (eu am ales pinul GPIO18). În aplicația prezentată,
acesta are rolul de a detecta mișcarea din locurile securizate. Pe baza acestor
informații, se generează grafice pe care utilizatorul le poate accesa.
Aplicația mai dispune și de o alarmă care se poate porni pe moment, sau poate
fi programată de utlizator. Pentru ca am vrut ca alarma să și sune, am folosit un buzzer
(modelul este 5V Active Passive Buzzer Alarm Arduino A VR PIC).

30

Sistem multiscop Internet Of Thing
4. Designul aplica ției
Desingul s-a dorit încă de la început a fi unul user-friendly astfel încât userii
să fie încântați de interacțiunea lor cu aplicația. De asemenea, am dorit sa realizez un
sistem responsive pentru ca utilizatorii sa îl poată accesa de oriunde.
Aplicația este SPA (Single Page Application) și din acest motiv toate fișierele
Javascript, Angular, Jquery, CSS se încarca la început pe pagina curent ă de navigare și
rămân același. Ele sunt minifiate și se încarca în aplicație din folderul /web. Pentru a
ajunge din bundle în /web minifiat mereu este nevoie de comanda php bin/console
assets:install.
Pentru realizarea paginilor, am folosit librăria Bootstrap. Acesta con ine clase ț
predefinite care sunt adaptabile pentru orice dispozitiv. Astfel, pentru a-mi organiza
paginile într-un mod cât mai optim, am folosit clasele Bootstrap precum: container,
(care este de dimensiuni fixe ) care con ine clasele row (numărul acestora depind de ț
câte rânduri a fost nevoie pentru organizarea paginii). Apoi, am folosit clasele
specifice coloanelor: col-*-*. Am utilizat clasele .col-xs-12, .col-sm-12, .col-md-6,
.col-lg-6. Xs, sm, md i lg reprezintă mărimile ecranului, i anume: xs – extra small ș ș
devices, adică telefoanele mobile: sub768 px; sm – small devices – tablete: mai mare
sau egal cu 768 px; md – medium devices – laptop-uri: mai mare sau egal cu 992px;
lg- large devices: mai mare sau egal cu 1200px. Asa am reusit sa aduc aplicatia la un
stadiu responsive.
Pentru creerea anima iilor, pentru a ascunde i afi a anumite elemente în pagină ț ș ș
(de exemplu formulare care trebuie să apară doar în mometul în care utilizatorul dă
click pe un buton sau o anumită iconi ă), am folosit JavaScript i librăria jQuery. ț ș La
fel cum am procedat la CSS, i la JavaScript am folosit un filtru de minifiere, în acest ș
caz fiind vorba de uglifyjs, pe care l-am inclus într-un block din twig, mai exact între
{% javascripts %} {% endjavascripts %}.
31

Sistem multiscop Internet Of Things
5. Testarea aplica ției
Testarea este foarte importantă în procesul de realizare și întreținere a unui
sistem informatic.
Fără testare, în primul rand, programatorul nu ar putea ajunge la anumite probleme ale
aplicației. Este un caz pe care nimeni nu il doreste ca utilizatorii sa ajunga mai repede
la o problema decat programatorii acelui sistem. Utilizatorii ar putea deveni
nemulțumiti de problemele ap ărute și aplicația sa nu mai fie căutată.
În altă ordine de idei, sistemul trebuie să fie pregătit pentru orice va urma.
De exemplu, dacă numărul de utilizatori crește brusc, acesta trebuie să
funcționeze satisfăcător și în aceste condiții.
Un alt exemplu ar putea fi și cazul în care cineva încearcă să introducă în baza de
date informații care ar putea compromite întreg sistemul.
S-au testat anumite funcționalități printre care se poate aminti:
– concordanța dintre specificațiile problemei si rezultatul final
– funcționalitea aplicației să respecte parametrii inițiali
– funcționalitea aplicației pe mai multe sisteme de operare
– sistemul să ramană func țional indiferent de browser-ul utilizatorului
– sistemul să poată face fată unui număr mare de utilizatori fară probleme
– funcționarea corectă a interfeței grafice (o aplicație user-friendly);
Cerințele hardware ale sistemului:
– utilizarea unui calculator cu minimum 1GB RAM, un procesor cu o frecvența de
minim 2GHz si o placa video de minimum 1GB
– acces la internet
– telefon mobil (smartphone)
– tabletă
32

Sistem multiscop Internet Of Thing
– placa Raspberry Pi 3B
– senzori și dispozitive compatibile cu placa
Cerințele software ale sistemului:
– calculatorul poate sa dispună de orice sistem de operare (pentru Windows – începand
cu Windows 7), dac ă este el este funcțional
Metodologia de testare
Testele realizate se pot împarți în categorii : testare pozitiv ă (în parametrii în
care ar fi normal ca un utilizator sa folosească sistemul) , testare negativă (forțarea
aplicației pentru deducerea rezistențentei lui), white box, black box.
Testarea pozitivă : s-au testat înregistrarea, logarea, și restricționarea, pentru un
utilizator care nu a efectuat plata, la meniul aplicației.De asemenea, s-a mai testat
functionalitatea de pe placa, API-urile cu niste parametri erona ți. S-a constată că toate
acesta funcționează corect, după specificațiile problemei.
Testarea negativă : s-a testat înregistrarea și logarea cu date eronate. Loginul nu s-a
efectuat, a apărut un mesaj de eroare. De asemenea, au fost introdusi cu comanda php
bin/console load:data și mai mulți utilizatori (cca 500) și aplicația raspundea în limite
normale la cerințe .
Testarea white box : s-a verificat codul si mai exact precizia algoritmilor,
comentariile, concordanța intre cod si rezultatul rularii în browser.
Testarea black box : s-a testat toat ă functionalitatea existent ă fară a avea acces la
codul aplicației. Rezultatele au fost conform a șteptarilor.
33

Sistem multiscop Internet Of Things
6. Concluzii
Internetul este un concept care aduce încă, după atât de mult timp surprize și
conceptul de „Internet Of Things” este una dintre ele.
Lucrarea de fata are rolul de a aprofunda acest subiect, oferind niște definitii
și despre el. De asemenea, s-a construit și o aplicație web care a sintetizat acest
concept printr-o aplicație web care oferă un control sigur și permanent asupra unor
lucruri la distanța. Acesta se poate extinde oricând, adaugandu-se și alți senzori,
conectand totul cu WI-FI, sau punând aplicația web pe un server, live. De asemena, s-
ar putea include într-un sistem care poate aparține unei case inteligente, de exemplu.
În capitolele precedente am dorit să evidentiez care au fost tehnologiile care au stat la
baza construcției acestei aplicații, cum a fost gândit totul și de ce s-au luat aceste
decizii. De asemenea, este prezentata și placa cu care am lucrat – specificatiile și pinii
ei- Raspberry Pi 3B.
Pentru ceea ce am ales sa fac, am dorit sa ofer o alternativa, un mod de a face
lucrurile mai ușoare și firesti pentru toată lumea. De asemenea, datorită graficelor pe
care aplicația le deține, oamenii pot economisi, ceea ce este foarte important în
societatea actuala, când acest lucru reprezintă cu adevărat o problemă.
34

Sistem multiscop Internet Of Thing
Bibliografie :
1. Facebook company, State of Connectivity 2015 : A Report on Global Internet
Access
2. PostScapes, History Of IoT, https://www.postscapes.com/internet-of-things-
history/
3. Accenture company, IIOT, 2017
4. Meet, Internet-of-Things Architecture IoT-A, http://www.meet-
iot.eu/deliverables-IOTA/D1_3.pdf
5. Dave Hollingworth, The model-view-controller pattern , 9 Iun. 2016,
https://daveh.io/blog/the-model-view-controller-pattern
6. Fabien P., Jonathan H. W., Geoffrey B., Kris W., Hugo H., Thomas R. Stefan K.,
Fabrice B.,Ryan W., Laurent B., Symfony The Book , (3 Noiembrie 2014)
7. Mihail Buricea, Programarea orientat ă pe obiecte in C++. Editura Sitech Craiova,
2006
8. Pribeanu Costin, Baze de date și aplicații , Editura MatrixRom, 2000
9. D. Sarkar, W. I. Zangwill, File and Work Transfers in Cyclic Queue System , Managment
Sciece, V ol. 38, No. 10 (Oct., 1992), pp. 1510-1523
10. Manualul PHP-> Informații de referință despre funcții-> Extensii de lucru cu
sesiuni-> Sessions http://php.net/manual/ro/intro.session.php
11. Utilizarea pinilor GPIO la Raspberry Pi 3 , 25 Apr 2017,

Utilizarea pinilor GPIO la Raspberry Pi 3


35

Sistem multiscop Internet Of Things
12. Cambridge, UK, GPIO: MODELS A+, B+, RASPBERRY PI 2 B AND
RASBERRYPI3B, 21mar2017
https://github.com/raspberrypi/documentation/tree/master/usage/gpio-plus-and-raspi2
13. Doctrine 2 ORM’s documentation, http://doctrine-orm.readthedocs.io/en/latest/
14. Ionel Nicolae, Monitorizarea la distanta a proceselor industriale , Electronica
de Azi, Iunie 2013
15. Information and Comunication Technologies Institute, Proiectul Green-Mod
extentie a proiectului Smart Building Ra&D project , finanțat de Hasler
Foundation, (2012 – 2015).
16.SimonMonk,RaspiRobotBoardVersion2 ,https://github.com/simonmonk/raspirobot
board2
17. Infosec Institute, Application Security Testing of Thick Client Applications
http://resources.infosecinstitute.com/application-security-testing-of-thick-client-
applications/#gref
36

Sistem multiscop Internet Of Thing
37

Sistem multiscop Internet Of Things
38

Sistem multiscop Internet Of Thing
39

Sistem multiscop Internet Of Things
40

Sistem multiscop Internet Of Thing
41

Sistem multiscop Internet Of Things
42

Sistem multiscop Internet Of Thing
43

Sistem multiscop Internet Of Things
44

Sistem multiscop Internet Of Thing
45

Sistem multiscop Internet Of Things
46

Sistem multiscop Internet Of Thing
47

Sistem multiscop Internet Of Things
48

Sistem multiscop Internet Of Thing
49

Similar Posts