diplomski rad br. 1461 korištenje uređaja pokretanih ... · rad se bavi ostvarenjem arhitekture u...
TRANSCRIPT
SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
Zagreb, lipanj 2017.
DIPLOMSKI RAD br. 1461
Korištenje uređaja pokretanih Androidom u Internetu stvari
Luka Jančin
i
SADRŽAJ
1. Uvod ............................................................................................................................. 1
2. Osnove za ostvarenje sustava .................................................................................... 2
2.1. Internet stvari .......................................................................................................... 2
2.2. Operacijski sustav Android ..................................................................................... 2
2.2.1. Interakcija ................................................................................................................... 2
2.2.2. Jedinstveni identifikator ............................................................................................. 3
2.2.3. Sposobnost računanja ................................................................................................. 3
2.2.4. Povezivost .................................................................................................................. 3
3. Arhitektura sustava ................................................................................................... 4
3.1. Senzori .................................................................................................................... 5
3.1.1. Oznaka ........................................................................................................................ 5
3.1.2. Uređaj ......................................................................................................................... 5
3.1.3. Tipovi podataka sa senzora ........................................................................................ 5
3.1.4. Registracija senzora .................................................................................................... 5
3.2. Komunikacija preko Interneta ................................................................................ 6
3.2.1. Poruke ........................................................................................................................ 6
3.3. Prijava uređaja na poslužitelj .................................................................................. 7
3.4. Funkcionalnosti ....................................................................................................... 8
3.4.1. Dohvat podataka o senzorima s poslužitelja .............................................................. 8
3.4.2. Zahtjev za trenutnim očitanjem .................................................................................. 9
3.4.3. Periodičko slanje i očitavanje ................................................................................... 11
3.4.4. Dohvat podataka pohranjenih na poslužitelju .......................................................... 13
4. Ostvarenje sustava ................................................................................................... 14
4.1. Razvojne okoline .................................................................................................. 14
4.2. Uređaj .................................................................................................................... 14
4.2.1. Registracija senzora na uređaju ................................................................................ 15
4.2.2. Slanje podataka ........................................................................................................ 16
4.2.3. Akcija kod periodičkog uzorkovanja ....................................................................... 16
4.2.4. Pokretanje aplikacije pri pokretanju uređaja ............................................................ 17
4.3. Poslužitelj .............................................................................................................. 17
4.4. Upravljačka aplikacija .......................................................................................... 18
5. Mogućnosti poboljšanja ........................................................................................... 19
5.1. Pohrana podataka .................................................................................................. 19
5.2. Upravljanje postavkama ....................................................................................... 19
ii
5.3. Upravljanje ............................................................................................................ 19
5.4. Sigurnost ............................................................................................................... 19
6. Zaključak .................................................................................................................. 20
Literatura ........................................................................................................................... 21
Sažetak ................................................................................................................................ 22
Summary ............................................................................................................................ 22
1
1. UVOD
Internet stvari je sustav uređaja s mogućnošću povezivanja preko Interneta. Takva
povezanost pruža razne mogućnosti - prikupljanje i razmjenu podataka te udaljeno praćenje
i upravljanje.
Android je operacijski sustav za mobilna računala. Uređaji koji koriste Android kao što su
pametni telefoni i tablet računala danas su široko rasprostranjeni. Raspolažu s većim brojem
senzora kao što su oni za sliku, zvuk, navigaciju i pokret. Također su lako povezivi putem
bežičnog pristupa. Zbog napretka u tehnologiji korisnici takvih uređaja često zamjenjuju
postojeće uređaje novima. S obzirom na to raspoloživost senzora kojima raspolažu te na
mogućnosti povezivanja, zamijenjeni uređaji bi se mogli iskoristiti kao višenamjenski
senzori te za moguće upravljanje ostalim uređajima u okolini.
Rad se bavi ostvarenjem arhitekture u kojoj će se podaci s takvih uređaja moći očitavati i
pohranjivati na udaljeni poslužitelj, a upravljanje će biti moguće s neovisne aplikacije za
uređaje pokretane Androidom.
Rad je podijeljen na šest poglavlja. U drugom poglavlju su opisana svojstva Interneta stvari
i motivacija korištenja uređaja pokretanih Androidom kao stvari. U trećem poglavlju opisana
je arhitektura ostvarenog sustava. U četvrtom poglavlju opisana je struktura implementacije.
Peto poglavlje opisuje mogućnosti poboljšanja ostvarenog sustava. Šesto poglavlje iznosi
zaključak.
2
2. OSNOVE ZA OSTVARENJE SUSTAVA
2.1. Internet stvari
Pojam Internet stvari se koristi za proširenje Interneta u sferu fizičkih uređaja. Tradicionalno,
Internet se koristi kao mreža usluga kojoj korisnici pristupaju putem računala čime je
njegova uporaba ograničena na virtualni svijet. U novije vrijeme javlja se trend povezivanja
uređaja kao što su kućanski aparati ili sustavi automobila s drugim sustavima. Iako ime
sugerira da se za povezivanje primarno koristi mreža Interneta, povezivanje može biti
ostvareno i drugim tehnologijama kao što su Bluetooth ili RFID.
Povezivanje takvih uređaja omogućuje izgradnju sustava s mogućnošću udaljenog praćenja
i upravljanja. Također omogućuje ostvarenje novih usluga koje su dosad bile neostvarive.
Primjer ostvarenja Interneta stvari su pametne kuće s mogućnošću centraliziranog
upravljanja nezavisnim sustavima. Predviđa se pojava čitavih pametnih gradova, gdje će
dijelovi infrastrukture kao što su rasvjeta i opskrba energijom biti povezane, što će omogućiti
efikasnije upravljanje.
Prema [1], glavne značajke koje definiraju Internet stvari su:
• skup uređaja,
• infrastruktura za komunikaciju te
• skup aplikacija i usluga.
Pametni uređaji ili stvari, su osnovni gradbeni element Interneta stvari. Stvar može biti bilo
koji uređaj kojem se može dodijeliti IP adresa – od pametnog telefona do senzora u
automobilu. Da bi uređaj mogao biti dio takvog sustava, prema [1] mora imati sljedeće
značajke:
• povezivost,
• jedinstveni identifikator,
• osnovnu sposobnost računanja i
• sposobnost interakcije s fizičkim svijetom pomoću senzora ili aktuatora.
2.2. Operacijski sustav Android
Operacijski sustav Android je operacijski sustav otvorenog koda primarno namijenjen za
pametne telefone i tablet uređaje. Prema [4] Android je najpopularniji mobilni operacijski
sustav i danas pokreće više od dvije milijarde uređaja. U nastavku će biti pokazano kako su
uređaji pokretani Androidom prema svojim svojstvima koja su opisana u [2] vrlo prikladni
za uporabu u Internetu stvari.
2.2.1. Interakcija
Većina uređaja pokretana Androidom opremljena je većim brojem senzora kao što su oni za
pokret, orijentaciju i navigaciju, i razne podražaje iz okoliša kao što su zvuk i svjetlost.
Senzori daju podatke relativno velike preciznosti koja je dovoljna za većinu primjena.
Senzorima se uz odgovarajuće dozvole može pristupiti preko programskog sučelja.
3
2.2.2. Jedinstveni identifikator
Android specifikacija jamči da svaki uređaj ima jedinstveni identifikator (AndroidID) koji
je moguće programski dohvatiti.
2.2.3. Sposobnost računanja
Uređaje danas tipično pokreću ARM procesori s više jezgri. Radni takt tih procesora može
biti veći i od 2 GHz čime se po računalnoj moći približavaju osobnim računalima. Također,
uobičajeno su opremljeni i grafičkim procesorom. Ta svojstva ih čine pogodnima za uporabu
ne samo kao senzora, već i jedinica za obradu podataka sa senzora.
2.2.4. Povezivost
Osim klasične mobilne mreže (danas 4G), uređaji su povezivi i putem drugih tehnologija.
Danas su to Wi-Fi, Bluetooth i NFC (engl. Near Field Communication).
4
3. ARHITEKTURA SUSTAVA
Ostvareni sustav se sastoji od sljedećih komponenti:
• jednog poslužitelja,
• senzorske aplikacije i
• upravljačke aplikacije za uređaje pokretane Androidom.
IP adresa poslužitelja treba biti unaprijed poznata ostalim aplikacijama. Stoga se na početku
rada ta adresa zadaje na senzorskim i upravljačkim aplikacijama. Iako je u okviru ovog rada
poslužitelj ostvaren u obliku aplikacije za osobno računalo, također bi mogao biti ostvaren
u obliku servisa koji se nalazi u oblaku.
Shema sustava prikazana ja na slici Slika 3.1. Jedna senzorska aplikacija se nalazi na svakom
uređaju koji služi kao senzor. Upravljačkih aplikacija također može biti više.
Općeniti način rada sustava je sljedeći: poslužitelj sluša na nadolazeće podatke sa senzora
ili zahtjeve s upravljačke aplikacije. Senzori šalju podatke na zahtjev s upravljačke aplikacije
ili periodički ovisno o svojim postavkama. Na upravljačkoj aplikaciji korisnik može inicirati
zahtjev za očitanjem senzora ili dohvatiti podatke pohranjene na poslužitelju (prethodna
očitanja).
Poslužitelj
Upravljačka aplikacijaSenzor
SenzorSenzor
Slika 3.1 Arhitektura ostvarena sustava
5
3.1. Senzori
Osnovni element sustava je senzor. Senzor predstavlja jedinicu za prikupljanje podataka
nekog tipa iz okoline. Razlikuje se pojam senzora i uređaja budući da na jednom uređaju
može biti više senzora. U nastavku pojam uređaj će podrazumijevati uređaj pokretan
Androidom čiji se senzori koriste za očitavanje.
Senzor određuje sljedeći skup parametara:
• oznaka,
• identifikator uređaja na kojem se nalazi,
• ime i
• tip podatka.
3.1.1. Oznaka
Oznaka senzora je njegov jedinstveni identifikator. Koristi se kako bi se razlikovali podatci
ili zahtjevi za podacima s nekog senzora o čemu će biti više riječi kasnije.
S obzirom da se radi o probnoj implementaciji, radi jednostavnosti je odabrana oznaka
veličine jednog okteta. Oznaka 0 se ne koristi, dakle sustav je ograničen na 255 senzora.
Mogući broj senzora u Internetu stvari (o čemu ovisi veličina oznake) teško je procijeniti,
čime se ovaj rad ne bavi.
3.1.2. Uređaj
Kao što je spomenuto, svaki uređaj pokretan Androidom ima jedinstveni identifikator.
Uređaju se pridružuje njegova IP adresa koje se koristi za pristup do njega.
3.1.3. Tipovi podataka sa senzora
Podržan je prijenos tri tipa podataka – malih podataka, velikih podataka i kontinuiranog toka
podataka. Opisani su u tablici Tablica 3.1.
Tablica 3.1 Tipovi podataka
Tip podatka Opis
VALUES Mali podaci koji mogu biti izraženi kao tekst. Mogu imati jednu komponentu (npr.
iznos ukupne akceleracije uređaja) ili njih više (npr. GPS koordinate). Komponente
su odvojene graničnikom.
IMAGE Podaci koji predstavljaju sliku pohranjenu kao bitmapa.
AUDIO_STREAM Predstavlja tok podataka koji sadrže zvuk u 16 bitnom PCM formatu.
3.1.4. Registracija senzora
Da bi se senzor koristio, prvo ga je potrebno registrirati na poslužitelju i uređaju. Registracija
je postupak zadavanja parametara koji su potrebni za dohvat podataka te komunikaciju s
poslužiteljem. Senzor je potrebno registrirati zasebno na uređaju i na poslužitelju budući da
se na uređaju mora definirati način dohvata sa senzora, a na poslužitelju način interpretacije
podataka. Poslužitelj čuva listu registriranih senzora koju će na zahtjev proslijediti
upravljačkoj aplikaciji, pa registracija na istoj nije potrebna.
6
3.2. Komunikacija preko Interneta
Između poslužitelja i uređaja ili upravljačke aplikacije nije uspostavljena stalna veza –
poruke se šalju samo kod prijenosa podataka, slanja zahtjeva ili odgovora na zahtjev.
Komunikacija se odvija putem protokola transportnog sloja – TCP i UDP. TCP
(Transmission Control Protocol) nudi pouzdanu uslugu prijenosa toka podatka, obavlja
retransmisiju u slučaju izgubljenih ili oštećenih paketa, ali unosi kašnjenje. UDP (User
Datagram Protocol) za razliku od TCP-a ne uspostavlja vezu, ne nudi nikakvu garanciju da
će podaci na odredište stići cjeloviti i u točnom poretku, ali zato nudi brži prijenos podataka.
Protokol koji se koristi pri prijenosu podataka sa senzora ovisi o vrsti podatka koji se prenosi.
S obzirom na njihovu malu veličinu, podaci tipa VALUES se prenose putem UDP-a. Isti
protokol se koristi za podatke tipa AUDIO_STREAM kako bi se omogućila komunikacija u
stvarnom vremenu [3]. Podatci tipa IMAGE koji su znatne veličine se prenose TCP-om. Za
prijenos upravljačkih poruka koristi se UDP.
Prilikom primanja podataka s različitih senzora javlja se problem identifikacije senzora.
Problem bi se mogao riješiti dodjeljivanjem novih vrata na kojem će poslužitelj slušati za
svaki novi senzor u sustavu. No broj otvorenih vrata dostupnih za korištenje nekad je
ograničen (kao što je bio slučaj s mrežom fakulteta pri izradi ovog rada). Takvim pristupom
ne bi se mogao ostvariti sustav koji bi imao veći broj senzora nego što je dostupno otvorenih
vrata. Zato se za svaki senzora uvodi oznaka. Oznaka je jedinstveni identifikator veličine
jednog okteta koji jednoznačno određuje svaki senzor u sustavu.
3.2.1. Poruke
Općenit format poruke je sljedeći: prvi oktet označava sadrži li poruka podatke s nekog
senzora ili se radi o upravljačkoj poruci (zahtjev ili odgovor na zahtjev). Ako sadrži podatke
sa senzora, prvi oktet poruke je oznaka senzora, a ako se radi o upravljačkoj poruci, prvi
oktet ima vrijednost 0.
3.2.1.1. Poruka koja sadrži podatke
Ako poruka sadrži podatke, prvi oktet sadrži oznaku senzora, a ostatak poruke sadrži redom
vremensku oznaku i same podatke.
Ostatak poruke Oznaka
senzora ili 0
Podaci sa senzora Oznaka
senzora Vremenska oznaka
Slika 3.3 Format poruke koja sadrži podatke
Slika 3.2 Općenit format poruke
7
3.2.1.2. Upravljačka poruka
Prvi oktet upravljačke poruke je 0, drugi oktet je identifikator poruke, zatim slijedi tijelo
poruke koje ovisi o tipu poruke. U nastavku će se navoditi samo sadržaj poruka bez prva dva
okteta.
Definirani tipovi upravljačkih poruka su opisani u tablici Tablica 3.2 Tipovi poruka.
Tablica 3.2 Tipovi poruka
Tip poruke Značenje Smjer
SENSOR_LIST_REQUEST zahtjev za popisom senzora
registriranih na poslužitelju
upravljačka aplikacija →
poslužitelj
SENSOR_LIST popis senzora registriranih na
uređaju / popis senzora
registriranih na poslužitelju
uređaj → poslužitelj /
poslužitelj → upravljačka
aplikacija
SENSOR_DATA_REQUEST zahtjev za podacima sa senzora upravljačka aplikacija →
poslužitelj
FROM_RANGE_REQUEST zahtjev za podacima iz
vremenskog raspona
upravljačka aplikacija →
poslužitelj
SAMPLE_REQUEST zahtjev za pokretanjem
periodičkog slanja i očitavanja
upravljačka aplikacija →
uređaj
3.3. Prijava uređaja na poslužitelj
S obzirom na nepredvidivu raspoloživost mreže, kao i druge moguće uzroke nedostupnosti
uređaja kao što su pražnjenje baterije, ponovno pokretanje ili kvar, javlja se problem
održavanja liste aktivnih uređaja. Budući da uređaj ne može javiti kad je postao nedostupan,
problem bi se mogao riješiti prozivanjem (engl. polling). Poslužitelj bi periodički morao
provjeravati jesu li uređaji aktivni no budući da se ne uspostavlja stalna veza s uređajima,
oni bi morali slati odgovor, što bi povećalo broj poruka u sustavu.
Zato je odabrano rješenje temeljeno na načelu nadzornog alarma (engl. watchdog timer) [3].
Svaki uređaj periodički šalje poruku tipa SENSOR_LIST kojim javlja poslužitelju da je na
mreži i ujedno daje uvid u trenutnu listu senzora. Taj period je poznat poslužitelju i iznosi
nekoliko sekundi. U trenutku prispijeća poruke na poslužitelju se pokreće sat koji odbrojava
vrijeme tog perioda. Sat se prekida u trenutku prispijeća sljedeće poruke. Ako poslužitelj ne
primi poruku nakon zadanog perioda (uvećanog za određenu toleranciju), označava se da
uređaj nije na mreži, pa su i svi senzori na tom uređaju nedostupni.
0 Identifikator
poruke Tijelo poruke
Slika 3.4 Format upravljačke poruke
8
3.4. Funkcionalnosti
Razvijene funkcionalnosti sustava prema korisniku su sljedeće:
• trenutno očitanje,
• periodičko očitavanje i
• dohvat podataka pohranjenih na poslužitelju.
Razvijene funkcionalnosti prikazane su na dijagramu obrazaca uporabe na slici Slika 3.5.
PoslužiteljUređaj
Upravljačka aplikacija
Periodičko očitavanje
Akcija ako je vrijednost izvan
granica
Zahtjev za trenutnim očitanjem senzora
Dohvat podataka iz vremenskog
raspona
Promjena parametara periodičkog očitavanja
<<extend>>
Tok podataka
Podaci konačne veličine
<<include>>
<<include>>
Slika 3.5 Funkcionalnosti sustava
3.4.1. Dohvat podataka o senzorima s poslužitelja
Da bi mogao pristupiti uređajima s upravljačke aplikacije, korisnik prvo mora od poslužitelja
zatražiti podatke potrebne za ostvarivanje komunikacije što je prikazano na slici Slika 3.7.
Upravljačka aplikacija šalje poruku tipa SENSOR_LIST_REQUEST koja ima prazno tijelo.
Poslužitelj odgovara porukom tipa SENSOR_LIST koja sadrži podatke o svim registriranim
senzorima na poslužitelju u tekstualnom obliku. Struktura poruke prikazana je na slici Slika
3.6.
9
Svaka komponenta je razdvojena graničnikom.
Podaci o senzorima koji nisu na mreži se ipak šalju kako bi korisnik preko upravljačke
aplikacije mogao dohvatiti pohranjene podatke i za te senzore.
Slika 3.7 Dohvat podataka o senzorima s poslužitelja
3.4.2. Zahtjev za trenutnim očitanjem
Korisnik na upravljačkoj aplikaciji može dati zahtjev za trenutnim očitanjem nekog senzora
i prikazom očitanih podataka. Postupak zahtjeva i posluživanja zahtjeva ovisi o tome radi li
se o podacima konačne veličine ili o toku podataka.
Ako se radi o podacima konačne veličine, postupak se izvodi u nekoliko koraka. Prvi korak
je slanje poruke tipa SENSOR_DATA_REQUEST prema poslužitelju koja u tijelu sadrži samo
oznaku senzora. Poslužitelj prema oznaci pronalazi adresu uređaja na kojem se senzor nalazi
i na tu adresu šalje poruku koja ima tu oznaku u prvom oktetu. Također određuje IP adresu
uređaja s kojeg je stigao zahtjev i pamti da za taj senzor postoji neobrađeni zahtjev s te
adrese. Senzorska aplikacija prima poruku, prema prvom oktetu određuje o kojem senzoru
se radi, obavlja očitavanje te šalje poruku s podacima na poslužitelj. Poslužitelj pohranjuje
primljene podatke te budući da postoji zahtjev šalje ih na zapamćenu adresu i zatim briše
Broj
senzora
Ime
senzora
0
IP adresa
senzora
0
Vrata
senzora
0
Tip
komunikacije
senzora 0
Oznaka
senzora
0
Ime
senzora
1
IP adresa
senzora
1
Vrata
senzora
1
Tip
komunikacije
senzora 1
Oznaka
senzora
1
…
Slika 3.6 Struktura poruke za dohvat podataka o senzorima s poslužitelja
10
pohranjeni zahtjev. Upravljačka aplikacija po primitku poruke prezentira korisniku
primljene podatke.
Ako se radi o toku podataka, komunikacija se ne odvija preko poslužitelja već upravljačka
aplikacija komunicira izravno s uređajem kako bi se minimiziralo kašnjenje. Upravljačka
aplikacija šalje zahtjev za pokretanjem toka na adresu uređaja koju je dobila od poslužitelja
te uređaj pokreće tok podataka na adresu pošiljatelja zahtjeva. Korisnik na upravljačkoj
aplikaciji zaustavlja odnosno ponovo pokreće tok slanjem istovjetne poruke.
Postupak je prikazan sekvencijskim dijagramom na slici Slika 3.8.
Upravljačka aplikacija
Poslužitelj Uređaj
PošaljiZahtjev(senzor)
PošaljiZahtjev(senzor)
ZapamtiZahtjev(IzvorišnaAdresa, senzor)
OčitajPodatak(senzor)
PošaljiPodatak()
PohraniPodatak
[zahtjev = true] PošaljiPodatak
PošaljiZahtjev(senzor)
OčitajPodatak(senzor)
PošaljiPodatak()
loop
[šalji = true]
alt
[tok podataka]
[podatak konačne veličine]
Slika 3.8 Zahtjev za trenutnim očitanjem
11
3.4.3. Periodičko slanje i očitavanje
Svaki uređaj moguće je podesiti tako da nezavisno periodički izvodi postupak za svaki od
senzora koji se nalaze na njemu. Moguće je podesiti dva postupka:
• očitavanje i slanje na poslužitelj te
• očitavanje i lokalna obrada.
Postupci su međusobno nezavisni, definiraju se i rade svaki sa svojom periodom. Očitavanje
bez slanja je moguće samo za podatke tipa VALUES.
U postupku očitavanja i slanja na poslužitelj, na poslužitelj se šalje očitana vrijednost (bez
obzira kakva je), dok se u drugom slučaju, uz lokalnu obradu, provjerava očitana vrijednost.
Ako je ona izvan granica onda je potrebno odgovarajuće reagirati (poslati poruku
poslužitelju i/ili pokrenuti neki program).
Periodičke postupke moguće je pokrenuti na samom uređaju, ali i s upravljačke aplikacije
kao što je prikazano na slici Slika 3.9.
Slika 3.9 Sučelje za pokretanje periodičkog postupka na upravljačkoj aplikaciji
Za pokretanje s upravljačke aplikacije ona uređaju šalje poruku tipa SAMPLE_REQUEST koja
ima sljedeći sadržaj.
Slika 3.10 Sadržaj poruke za zahtjev za periodičkim postupkom
Oznaka
senzora
Period
slanja
Period
očitavanja
Jedinica
vremena
12
Podržane jedinice su: milisekunda, sekunda, minuta, sat, i dan.
Slično kao i kod pokretanja i zaustavljanja toka, periodički postupci za neki senzor se
zaustavljaju pri primitku poruke tipa SAMPLE_REQUEST s odgovarajućom vrijednosti
oznake senzora.
Postupak je prikazan sekvencijskom dijagramom na slici Slika 3.11.
Upravljačka aplikacija
Uređaj Poslužitelj
Pokreni(konfiguracija)
OčitajPodatak(senzor)
PošaljiPodatak(senzor)
vrijednost = OčitajPodatak(senzor)
IzvršiAkciju()
PošaljiPodatak(senzor)
PohraniPodatak(senzor)
PohraniPodatak(senzor)
Zaustavi()
šalji = false
opt
[vrijednost izvan granica]
par
[očitavanje]
[slanje]
opt
loop
[šalji = true]
Slika 3.11 Periodičko slanje i očitavanje
13
3.4.4. Dohvat podataka pohranjenih na poslužitelju
S upravljačke aplikacije moguće je dohvatiti podatke pohranjene na poslužitelju iz nekog
vremenskog raspona. Postupak se inicira slanjem poruke tipa DATA_FROM_RANGE koja ima
sljedeći sadržaj.
Oznake početka i kraja raspona su istog formata kao i vremenska oznaka podatka očitanog
sa senzora. Budući da veličina podataka iz raspona nije unaprijed poznata, za slanje se uvijek
koristi TCP. Za razlikovanje pojedinih podataka iz toka se koristi sljedeći postupak. Prije
slanja samog podatka, u tok se upiše njegova veličina u četiri okteta pazeći pritom na poredak
okteta.
S obzirom na to da podaci iz raspona mogu potencijalno biti vrlo veliki (na poslužitelju mogu
biti pohranjene stotine slika), moguće je da dođe do nestanka memorije. Ako količina
zauzete radne memorije prijeđe 90% ukupnog kapaciteta, postupak se prekida i korisniku se
prikazuju samo dotad obrađeni podaci.
Nakon uspješnog prijenosa, korisniku su dostupni podaci prema njihovoj vremenskoj oznaci
što je prikazano na slici Slika 3.14.
Slika 3.14 Dohvat podataka pohranjenih na poslužitelju
Oznaka
senzora
Početak
raspona
Kraj
raspona
Veličina
podatka Podatak Podatak …
Veličina
podatka
Slika 3.12 Sadržaj poruke za zahtjev za dohvat podataka s poslužitelja
Slika 3.13 Format slanja podataka s poslužitelja
14
4. OSTVARENJE SUSTAVA
4.1. Razvojne okoline
Senzorska i upravljačka aplikacija razvijene su u razvojnoj okolini Android Studio koristeći
programski jezik Java, a poslužiteljska aplikacija razvijena je u razvojnoj okolini Microsoft
Visual Studio koristeći programski jezik C#. Ovakvo korištenje različitih programskih jezika
potencijalno može dovesti do problema. Primjerice format zapisa brojeva je različit u dva
jezika – Java pretpostavlja korištenje big-endian, a C# korištenje little-endian poretka okteta.
Stoga pri komunikaciji između dvije komponente koje su napisane u različitim jezicima
potrebno je na jednoj strani prilagoditi poredak okteta prije slanja podataka.
Sustav je implementiran u formi okvira koji omogućava korištenje razvijenih mogućnosti
bez poznavanja detalja implementacije. Na uređaju i poslužitelju korisniku je na
raspolaganju odgovarajući razred upravitelj koji je zadužen za registraciju senzora, slanje i
primanje podataka te obradu zahtjeva. Pri tome skriva od korisnika detalje kao što su
komunikacija preko Interneta i pohrana podataka.
Treba naglasiti da, iako se u okviru ovog rada koriste uređaji pokretani Androidom kao stvari
razvijena implementacija bi se mogla koristiti u bilo kakvom drugom sustavu Interneta stvari
uz izmjene senzorske aplikacije, prvenstveno dohvata podataka sa senzora i korisničkog
sučelja. S obzirom da su za ostale funkcionalnosti kao što je komunikacija korištene
standardne biblioteke, ostatak aplikacije bi radio bez izmjena.
4.2. Uređaj
Na poslužiteljskoj aplikaciji razred upravitelj je SensorSenderManager.
Za slanje podataka preko Interneta su zaduženi razredi izvedeni iz apstraktnog razreda
Sender. Postoje tri razreda koji se razlikuju u tome koji način komunikacije se koristi –
TCP, UDP ili tok podataka korištenjem UDP-a.
Implementacija dohvaćanja podataka modelirana je sučeljem SensorHandler. Senzor je
modeliran razredom Sensor koji između ostalog sadrži instance razreda Sender i
SensorHandler.
Korisnik registrira senzor na upravitelju pri čemu osim informacija vezanih za komunikaciju
određuje i implementaciju dohvaćanja podatka. Stvara se instanca razreda Sensor, u koju
se spremaju instance razreda Sender i razreda nastalog implementiranjem sučelja
SensorHandler. Struktura je prikazana na slici Slika 4.1 Struktura aplikacije na uređaju.
15
SensorSenderManager
Sensor
sensors0..*
<<Interface>>
SensorHandler
run()
SensorHandlerImpl
run()
Sender
sendSensorData(sensorID)
sender1
UDPSender
sendSensorData(sensorID)
UDPStreamSender
sendSensorData(sensorID)
TCPSender
sendSensorData(sensorID)
Trigger
test()
handler
1
registerSensor()send(sensorID)
stop(sensorID)
0..*
triggers
sendPeriodically(sensorID)samplePeriodically(sensorID)
Slika 4.1 Struktura aplikacije na uređaju
4.2.1. Registracija senzora na uređaju
Kod registracije senzora se definiraju vrata na kojima će poslužitelj osluškivati na podatke s
tog senzora, način komunikacije te implementacija dohvaćanja podataka. Također se
određuje Sender koji će slati podatke na sljedeći način. Ako već postoji Sender istog tipa
s istim odredišnim vratima, senzor se registrira na njemu, odnosno Sender pamti predanu
instancu razreda nastalog implementiranjem sučelja SensorHandler za predanu oznaku
senzora. Ako ne postoji, kreira se novi. Primjer registracije senzora za podatke konačne
veličine na uređaju je dan u isječku koda 4.1.
Isječak koda 4.1 Registracija senzora za podatke konačne veličine na uređaju
sensorSenderManager.RegisterSensor( UDPSender.class, IPadresa,
10000, 'A', "Acceleration",
(SensorHandler) () -> {
return Double.toString( acceleration ).getBytes();
});
Kod registracije senzora za tok podataka se osim akcije za dohvat sa senzora definiraju akcije
za pokretanje i zaustavljanje generiranja podataka koji se šalju kao tok. Primjer registracije
za tok podataka za tok zvuka je dan u isječku 4.2.
16
Isječak koda 4.2 Registracija senzora za tok podataka na uređaju
sensorSenderManager.RegisterSensor( UDPStreamSender.class, 1194,
'S', "Audio stream",
(SensorHandler)() -> {
recorder = new AudioRecorder();
recorder.StartRecording();
return null;
}
},
() -> { return recorder.Read(); },
(SensorHandler)() -> {
recorder.StopRecording();
return null;
}
}
);
4.2.2. Slanje podataka
Pri zahtjevu za slanje općeniti postupak je sljedeći. Kod zahtjeva se navodi oznaka senzora
pri čemu upravitelj nalazi odgovarajuću instancu razreda Sensor. Zatim na instanci razreda
za slanje tog senzora poziva metodu za slanje predajući pri tome oznaku senzora. Instanca
razreda za slanje poziva metodu za dohvat podatka sučelja SensorHandler. Nakon što
dohvati podatke, dodaje im vremensku oznaku i oznaku senzora te šalje podatke. Primjer
metode za slanje je dan u isječku 4.3 koji prikazuje metodu za slanje podataka konačne
veličine UDP-om.
Isječak koda 4.3 Slanje podataka konačne veličine UDP-om
void sendSensorData(String IPAdress, final byte type) {
send(IPAdress,
signData(
addDeviceID(
addTimestamp(dataHandler[type].run()),
SensorSenderManager.deviceID),
type));
}
Kod slanja toka podataka izvodi se akcija za pokretanje generiranja podataka, podaci se u
petlji dohvaćaju pomoću definirane akcije, dodaje im se oznaka senzora bez vremenske
oznake i šalju se na odredište. Na zahtjev za zaustavljanje toka pokreće se akcija za
zaustavljanje generiranja podataka.
4.2.3. Akcija kod periodičkog uzorkovanja
Akcija koja se treba izvesti u slučaju da je vrijednost izvan granica modelirana je razredom
Trigger. Nakon registracije korisnik može zadati proizvoljan broj provjera za senzor.
Navodi se granična vrijednost, uvjet (manje, manje ili jednako, veće, veće ili jednako) te ime
aplikacije koja se pokreće. Nakon očitanja vrijednosti, upravitelj je šalje svim instancama
17
razreda Trigger koje su definirane za taj senzor. Izvodi se svaka akcija za koju je uvjet
zadovoljen, a podatak se na poslužitelj šalje ako je barem jedan uvjet zadovoljen.
4.2.4. Pokretanje aplikacije pri pokretanju uređaja
Moguće je da za vrijeme rada dođe do nepredviđenog ponovnog pokretanja uređaja
(primjerice zbog ažuriranja operacijskog sustava). Zato je, kako korisnik ne bi morao fizički
ponovo pokrenuti aplikaciju na uređaju, za senzorsku aplikaciju omogućeno automatsko
pokretanje aplikacije pri pokretanju uređaja kao što je navedeno u [2].
4.3. Poslužitelj
Poslužiteljska aplikacija ima strukturu analognu senzorskoj aplikaciji. Razred upravitelj je
SensorListenerManager koji za osluškivanje na nadolazeće podatke koristi razrede
izvedene iz razreda Listener. Listener određuje tip komunikacije i vrata. Senzore i
uređaje modeliraju razredi Sensor i Device. Razred Sensor sadrži instancu razreda
Device i listu instanci razreda Data koji predstavlja podatak primljen sa senzora i osim
samog podatka sadrži i vremensku oznaku i identifikator uređaja. Struktura je prikazana na
slici Slika 4.2 Struktura aplikacije na poslužitelju.
Pri registraciji senzora definira se oznaka senzora, vrata na kojima će poslužitelj osluškivati
podatke, te tip podatka. Za svaki novi senzor automatski se kreiraju odgovarajući elementi
korisničkog sučelja prema tipu podatka (podržani tipovi podataka su sadržani u enumeraciji
DataType). Za svaki tip podatka unaprijed je određeno preslikavanje na grafičko korisničko
sučelje koje modelira delegat DataToGUIHandler, čime se korisnika oslobađa od ručnog
podešavanja sučelja. No u slučaju dodavanja novog tipa podatka bilo bi naravno potrebno
definirati elemente sučelja i preslikavanje.
Kod registracije se također određuje Listener koji će osluškivati podatke s tog senzora.
Na svakom Listener-u se registrira senzor tako da se preda oznaka senzora i akcija koja
se treba izvršiti kad se primi podatak za taj senzor – delegat DataToGUIHandler. Kod
novog senzora na razredu upravitelju, on prvo provjerava postoji li već Listener tog tipa
koji osluškuje na tim vratima. Ako postoji, registrira senzor na tom Listeneru, a ako ne
postoji kreira novi.
Kad podatak sa senzora stigne na poslužitelj, primit će ga Listener odgovarajućeg tipa
koji osluškuje na odgovarajućim vratima. Zatim pokreće akciju definiranu za taj senzor pri
registraciji.
18
SensorListenerManager
Sensor
Device
-IPAdress-online
Data
Listener
TCPListener UDPListener UDPStreamListener
sensors
0..*
device1
1..*sensors
0..*data
0..*listeners
registerSensor()
registerSensor(sensorID, handler)
-port
<<Enumeration>>
DataTypetype
1
Slika 4.2 Struktura aplikacije na poslužitelju
4.4. Upravljačka aplikacija
Za slanje se koriste razredi iz senzorske aplikacije, a za primanje podataka se koriste razredi
analogni onima iz poslužiteljske aplikacije.
Registracija senzora nije potrebna jer aplikacija prima sve podatke od poslužitelja ili uređaja,
no vezana je uz ostale komponente jer je reprezentacija podataka korisniku poznata samo za
prethodno definirane podatke. Za dodavanje novog tipa podatka u sustav također treba
definirati način reprezentacije na grafičkom sučelju za upravljačku aplikaciju kako je to
definirano i na poslužitelju.
19
5. MOGUĆNOSTI POBOLJŠANJA
S obzorom na potencijal ovakvog sustava, mogućnosti poboljšanja su brojne.
5.1. Pohrana podataka
Na strani poslužitelja, podaci se trenutno pohranjuju u datoteke što ne bi bilo prikladno kada
bi se ovaj sustav stavio u kontekst praktične primjene. Zbog potencijalno velikog broja
podataka, prikladnije rješenje bila bi uporaba baze podataka.
5.2. Upravljanje postavkama
Kao što je opisano, postavke sustava (npr. konstante kao što su periodi i vrata) se moraju
podesiti posebno na svakoj komponenti. Konfiguracija bi se mogla podešavati na jednom
mjestu, primjerice na poslužitelju. Tada bi ostale komponente pri inicijalizaciji zatražile
konfiguraciju od poslužitelja i podesile konstante.
Također, registracija senzora bi se mogla obavljati samo na uređaju. Kad bi poslužitelj
detektirao pojavu novog senzora iz liste senzora s uređaja, sam bi obavio registraciju novog
senzora na sebi na temelju primljenih podataka.
No ovakva rješenja bi povećala složenost sustava s obzirom na to da bi se povećao broj
poruka koje se razmjenjuju.
5.3. Upravljanje
Sustav trenutno pruža samo mogućnosti dohvaćanja podataka. Mogao bi se proširiti
mogućnošću upravljanja. Upravljanje bi moglo biti i automatsko – primjerice, umjesto
pokretanja aplikacije, u slučaju vrijednosti izvan raspona uređaj bi mogao poslati naredbu
nekoj upravljačkoj jedinici.
5.4. Sigurnost
Prema [1] sigurnost je vrlo važna komponenta kod široke uporabe Interneta stvari. Ovaj rad
se ne bavi pitanjima sigurnosti, podaci se preko mreže šalju u izvornom obliku. Tajnost
komunikacije bi se mogla ostvariti kriptiranjem podataka. Također, mogla bi se uvesti
autentifikacija kako bi se zaštitilo od neovlaštenog upada.
20
6. ZAKLJUČAK
Opisane su mogućnosti koje pružaju sustavi koji koriste Internet stvari te njegove glavne
značajke. Obrazložena je motivacija korištenja uređaja pokretanih Androidom s obzirom na
njihove značajke te zahtjeve Interneta stvari. Opisani su primijećeni problemi i predložena
su rješenja.
U okviru rada razvijen je sustav u kojem se podaci očitavaju sa senzora uređaja pokretanih
Androidom i pohranjuju na poslužitelju. Postoji i upravljačka aplikacija s koje se može
upravljati očitavanjem te dohvatiti podatke pohranjene na poslužitelju.
Opisan je način implementacije i struktura razvijene programske potpore. Opisane su važnije
metode kroz isječke koda.
21
LITERATURA
1. Daniele Miorandi, Sabrina Sicari, Francesco De Pellegrini, Imrich Chlamtac, Internet
of things: Vision, applications and research challenges,
https://irinsubria.uninsubria.it/retrieve/handle/11383/1762288/2389/IOT.pdf, 21. 4.
2012.
2. Android Developers, https://developer.android.com/
3. Leonardo Jelenković, Sustavi za rad u stvarnom vremenu,
http://www.zemris.fer.hr/~leonardo/srsv/skripta/SRSV-skripta-1.pdf, 2016.
4. Ben Popper, Google announces over 2 billion monthly active devices on Android,
https://www.theverge.com/2017/5/17/15654454/android-reaches-2-billion-monthly-
active-users, 17. 5. 2017.
22
SAŽETAK
Korištenje uređaja pokretanih Androidom u Internetu stvari
Ovaj rad se bavi korištenjem uređaja pokretanih Androidom kao pametnih uređaja u
Internetu stvari. Opisuju se njihova svojstva i mogućnosti primjene u tom kontekstu. U
sklopu rada razvijen je sustav koji demonstrira opisane funkcionalnosti.
Ključne riječi: Android, Internet stvari, senzor, poslužitelj
SUMMARY
Title: Using Android Devices in Internet of Things
Summary
This paper discusses usage of Android devices in Internet of Things as smart devices. It
describes their properties and application possibilities. A computer system has been
developed which demonstrates described possibilities.
Keywords: Android, Internet of Things, sensor, server