Documente Academic
Documente Profesional
Documente Cultură
Cuprins .................................................................................................................. 1
1. Introducere ................................................................................................................... 4
1.1 Formularea problemei.......................................................................................... 4
1.2 Soluții existente în prezent...................................................................................... 4
1.2.1 Securitate ...................................................................................................... 5
2.2.3 Time-to-Temperature................................................................................ 11
3.2.3 Aspersoare.................................................................................................. 17
3.2.8.2 Editarea planului gospodăriei (en. Edit house plan) (fig. app9) 46
3
1. Introducere
1.1 Formularea problemei
O dată cu dezvoltarea tehnologiei, s-a simțit nevoia tot mai accentuată de a automatiza
orice proces repetitiv din viața de zi cu zi. Scopul principal a-l acestui fenomen este de a
economisi timp, într-o lume în care 24 de ore dintr-o zi par prea puține.
Ideea de automatizare a locuinței a apărut însă din varii motive:
· necesitatea economiei de timp, mergând pe principiul: dacă o activitate
dureaza mai mult de 15 minute, trebuie găsită o soluție automată;
· expansiunea economică și mai ales cea tehnologică, impunând un progres în
toate aspectele vieții de zi cu zi, nu doar în sfera IT;
· eficientizarea resurselor folosite, având posibilitatea creării de statistici și
rapoarte, care să permită evitarea folosirii resurselor în mod ineficient.
4
sistem. Pornind de aici, experții au estimat o creștere a industriei inerentă, atât în
America, cât și în Europa, conform statista.com.1(fig. 1)
1.2.1 Securitate
Deși în SUA numărul caselor care dețin un sistem de securitate în locuință este mai mare
decât în Europa, această piață devine din ce în ce mai mare și în țările Europene. În
general, partea de securitate dintr-o locuință este reprezentată de camere de
supraveghere și/sau alarme, dotate cu senzori de mișcare.
Conectarea sistemelor de securitate la rețea are numeroase avantaje. Sistemul oferă în
general posibilitatea verificării în timp real a camerelor instalate sau informații legate
de starea curentă, notificarea utilizatorului prin sms sau email, ori a unor evenimente
neobișnuite identificate de sistem. Evenimente precum detecții de mișcare sau
deschiderea ușilor sau a geamurilor fără a fi programate anterior, pot fi, de asemenea,
stocate în jurnale/baze de date, ce pot fi salvate local sau online.
1https://www.statista.com/outlook/280/109/home-automation/united-states#market-
revenue
5
Un alt mod de implementare a părții de securitate din locuință o reprezintă folosirea
senzorilor de detecție a scurgerilor de gaz sau de apă, permițând utilizatorului să ia
măsuri din primul moment, chiar dacă se află departe de casă în momentul producerii
evenimentului. Mergând pe aceeași cale, o altă componentă foarte utilă o reprezintă
detectorul de fum. Spre deosebire de detectorul de fum obișnuit, unul conectat la rețea
anunță proprietarul, care poate verifica starea locuinței prin intermediul unei camere
web și poate acționa în consecință.
Omul modern este de acord să plătească pentru a se asigura că totul este în regulă în
locuința sa, atât în momentele în care se află în aceasta, cât și atunci când este plecat,
lăsând loc developerilor să îmbunătățească sistemele existente și să vină cu inovații în
domeniu. Partea de securitate pare să fie punctul de intrare către automatizarea
locuinței, motivațiile unei astfel de decizii fiind simplu de justificat iar rezultatele fiind
vizibile imediat.
1.2.2 Energie
Partea de control a energiei prin intermediul unui sistem automat este reprezentată de
monitorizarea și controlul consumului de energie din locuință. Principalii consumatori
dintr-o locuință sunt sistemul de iluminat, sistemul de răcire sau de încălzire, sistemul
de irigare, electrocasnicele (frigider, cuptor, mașina de spălat). Un astfel de sistem
aduce beneficii atât utilizatorului direct, prin reducerea valorii facturilor, planetei, prin
eficientizarea consumului și minimizarea pierderilor, cât și prestatorului de servicii,
întrucât niciun furnizor nu poate asigura serviciul prestat în proporție de 100% pentru
toti utilizatorii în același timp. S-a pus din ce în ce mai mult accent în ultimii ani pe
partea de optimizare a consumului resurselor, fiind nevoiți să stopăm un comportament
risipitor, o soluție fiind chiar adoptarea unui astfel de sistem de automatizare și
conectare a locuinței. Pe lângă posibilitatea opririi de la distanță a apei uitate deschise
sau a pornirii sistemului de încălzire/răcire doar atunci când este nevoie (bazându-se
pe senzori sau pornirea doar înainte de a ajunge acasă în detrimentul lăsării aparatelor
pornite o perioadă de timp îndelungată), un astfel de sistem poate oferi diferite statistici
despre consumul real și cel strict necesar.
6
1.2.3 Confort
Confortul a devenit o stare din ce în ce mai greu de găsit, mai ales într-o lume guvernată
de stres și termene limită. Un sistem care îți poate aduce un plus de confort în viața de zi
cu zi pare să devină o necesitate. Sisteme automate care permit controlul de la distanță
a încălzirii/răcirii, iluminatului, sistemului de irigații aduc nu doar o stare de confort,
dar reduc și timpul consumat cu treburi casnice, îmbunătățind aproape instant
condițiile de viață. Închiderea geamurilor de acasă atunci când utilizatorul se află la
serviciu și începe o ploaie puternică poate aduce un sentiment de relaxare și permite un
grad de concentrare mai mare la locul de muncă.
Mergând chiar mai departe în acest domeniu, putem vorbi despre o automatizare a
celor mai simple procese, precum diminuarea luminilor atunci când se urmărește un
film documentar dar închiderea completă a luminii și chiar a draperiilor atunci când
este vorba despre un film horror. Putem astfel observa că ramurile de automatizare a
unei locuințe se pot extinde în orice aspect a vieții de zi cu zi, lăsând programatorilor un
domeniu foarte vast de dezvoltare.
1.2.4 Sănătate
7
deja testate, precum transmiterea de date biometrice cum ar fi tensiunea, glicemia,
ritmul cardiact. Aceste date sunt trimise către centre medicale și de asemenea către
centre de supraveghere ce pot monitoriza în timp real pe cei bătrâni. Există de
asemenea potențial la accesul unui consult de specialitate prin comunicarea printr-un
canal de înaltă calitate.
Din păcate, piața asistenței medicale este una foarte complexă și foarte
fragmentată, ce poate fi accesată în mare măsura prin canale B2B (business-to-
business). Piața are un potențial foarte mare, dar va mai dura până aceasta va deveni
disponibilă publiclui larg.
8
2. Principalele bariere pe piață
În mod general, sistemele de automatizări sunt promovate numai la construcții noi sau
la cele de lux. Acest fapt doar confirmă pentru utilizatorii normali că astfel de sisteme
sunt scumpe și destinate locuințelor de lux. De asemenea, consumatorii nu înțeleg foarte
ușor care sunt beneficiile unui astfel de sistem. De exemplu, pontențialul de a ajunge la o
reducere de la 5% la 10% la facturile de energie nu pare să fie un motiv destul de
convingător pentru a justifica investirea într-un sistem de gestiune a energiei.
9
2.1 Principalele elemente motivaționale ale pieței
Consumatorii sunt foarte obișnuiți să controleze foarte multe aspecte din viața lor
folosind ecrane personale, fie ele de pe telefone mobile, tablete sau calculatoare
personale. Așadar ar trebuie să fie destul de natural pentru utilizatori să iși extindă
folosirea acestor dipozitive pentru controlul gospodăriei. Numărul din ce în ce mai mare
de ecrane în locuințe face foarte ușoară integrarea serviciilor de tip automatizare în
casă. Nu mai este necesar instalarea de aparatură specializată pentru aceasta, întrucât
ecranele pot fi folosite pentru mai multe aplicații simultan, astfel reducând considerabil
consturile inițiale.
10
2.2 Studiu de caz: Nest
Nest este un sistem care oferă un termostat ușor de folosit, eficient în distribuirea
energiei, care se programează singur și care reduce temperatura în mod automat atunci
când utilizatorii sunt plecați de acasă sau când dorm.
Acest sistem detectează când cineva părăsește locuința, fie pentru câteva ore sau pentru
câteva zile. Datele de la senzorii interni sunt interpretate pentru a afla gradul de
ocupare a casei. Când aceste date indică întru-un mod statistic destul de pronunțat că
cineva se află în spațiu, termostatul va suprascrie orarul normal de lucru. În timpul unui
ciclu „Away”, temperatura țintă este redusă la o valoare definită de către utilizator, unde
se poate realiza încălzirea spațiului într-un mod eficient și economic. Modul „Away”
poate fi setat și în mod manual pe termostat sau folosind aplicația de mobil de la Nest.
Chiar dacă modul „Auto-Away” este dezactivat, utilizatorii pot folosi controlul la
distanță pentru a conserva energia termică când nu sunt în locuință.
2.2.3 Time-to-Temperature
11
de schimbare al temperaturii. Acest mod este ineficient. „Time-to-temperature” oferă o
asigurare utilizatorului, astfel descurajând comportamentul risipitor.
2.2.5 Leaf
Termostatul Nest vine cu o variație de sisteme „inteligente” și automate care pot ajuta
utilizatorii să fie mai eficienți în folosirea energiei pentru a încălzi un spațiu. În funcție
12
de casă și clima utilizatorilor, aceștia pot observa o scădere la facturile de încălzire de la
4% la 29%.3
● 3 White paper: Nest Learning Thermostat Efficiency - Simulation for the U.K. -
Nest Labs April 2014
13
3. Tehnologii implicate
3.1 Introducere
Pentru a determina fezabilitatea unor servicii de tip „home automation” s-a dorit
găsirea unei activități casnice ce ar putea fi îmbunătățită prin automatizare: s-a ales
sistemul de irigat al unei locuințe din mediul urban (cu vegetația preponderentă de tip
gazon). Această activitate casnică poate fi imbunătățită în 3 din cele 4 categorii care stau
la baza automatizării:
● Confort
○ Pentru o suprafață de aproximativ 300 m2 este nevoie de o oră - o oră
jumătate pentru a uda omogen toată suprafața cu un furtun standard de
grădină. Tot procesul este manual, utilizatorul trebuind să sacrifice în
totalitate timpul pentru această activitate.
○ Gazonul urban poate fi un tip de vegetație foarte pretențios. Dacă nu este
udat la timp și/sau în cantitatea ideală, acesta poate să se ofilească.
Menținerea unui orar zilnic fix poate fi dificilă.
● Energie
○ Folosind senzori de umiditate, temperatură și de asemenea informații
meteo în timp real, se poate determina nivelul minim (optim) de apă ce
trebuie folosită pentru a iriga suprafața.
○ Folosirea mai multor senzori/statistici pe subdiviziuni ale terenului, se
poate crea un sistem de rație prin care fiecare zonă poate să primească
cantități diferite de apă.
● Sănătate
○ Prin irigarea corectă se va menține un nivel de praf scăzut în jurul
locuinței, astfel ajutând la afecțiuni de tip pulomonar.
○ Persoanele în vârstă pot beneficia de un asftel de sistem fiind scutiți de
efort fizic inutil.
14
3.2 Componente
● Teren cu vegetație;
● O sursă de apă capabilă să alimenteze un sistem de aspersoare;
● Un canal de transport al apei de la sursă la aspersoare;
● Dispozitive de tip aspersoare ce pot sa împartă apa în mod uniform pe o
suprafață cât mai mare;
● Un sistem de electrovalve capabile să deschidă si să inchida un circuit de apă,
primind comanda în mod electronic;
● Un sistem de interfață între electrovalve și senzori, și sistemul informatic de
control;
● Un sistem informatic de control de tip server care să controleze toate aspectele
de logică;
● O interfață grafică de control prin care se poate verifica și gestiona întreg
sistemul.
3.2.1 Teren
Pentru proiectul curent va trebui irigat un teren cu dimensiunea de 512m2, dintre care
aproximativ 320m2 sunt cu vegetație de tip gazon ce necesită apă în mod curent (fig. 3).
15
3.2.2 Sursa de apă
Pentru a calcula debitul de apă furnizat de către rețea s-a cronometrat timpul necesar
umplerii unui recipient de 1L de apă: 11.4 secunde; debitul de apă în mod standard este
exprimat în litri pe secundă (L/sec), astfel la locul de aplicare al proiectului curent
debitul este de 0,087L/sec.
Presiunea locală se poate afla foarte ușor folosind un aparat des întâlnit în gospodării:
centrala de încălzire. Toate centralele sunt prevăzute cu un barometru ce măsoară
presiunea apei în instalația de încălzire. De asemenea, centralele mai sunt prevăzute cu
un robinet de umplere al circulitului de încălzire, ce permite alimentarea cu apă a
centralei. Prin deschiderea la maximum al acestui robinet, si așteptând ca instalația să
se echilibreze (aproximativ 5 minute), se poate afla valoarea presiunii de pe rețea.
Astfel, pentru proiectul în cauză s-a observat o presiune de aproximativ 2.8 bar. După
efectuarea acestei proceduri trebuie refăcută presiunea normală a centralei, conform
specificațiilor tehnice, date de producator.
16
3.2.3 Aspersoare
Aspersoarele sunt dispozitive de irigații care distribuie apa peste o suprafata de teren.
Acest termen este generic pentru mai multe categorii de aspersoare: spray, rotor, cu
impact etc.Pentru proiectul curent, s-au ales două aspersoare din gama oferita de firma
Gardena:
● S 80 (fig. 4)
○ Acesta este un dispozitiv de tip spray, ce distribuie apa sub
forma unei flori, având capacitatea de a acoperi deodată o
suprafață radială cu raza cuprinsă între 2,5m și 5m.
Sectorul pe care se face udarea este de asemenea
configurabil de la 5 la 360 de grade.
○ Aspersorul este îngropat în pământ până la nivelul
capătului superior. Când este sub presiune, acest capăt se
extinde 10cm în sus, permițând udarea peste vegetația din
jur.
○ Presiunea de lucru este de minimum 2 bar.
○ Debitul curent permite instalarea în paralel a 4 astfel de
aspersoare pe un singur tronson.
○ Avantaje
(fig. 4 – aspersor S 80)
■ Puterea mare de udare
■ Timp redus necesar pentru irigarea
unei suprafețe
■ Dimensiuni reduse
■ Durabilitate
■ Conectivitate standard
○ Dezavantaje
■ Raza relativ mică de udare
■ Necesită un debit destul de mare
17
● T 200 (fig. 5)
○ Acesta este un aspersor de tip rotativ, ce oscilează un debit de apă sub
forma unui jet. Are capacitatea de irigare cu o raza
reglabilă de la 5 la 8m, cu unghiul de bariere reglabil între
25 și 360 de grade.
○ Aspersorul este îngropat în pamânt până la nivelul
capătului superior. Când este sub presiune, acest capăt se
extinde 10cm în sus, permițând udarea peste vegetația din
jur.
○ Avantaje
■ Puterea mare de udare
■ Raza relativ mare de udare
■ Durabilitate
■ Conectivitate standard (fig. 5 – aspersor T200)
Odată stabilită sursa de apă și tipul de aspersoare ce vor fi folosite, se pot planifica
conductele de apă. Pentru proiectul curent s-au aflat următoarele restricții:
Analizând suprafața disponibilă de teren pentru irigat s-a realizat următorul plan (fig.
6):
18
(fig. 6 – plan irigare teren)
19
Planul conține 7 trasee:
○
(fig. 7 – Traseu aspersoare I)
○ Spațiul este unul foarte mare, așa că s-a folosit un singur aspersor T200
configurat pentru un unghi de 180 de grade.
○
(fig. 8 – Traseu aspersoare II)
○ Spațiul este unul îngust (maximum 3m), așa că s-au folosit 4 aspersoare
S80 (180 - 180 - 90 - 5 grade).
20
3.2.4.3 Backyard porch (fig. 9)
○
(fig. 9 – Traseu aspersoare III)
○ Spațiul este unul mediu ca dimensiune, așa că s-au folosit 3 aspersoare
S80 la 180 de grade.
○
(fig. 10 – Traseu aspersoare IV)
○ Spațiul este extram de îngust (1m) și destul de mic în lungime (3m)
○ S-au folosit 4 aspersoare S80 configurate la 5 grade, unul în fața celuilalt.
21
3.2.4.5 Front - Fața casei (fig. 11)
○
(fig. 11 – Traseu aspersoare V)
○ Spațiul este unul foarte mare, așa că s-a folosit un singur aspersor T200
configurat pentru un unghi de 180 de grade.
○
(fig. 12 – Traseu aspersoare VI)
○ Spațiul este unul foarte mare, așa că s-au folosit două aspersoare T200
configurate pentru un unghi de 90 de grade.
22
3.2.4.7 Inside lane – lateral (fig. 13)
○
(fig. 13 – Traseu aspersoare VII)
○ Spațiul este unul îngust (maximum 3m), așa că s-au folosit 4 aspersoare
S80 (90 - 180 - 180 - 180 grade).
Pentru transportarea apei s-a folosit o țeavă PE80 cu diametru de 25cm pentru a
asigura un debit suficient. S-a ales acest tip deoarece prezintă o rezistență optimă la
stress-cracking cu fiabilitate mare în timp a conductelor sub presiune, rezistență bună la
temperaturi scăzute, flexibilitate mare, caracteristici hidraulice optime care se mențin
constante în timp, rugozitate foarte scăzuta, ceea ce face ca aceste tuburi să intre în
categoria tuburilor netede și se îmbină sigur și simplu.
Pentru accesorii de conectare a pieselor s-au folosit racoduri de presiune precum, coturi
L, coturi T și accesorii flexibile pentru racordarea aspersoarelor.
23
3.2.5 Electrovalve
Pentru oprirea și pornirea apei s-au folosit 7 electrovalve (fig. 14). Acestea sunt niște
dispozitive ce conțin o valvă („robinet”) ce este acționată de către o bobină
electromagnetică. Dacă electrovalva este alimentată cu energie electrică, atunci valva se
deschide și permite trecerea apei. În cazul unei pene de curent, ea revine la starea de
normal-închis. Pentru proiectul curent s-au folosit 7 electrovalve Rain RN 155 Plus.
Acestea funcționează cu o sursă de curent alternativ de 25V.
(fig. 14 – Electrovalve)
24
3.2.6 Sistem de interfață hardware
3.2.6.1 Elemente
Pentru a face legătura dintre lumea fizică (hardware) și cea virtuală (software) s-a
folosit o placă de dezvoltare Arduino (fig. 15). Această placă este bazată pe
microcontrolere, ce sunt ușor programabile
printr-o interfață și un limbaj special creat
de către Arduino. Scopul platformei este de
a pune la dispoziție utilizatorilor pini de
intrare/ieșire (digitali și analogici) care pot
fi interfațați cu o gamă variată de alte
plăcuțe, numite shield-uri.
(fig. 15 – placă Arduino)
Pentru proiectul curent s-a ales o placă de
tip Arduino Mega. Ea este bazată pe un microcontroller ATmega1280, avânt viteza de
16Mhz. S-a ales această platformă pentru:
● Placă cu 8 relee
○ Un releu este un întrerupător ce poate fi comandat electronic.
○ Deoarece electrovalvele necesită un curent mai mare (24V) decât poate fi
suportat de placa Arduino (max 5V), comanda electrovalvelor trebuie
făcută prin cadrul unui circuit separat, reprezentat de relee capabile să
25
suporte un curent de 24V. Pentru proiect s-a găsit o placă cu 8 relee (max
240V la 10 A). Această placă are și
■ Conectori rapizi pentru cabluri prin șuruburi.;
■ LED-uri de activitate pentru fiecare releu.
● Transformator pentru aspersoare:
○ Intrare: 224V alternativ
○ Iesire: 25V alternativ, max 24W
● Transformator pentru Arduino:
○ Intrare: 224V alternativ
○ Iesire: 12V, 1A
Conectarea sistemelor s-a făcut astfel:
26
3.2.6.2 Schema fizică (aproximativă) (fig. 17)
27
Placa Arduino se programează folosind un limbaj de programare dezvoltat și întreținut
de către Arduino. Este bazat pe un dialect de C++. Pentru proiectul curent s-a dorit
implementarea următoarelor funcționalități:
O aplicație Arduino este constituită din două funcții de bază ce sunt apelate de către
sistemul de operare al plăcii:
Comunicarea cu placa Arduino de la distanță este unul dintre punctele esențiale, care
face ca tot proiectul să poată fi implementat cu ușurință în orice locuință. Pentru aceasta
s-a folosit shield-ul WIFI de la Arduino. Interfața cu Arduino se face printr-o bibliotecă
WIFI.h.
Protocolul de transport ales este TCP, pentru simplitatea lui și pentru disponibilitatea
lui pe majoritatea platformelor. WIFI.h simplifică comunicarea prin acest protocol
printr-o clasa numita WiFiServer.
28
Conectarea la reteaua WIFI se realizează în funcția standard Arduino de setup() în
următorii pași:
Odată conectați la rețea, în metoda de inițializare mai trebuie setați ca pini de OUTPUT
pinii ce controlează releele. Acest lucru se realizează prin funcția standard Arduino
pinMode(). Odată setați pinii pentru OUTPUT, se setează și starea inițială prin funcția
digitalWrite(). Poziția pinilor și statusul lor (dacă releul este pornit sau oprit) sunt
salvate în doi vectori definiți global: int pins[] și int state[].
29
pentru a implementa un protocol standardizat: HTTP. Prin acest protocol vom primi
cereri HTTP GET și vom răspunde cu documente de tip JSON.
Odată conectat un client, se va citi caracter cu caracter cererea HTTP. Fiecare caracter
este concatenat la o variabilă currentLine de tip String, care va reține linia de header
curentă. Citirea se va face conform protocolului HTTP până se vor întâlni două caractere
de linie nouă (\n). Odată ce se găsește finalul cererii, se poate răspunde clientului
folosind metoda println() de pe instanța de client a clasei WiFiClient. Din nou,
respectând protocolul HTTP vom trimite:
1. GET /status
○ Comanda returnează un document JSON cu starea fiecărui pin.
○ Exemplu de raspuns: {“22”: 0, “23”: 1, “24”: 0, “25”: 0, “26”: 0, “27”: 0, “28”:
0}, care arată că pinul 23 este deschis.
30
2. GET /22/1/changepin
○ Comanda returnează true în caz de succes și false altfel.
○ Primele două segmente ale URL-ului sunt reprezentate de ID-ul pinului și
respectiv de starea în care se dorește schimbarea.
○ Dacă pinul cerut nu este înregistrat, comanda va returna false.
○ Dacă un alt pin este deja pornit, acesta va fi închis, pentru a nu permite ca
două trasee de aspersoare să fie deschise concomitent.
○ Odată schimbat un pin pe starea 1, se va observa pe placa de relee un led
roșu aprins în dreptul releului deschis.
31
Placa Arduino are o rutină de protecție inclusă în cod pentru a închide toate
aspersoarele în caz că nu a primit nici o comandă de la server timp de 20 de secunde.
Aceasta va preveni risipa de resurse în cazul în care canalul de comunicare este
perturbat.
32
3.2.7 Server
Deoarece placa Arduino are resurse limitate, logica unui sistem automat este destul de
dificil de implementat direct pe ea. Pentru a rezolva această problemă, s-a creat un
server web, ce va fi responsabil de programarea și de automatizarea aspersoarelor.
Acest server este construit folosind PHP rulând pe un server Apache + MySQL. S-au ales
aceste techonologi datorită:
● Trimite comenzi pentru ținerea unui aspersor deschis, atât timp cât încă se află
în perioada de irigare setată;
● Rularea unui orar de irigare, pornind pe rând mai multe trasee într-o anumită
ordine.
33
Starea pinilor este salvată în baza de date astfel:
● pins
○ stocheaza pinii înregistrați în sistem. Ei reprezintă fiecare din cele 7
trasee de aspersoare;
○ ID - ID-ul pinului de pe placa Arduino pentru comandă;
○ Label - numele traseului pentru interfața grafică;
○ Duration - durata (în secunde) pentru care va sta pornit acest traseu;
○ Status - starea curentă a pinului;
○ StartTimer - data și ora la care a fost pornit traseul.
● jobs
○ stochează orarul automat pentru irigare;
○ pind_id - ID-ul pinului de pe placa Arduino pentru comandă:
○ start_date - data și ora la care trebuie pornit traseul;
○ start_date - data și ora la care trebuie oprit traseul.
● houseparts
○ stochează elementele grafice pentru desenarea interfeței;
○ ID - id-ul desenului;
○ label - nume descriptiv;
○ shape - „square”, „circle”, „rectangular”;
○ x - coordonata X în pixeli;
○ y - coordonata Y în pixeli;
○ width - lățimea desenului;
○ height - inălțimea desenului;
○ color - culoarea de fundal;
○ sprinkler_id - ID-ul pinului de pe placa Arduino pentru comandă.
● config
○ Ține locul unui dicționar cheie-valoare pentru stocarea de informații de
configurare ale aplicației.
34
Diagrama bazei de date:
35
3.2.7.1 Funcții de baza pentru server-ul PHP:
3.2.7.1.1 getAllPins()
În cazul în care se dorește închiderea unui traseu, pe lângă actualizarea tabelei Pins, se
transmite imediat și comanda $pinId/0/changepin pentru a închide fizic traseul de apă.
36
3.2.7.1.3 sendArduinoCommand($cmd)
Rulează o comandă pe placa de Arduino, prin trimiterea unui request HTTP spre
Arduino. Trimiterea unui request HTTP si citirea răspunsului se face foarte ușor în PHP
folosind funcția file_get_contents(). Raspunsul de la Arduino va fi interpretat ca un
obiect JSON folosind funcția json_decode().
Folosind funcțiile de bază de mai sus, server-ul PHP la fiecare iterație a script-ului
service.php, face două lucruri:
Iterează peste vectorul de pinuri, căutând acei pini care au statusul == 1. Dacă se găsește
un aspersor ce ar trebui să fie pornit, se verifică să nu fi trecut mai mult de durata
definită (Duration) pe pin de la ora de la care s-a pornit aspersorul (StartTimer). În caz
că pinul este în starea activă și în perioada validă de timp, se trimite o comandă de
changepin pe starea 1 către Arduino. În caz contrar se cere închiderea traselui prin
comanda changepin pe starea 0.
Iterează peste vectorul care reține orarul de irigare automat, verificând dacă există un
traseu ce trebuie pornit. În cazul în care se găsește un astfel de traseu, se apelează
funcția changePinState() cu starea setată pe 1 pentru a porni traseul.
37
Server-ul mai conține și un script adițional pentru generarea orarului automat de
irigație, start-auto-job.php. Acesta iterează peste toți pinii înregistrați în sistem și
creează câte o inserare în tabelul jobs (orar) astfel:
38
3.2.8 Interfața grafică
Rolul principal al paginii este de a oferi o privire de ansamblu asupra stării actuale al
sistemului și de a oferi o modalitate facilă asupra controlului funcțiilor de bază.
Meniul aplicației;
Harta interactivă a gospodăriei;
Starea și controlul aspersoarelor.
39
3.2.8.1.1 Meniul aplicației (fig. app2)
Vizual, bara de meniu este compusă dintr-o imagine reprezentând simbolul aplicației și
o listă de linkuri.
40
3.2.8.1.2 Harta interactivă a gospodăriei (fig. app3)
Harta permite vizualizarea traseelor existente, precum și starea acestora, în timp real.
Atunci când un traseu este pornit, harta va sublinia această acțiune printr-o umbră albă
în jurul elementelor traseului (în figura app3 se poate observa că traseul roz este
pornit).
Etichetă (en. Label) – nume sugestiv pentru zonă, în vederea facilitării editării
planului;
41
Formă (en. Shape) – poate avea una dintre valorile descrise anterior (cerc,
dreptunghi, țeavă);
X – valoarea coordonatei, în pixeli, reprezentată de proprietatea CSS left (punctul
de referință a desenului fiind colțul stânga sus);
Y – valoarea coordonatei, în pixeli, reprezentată de proprietatea CSS top (punctul
de referință a desenului fiind colțul stânga sus);
Lățime (en. Width) – lățimea formei desenate, în pixeli;
Înălțime (en. Height) – înălțimea formei desenate, în pixeli;
Culoare – culoarea formei desenate, în format hexadecimal;
Id-ul aspersorului – aspersorul asociat formei desenate (0 pentru obiectele care
nu fac parte din traseul aspersoarelor – ex: casa).
42
(fig. app5 – funcția de redimensionare a hărții)
43
3.2.8.1.3 Starea și controlul aspersoarelor (fig. app6)
45
3.2.8.2 Editarea planului gospodăriei (en. Edit house plan) (fig. app9)
46
3.2.8.3 Editarea aspersoarelor (en. Edit sprinklers) (fig. app10)
Acest site se poate publica foarte ușor în domeniul public (prin atribuirea unui domeniu
IP-ului public al gospodăriei), astfel controlul la distanță putând fi făcut fără costuri
suplimentare. În mod predefinit accessul se poate face din rețeaua internă.
47
3.2.9 Interfața pentru mobil
Astfel, pentru un ecran mai mic de 700 de pixeli în lățime, meniul se mută în antetul
paginii (fig. mobile2), iar conținutul este afișat folosind întreaga lățime disponibilă a
ecranului (fig. mobile1).
48
4 Concluzie
5. Direcții de îmbunătățire/extindere
49
6. Bibliografie
[1]https://www.arduino.cc
[2]White paper: Nest Learning Thermostat Efficiency - Simulation for the U.K. -
Nest Labs April 2014
[6]http://www.php.net
[7]http://www.mysql.com
50