diplomski rad br. 1461 korištenje uređaja pokretanih ... · rad se bavi ostvarenjem arhitekture u...

27
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

Upload: others

Post on 31-Aug-2019

1 views

Category:

Documents


0 download

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