Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
SVEUCILIŠTE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RACUNARSTVA
ZAVRŠNI RAD br. 4900
Lokalizacija korisnika u prostorukorištenjem otiska jacine signaladostupnih WiFi mreža i desktop
aplikacija za integraciju korisnikasa sustavom grijanja i hladenja
Teo Toplak
Zagreb, lipanj 2017.
Umjesto ove stranice umetnite izvornik Vašeg rada.
Da bi ste uklonili ovu stranicu obrišite naredbu \izvornik.
iii
SADRŽAJ
1. Uvod 1
2. Desktop aplikacija 32.1. Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Pracenje aktivnosti korisnika . . . . . . . . . . . . . . . . . . . . . . 3
2.3. Prijava korisnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4. Glavno sucelje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.5. Prozor za upravljanje parametrima . . . . . . . . . . . . . . . . . . . 5
3. Mobilna aplikacija 73.1. Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2. Mapiranje korisnika na više prostorija . . . . . . . . . . . . . . . . . 7
3.3. Trenutna lokacija korisnika . . . . . . . . . . . . . . . . . . . . . . . 7
3.4. Optimizacija aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . 8
4. Lokalizacija korisnika putem jacine signala WiFi mreža 104.1. Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2. Izrada fingerprinta (trening faza) . . . . . . . . . . . . . . . . . . . . 10
4.3. Klasifikacija zauzeca prostorije (faza lokalizacije) . . . . . . . . . . . 13
4.4. Rezultati i zakljucak . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5. Server 155.1. Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.2. Autentifikacija korisnika . . . . . . . . . . . . . . . . . . . . . . . . 15
5.3. Servleti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.3.1. Activity Servlet . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.3.2. FCSpeedServlet Servlet . . . . . . . . . . . . . . . . . . . . 16
5.3.3. LocationServlet Servlet . . . . . . . . . . . . . . . . . . . . . 16
5.3.4. UnitsServlet Servlet . . . . . . . . . . . . . . . . . . . . . . 17
iv
6. ENHEMS baza podataka 186.1. Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.2. Tablice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7. Izazovi i iskustva 20
8. Zakljucak 21
Literatura 22
v
1. Uvod
Ovaj rad obuhvaca izradu programske podrške u sklopu projekta “Unapredenje ka-
paciteta istraživanja, razvoja i transfera tehnologije vezanih uz sustave gospodarenja
energijom u zgradama” akronima ENHEMS-Buildings. Cilj projekta je mogucnost ra-
zvoja vlastitih kompetitivnih rješenja u podrucju ucinkovitog upravljanja potrošnjom
energije u zgradama uz partnerstvo Fakulteta elektrotehnike i racunarstva Sveucili-
šta u Zagrebu (FER) i Državnog hidrometeorološkog zavoda (DHMZ). U potpunosti
je razvijena desktop aplikacija te je nadograden postojeci server i android aplikacija
zajedno sa realizacijom lokalizacije korisnika u prostoru putem WiFi mreže. Demons-
tracija razvijenih tehnologija se nalazi na 9. i 10. katu neboderske zgrade FER-a (C
zgrada). U trenutku pisanja ovog rada poslužitelj za mobilnu i desktop aplikaciju se
nalazi na racunalu na 9. katu pokretan na aplikacijskom serveru Apache Tomcat. Tre-
nutni korisnici su osoblje na navedenim katovima C zgrade. Server koristi postojecu
infrastrukturu (senzore,ventilokonvektore,instalacije grijanja. . . ) i bazu podataka EN-
HEMS za ostvarenje svojih funkcija.
Glavne funkcionalnosti koje izradena programska podrška treba zadovoljavati:
– Desktop aplikacija
• Logiranje preko korisnickih kredencijala FER weba
• Odabir željene temperature prostorije
• Odabir maksimalne dozvoljene brzine vrtnje ventilokonvektora
• Prikaz grafova dobivenih ocitavanjem podataka iz senzora
• Pridodjeljivanje upravljackih elemenata nad više prostorija jednoj osobi
• Pracenje aktivnosti korisnika na racunalu s instaliranom aplikacijom
• HTTPS protokol sa serverom
– Mobilna aplikacija
• Pridodjeljivanje upravljackih elemenata nad više prostorija jednoj osobi
• Prikaz lokalizacije korisnika u prostoru putem WiFi mreža
1
– Serverska aplikacija
• API za spremanje aktivnosti korisnika
• API za lokalizaciju korisnika u prostoru
• API za postavljanje dozvoljene brzine vrtnje ventilokonvektora
• Implementacija lokalizacije korisnika u prostoru putem fingerprint-a
Dodatan rad koji je obraden u ovom dokumentu je proizvod nepredvidljivih pona-
šanja sustava, nadogradnje koje su se kroz praksu istaknule kao korisne i eksperimen-
tiranja kako bi se proizvela zanimljiva, i poželjno, bolja rješenja.
2
2. Desktop aplikacija
2.1. Uvod
Desktop aplikacija je implementirana u jeziku Java. GUI je razvijen pomocu Swing
skupa alata. Za enkripciju podataka prema serveru (SSL) je korišten Bouncy Castle
API. Poticaj razvoja u navedenim tehnologijama je bio “Write once run anywhere”
(WORA) pošto korisnici koriste aplikaciju na razlicitim platformama. Glavna svrha
aplikacije je kontroliranje parametara za sustav grijanja i hladenja, njihov detaljni pre-
gled i pracenje aktivnosti korisnika. Aplikacija je zamišljena kao pozadinski servis
najviše radi pracenja aktivnosti korisnika te je zato smještena u sistemsku traku opera-
cijskog sustava (Slika 2.1) i trebala bi se pokretati zajedno sa operacijskim sustavom.
Otvaranjem programa iz sistemske trake korisniku je prezentiran GUI na kojem može
upravljati parametrima sustava i ostalim funkcionalnostima koje program donosi. Ti-
jekom implementiranja podrške za postavljanje programa u sistemsku traku dolazi do
potencijalnih problema rada aplikacije jer time aplikacija mora komunicirati s opera-
cijskim sustavom na nižoj razini, a takvo ponašanje je drugacije za svaki operacijski
sustav i time više nepredvidljivo. Medutim operacijski sustav Windows je najzastup-
ljeniji medu korisnicima te bi aplikacija na takvoj platformi trebala raditi bez greške.
U slucaju da dolazi do problema na odredenim operacijskim sustavima, korisnicima ce
biti podijeljena verzija aplikacije koja nije integrirana u sistemsku traku nego u task-
bar. U nastavku je opis pojedinih funkcionalnosti aplikacije i njihove implementacije.
2.2. Pracenje aktivnosti korisnika
Pod pracenjem aktivnosti korisnika se podrazumijeva analizom da li korisnik trenutno
koristi svoje racunalo s pokrenutim desktop programom ili ne. Navedeno je imple-
mentirano jednostavnim pracenjem pokreta pokazivaca racunala. Vremenski interval
3
Slika 2.1: Desktop aplikacija - pozicija u sistemskoj traci
unutar kojeg se osluškuje pomicanje pokazivaca je jedna minuta. Aplikacija periodicki
šalje informaciju serveru da li je u navedenom intervalu miš pomaknut ili ne. U slu-
caju da je pokazivac pomaknut aplikacija šalje serveru jedinicu, inace nula. Pracenje
pokazivaca se osluškuje na globalnoj razini operacijskog sustava što znaci da neovisno
na kojem prozoru je fokus, ocitanje ce uvijek biti aktivno.
2.3. Prijava korisnika
Pokretanje aplikacije ukljucuje prijavu korisnika u sustav. Ako je korisnik nedavno
koristio aplikaciju i uspješno se prijavio, na serverskoj strani ce biti pohranjen token
koji ce omoguciti prijavu bez unošenja korisnickog imena i lozinke (token je valjan
jedan dan i osvježava se svaki put kada se korisnik opet prijavi putem njega). U slucaju
da je token nepostojan otvara se prozor za prijavu kao na slici 2.2
2.4. Glavno sucelje
Nakon uspješne prijave u sustav aplikacija se pokrece i minimizira u sistemsku traku.
Za otvaranje glavnog sucelja aplikacije nužno je odabrati opciju „Open“izbornika pri-
kazanog na Slici 2.1. Glavno sucelje daje prikaz svih raspoloživih podatka o izabranoj
prostoriji u padajucem izborniku (Slika 2.3). Pritiskom na element jedne od tri mje-
renih velicina (temperatura, CO2 i vlažnost) prikazuje se prikladan graf. Grafovi su
generirani na serverskoj strani pomocu biblioteke GRAL, te aplikacija radi caching is-
tih da bi se umanjio broj upita prema serveru. Graf pokazuje trenutno mjerenje, njegov
datum i mogucnost odabira vremenskog intervala prikaza. U slucaju kada je jedna od
mjerenih velicina nedostupna, primjerice radi kvara senzora, odredeni element nece
prikazivati vrijednost nego jednostvno naznaciti nedostupnost mjerena sa “- - -” kao
4
Slika 2.2: Desktop aplikacija - prijava korisnika
na slici 2.3.
2.5. Prozor za upravljanje parametrima
Element koji je zadužen za kontroliranje parametara se nalazi u gornjem lijevom kutu.
Trenutno postavljene vrijednosti su vidljive iz glavnog sucelja, a pritiskom na gumb
“Promjeni” se dobiva prozor za slike 2.4 koji omogucuje njihovu promjenu. Postoje
tri razine snage ventilokonvektora, dok prvi gumb indicira na njegovo potpuno isklju-
civanje.
5
Slika 2.3: Desktop aplikacija - glavno sucelje
Slika 2.4: Desktop aplikacija - prozor za upravljanje parametrima
6
3. Mobilna aplikacija
3.1. Uvod
Mobilna aplikacija je pisana za Android mobilni operacijski sustavu u programskom
jeziku Java. Glavna svrha ove aplikacije je mobilno upravljanje sustavima za grija-
nje i hladenje, prikaz mjerenja, te ima kljucnu ulogu u lokalizaciji korisnika putem
WiFi mreža. Android je bio poželjniji odabir od iOS-a kako ciljana grupa korisnika
za demonstraciju više koristi Android mobilne uredaje. Mobilna aplikacija je za pro-
jekt vec bila razvijena u diplomskom radu Lipnik (2015) te su ovdje navedene samo
nadogradnje na postojecu aplikaciju.
3.2. Mapiranje korisnika na više prostorija
Nadogradnja obuhvaca mapiranje više prostorija na jednog korisnika dok je prije bilo
omoguceno da korisnik ima pridodijeljena samo jednu prostoriju, te je zato ubacen
padajuci izbornik kao na slici 3.1. Mobilna aplikacija sada dodatno koristi UnitsServlet
iz potpoglavlja 5.3.4 pomocu kojeg dohvaca sve prostorije raspoložive korisniku te ih
ispisuje u izborniku. Kako je sada aplikacija dužna dohvacati grafove za svaku od
prostorija, u svrhu optimizacije, napravljen je caching grafova, te se navedeni grafovi
ne dohvacaju prije nego korisnik pošalje upit za prikazom odredene prostorije.
3.3. Trenutna lokacija korisnika
Osim navedenog dodan je i element koji prikazuje trenutnu lokaciju korisnika (više o
lokalizaciji korisnika u poglavlju 4). Jedina zadaca mobilne aplikacije je poslati listu
ocitanih RSS vrijednosti s uparenim odgovarajucim BSSID vrijednostima, poslati ih
na server(odnosno na LocationServlet opisan u potpoglavlju 5.3.3) te ispisati na suce-
lje string koji je vracen.
7
Bitan dio implementacije je ponašanje algoritma za ocitavanje signala. Algoritam oci-
tavanja signala i slanja upita prema serveru je bio prvotno riješen jednostavnim peri-
odicnim intervalima koji su u slucaju kratkih perioda prebrzo slali podatke, opterecu-
juci sebe kao klijenta i servera koji je trebao procesirati te podatke, dok bi u slucaju
dužih perioda lociranje imalo premalo podataka. Bitno je napomenuti da svako ocita-
vanje signala cini posebna dretva te je proces ocitavanja vremenski zahtjevan – to znaci
da u slucaju da je postavljeni vremenski interval bio kraci od ocitavanja signala jedne
dretve, pojavile bi se dretve koje bi se paralelno izvršavale što bi vodilo velikom troše-
nju resursa uredaja. Radi navedenog, razmatrala se druga opcija koja je bila ocitavati
signale nakon završetka prethodnog ocitavanja. Ovakav nacin bi pak znao preoptere-
civati server jer je iz samog eksperimentiranja zakljuceno da neki uredaji imaju jacu
procesnu snagu i samim time intervali ocitavanja bi bili znatno kraci (tijekom testiranja
bi jedan uredaj mogao imati brzinu ocitavanja od oko 200 milisekundi, a drugi 8000
milisekundi), te bi time dobivali i više tocaka nego potrebno za jednostavnu lokali-
zaciju korisnika. Kako bi dobili najbolje rezultate napravljen je hibridni model koji
je koristio elemente prve i druge opcije – ocitavanja su bila diktirana samim ureda-
jem koja bi bila ogranicena vremenskim intervalom koji je služio kao granica najbržeg
ocitavanja signala.
3.4. Optimizacija aplikacije
Nakon navedenih dodataka aplikaciji uslijedila je optimizacije iste pošto je korišteno
više paralelnih dretva unutar pozadinskih procesa. HTTP klijent aplikacije koji je do-
sad bio upravljan održavanjem jedne veze prema serveru, a sada je zamijenjen thread-
safe klijentom koji je u stanju podnositi vece zahtjeve aplikacije. Svi pozadinski servisi
funkcioniraju asinkrono i ne blokiraju UI.
8
Slika 3.1: Mobilna aplikacija - glavno sucelje
9
4. Lokalizacija korisnika putem jacinesignala WiFi mreža
4.1. Uvod
U sklopu ovog rada je napravljena lokalizacija korisnika u prostoru korištenjem otiska
jacine signala dostupnih WiFi mreža. Odabran mehanizam WiFi lokalizacije je bila
putem fingerprint otiska jacine signala. Nakon dobivenog fingerprint-a koristi se alat
višekategorijskog robusnog linearnog programiranja da bi se dobila konacna lokacija
korisnika u prostoru.
Lokalizacija u unutarnjim prostorima se može napraviti pomocu IrDA, ultrazvuka,
bluetooth-a, i radio frekvencija. Radio frekvencije koje se mogu pronaci u gotovo
svakoj zgradi, pogotovo u obliku WiFi signala, su temelj u vecini dizajna pametnih
kuca. Kod WiFi mreža se mogu koristiti deterministicke ili probabilisticke metode.
Deterministicke mogu procijeniti lokalizaciju brže koristeci klasicne tehnike poput tri-
lateracije ili triangulacije, dok su probabilisticke metode pouzdanije i preciznije jer
koriste više informacija, ali su kalkulacije zahtjevnije. Informacije koje fingerprint al-
goritam koristi mogu biti deterministicke i probabilisticke što slijedi iz njegove prirode
racunanja lokacije. Algoritmi mjerenja lokacije u zatvorenom prostoru su trilateracija,
triangulacija, analiza scene, mrtvo racunanje i ostali hibridni algoritmi. Fingerprint
algoritam spada u skupinu analize scene i najcešce je korišten algoritam u toj grupi
mjerenja. Fingerprinting ima dvije faze: treniranje i lokalizacija, koje ce se detaljnije
obraditi u nastavku.
4.2. Izrada fingerprinta (trening faza)
Metoda lokalizacije korisnika u zatvorenim prostorima danas je najcešce ostvarena pu-
tem WiFi fingerprint-a. Fingerprint je skup podataka dobiven ocitavanjem svih dos-
10
tupnih WiFi mreža i njihovih signala u odredenom vremenskom intervalu. Za svaku
prostoriju se bilježe jacine signala te ih se potom organizira unutar jedne grupe iden-
tificirane nazivom prostorije. Kako bi ostvario ovaj zadatak razvio sam svoju Android
aplikaciju za izradu fingerprinta. Razlog je bio moguca nepouzdanost vec postojecih
open-source aplikacija te mogucnost izrade aplikacije po mjeri kako bi dobio željen
format bilježenja podataka i potpunu kontrolu nad svim parametrima i uvjetima u ko-
jima se izraduje fingerprint. Graficko sucelje razvijene aplikacije je prikazano slikom
4.1.
Slika 4.1: Android aplikacija za izradu fingerprinta
Aplikacija ima polja za unos opcenitog naziva fingerprinta i naziva prostorije.
“Last scan interval” prikazuje koja je brzina ocitavanja signala – naime, zakljuceno je
da svaki mobilni uredaj ocitava signale razlicitom brzinom ali i takoder da se ta brzina
ocitavanja razlikuje kroz vrijeme na svakom uredaju (ovisno o brzini kretanja, jacini
signala na koji je mobitel povezan, postotku istrošenosti baterije itd.). Ovaj parametar
sam ukljucio u sucelje kako bi korisnik mogao napraviti proizvoljan broj ocitavanja u
odredenoj prostoriji te kako bi konacni rezultati bili što tocniji. Ocitavanje signala je
u aplikaciji implementirano tako da se pokrece novo nakon što je prijašnje ucitavanje
završilo. Gumb “Start” pokrece snimanje podataka lokalno u tekstualnu datoteku koja
se nalazi na uredaju. Sa “Stop” se prekida snimanje, “Clear file” gumb oznacava bri-
sanje tekstualne datoteke koja je bilježila podatke i “Export” služi kako bi se navedena
datoteka mogla poslati na uredaj koji ce vršiti obradu podataka. Klikom na “Export”
11
se dobije lista opcija kojima se datoteka može poslati kao na slici 4.2.
Slika 4.2: Android aplikacija za izradu fingerprinta - slanje podataka
Format i izgled dobivenog mjerenja za jednu prostoriju unutar datoteke se nalazi na
slici 4.3. Važno je napomenuti da je BSSID1 vece važnosti od samog SSID2-a signala
jer SSID nije nužno unikatan kao što je i primjer na slici, a što je slucaj upravo na 9.
katu neboderske zgrade FER-a gdje se nalazi puno AP3-a s istim SSID-om.
Slika 4.3: Izgled tekstualne datoteke fingerprinta
Nakon testiranja rada aplikacije krenulo se u praksu. Kolega i ja smo na raspolaga-
nju imali tri uredaja s kojima smo otišli na 9. kat neboderske zgrade FER-a i napravili1Basic Service Set Identifier2Service Set Identifier3Access point
12
fingerprint. Imali smo ogranicen pristup prostorijama ali smo uspjeli prikupiti mje-
renja osam prostorija ukljucujuci hodnik (slika 4.4). Bilo je bitno prikupiti podatke
susjednih prostorija kako bi se mogla bolje ispitati kasnija klasifikacija. U ovom tre-
nutku je važno napomenuti da je kasnije fingerprint za prostor hodnika (C900 na slici
4.4) izbacen iz kalkulacija jer je previše remetio konacne rezultate i nije bilo potrebe
za lociranjem korisnika unutar hodnika (razlog dobivanja loših rezultata radi prostora
C900 je njegovo prostiranje uzduž cijelog kata cime je zahvacao širok spektar RSS vri-
jednosti). U slucaju da bi bilo potrebno locirati korisnika unutar hodnika, bolja praksa
bi bila podijeliti prostor hodnika na više manjih cjelina i raditi fingerprint za svaku
cjelinu.
Slika 4.4: Tlocrt prostorija s izradenim fingerprintom (oznaceno crvenom bojom)
4.3. Klasifikacija zauzeca prostorije (faza lokalizacije)
Klasifikacija je ostvarena pomocu alata višekategorijskog robusnog linearnog progra-
miranja. Konkretnije, korišten je stroj s potpornim vektorima (Gaussova jezgra) radi
ceste primjene upravo u lokalizaciji korisnika putem WiFi mreža. Detalji nacina rada
ovog algoritma nece biti obradeni u ovom radu jer se rad koncentrira više oko izvedbe
programske podrške. Dovoljno je navesti samo osnove korištenog algoritma.
Nakon dobivanja fingerprinta, racunaju se prosjecne vrijednosti RSS-a za svaki AP
unutar svake osobe i pritom se ukljucuju u racun vrijednosti sa svakog mobilnog ure-
daja pomocu kojeg je raden fingerprint. Skup prosjecnih vrijednosti po AP-u za jednu
sobu oznacit cemo sa Fi (i je redni broj prostorije), dok dobiven skup vrijednosti tre-
nutnog mjerenja (iz kojeg želimo zakljuciti u kojoj se prostoriji nalazimo) oznacujemo
sa R. Sljedeci korak ce biti usporedivanje svakog Fi sa R, te zakljuciti koja se dva
13
skupa najviše poklapaju. Navedeno racunamo s funkcijom bliskosti (likehood func-
tion) L(Fi, R):
L(Fi, R) =n∑
i=1
KG(rMk; rFk
)
gdje jeKG funkcija Gaussove jezgra (Gauss kernel function), rMkprosjecna vrijednost
RSS-a za k-ti AP, a rFkvrijednost RSS-a za k-ti AP poslana s uredaja. Formula za
Gaussovu jezgru je:
KG(rMk; rFk
) =1√2πσ
exp
(− (rMk
− rFk)2
2σ2
)gdje je σ prilagodljiv parametar koji oznacava dužinu Gaussove jezgre i centar rFk
.
Nakon eksperimentiranja ss vrijednosti σ i tocnosti dobivenih rezultata, vrijednost
σ = 0.25 je odabrana jer je davala najbolje rezultate. Nakon što je za svaku i-tu
prostoriju izracunata vrijednost bliskosti, prostorija koja ima najvecu vrijednost uzeta
je kao trenutna lokacija korisnika. U slucaju da odreden broj AP-eva uopce nije dos-
tupan, pretpostavlja se da se korisnik nalazi u nekoj prostoriji za koji nije napravljen
fingerprint iako ce funkcija bliskosti davati nekakve vrijednosti.
4.4. Rezultati i zakljucak
Trenutni rezultati su zadovoljavajuci za potrebe ovog rada. Mehanizam je u stanju
pogoditi unutar koje se prostorije ili njezine okoline korisnik nalazi s ponekim osci-
lacijama koje su zanemarive gledajuci duže vremenske intervale. Efikasnost i tocnost
korištenog mehanizma je teško odrediti pošto jacina signala (RSS) ovisi o puno faktora
kao što su razliciti tipovi mobilnih uredaja, kvarovi i varijacije izvora jacine signala
pojedinog AP-a, predmeti koji se nalaze izmedu primatelja i pošiljatelja signala (po-
gotovo metali, magneti), cak i kretnje ljudi po prostorijama mogu utjecati na jacinu
signala itd. Poboljšanja efikasnosti mehanizma su moguca pomocu više podatka iz
fingerprinta, sakupljanja fingeprinta iz svih prostorija, kolaborativnog povrata infor-
macija korisnika i korištenja drugacijih algoritama.
14
5. Server
5.1. Uvod
Server je implementiran pomocu Java Servlet tehnologije kao REST servis. Slicno kao
i mobilna aplikacija, dio servera je vec napravljeno u diplomskom radu Lipnik (2015)
ali u ovom slucaju su nastupile vece promjene. Promjene su ukljucivale mapiranje više
korisnika na više prostorija, implementaciju lokalizacije korisnika u prostoru, modifi-
ciranje postojecih, i dodavanje novih Servlet-a te dohvat i upravljanje parametrom br-
zine vrtnje ventilatora. Takoder radi povecanih upita prema serveru bilo ga je i nužno
skalirati prema zahtjevima.
5.2. Autentifikacija korisnika
Vec je spomenuto da server koristi tokene za autentifikaciju korisnika – ovo potpo-
glavlje opisuje nacin rada takvog mehanizma. Za autentifikaciju nije korišten poseban
framework nego je samostalno implementiran. Mehanizam je sljedeci: nakon uspješne
prijave korisnika na sustav, server radi novi token koji se zapravo sastoji od generiranog
hash-a. Server token posprema lokalno i uparuje ga sa korisnickim identifikatorom, a
drugu kopiju šalje prijavljenom klijentu koji bi trebao primljeni token spremiti lokalno
na enkriptirano mjesto. Na svaki sljedeci zahtjev klijent sprema dodijeljeni token u
parametre zahtjeva nakon cega server radi usporedbu predanog i lokalno spremljenog
tokena, te u slucaju podudaranja tokena, korisnik je autentificiran. Na serverskoj strani
je to implementirano filterom na zahtjeve koji u slucaju ispravnog tokena presrece zah-
tjev i posprema informacije korisnika u atribut sesije.
15
5.3. Servleti
Nove funkcionalnosti konacnog servera se mogu strukturalno opisati kroz Servlet-e
kao u nastavku ovog poglavlja. Svi sevleti koji nemaju opis u ovom radu nalaze se u
diplomskom radu (Lipnik, 2015). Servlet-i s mapiranim URL uzorcima su prikazani u
tablici 5.1.
Tablica 5.1: Novi Servlet-i servera s mapiranim URL uzorkom
Servlet URL
ActivityServlet /Activity
FCSpeedServlet /FCspeed
LocationServlet /Location
UnitsServlet /Units
5.3.1. Activity Servlet
Server kroz POST zahtjev prima parameter “activity” koji indicira na to da li je odreden
korisnik aktivan ili ne. Ocekuje vrijednost nula ili jedan, gdje jedinica predstavlja
aktivnost a nula neaktivnost. Vrijednost se sprema u tablicu 6.4
5.3.2. FCSpeedServlet Servlet
Server kroz POST zahtjev prima parametar “fcspeed”. Moguce su samo vrijednosti
0,1,2 i 3, gdje nula predstavlja gašenje ventilatora, a svaka uzastopna brojka predstavlja
odredenu snagu vrtnje.
5.3.3. LocationServlet Servlet
Server kroz POST zahtjev prima parameter “rsss” koji je formata JSON. JSON treba
u sebi sadržavati listu parova (BSSID,RSS) za svaki Access point. Vraca String koji je
naziv prostorije u kojoj se korisnik nalazi ili odredenu informaciju poput “Neodreden
prostor” ili “Greška na serveru”. Nakon odredene lokacije, identifikator prostorije se
sprema u tablicu 6.5. Interno server na prvi zahtjev za lokaciju korisnika pokrece parser
tekstualne datoteke sa slike 4.3 koji priprema podatke fingerprinta u radnu memoriju
spremne na obradivanje zahtjeva.
16
5.3.4. UnitsServlet Servlet
Ovaj Servlet je implementirati uz potrebu da se na više korisnika mapira više pros-
torija. Tako iz ovog servleta klijent može dohvatiti koje prostorije su pridodijeljene
prijavljenom korisniku. Kroz GET upit se dobiva JSON koji sadrži listu prostorija.
17
6. ENHEMS baza podataka
6.1. Uvod
ENHEMS baza podataka sadrži sve kljucne podatke za projekt kao što su podatci svih
senzora, upravljackih parametara, prostorija, korisnika i njihovih aktivnosti, okupira-
nosti prostorija i slicno. Koristi MySQL sustav za upravljanje bazom podataka. Uz
korištene istih tablica navedenih u radu Lipnik (2015), u nastavku su navedene nove ili
modificirane tablice.
6.2. Tablice
Tablica 6.1: control_vars tablica
NAME TYPE DESCRIPTION
rowID BIGINT(20) NOT NULL (PK)
UnitID INT(11) zone ID (FK)
Timestamp TIMESTAMP(6) row timestamp
User_ID INT(11) user ID
FCSpeed FLOAT fan speed
FCValve FLOAT fan valve value
Tablica 6.2: username_table2 tablica
NAME TYPE DESCRIPTION
rowID BIGINT(20) NOT NULL (PK)
Unit_ID INT(11) unit ID
Username TEXT username
User_ID TEXT user ID
18
Tablica 6.3: fan_speed_limit tablica
NAME TYPE DESCRIPTION
rowID BIGINT(20) NOT NULL (PK)
Timestamp TIMESTAMP(6) row timestamp
fan_speed_limit INT(11) fan speed limit
User_ID INT(11) user ID
UnitID INT(11) zone ID (FK)
Tablica 6.4: user_activity tablica
NAME TYPE DESCRIPTION
rowID BIGINT(20) NOT NULL (PK)
Timestamp TIMESTAMP(6) row timestamp
activity INT(11) is user active
User_ID INT(11) user ID
Tablica 6.5: user_wifi_location tablica
NAME TYPE DESCRIPTION
rowID BIGINT(20) NOT NULL (PK)
Timestamp TIMESTAMP(6) row timestamp
Unit_ID INT(11) unit ID
User_ID INT(11) user ID
19
7. Izazovi i iskustva
Tijekom razvoja došlo je do raznih neocekivanih iskustva. Ovo poglavlje služi kako bi
se osvrnulo na tijek i uvid u razvoj aplikacija tijekom njihove implementacije.
Izazove u razvoju je najviše cinilo neocekivano ponašanje dijelova sustava kada su
bili upogonjeni u demonstraciji. Dobar primjer je preopterecenost servera koja je nas-
tala nakon distribucije aplikacije korisnicima jer server nije bio skaliran prema novim
uvjetima rada. Pojavile su se razlicite greške na aplikacijama jer nisu nativne te su
se koristile na razlicitim platformama, i u razlicitim uvjetima, gdje je primijecena ve-
lika važnost logiranja podataka svake aplikacije kako bi se kasnije potencijalna greška
mogla ispraviti. Višedretvenost je rješavala probleme skalabilnosti ali i predstavljala
probleme prevelikom korištenju resursa uredaja. Bilo je i problema s demonstrativnom
okolinom jer je na mreži koju je sustav koristio bilo razlicitih sigurnosnih ogranicenja
koje je postavio CIP1. Osim toga dolazilo je do cestih problema nastalih iz mijenjanja i
najmanjih funkcionalnosti aplikacija jer nije bilo trivijalno testirati svaku upogonjenu
aplikaciju nakon izmjena na jednoj od njih. Bilo je važno temeljito testirati svaku apli-
kaciju prije distribuiranja jer ne postoji nikakav sustav verzioniranja ili zakrpa aplika-
cija putem mreže.
1Centar Informacijske Potpore, FER
20
8. Zakljucak
Napravljena je programska podrška koja zadovoljava sve planirane funkcionalnosti u
radu. Desktop aplikacija, mobilna aplikacija i server su sada dio distribuiranog sustava
koji potpomažu svrhu ENHEMS-Buildings projekta – ucinkovito upravljanje potroš-
njom energije u zgradama. Sigurno je reci da su trenutne aplikacije lako nadogradive
te da postoji potencijal za daljnje unaprijedene sustava koje ce voditi sve pametnijem
i efikasnijem sustavu. Kako je tema pametnih zgrada i dalje jako popularna u vidu
informacijsko-komunikacijskih tehnologija, postoji puno prostora za implementaciju
novih kompetitivnih rješenja u sklopu ovog projekta.
Buduci rad bi mogao ukljucivati bolje implementirane algoritme (kao što je u slucaju
WiFi lokalizacije povratna informacija korisnika za bolje treniranje fingerprinta), iz-
radu frontenda za server kao i API za sve CRUD operacije, lokalizaciju korisnika preko
drugih mehanizama za bolju preciznost, web aplikaciju kao drugu verziju trenutne de-
sktop aplikacije i iOS mobilnu aplikaciju. Trenutne podatke koji se upisuju bazu po-
dataka o lokaciji korisnika treba iskoristiti za automatsko prilagodavanje temperatura
prostorija, ventilokonvektora i drugih uredaja koji utjecu na energetsku ucinkovitost
zgrade. Takoder ima prostora za napredak u pogledu strojnog ucenja koje bi služilo
predvidanju ponašanja korisnika.
Radom na ovakvim zahtjevnim programskim rješenjima je izazovan inženjerski po-
sao na kojem se mogu dobiti odlicna iskustva kako iz programskog inženjerstva tako
iz najmodernijih tehnoloških rješenja, koja dalje mogu biti korištenja za povezivanje
znanja s konkretnim zadatcima i samostalnost u rješavanju razlicitih problema.
21
LITERATURA
Informacije o projektu, 2013. URL http://www.enhems-buildings.fer.
hr/enhems-buildings/about_the_action/action_info.
Stjepan Lipnik. Mobilna aplikacija za pracenje i upravljanje klimom unutarnjeg pros-
tora. Magistarski rad, Fakultet elektrotehnike i racunarstva, Zagreb, 2015.
Yuanzhu Chen Yan Luo, Orland Hoeber. Enhancing wi-fi fingerprinting for
indoor positioning using human-centric collaborative feedback, 2013. URL
https://hcis-journal.springeropen.com/articles/10.1186/
2192-1962-3-2.
Ahmet Sertbas Zeynep Turgut, Gulsum Zeynep Gurkas Aydin. Indoor localiza-
tion techniques for smart building environment, 2016. URL http://www.
sciencedirect.com/science/article/pii/S1877050916302757.
22
Lokalizacija korisnika u prostoru korištenjem otiska jacine signala dostupnihWiFi mreža i desktop aplikacija za integraciju korisnika sa sustavom grijanja i
hladenja
Sažetak
Ovaj rad obuhvaca izradu programske podrške u sklopu projekta ENHEMS-Buildings
uz cilj ucinkovitog upravljanja potrošnjom energije u zgradama. Programska podrška
ukljucuje nadogradenu Android mobilnu aplikaciju i Java EE server te novu Java de-
sktop aplikaciju za integraciju korisnika sa sustavom grijanja i hladenja. U sklopu
programske podrške izradena je i lokalizacija korisnika u prostoru putem WiFi mreža
putem mobilne aplikacije koristeci metodu otiska jacine signala. Demonstracija pro-
jekta se nalazi na 9. katu neboderske zgrade FER-a.
Kljucne rijeci: Java, Android, WiFi lokalizacija, mobilna aplikacija, desktop aplika-
cija
Indoor localization of users using WiFi fingerprinting and desktop applicationfor integration of users in cooling and heating system
Abstract
This thesis includes developing software support for ENHEMS-Buildings project
with purpose of creating solutions for energy efficient buildings. Developed software
includes upgraded Android application, Java EE server and new Java desktop appli-
cation for integration of users in heating and cooling system. Besides developed sof-
tware, indoor localization of users using WiFi fingerprinting was made. Demonstration
of working project is on 9th floor at skyscraper building of Faculty of Electrical Engi-
neering an Computing, Zagreb.
Keywords: Java, Android, WiFi localization, mobile application, desktop application