primjer temeljne arhitekture za izgradnju sustava internet ... · 0x62 slovo b, oktet 0x63 slovo c,...

47
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Zagreb, lipanj 2015. DIPLOMSKI RAD br. 1050 Primjer temeljne arhitekture za izgradnju sustava Internet stvari Nikola Sekulić

Upload: others

Post on 07-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

Zagreb, lipanj 2015.

DIPLOMSKI RAD br. 1050

Primjer temeljne arhitekture za izgradnju

sustava Internet stvari

Nikola Sekulić

Page 2: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

Zagreb, lipanj 2015. Nikola Sekulić

Page 3: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

Zahvaljujem se svom mentoru doc. dr. sc. Leonardu Jelenkoviću za prijedloge i savjete

prilikom izrade rada.

Zahvaljujem se svojoj sestri, svojim roditeljima i mojim kolegama koji su me podupirali

tijekom cijelog mog školovanja.

Page 4: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

i

SADRŽAJ

1. Uvod ............................................................................................................................. 1

2. Arhitektura sustava ................................................................................................... 2

2.1. Naprava ................................................................................................................... 3

2.2. Pristupnik ................................................................................................................ 3

2.3. Servis u oblaku ........................................................................................................ 3

2.4. Korisnička aplikacija .............................................................................................. 4

2.5. Primjer rada sustava ................................................................................................ 4

3. Komunikacija naprava i pristupnika ....................................................................... 6

3.1. Pozdravna poruka.................................................................................................... 8

3.2. Informacijska poruka .............................................................................................. 9

3.3. Zahtjev .................................................................................................................... 9

3.4. Odgovor ................................................................................................................ 10

4. Ostvarenje sustava ................................................................................................... 11

4.1. Implementacija servisa u oblaku ........................................................................... 12

4.1.1. Baza podataka .......................................................................................................... 12

4.1.2. Korisničko sučelje .................................................................................................... 15

4.1.3. Administratorsko sučelje .......................................................................................... 15

4.1.4. Sučelje za pristupnike ............................................................................................... 16

4.2. Implementacija naprava ........................................................................................ 17

4.2.1. Implementacija termometra ...................................................................................... 17

4.2.2. Implementacija klima ureĎaja .................................................................................. 18

4.2.3. Implementacija brave ............................................................................................... 20

4.3. Implementacija pristupnika ................................................................................... 21

4.4. Implementacija korisničke aplikacije ................................................................... 21

5. Zaključak .................................................................................................................. 30

Literatura ........................................................................................................................... 31

Sažetak ................................................................................................................................ 32

Summary ............................................................................................................................ 32

PRIVITAK A: Korisničko sučelje servisa u obalku ....................................................... 33

PRIVITAK B: Administratorsko sučelje servisa u obalku ........................................... 40

Page 5: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

1

1. UVOD

Internet stvari (engl. Internet Of Things, IoT) počiva na konvergenciji bežičnih,

mrežnih i internetskih tehnologija (prvenstveno tehnologija u oblaku), elektromehaničkih

sustava, i njihovoj koheziji k jedinstvenom, samo-upravljajućem, pametnom sustavu.

Jednostavnije rečeno, Internet stvari je koncept ljudskog okruženja u kojem senzorima

opremljene stvari, strojevi, vozila, pa čak i živa bića izmjenjuju podatke i ostvaruju

interakciju.

Problem Interneta stvari je adresiranje velikog broja naprava. Drugi problem

Interneta stvari je i skladištenje velikih količina podataka koje pametne naprave proizvode.

Zato Internet stvari ovisi i o servisima u oblaku za pohranjivanje i analizu velikih količina

podataka. Rješavanje sigurnosti Interneta stvari predstavlja veliki izazov, jer stvarima

može pristupati bilo tko, i bilo tko može prisluškivati komunikaciju izmeĎu naprava.

Na CES-u (engl. The Consumer Electronics Show) 2015, Internet stvari je

predstavljen kao plodno i obećavajuće područje za industriju [1]. No sajam je pokazao

kako u stvarnosti postojeći sustavi na tragu Interneta stvari još uvijek koegzistiraju kao

zasebne jedinke, koje teže prema Internetu stvari, ali za sada to još uvijek nisu.

Ipak, primjeri kao Savez za inovacije Interneta stvari (engl. Alliance for Internet of

Things Innovation, AIOTI) [2] i projekti u okviru FP7 (7 th Framework Programme for

Research and Technological Development) pokazuju da potreba i napori za

konkretizacijom i rješavanjem problema Interneta stvari postoje. Primjerice IoT-A (engl.

Internet of Things Architecture) projekt [3] pokušava definirati i ponuditi referentni model

arhitekture za Internet stvari koji će omogućiti lakšu implementaciju interoperabilnosti i

skalabilnosti. Open IoT projekt [4] je pak primjer projekta koji na sasvim praktičnoj razini,

pokušava ponuditi rješenje otvorenog koda radnog okvira za dinamičko stvaranje okolina u

oblaku, u okviru sustava Internet stvari.

Cilj ovog rada je jednostavna implementacija sustava Internet stvari. U drugom

poglavlju ovog rada opisana je arhitektura ostvarenog sustava. Treće poglavlje opisuje

način komuniciranja naprava u sustavu. Četvrto poglavlje opisuje implementaciju i

komunikaciju komponenti sustava.

Page 6: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

2

2. ARHITEKTURA SUSTAVA

U ovom radu opisuje se ostvarenje arhitekture koja bi mogla služiti za razvijanje

usluga u domeni Interneta stvari. Sustav Interneta stvari sastoji se od pametnih naprava

kojima korisnik upravlja putem interneta. Zbog toga korisnik treba imati neku vrstu

aplikacije, npr. aplikaciju za pametni mobitel. Aplikacija ne mora komunicirati izravno s

napravama, nego sa servisom koji upravlja napravama, te skladišti i obraĎuje podatke s

naprava.

Prikaz arhitekture prikazan je na slici 2.1. Na slici su prikazani servis u oblaku,

pristupnik za upravljanje napravama, tri naprave te korisnička aplikacija. Naprave

komuniciraju s pristupnikom, te njemu šalju poruke ili poruke primaju od njega. Pristupnik

komunicira sa servisom u oblaku. Korisnička aplikacija ne komunicira izravno s

napravama niti s pristupnikom, nego sa servisom u oblaku.

Slika 2.1: Arhitektura sustava

Page 7: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

3

2.1. Naprava

Naprava predstavlja pametni ureĎaj kojime se može upravljati udaljeno, tj. pomoću

nekog komunikacijskog protokola koji naprava podržava. Naprave mogu imat razne

primjene te raznu složenost. Npr. naprava može biti jednostavan termometar koji u

odreĎenim vremenskim razmacima šalje očitanu temperaturu, a može biti i klimatski

ureĎaj, koji se može upravljati udaljeno putem interneta. U ovom radu, pretpostavka je da

naprava ne zna niti jednu adresu ostalih komponenti sustava. Naprava može samo poslati

poruku u mrežu, te primiti poruku iz mreže. Zbog toga naprave šalju poruke putem

razašiljanja (engl. broadcast). U ovom radu, svaka naprava u sustavu mora imati

jedinstveni identifikator veličine 8 okteta. Svaka naprava primljenu poruku ponovno šalje u

mrežu ukoliko se poruka ne odnosi na nju i ukoliko istu poruku već nije primila.

2.2. Pristupnik

Pristupnik je ureĎaj koji povezuje naprave sa servisom u oblaku. Skuplja sve

poruke iz lokalne mreže naprava, te ih prosljeĎuje servisu u oblaku. TakoĎer poruke sa

servisa u oblaku prosljeĎuje u lokalnu mrežu naprava. Pristupnik mora znati protokol i

adresu koju servis u oblaku koristi.

2.3. Servis u oblaku

Servis u oblaku je servis koji obraĎuje i skladišti podatke o napravama i

pristupnicima. Za svaku napravu servis mora znati s kojim pristupnikom naprava

komunicira, te kakve poruke naprava može poslati i kakve poruke naprava može primiti.

Sve poruke i podatke koje je naprava poslala ili koji su napravi poslani, servis sprema u

bazu podataka. Servis u oblaku sadrži i podatke o korisnicima i korisničkim aplikacijama.

Servis u oblaku ima definirana tri sučelja. Prvo sučelje koristi pristupnik, te

pomoću njega prosljeĎuje poruke izmeĎu naprava i servisa. Drugo sučelje koristi

korisnička aplikacija za upravljanje napravama. Treće sučelje je sučelje koje koristi

administrator servisa u oblaku.

Page 8: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

4

2.4. Korisnička aplikacija

Korisnička aplikacija je aplikacija pomoću koje korisnik upravlja napravama.

Aplikacija ne komunicira izravno s napravama, nego sa servisom u oblaku. Putem

aplikacije korisnik može pročitati neki podatak s naprave, poslati neku naredbu napravi, ili

analizirati podatke spremljene u oblaku. Aplikacija mora znati protokol koji servis koristi,

te sučelje koje servis podržava za aplikacije.

2.5. Primjer rada sustava

Na slici 2.2 prikazan je sekvencijski dijagram slanja zahtjeva napravi. Korisnik pomoću

korisničke aplikacija servisu u oblaku šalje zahtjev za napravu B. Servis u oblaku

autentificira korisnika, te provjerava ima li pravo poslati zahtjev napravi. Zatim prosljeĎuje

zahtjev pristupniku koji u svojoj lokalnoj mreži naprava sadrži napravu B. Pristupnik u

lokalnu mrežu šalje zahtjev. Naprava B nije u dometu pristupnika, pa ne prima odmah

zahtjev. Zahtjev je primila naprava A koja zahtjev ponovno šalje. Naprava B zatim prima

zahtjev te šalje odgovor. Odgovor je primila naprava A, te ga ponovno poslala u lokalnu

mrežu. Zatim je odgovor primio pristupnik i poslao ga servisu u oblaku. Servis u oblaku

sprema podatke odgovora u bazu podataka, te zatim korisniku šalje obavijest o primljenom

odgovoru.

Slika 2.2: Slanje zahtjeva napravi

Page 9: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

5

Naprava ne mora podatke slati samo kada primi zahtjev. Podatke može slati i

periodički u odreĎenom vremenskom intervalu. Na slici 2.3 prikazan je sekvencijski

dijagram takvog slučaja. Naprava termometar šalje podatak u lokalnu mrežu naprava.

Pristupnik taj podatak prosljeĎuje servisu u oblaku. Servis u oblaku sprema podatak u bazu

i korisniku šalje obavijest o primljenom podatku.

Slika 2.3: Slanje podatka s naprave

Page 10: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

6

3. KOMUNIKACIJA NAPRAVA I PRISTUPNIKA

U ovom radu naprava ne mora imati IP adresu. Naprave u lokalnoj mreži naprava

meĎusobno komuniciraju razašiljanjem poruka u sloju podatkovne poveznice. Pristupnik

sve poruke iz lokalne mreže naprava prosljeĎuje u javnu internet mrežu.

Naprave meĎusobno i s pristupnikom komuniciraju putem posebno definiranog

aplikacijskog protokola. Svaka poruka u protokolu sadrži zaglavlje konstantne veličine od

32 okteta. Struktura zaglavlja prikazana je na slici 3.1.

Verzija Vrsta poruke Zastavice Veličina poruke TTL

Identifikator primatelja

Identifikator pošiljatelja

Identifikator poruke

Slika 3.1: Zaglavlje poruke

Prva dva okteta zaglavlja predstavljaju verziju protokola. Verzija služi kako bi se

poruke naprava mogle razlikovati od ostalih poruka u mreži. Prvi oktet verzije ima

vrijednost 0, a drugi oktet ima vrijednost 1.

Treći oktet u zaglavlju predstavlja vrstu poruke. Protokol podržava četiri vrste

poruka: zahtjev, odgovor, pozdravnu poruku i informacijsku poruku.

Četvrti oktet u zaglavlju predstavlja zastavice. Od osam bita u tom oktetu, prvih

šest ih se koristi za zastavice.

Peti i šesti oktet predstavljaju veličinu tijela poruke. Tijelo poruke je promjenjive

veličine.

Sedmi i osmi oktet čine polje naziva TTL (engl. Time To Live). To je polje u

kojemu piše maksimalni broj prosljeĎivanja poruke. Svaka naprava ili pristupnik koji

proslijedi poruku, smanjuje vrijednost u tom polju za 1.

Sljedećih osam okteta čine identifikator primatelja, tj. jedinstveni identifikator

naprave kojoj je poruka namijenjena. Ukoliko svi okteti imaju vrijednost 0, primatelj nije

definiran, te se poruka samo šalje dok joj vrijednost u TTL-u ne padne na 0.

Page 11: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

7

Sljedećih osam okteta čine jedinstveni identifikator naprave koja je poruku prva

poslala.

Zadnjih osam okteta predstavlja identifikator poruke. Svaka naprava koja šalje

poruku u to polje upisuje jedinstveni identifikator poruke. Identifikator je jedinstven samo

za pošiljatelja. Dvije naprave mogu poslati različite poruke s istim identifikatorom. Zbog

toga je svaka poruka jednoznačno označena s identifikatorom poruke i identifikatorom

pošiljatelja. Najčešće naprave za svaku poruku koju generiraju, povećavaju identifikator

poruke za 1. Svaka naprava pamti zadnjih nekoliko poruka. Ukoliko naprava ponovno

primi poruku s već postojećim identifikatorom poruke i pošiljatelja, poruku neće ponovno

proslijediti.

Redoslijed zastavica u zaglavlju prikazan je na slici 3.2. Prvih šest bitova u

četvrtom oktetu predstavlja šest zastavica. Zastavica se smatra postavljenom ukoliko njen

odgovarajući bit ima logičku vrijednost 1.

P T E C R S

Slika 3.2: Zastavice u zaglavlju

Zastavica P signalizira može li se poruka proslijediti. Ukoliko neki ureĎaj primi poruku

koja nije adresirana za njega, poruku prosljeĎuje ukoliko je zastavica P postavljena.

Zastavica T signalizira je li poruka ponovno poslana. Neki ureĎaj ukoliko nije dobio

odgovor na neku poruku, poruku može ponovno poslati s drugim identifikatorom. Tada u

zaglavlju postavlja zastavicu T.

Zastavica E signalizira pogrešku. Ukoliko neka naprava ne može obraditi zahtjev, u

odgovoru postavlja zastavicu E.

Zastavica C signalizira napravi kojoj je zahtjev poslan da pošiljatelj želi potvrdu o obradi

zahtjeva.

Zastavica R signalizira je li poruka zahtjev. Ukoliko je postavljena, poruka predstavlja

zahtjev.

Zastavica S je postavljena ukoliko je tijelo poruke kriptirano.

Tijelo poruke sastoji se od nizova znakova. Ispred svakog niza nalaze se dva okteta

u kojima se nalazi veličina niza u oktetima. Ukupna duljina niza s dva okteta za veličinu

Page 12: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

8

niza mora biti djeljiva s 4. Ukoliko to nije slučaj na kraj niza se dodaju okteti s vrijednošću

0. Npr. niz znakova abcć kodiran UTF-8 kodnom stranicom u tijelu poruke je prikazan kao

sljedeći niz okteta: 0x00, 0x05, 0x61, 0x62, 0x63, 0xC4, 0x87, 0x00. Prva dva okteta

predstavljaju veličinu. Veličina niza je pet okteta. Oktet 0x61 predstavlja slovo a, oktet

0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan

oktet 0x00 kako bi ukupna duljina niza bila djeljiva s 4.

Ukoliko je poruka kriptirana, zaglavlje se ne kriptira, a tijelo poruke se sastoji od

dva niza znakova. Prvi niz je kriptirano tijelo originalne poruke, a drugi niz je SHA-256

sažetak poruke. Nizovi znakova kriptirane poruke i sažetka su kodirani pomoću BASE64

koda [5]. Poruke se kriptiraju simetričnim algoritmom AES s PKCS#7 [6] nadopunom.

Primatelj poruke mora znati ključ kojim je poruka kriptirana. Naprava koja šalje i prima

kriptirane poruke ima svoju lozinku. Ključ za kriptiranje se računa tako da se znakovi

lozinke pretvore u niz okteta UTF-8 kodnom stranicom. Zatim se od tog niza okteta računa

MD5 sažetak. Sažetak sadrži šesnaest okteta koji se koriste kao ključ kriptiranja.

3.1. Pozdravna poruka

Pozdravna poruka u trećem oktetu zaglavlja ima upisanu vrijednost 1. Pomoću

pozdravne poruke naprava javlja mreži svoje postojanje. Poruku ureĎaj šalje kada se prvi

put spoji na mrežu. TakoĎer poruku može periodički slati u nekom vremenskom intervalu.

U tijelu pozdravne poruke nalaze se osnovne informacije o ureĎaju.

Primjer pozdravne poruke:

U prethodnom primjeru prikazana je pozdravna poruka za ureĎaj s imenom Air

conditioner.

VERZIJA = 1

TIP PORUKE = 1

VELIČINA = 108

ZASTAVICE: P = 1, T = 0, E = 0, C = 0, R = 0, S = 0

TTL = 64

ID PRIMATELJA= 0

ID POŠILJATELJA = 2

ID PORUKE = 11

[34 | 'DEVICE_DESCRIPTION=Air conditioner']

[43 | 'DEVICE_DATA=temperature,desired_temperature\0']

[26 | 'DEVICE_COMMANDS=start,stop']

Page 13: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

9

3.2. Informacijska poruka

Informacijska poruka u trećem oktetu zaglavlja ima upisanu vrijednost 2.

Informacijsku poruku naprava šalje kada želi poslati svoje podatke bez prethodnog upita.

Primjer naprave koja šalje informacijske poruke je termometar koji u odreĎenim

vremenskim intervalima šalje temperaturu. Podaci u tijelu poruke su zapisani u nizovima

znakova. Svaki niz sadrži jedan podatak. Format niza je <ime podatka>=<vrijednost>.

Primjer informacijske poruke:

3.3. Zahtjev

Zahtjev u trećem oktetu zaglavlja ima upisanu vrijednost 3. Zahtjevima se naprava

upravlja, ili se dohvaćaju podaci s naprave. Nizovi znakova u zahtjevu su naredbe. Format

naredbe je:<ime naredbe>:<ime podatka>:<vrijednost>. Npr. niz set:temperature:21

predstavlja naredbu imena set, koja radi s podatkom temperature. Vrijednost podatka je 21.

Ukoliko naprava ne očekuje jedan parametar iz naredbe, onda se on izostavlja. Npr.

naredba get:temperature: ne zahtjeva vrijednost podatka.

Ukoliko je u zaglavlju zahtjeva postavljena zastavica C, od naprave koja obraĎuje

zahtjev očekuje se slanje odgovora.

Primjer zahtjeva:

Prethodni primjer predstavlja zahtjev s kojim se pokušava pročitati vrijednost podataka

VERZIJA = 1

TIP PORUKE = 2

VELIČINA = 16

ZASTAVICE: P = 1, T = 0, E = 0, C = 0, R = 0, S = 0

TTL = 64

ID PRIMATELJA= 0

ID POŠILJATELJA = 2

ID PORUKE = 347

[14 | 'temperature=21']

VERZIJA = 1

TIP PORUKE = 3

VELIČINA = 20

ZASTAVICE: P = 1, T = 0, E = 0, C = 1, R = 1, S = 0

TTL = 64

ID PRIMATELJA= 2

ID POŠILJATELJA = 999999

ID PORUKE = 47

[16 | 'get:temperature:\0\0']

Page 14: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

10

temperature s naprave. Sljedeći primjer predstavlja zahtjev s kojim se u napravu želi

upisati podatak desired_temperature.

Primjer zahtjeva:

3.4. Odgovor

Odgovor u trećem oktetu ima upisanu vrijednost 4. Odgovor šalje ureĎaj kao

rezultat zahtjeva. Prvi niz u odgovoru mora sadržavati identifikator poruke (zahtjeva) za

koju se šalje odgovor. Odgovor može imati postavljenu zastavicu E koja signalizira

pogrešku jer se zahtjev ne može obraditi.

Primjer odgovora:

VERZIJA = 1

TIP PORUKE = 3

VELIČINA = 28

ZASTAVICE: P = 1, T = 0, E = 0, C = 1, R = 1, S = 0

TTL = 64

ID PRIMATELJA= 2

ID POŠILJATELJA = 999999

ID PORUKE = 48

[28 | 'set:desired_temperature:17']

VERZIJA = 1

TIP PORUKE = 4

VELIČINA = 40

ZASTAVICE: P = 1, T = 0, E = 0, C = 0, R = 0, S = 0

TTL = 64

ID PRIMATELJA= 999999

ID POŠILJATELJA = 2

ID PORUKE = 2526

[13 | 'MESSAGE_ID=48\0']

[22 | 'desired_temperature=17']

Page 15: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

11

4. OSTVARENJE SUSTAVA

U ovom radu sustav čine servis u oblaku, jedan pristupnik i tri ureĎaja. Servis u

oblaku je implementiran kao Java Web aplikacija. Pristupnik i ureĎaji su implementirani za

operacijske sustave s Linux jezgrom. UreĎaji u sustavu su brava, klima ureĎaj i

termometar. Dijagram razmještaja sustava prikazan je na slici 4.1.

Slika 4.1: Dijagram razmještaja sustava

Page 16: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

12

Na dijagramu se nalazi sedam komponenti. Prva komponenta je Tomcat Server.

Ona predstavlja server s dvije aplikacije. Prva aplikacija je korisnička aplikacija. Korisnik

s korisničkom aplikacijom upravlja preko web preglednika. Druga aplikacija je servis u

oblaku. Servis u oblaku komunicira sa bazom podataka. Korisnička aplikacija i servis u

oblaku ne moraju se nalaziti na istom serveru, jer su to dva odvojena sustava koja

komuniciraju HTTP protokolom.

Komponente termometar, klima ureĎaj i brava predstavljaju naprave u sustavu.

Naprave i pristupnik sadrže aplikacije send i recv, imenovane cjevovode input i output, te

JAR izvršnu datoteku. Aplikacija recv prima sve Ethernet pakete sa lokalne mreže. Ako

paket sadrži poruku za napravu, zapisuje poruku u imenovani cjevovod input. Aplikacija

send čita poruke iz imenovanog cjevovoda output te ih prosljeĎuje u lokalnu mrežu u

Ethernet paketima. JAR izvršne datoteke simuliraju rad naprave. Poruke primaju iz

imenovanog cjevovoda input, a šalju u imenovani cjevovod output.

Pristupnik sadrži aplikaciju Gateway.jar koja komunicira sa servisom u oblaku

HTTP protokolom. S termometrom, klima ureĎajem i bravom, pristupnik komunicira

Ethernet protokolom.

Implementacija sustava i upute za pokretanje sustava su priložene uz ovaj rad na

DVD optičkom mediju.

4.1. Implementacija servisa u oblaku

Servis u oblaku se sastoji od baze podataka i tri sučelja za komunikaciju sa

servisom. Protokol koji se koristi za komunikaciju je HTTP protokol verzije 1.1. Jedno

sučelje je skup HTTP zahtjeva koje servis može obraditi. Sučelja koje servis podržava su:

korisničko sučelje, administratorsko sučelje i sučelje za pristupnike. Komunikacija se vrši

tako da klijenti servisa šalju zahtjeve, a servis vraća odgovore. Većina odgovora se vraća u

JSON [7] formatu. Servis mora imati svoj jedinstveni identifikator od osam okteta kao i

svaka naprava, kako bi mogao slati poruke napravama. Identifikator servisa u ovom radu je

9223372036854775806.

4.1.1. Baza podataka

Servis u oblaku sadrži bazu podataka za podatke o ureĎajima i korisnicima. Baza

podataka korištena u ovom radu je PostgreSQL 9.3.9 [8]. Relacijski model baze je prikazan

Page 17: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

13

na slici 4.2. Ukoliko tablica na slici ima primarni ključ, on je označen s ikonom ključa koja

se nalazi lijevo od imena atributa. Obavezni atributi u entitetima na slici su označeni

podebljanim fontom.

Slika 4.2: Model baze podataka

Tablica iot_user predstavlja korisnika sustava. Tablica ima strani ključ role_id na

tablicu role. Atribut username je jedinstven za svakog korisnika. Atribut role_id nije

obavezan. Atribut password_hash sadrži SHA-256 sažetak lozinke koju pristupnik koristi

Page 18: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

14

za autorizaciju na servisu u oblaku. Sažetak je zapisan kao niz okteta u heksadecimalnom

formatu.

Tablica role predstavlja ulogu korisnika. Atribut name sadrži naziv uloge. Sustav

razlikuje samo ulogu s nazivom admin.

Tablica user_agent predstavlja aplikaciju pomoću koje korisnik koristi servis u

oblaku. Atribut username je strani ključ na entitet iz tablice iot_user. Vrijednost ostalih

atributa je proizvoljna.

Tablica gateway predstavlja pristupnik. Atribut owner je strani ključ koji

referencira atribut username u tablici iot_user. Atribut password_hash sadrži SHA-256

sažetak lozinke koju pristupnik koristit za autorizaciju na servisu u oblaku. Sažetak je

zapisan kao niz okteta u heksadecimalnom formatu.

Tablica device predstavlja napravu. Atribut owner je strani ključ koji referencira

atribut username u tablici iot_user. Atribut password je lozinka koju naprava koristi za

kriptiranje poruka.

Tablica device_gateway predstavlja binarnu vezu više-prema-više izmeĎu tablica

device i gateway. Atribut device_id je strani ključ na istoimeni atribut u tablici device, a

atribut gateway_id je strani ključ na istoimeni atribut u tablici gateway.

Tablica data predstavlja jedan podatak koji naprava može poslati ili primiti. Atribut

device_id u tablici je strani ključ na istoimeni atribut u tablici device. Atribut name je ime

podatka.

Tablica command predstavlja naredbu koju naprava može izvesti. Naredba ima

strani ključ data_id koji se referencira na tablicu data. Jedna naredba može kao parametar

koristiti samo jedan podatak. Atribut command je ime naredbe. Atribut command_type

može poprimiti vrijednosti READ, WRITE ili ACTION. Naredbe tipa READ mogu samo

čitati podatke s naprave. Naredbe tipa WRITE podatke na napravi mogu i mijenjati.

Naredbe tipa ACTION su naredbe koje osim mijenjanja podataka upravljaju napravom.

Tablica data_history predstavlja vrijednost podataka. Vrijednost podataka sadrži

strani ključ data_id koji se referencira na tablicu data. Atribut value je vrijednost podatka,

a atribut timestamp je vrijeme u kojem je podatak poprimio tu vrijednost.

Tablica data_permission predstavlja dozvolu koju korisnik ima za odreĎeni

podatak. Tablica role_data_permission predstavlja sve dozvole koje imaju svi korisnici s

Page 19: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

15

odreĎenom ulogom. U obje tablice atribut data_id je strani ključ koji odreĎuje podataka na

koji se dozvola odnosi. Atribut type odreĎuje vrstu dozvole, te može poprimiti vrijednosti

r, w i rw. Ukoliko atribut ima vrijednost r, korisnik može izvršavati samo naredbe koje ne

mijenjaju vrijednost podatka. Ukoliko atribut ima vrijednost w, korisnik može izvršavati

samo one naredbe koje mijenjaju vrijednost podataka. Za vrijednost rw korisnik može

izvršavati sve naredbe koje kao parametar koriste referencirani podatak. Tablica

data_permission sadrži strani ključ username koji se referencira na istoimeni atribut u

tablici iot_user. Tablica role_data_permission sadrži strani ključ role koji se referencira na

atribut name u tablici role.

Tablica notification_handler predstavlja upravitelja obavijestima. Upravitelj

obavijestima je mehanizam koji korisniku šalje obavijest kada se neki podatak ažurira.

Tablica sadrži dva strana ključa. Prvi stani ključ je atribut data_id koji se referencira na

podatak. Drugi strani ključ je atribut user_agent koji se referencira na korisničku

aplikaciju. U ovom radu sustav podržava slanje obavijesti samo putem elektroničke pošte.

Tada entitet u tablici notification_handler za atribut method ima upisanu adresu

elektroničke pošte, a za atribut type ima upisanu vrijednost email.

4.1.2. Korisničko sučelje

Svi zahtjevi u korisničkom sučelju koriste Basic access authentication [9] metodu

autentifikacije. Ukoliko poruka zahtjeva sadrži ulazne podatke u tijelu poruke, oni su

kodirani pomoću x-www-form-urlencoded [10] metode. Ulazni podaci se mogu nalaziti i u

putanji zahtjeva. Korisničko sučelje čini 25 zahtjeva. Svi zahtjevi korisničkog sučelja

navedeni su u dodatku A. Ukoliko neki zahtjev ulazni podatak čita iz putanje zahtjeva, u

dodatku je taj podatak u putanji označen u sljedećem formatu: {ime podatka}. Npr. putanja

/DiplomskiRadCloud/users/device/{id} sadrži ulazni podatak imena id. Ako je stvarna

putanja zahtjeva /DiplomskiRadCloud/users/device/123, vrijednost parametra id je 123.

4.1.3. Administratorsko sučelje

Administratorsko sučelje koriste korisnici koji imaju administratorsku ulogu.

Korisnik ima administratorsku ulogu ako njegov entitet u bazi sadrži strani ključ na ulogu s

imenom admin. Sučelje se koristi za dohvaćanje i pisanje podataka o drugim korisnicima.

Autentifikacija korisnika se vrši kao i u korisničkom sučelju. Administratorsko sučelje čini

15 zahtjeva. Svi zahtjevi administratorskog sučelja opisani su u dodatku B.

Page 20: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

16

4.1.4. Sučelje za pristupnike

Sučelje za pristupnike sastoji se od dva HTTP zahtjeva. Autentifikacija pristupnika

se vrši pomoću Basic access authentication [9] metode. Kao korisničko ime koristi se

identifikator pristupnika.

Prvi zahtjev koristi HTTP metodu GET i parametriziranu putanju

/DiplomskiRadCloud/gatewayinterface/{gatewayId}. Parametar gatewayId je identifikator

pristupnika koji šalje zahtjev. Svaki pristupnik u servisu ima svoj red zahtjeva. Kada

korisnik pošalje zahtjev napravi, poruka zahtjeva za napravu se sprema u sve redove

pristupnika koji imaju pridruženu tu napravu. Kada pristupnik servisu pošalje HTTP

zahtjev za dohvaćanje poruka, servis mu u odgovoru vraća sve zahtjeve iz njegovog reda.

HTTP odgovor je formatiran kao JSON [7] niz koji sadrži poruke. Poruke su kodirane

pomoću BASE64 koda [5].

Primjer HTTP zahtjeva za dohvaćanje poruka je:

Primjer HTTP odgovora na prethodni zahtjev je:

U tijelu odgovora se nalaze dvije poruke za naprave. Znakovi u tijelu poruke su kordirani

UTF-8 kodnom stranicom.

Drugi zahtjev koristi HTTP metodu POST i putanju

/DiplomskiRadCloud/gatewayinterface. Zahtjev pristupnik koristi kako bi proslijedio

poruku servisu u oblaku. Zahtjev sadrži tri parametra. Prvi parametar je gatewayId te

odreĎuje identifikator pristupnika. Drugi parametar je deviceId te odreĎuje identifikator

naprave. Treći parametar je message te odreĎuje poruku koju je neka naprava poslala.

Poruka u zahtjevu je kodirana BASE64 [5] kodom. Parametri se nalaze u tijelu zahtjeva

kodirani x-www-form-urlencoded [10] metodom. Prilikom posluživanja svakog zahtjeva,

GET /DiplomskiRadCloud/gatewayinterface/9999HTTP/1.1 Host: localhost:8080 Authorization: Basic OTk5OToxMTAyMTk5MA==

HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/html;charset=UTF-8 Content-Length: 131 ["AAEDmAAMAP8AAAAAAAAIrn/////////+AAAAAAAAAAMACWdldDp0ZW1wOgA=","AAEDmAAQAP8AAAAAAAAIrn/////////+AAAAAAAAAAQADXN0b3A6c3RhcnRlZDoA"]

Page 21: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

17

servis ažurira atribut last_gateway_id u tablici device. UreĎaj za ažuriranje je odreĎen

parametrom deviceId a vrijednost atributa last_gateway_id parametrom gatewayId.

Ukoliko je poslana poruka odgovor naprave na zahtjev ili informacijska poruka naprave,

servis u tablicu data_history sprema podatke koje je naprava poslala.

Primjer HTTP zahtjeva za prosljeĎivanje poruka je:

Ako je zahtjev uspješno poslužen, HTTP status odgovora je 200, a tijelo poruke je

prazno. U suprotnom HTTP status odgovora je 400, a tijelo odgovora sadrži samo opis

greške.

4.2. Implementacija naprava

Naprave meĎusobno i s pristupnikom komuniciraju pomoću Ethernet protokola.

Standard korištenog protokola je 802.3. Protokol pripada sloju podatkovne poveznice.

Razlog korištenja protokola niske razine je u tome što naprave mogu biti jednostavni

senzori, bez implementiranog cijelog komunikacijskog stoga. Zbog korištenog protokola,

maksimalna veličina poruke koju naprava šalje je 1500 okteta. Rad naprava je simuliran na

Raspberry Pi računalu.

U sustavu su implementirane tri naprave: termometar, klima ureĎaj i brava. Sve

naprave u sustavu moraju imati jedinstveni identifikator. Identifikator termometra je 1111,

identifikator klima ureĎaja je 2222 a identifikator brave je 3333.

4.2.1. Implementacija termometra

Termometar je naprava koja svake minute šalje informacijsku poruku s očitanom

temperaturom. Kada se termometar uključi šalje pozdravnu poruku. Informacijsku poruku

šalje svakih pet minuta.

Primjer pozdravne poruke termometra:

POST /DiplomskiRadCloud/gatewayinterface HTTP/1.1 Host: localhost:8080 Authorization: Basic OTk5OTowMDAwMDAwMA== Content-Type: application/x-www-form-urlencoded gatewayId=9999&deviceId=2222&message=AAEDmAAYAP8AAAAAAAAIrn%2F%2F%2F%2F%2F%2F%2F%2F%2F%2BAAAAAAAAAAUAE3NldDpkZXNpcmVkX3RlbXA6MTIAAAA%3D

Page 22: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

18

U primjeru identifikator primatelja nije poznat. Identifikator termometra je 1111.

Identifikator poruke je 1. Za svaku sljedeću poruku koju termometar pošalje, identifikator

je uvećan za 1. U tijelu poruke se nalaze osnovne informacije o napravi: ime naprave, opis

naprave i podaci koje naprava može poslati.

Sljedeća poruka koju termometar pošalje nakon paljenja je informacijska poruka.

Identifikator poruke je 2. U tijelu poruke se nalazi vrijednost očitane temperature.

Primjer informacijske poruke:

4.2.2. Implementacija klima ureĎaja

Klima ureĎaj sadrži tri podatka: temp, desired_temp i started. Podatak temp je

temperatura prostora u kojem se klima nalazi. Podatak desired_temp je željena temperatura

prostora, tj. temperatura na koju klima ureĎaj treba rashladiti ili ugrijati prostor. Ukoliko

ureĎaj hladi ili grije prostoriju, vrijednost podatka started je true,u suprotnom vrijednost

podatka je false. Klima ureĎaj svakih pet minuta šalje pozdravnu poruku. Primjer

pozdravne poruke je:

VERZIJA = 1 TIP PORUKE = 1 VELIČINA = 136 ZASTAVICE: P = 1, T = 0, E = 0, C = 0, R = 0, S = 0 TTL = 255 ID PRIMATELJA= 0 ID POŠILJATELJA = 1111 ID PORUKE = 1 DEVICE_NAME=thermometer

DEVICE_DESCRIPTION=thermometer that broadcasts temperature every minute DEVICE_DATA=temperature

VERZIJA = 1 TIP PORUKE = 2 VELIČINA = 48 ZASTAVICE: P = 1, T = 0, E = 0, C = 0, R = 0, S = 0 TTL = 255 ID PRIMATELJA= 0 ID POŠILJATELJA = 1111 ID PORUKE = 2

temperature=18

VERZIJA = 1 TIP PORUKE = 1 VELIČINA = 148 ZASTAVICE: P = 1, T = 0, E = 0, C = 0, R = 0, S = 0 TTL = 255 ID PRIMATELJA= 0 ID POŠILJATELJA = 2222 ID PORUKE = 1

DEVICE_NAME=air conditioner DEVICE_DESCRIPTION=simple airconditioner DEVICE_DATA=temp, desired_temp, started DEVICE_COMMANDS=get, set, start, stop

Page 23: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

19

Naredbe koje ureĎaj podržava su:

1. get:desired_temp:,

2. set:desired_temp:<value>,

3. get:temp:,

4. start:started:,

5. stop:started:.

Prva naredba dohvaća vrijednost željene temperature. Primjeri zahtjeva i odgovora naredbe

su:

Druga naredba postavlja željenu temperaturu. Naredba zahtjeva vrijednost podatka.

Podatak se nalazi na kraju naredbe. Primjeri zahtjeva i odgovora naredbe su:

Treća naredba dohvaća očitanu temperaturu u prostoriji. Primjeri zahtjeva i odgovora

naredbe su:

VERZIJA = 1 TIP PORUKE = 4 VELIČINA = 36 ZASTAVICE: P = 1, T = 0, E = 0, C = 0, R = 0, S = 0 TTL = 255 ID PRIMATELJA= 9223372036854775806 ID POŠILJATELJA = 2222 ID PORUKE = 2

MESSAGE_ID=7

desired_temp=19

VERZIJA = 1 TIP PORUKE = 3 VELIČINA = 20 ZASTAVICE: P = 1, T = 0, E = 0, C = 1, R = 1, S = 0 TTL = 255 ID PRIMATELJA= 2222 ID POŠILJATELJA = 9223372036854775806 ID PORUKE = 7

get:desired_temp:

VERZIJA = 1 TIP PORUKE = 3 VELIČINA = 24 ZASTAVICE: P = 1, T = 0, E = 0, C = 1, R = 1, S = 0 TTL = 255 ID PRIMATELJA= 2222 ID POŠILJATELJA = 9223372036854775806 ID PORUKE = 8

set:desired_temp:17

VERZIJA = 1 TIP PORUKE = 4 VELIČINA = 36 ZASTAVICE: P = 1, T = 0, E = 0, C = 0, R = 0, S = 0 TTL = 255 ID PRIMATELJA= 9223372036854775806 ID POŠILJATELJA = 2222 ID PORUKE = 3

MESSAGE_ID=8

desired_temp=17

VERZIJA = 1 TIP PORUKE = 3 VELIČINA = 12 ZASTAVICE: P = 1, T = 0, E = 0, C = 1, R = 1, S = 0 TTL = 255 ID PRIMATELJA= 2222 ID POŠILJATELJA = 9223372036854775806 ID PORUKE = 9

get:temp:

VERZIJA = 1 TIP PORUKE = 4 VELIČINA = 28 ZASTAVICE: P = 1, T = 0, E = 0, C = 0, R = 0, S = 0 TTL = 255 ID PRIMATELJA= 9223372036854775806 ID POŠILJATELJA = 2222 ID PORUKE = 4

MESSAGE_ID=9

temp=14

Page 24: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

20

Četvrta naredba pali klima ureĎaj. Primjeri zahtjeva i odgovora naredbe su:

Peta naredba gasi klima ureĎaj. Primjeri zahtjeva i odgovora naredbe su:

4.2.3. Implementacija brave

Brava je naprava koja sadrži jedan podatak, locked. Vrijednost podatka može biti

true ili false. Brava komunicira samo kriptiranim porukama. Zato svaka poruka koju brava

pošalje, ili koja je namijenjena bravi ima postavljenu zastavicu S.

Brava podržava tri naredbe:

1. get:locked:, 2. lock:locked:, 3. unlock:locked:.

Prva naredba provjerava je li brava zaključana. Druga naredba zaključava bravu. Treća

naredba otključava bravu. Odgovor svih triju naredbi vraća podatak locked. Vrijednost

podataka je true ako je brava zaključana nakon izvršavanja naredbe. U suprotnom

vrijednost podatka je false.

I zahtjev i odgovor imaju dva niza u tijelu poruke. Prvi niz je kriptirano tijelo

originalne poruke. Drugi niz SHA-256 sažetak originalne poruke. Okteti kriptirane poruke

i sažetka kodirani su BASE64 [5] kodom.

VERZIJA = 1 TIP PORUKE = 3 VELIČINA = 16 ZASTAVICE: P = 1, T = 0, E = 0, C = 1, R = 1, S = 0 TTL = 255 ID PRIMATELJA= 2222 ID POŠILJATELJA = 9223372036854775806 ID PORUKE = 10

start:started:

VERZIJA = 1 TIP PORUKE = 4 VELIČINA = 32 ZASTAVICE: P = 1, T = 0, E = 0, C = 0, R = 0, S = 0 TTL = 255 ID PRIMATELJA= 9223372036854775806 ID POŠILJATELJA = 2222 ID PORUKE = 5

MESSAGE_ID=10

started=true

VERZIJA = 1 TIP PORUKE = 3 VELIČINA = 16 ZASTAVICE: P = 1, T = 0, E = 0, C = 1, R = 1, S = 0 TTL = 255 ID PRIMATELJA= 2222 ID POŠILJATELJA = 9223372036854775806 ID PORUKE = 11

stop:started:

VERZIJA = 1 TIP PORUKE = 4 VELIČINA = 32 ZASTAVICE: P = 1, T = 0, E = 0, C = 0, R = 0, S = 0 TTL = 255 ID PRIMATELJA= 9223372036854775806 ID POŠILJATELJA = 2222 ID PORUKE = 6

MESSAGE_ID=11

started=true

Page 25: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

21

Primjer zahtjeva i odgovora za bravu su:

4.3. Implementacija pristupnika

Pristupnik kao i sve ostale naprave mora imati svoj jedinstveni identifikator.

Identifikator implementiranog pristupnika je 9999. Svaku poruku koju pristupnik primi iz

mreže lokalnih naprava, prosljeĎuje servisu u oblaku. Pristupnik svakih deset sekundi sa

servisa u oblaku preuzima poruke za naprave u njegovoj mreži. Način komuniciranja

pristupnika i servisa u oblaku je opisan u poglavlju 4.1.4.

4.4. Implementacija korisničke aplikacije

U ovom radu korisnička aplikacija je implementirana kao WEB aplikacija. Korisnik

aplikaciji pristupa pomoću preglednika. Da bi korisnik imao pristup servisu, prvo se mora

registrirati. Prilikom registracije aplikacija u servisu u oblaku stvara novog korisnika i

novog agenta za tog korisnika. Aplikacija za stvaranje korisnika i agenta koristi

administratorsko sučelje servisa u oblaku. Zbog toga je i aplikacija korisnik servisa u

oblaku s administratorskim ovlastima. Za sve ostale zahtjeve korisnika aplikacija koristi

korisničko sučelje servisa u oblaku.

Početno sučelje aplikacije prikazano je na slici 4.3. Korisnik se pomoću tog sučelja

može registrirati, ili prijaviti ukoliko je već registriran.

VERZIJA = 1 TIP PORUKE = 3 VELIČINA = 96 ZASTAVICE: P = 1, T = 0, E = 0, C = 1, R = 1, S = 1 TTL = 255 ID PRIMATELJA= 3333 ID POŠILJATELJA = 9223372036854775806 ID PORUKE = 47

f8OqDyzkySj9TV8ikNteMMhvscEO3dmdC9EZdMVqAd0= VmGQ65aELdrlytYjmx51rTpDs59BcF1ktYKFfO4P3oQ=

VERZIJA = 1 TIP PORUKE = 4 VELIČINA = 32 ZASTAVICE: P = 1, T = 0, E = 0, C = 0, R = 0, S = 1 TTL = 255 ID PRIMATELJA= 9223372036854775806 ID POŠILJATELJA = 3333 ID PORUKE = 34

70cZSepYmJwCr7PKEw40WC52S2TEzIxQucN6UJQdHgDI

b7HBDt3ZnQvRGXTFagHd

AOhL4qltT8K9sE+swzZItuvBw/R4eg95DiEIdFFP0AQ=

Page 26: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

22

Slika 4.3: Početno sučelje aplikacije

Na slici 4.4 nalazi se korisničko sučelje nakon prijave ili registracije korisnika. Na

sučelju se nalazi pet poveznica. Poveznica Pristupnici otvara sučelje za prikazivanje i

stvaranje pristupnika. Poveznica Uređaji otvara sučelje za prikazivanje i stvaranje ureĎaja.

Poveznica Podaci otvara sučelje za prikaz svih podataka za koje korisnik ima dozvolu.

Poveznica Dozvole otvara sučelje koje prikazuje sve dozvole za podatke koje su dane

drugim korisnicima sustava. Poveznica Notifikacije otvara sučelje koje prikazuje sve

podatke za koje je registrirano slanje obavijesti putem elektroničke pošte.

Odabirom poveznice Pristupnici prikazuje se sučelje sa svim pristupnicima u

vlasništvu korisnika. Prikaz tog sučelja prikazan je na slici 4.5. Pristupnici su prikazani u

tablici. Na dnu sučelja nalazi se poveznica za stvaranje novog pristupnika. Sučelje za

stvaranje novog pristupnika je prikazano na slici 4.6. Sučelje sadrži polja za unos

identifikatora, imena, opisa i lozinke. Za uspješno stvaranje pristupnika korisnik mora

unijeti sve tražene podatke.

Page 27: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

23

Slika 4.4: Korisničko sučelje

Slika 4.5: Pristupnici

Ukoliko korisnik klikne na identifikator u tablici pristupnika, otvara se sučelje za

prikaz pristupnika prikazano na slici 4.7. Sučelje sadržava gumb za brisanje pristupnika.

Page 28: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

24

Slika 4.6: Sučelje za stvaranje pristupnika

Slika 4.7: Prikaz pristupnika

Odabirom poveznice Uređaji otvara se sučelje za prikaz svih naprava u vlasništvu

korisnika. Primjer tog sučelja prikazan je na slici 4.8. Naprave su prikazane u tablici. Ispod

tablice nalazi se poveznica za stvaranje novog sučelja. Ukoliko korisnik klikne na

identifikator naprave u tablici otvara se sučelje za prikaz pojedine naprave.

Page 29: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

25

Slika 4.8: Prikaz naprava

Prikaz pojedine naprave prikazan je na slici 4.9. Na početku sučelja nalazi se

tablica za prikaz naprave. Ispod tablice se nalazi gumb koji briše napravu iz sustava. Ispod

gumba nalazi se polje za unos identifikatora pristupnika. Pomoću tog polja napravi se

pridružuje pristupnik, tako da servis u oblaku može komunicirati s tom napravom preko

pridruženog pristupnika. Ispod polja za pridruživanje pristupnika nalazi se tablica sa svim

pridruženim pristupnicima. Svaki redak tablice sadrži gumb koji uklanja pristupnik iz

pridruženih pristupnika. Ispod tablice pristupnika nalazi se tablica podataka s kojima

naprava radi. Zadnji element sučelja je poveznica za stvaranje novog ureĎaja.

Na slici 4.10 je prikazano sučelje za stvaranje nove naprave. Obvezni podaci za

stvaranje naprave su identifikator, ime, opis i definicija. Lozinku korisnik mora unijeti ako

ureĎaj koristi lozinku za kriptiranje poruka. U polje za definiciju ureĎaja korisnik unosi

poveznicu na kojoj je moguće dohvatiti dio definicije ureĎaja za stvaranje podataka i

naredbi koje ureĎaj podržava. Sama korisnička aplikacija podržava tri poveznice za

definiciju:

1. /DiplomskiRadAplikacija/definitions/thermometer,

2. /DiplomskiRadAplikacija/definitions/airconditioner,

3. /DiplomskiRadAplikacija/definitions/lock.

Page 30: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

26

Slika 4.9: Prikaz naprave

Prva poveznica putem HTTP odgovora vraća definiciju termometra. Druga poveznica

vraća definiciju klima ureĎaja, a treća definiciju brave. Opis definicije ureĎaja je opisan u

dodatku A (četvrti zahtjev u tablici).

Page 31: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

27

Slika 4.10: Sučelje za stvaranje nove naprave

Na slici 4.11 prikazano je sučelje za rad s podatkom naprave. Na vrhu sučelja nalazi

se tablica s identifikatorom podatka, imenom podatka i identifikatorom ureĎaja koji sadrži

navedeni podatak. Ispod tablice nalaze se naredbe za rad s podatkom. Svaka naredba ima

gumb za izvršavanje naredbe. Ukoliko naredba može primiti ulazni parametar (vrsta

naredbe je WRITE), pored gumba se nalazi i polje za unos parametra. Naredbe mogu

upravljati ureĎajem, dohvaćati podatke s ureĎaja ili upisivati podatke u ureĎaj.

Za svaki podatak se može dodati adresa elektroničke pošte za primanje obavijesti

kada se vrijednost podataka promijeni, tj. kada naprava pošalje poruku na navedenim

podatkom. Za odreĎeni podatak se može dodijeliti pravo pristupa nekom drugom

korisniku. Na dnu sučelja prikazana je tablica sa zadnjim vrijednostima podataka koje je

naprava poslala.

Page 32: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

28

Slika 4.11: Sučelje za rad s podacima naprave

Dodane adrese elektroničke pošte korisnik može vidjeti na poveznici Notifikacije u

korisničkom sučelju aplikacije. Dodane adrese su prikazane na slici 4.12. Pokraj svake

adrese se nalazi i gumb za njeno brisanje.

Page 33: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

29

Slika 4.12: Adrese elektroničke pošte za primanje obavijesti

Dodijeljena prava pristupa drugim korisnicima prikazana su na slici 4.13. Svako

pravo pristupa ima gumb za njegovo brisanje.

Slika 4.13: Dodijeljena prava pristupa

Page 34: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

30

5. ZAKLJUČAK

U radu je definirana programska i mrežna arhitektura za jednostavni sustav Internet

stvari. Komponente arhitekture su korisnička aplikacija, servis u oblaku, pristupnik te

naprave. U implementiranom sustavu korisnik lako može upravljati svim napravama putem

interneta iako naprave nemaju svoju IP adresu. Korisnik putem korisničke aplikacije

komunicira sa servisom u oblaku. Pristupnik služi kao posrednik izmeĎu servisa u oblaku i

naprava. Naprave komuniciraju meĎusobno i s pristupnikom.

Komunikacija izmeĎu naprava i pristupnika implementirana je u sloju podatkovne

poveznice Ethernet protokolom. Takva komunikacija omogućuje da naprave budu krajnje

jednostavni ureĎaji. S druge pak strane, komunikacija naprava u sloju podatkovne

poveznice predstavlja ograničenje s obzirom na maksimalnu veličinu poruke. Zbog toga

maksimalna veličina poruke koju naprava može poslati ili primiti je 1500 okteta.

Sve naprave u sustavu moraju komunicirati istim vrstama poruka. Naprava koja

ima implementirano nekakvo sučelje za upravljanje putem interneta, ali ne podržava

aplikacijski protokol definiran u ovom radu, nije upotrebljiva u sustavu.

Servis u oblaku ne mora znati adresu pristupnika. Kada servis ima poruku koju

treba proslijediti pristupniku, čuva je u redu poruka. Tek kada pristupnik preda HTTP

zahtjev za dohvaćanje poruka, servis mu u odgovoru zahtjeva predaje poruku. MeĎutim

ukoliko korisnik generira zahtjev napravi, a naprava ili pristupnik nisu aktivni, korisnik

neće dobiti obavijest o grešci u sustavu.

Sljedeći bi korak bio uvesti podršku za rad s napravama koje imaju svoju IP adresu.

Baza podataka i sučelje servisa za stvaranje naprava već imaju podršku za stvaranje

naprava s adresama. Ukoliko neka naprava ima implementiran cijeli komunikacijski stog,

naredbe može primati izravno s korisničke aplikacije. Za takvu napravu pristupnik uopće

ne bi bio potreban. Drugi korak bi bio uvoĎenje sučelja u servisu u oblaku za generiranje i

slanje zahtjeva napravama koje ne podržavaju aplikacijski protokol definiran u ovom radu.

Potpis: __________________________

Page 35: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

31

LITERATURA

[1] Takahashi D., The top 11 tech trends of the Consumer Electronics Show, 12. siječnja

2015., http://venturebeat.com/2015/01/12/the-top-11-tech-trends-of-the-consumer-

electronics-show/, 14. lipnja 2015.

[2] The Internet of Things, 12. lipnja 2015., https://ec.europa.eu/digital-

agenda/en/internet-things, 14. lipnja 2015.

[3] Interent of Things Architecture, http://www.iot-a.eu/public, 14. lipnja 2015.

[4] OpenIoT, http://openiot.eu , 14. lipnja 2015.

[5] Josefsson S., The Base16, Base32 and Base64 Data Encodings, listopad 2006.,

https://tools.ietf.org/html/rfc4648, 20. svibnja 2015.

[6] Kaliski B., PKCS #7: Cryptographics Message Syntax, ožujak 1998.,

https://tools.ietf.org/html/rfc2315, 14. lipnja 2015.

[7] Crockford D., The application/json Media Type for JavaScript Object Anotation,

Lipanj 2006., https://tools.ietf.org/html/rfc4627, 14. lipnja 2015.

[8] PostgreSQL, http://www.postgresql.org/docs, 14. lipnja 2015.

[9] Franks J, Hallam-Baker P., Hostetler J., Lawrence S., Leach P., Loutonen A., Stewart

L., HTTP Authentication: Basic and Digest Access Authentication, lipanj 1999.,

http://tools.ietf.org/html/rfc2617#section-2, 14. lipnja 2015.

[10] URL Standard, 18. lipnja 2015., https://url.spec.whatwg.org/#application/x-www-

form-urlencoded, 19. lipnja 2015.

Page 36: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

32

SAŽETAK

Primjer temeljne arhitekture za izgradnju sustava Internet stvari

Ovaj rad opisuje implementaciju jednostavne arhitekture sustava Interneta stvari.

Najprije se opisuju komponente arhitekture. Komponente arhitekture su korisnička

aplikacija, servisu u oblaku, pristupnik i naprave. Zatim se opisuje aplikacijski protokol

koji naprave u sustavu koriste. Nakon toga opisuje se implementacija i komunikacija

komponenti sustava.

Ključne riječi: Internet stvari, adresiranje, servis u oblaku

SUMMARY

Title: Example of underlying architecture for Internet of Things

Summary

This thesis describes the implementation of a simple Internet of Things

architecture. At the beginning, components of the architecture are described. Components

of the system are user application, cloud service, gateway and devices. Following that, the

communication protocol used by smart devices in the system is explained. In the end,

implementation and communication of system components is described.

Keywords: Internet of Things, addressing, Cloud service

Page 37: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

33

PRIVITAK A: KORISNIČKO SUČELJE SERVISA U OBALKU

Tablica 1: Korisničko sučelje servisa u oblaku

Metoda GET

Putanja /DiplomskiRadCloud/users/devices

Ulazni podaci

Opis Dohvaća sve naprave u vlasništvu korisnika.

Primjer odgovora

[{"owner":"user1","name":"Klima","description":"Klima","id":2222},{"owner":"us

er1","name":"Termometar","description":"termometar","id":1111},{"owner":"us

er1","name":"Lock","description":"Brava","id":3333}]

Metoda GET

Putanja /DiplomskiRadCloud/users/device/{id}

Ulazni podaci id: identifikator naprave

Opis Dohvaća napravu ako je naprava u vlasništvu korisnika. Ukoliko korisnik nije

vlasnik naprave sa zadanim identifikatorom, status odgovora je 404.

Primjer odgovora {"owner":"nsekulic","name":"Klima","description":"Klima","id":2222}

Metoda DELETE

Putanja /DiplomskiRadCloud/users/device/{id}

Ulazni podaci Identifikator naprave.

Opis

Briše napravu ako je naprava u vlasništvu korisnika. Ukoliko je naprava

uspješno obrisana vraća status 204. Ukoliko naprava ne postoji ili nije u

vlasništvu korisnika vraća status 404.

Primjer odgovora

Metoda POST

Putanja /DiplomskiRadCloud/users/device

Ulazni podaci

id: identifikator naprave, name: ime naprave, description: opis naprave,

additional_data: dodatne inforamcije o napravi, address: adresa naprave,

port: port naprave, address_type: vrsta adrese, password: lozinka, data:

podatak, command: naredba

Opis Stvara novu napravu u bazi. Osim naprave u bazu upisuje: podatke koje

Page 38: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

34

naprava koristi, naredbe za upravljanje napravom, rw dozvole za korisnika i

upisane podatke. Ukoliko je naprava uspješno upisana u bazu vraća status

201. Obavezni parametri su id i name. Definicija podataka i naredbi se sastoji

od parametara data i command.

Format naredbe je <ime>:<tip naredbe>:<podatak>:<opis>

Primjer tijela zahtjeva:

id=111&name=primjer&description=primjerNaprave&password=pass1&data

=d1&data=d2&command=get:READ:d1:readsD1&command=set:WRITE:d2

:setsD2

Primjer odgovora {"owner":"user1","name":"Brava","id":3333}

Metoda POST

Putanja /DiplomskiRadCloud/users/device/{device_id}/gateway

Ulazni podaci device_id: identifikator naprave, gateway_id: identifikator pristupnika

Opis Pridružuje napravi pristupnik. U tablicu device_gateway stvara novi entitet s

predanim podacima. Vraća status 200 ako je pridruživanje uspješno izvedeno.

Primjer odgovora

Metoda DELETE

Putanja /DiplomskiRadCloud/users/device/{device_id}/gateway/{gateway_id}

Ulazni podaci device_id: identifikator naprave, gateway_id: identifikator pristupnika

Opis Iz tablice device_gateway briše entitet s predanim podacima. Ukoliko je

brisanje uspješno provedeno vraća status 204.

Primjer odgovora

Metoda GET

Putanja /DiplomskiRadCloud/users/gateways

Ulazni podaci

Opis Dohvaća pristupnike u vlasništvu korisnika.

Primjer odgovora

[{"owner":"nsekulic",":"Gateway1","description":"prvi_gateway","id":100},{"own

er":"nsekulic","name":"Gateway2","description":"drugi_gateway","id":101},{"o

wner":"nsekulic","name":"Gateway","description":"test gateway","id":9999}]

Page 39: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

35

Metoda GET

Putanja /DiplomskiRadCloud/users/gateways/{id}

Ulazni podaci id: identifikator pristupnika

Opis

Dohvaća pristupnik sa zadanim identifikatorom ako je pristupnik u vlasništvu

korisnika. Status odgovora je 200 ako pristupnik postoji. Ukoliko pristupnik

ne postoji ili nije u vlasništvu korisnika status odgovora je 404.

Primjer odgovora

[{"owner":"nsekulic",":"Gateway1","description":"prvi_gateway","id":100},{"own

er":"nsekulic","name":"Gateway2","description":"drugi_gateway","id":101},{"o

wner":"nsekulic","name":"Gateway","description":"test gateway","id":9999}]

Metoda DELETE

Putanja /DiplomskiRadCloud/users/gateways/{id}

Ulazni podaci id: identifikator pristupnika

Opis

Briše pristupnik sa zadanim identifikatorom ako je pristupnik u vlasništvu

korisnika. Status odgovora je 204 ako je pristupnik uspješno obrisan. Ako

pristupnik ne postoji ili nije u vlasništvu korisnika status odgovora je 404.

Primjer odgovora

Metoda POST

Putanja /DiplomskiRadCloud/users/gateways

Ulazni podaci

id: identifikator pristupnika, name: ime pristupnika, desciption: opis

pristupnika, password: lozinka pristupnika, additional_data: dodatni podaci,

address: adresa pristupnika, port: port pristupnika, address_type: tip adrese

Opis

Stvara novi pristupnik u bazi. Identifikator, ime, opis i lozinka su obvezni

podaci. Ako je pristupnik stvoren, status odgovora je 201. U tijelu odgovora

se nalazi stvoreni pristupnik.

Primjer odgovora {"owner":"nsekulic","address":"","addressType":"","name":"Pristupnik","descrip

tion":"test","id":987,"additionalData":""}

Metoda GET

Putanja /DiplomskiRadCloud/users/device/{id}/gateways

Ulazni podaci id: identifikator naprave

Opis Dohvaća sve pristupnike kojima je naprava pridružena.

Primjer odgovora [{"owner":"nsekulic","name":"Gateway","description":"test

Page 40: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

36

gateway","id":9999},{"owner":"nsekulic","name":"Pristupnik","description":"test

","id":987}]

Metoda GET

Putanja /DiplomskiRadCloud/users/data/{id}

Ulazni podaci id: identifikator podatka

Opis

Dohvaća opis podatka iz tablice data. Ukoliko korisnik nema dozvolu za

traženi podatak, status odgovora je 403. Ukoliko podatak ne postoji, status

odgovora je 404. Status uspješnog dohvaćanja je 200.

Primjer odgovora {"device_id":1111,"name":"temperature","id":54}

Metoda GET

Putanja /DiplomskiRadCloud/users/data/device

Ulazni podaci

Opis Dohvaća opis podataka iz tablice data za sve ureĎaje koji su u vlasništvu

korisnika. Status uspješnog dohvaćanja je 200.

Primjer odgovora

[{"device_id":1111,"name":"temperature","id":54},{"device_id":2222,"name":"d

esired_temp","id":72},{"device_id":2222,"name":"temp","id":73},{"device_id":2

222,"name":"started","id":74},{"device_id":3333,"name":"locked","id":80}]

Metoda GET

Putanja /DiplomskiRadCloud/users/data/device/{device_id}

Ulazni podaci device_id: identifikator naprave

Opis Dohvaća opis podataka iz tablice data za zadanu napravu. Status uspješnog

dohvaćanja je 200.

Primjer odgovora [{"device_id":2222,"name":"desired_temp","id":72},{"device_id":2222,"name":"

temp","id":73},{"device_id":2222,"name":"started","id":74}]

Metoda GET

Putanja /DiplomskiRadCloud/users/data/permission

Ulazni podaci

Opis Dohvaća opis podataka iz tablice data za sve podatke za koje korisnik ima

dozvolu dodijeljenu od drugog korisnika. Status uspješnog dohvaćanja je 200.

Page 41: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

37

Primjer odgovora [{"device_id":347,"name":"pressure","id":109},{"device_id":303,"name":"temp",

"id":220}]

Metoda GET

Putanja /DiplomskiRadCloud/users/data/role

Ulazni podaci

Opis

Dohvaća opis podataka iz tablice data za sve podatke za koje korisnikova

uloga ima dozvolu dodijeljenu od drugog korisnika. Status uspješnog

dohvaćanja je 200.

Primjer odgovora [{"device_id":347,"name":"pressure","id":109}]

Metoda GET

Putanja /DiplomskiRadCloud/users/data/{id}/{count}

Ulazni podaci id: identifikator opisa podatka, count: broj vrijednosti

Opis Dohvaća zadnjih n vrijednosti podatka iz tablice data_history. Broj

vrijednosti zadan je podatkom count.

Primjer odgovora

[{"data_id":44,"data_history_id":25,"value":"21","timestamp":"2015-04-12

16:05:06.000"},{"data_id":44,"data_history_id":24,"value":"22","timestamp":"2

015-04-12 15:05:06.000"},{"data_id":44,"data_history_id":23,"value":"22",

"timestamp":"2015-04-12 14:05:06.000"},{"data_id":44,"data_history_id":22,

"value":"23","timestamp":"2015-04-12 13:05:06.000"},{"data_id":44,

"data_history_id":21,"value":"24","timestamp":"2015-04-12 12:05:06.000"}]

Metoda GET

Putanja /DiplomskiRadCloud/users/data/{id}/commands

Ulazni podaci id: identifikator opisa podatka

Opis Dohvaća sve naredbe za zadani podatak iz tablice command.

Primjer odgovora

[{"command_id":63,"command_type":"READ","data_id":72,"description":"gets

desiredtemp","command":"get"},{"command_id":64,

"command_type":"WRITE","data_id":72,"description":"setsdesiredtemp","com

mand":"set"}]

Metoda GET

Putanja /DiplomskiRadCloud/users/granteduserspermissions

Page 42: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

38

Ulazni podaci

Opis Dohvaća sve dozvole koje je korisnik dodijelio drugim korisnicima.

Primjer odgovora [{"data":{"device_id":3333,"name":"locked","id":80},"id":84,"type":"r","user":{"u

sername":"nsekulic2"}}]

Metoda POST

Putanja /DiplomskiRadCloud/users/data/{id}/userpermission

Ulazni podaci id: identifikator podatka, username: korisničko ime, type: wrsta dozvole (r, w,

rw)

Opis

Dodaje korisniku dozvolu na odreĎeni podatak. Podatak je odreĎen

parametrom id, korisnik je odreĎene parametrom username, a vrsta dozvole

je odreĎena parametrom type. Ako podatak ne postoji, status odgovora je 404.

Ako ureĎaj s predanim podatkom nije u vlasništvu korisnika, status odgovora

je 403. Ako je zahtjev uspješno obraĎen, status odgovora je 200.

Primjer odgovora [{"data":{"device_id":3333,"name":"locked","id":80},"id":84,"type":"r","user":{"u

sername":"nsekulic2"}}]

Metoda DELETE

Putanja /DiplomskiRadCloud/users/datapermission/{id}

Ulazni podaci id: identifikator dozvole za odreĎeni podatak

Opis

Briše dozvolu koju je korisnik dodijelio drugom korisniku. Parametar id je

identifikator dozvole. Ukoliko je dozvola uspješno obrisana status odgovora

je 200.

Primjer odgovora DELETED

Metoda POST

Putanja /DiplomskiRadCloud/users/notification/email

Ulazni podaci email: adresa elektroničke pošte, userAgentId: identifikator aplikacije, dataId:

identifikator podatka, name: ime primatelja obavijesti

Opis

Dodaje novu adresu elektroničke pošte za primanje obavijesti. Ukoliko je

dodavanje uspješno izvršeno, status odgovora je 200. Podatak za koji se

obavijesti šalju je definiran ulaznim parametrom dataId. Parametar email je

adresa elektroničke pošte. Parametar userAgentId je identifikator korisničke

aplikacije koja izvršava zahtjev.

Primjer odgovora {"method":"[email protected]","data_id":72,"name":"test","id":26,"type

":"email","user_agent_id":35}

Metoda GET

Putanja /DiplomskiRadCloud/users/notification/email

Page 43: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

39

Ulazni podaci

Opis Dohvaća sve primatelje obavijesti koje je korisnik stvorio.

Primjer odgovora

[{"method":"[email protected]","data_id":81,"name":"nikola.sekulic","id":22

,"type":"email","user_agent_id":35},{"method":"[email protected]"

,"data_id":54,"name":"nikola.sekulic347","id":25,"type":"email","user_agent_id

":35},{"method":"[email protected]","data_id":72,"name":"test","id":26

,"type":"email","user_agent_id":35}]

Metoda DELETE

Putanja /DiplomskiRadCloud/users/notification/email/{id}

Ulazni podaci id: identifikator primatelja obavijesti

Opis Briše primatelja obavijesti. Primatelj obavijesti je odreĎen podatkom id.

Ukoliko je primatelj obavijesti uspješno obrisan, status odgovora je 200.

Primjer odgovora

Metoda POST

Putanja /DiplomskiRadCloud/users/command

Ulazni podaci command_id: identifikator naredbe, value: parametar naredbe

Opis

Generira naredbu za neki ureĎaj te je stavlja u sve redove pristupnika koji su

pridruženi ureĎaju kojem naredba pripada. Naredba je odreĎena parametrom

command_id. Ukoliko naredba treba neki parametar, on je definiran

parametrom value.

Primjer odgovora Message added to queue

Page 44: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

40

PRIVITAK B: ADMINISTRATORSKO SUČELJE SERVISA U

OBALKU

Tablica 2: Administratorsko sučelje servisa u oblaku

Metoda GET

Putanja /DiplomskiRadCloud/user

Ulazni podaci

Opis Dohvaća sve postojeće korisnike. Lozinke u odgovoru nisu prisutne, samo

korisnička imena i uloge.

Primjer odgovora

[{"role":"admin","username":"aplikacija"},{"username":"kknezevic"},{"usernam

e":"nsekulic"},{"username":"nsekulic2"},{"username":"nsekulic3"},{"username

":"test12"},{"username":"testuser"},{"role":"user","username":"user"},{"userna

me":"user12345"},{"username":"user2"}]

Metoda GET

Putanja /DiplomskiRadCloud/user/{username}

Ulazni podaci username: korisničko ime

Opis Dohvaća korisnika. Ako korisnik ne postoji status odgovora je 404.

Primjer odgovora {"role":"admin","username":"aplikacija"}

Metoda POST

Putanja /DiplomskiRadCloud/user/

Ulazni podaci username: korisničko ime, password: lozinka, role: uloga

Opis

Stvara novog korisnika. Parametar role nije obvezan. Ako korisnik već s

predanim korisničkim imenom već postoji status odgovora je 400. Ako

predana uloga ne postoji status odgovora je 400. Status odgovora je 201 ako

je korisnik uspješno stvoren.

Primjer odgovora {"username":"korisnik1"}

Metoda POST

Putanja /DiplomskiRadCloud/user/check

Ulazni podaci username: korisničko ime, password: lozinka

Opis Provjerava postoji li korisnik sa zadanim korisničkim imenom i lozinkom.

Ako korisnik postoji, odgovor je niz znakova true, u suprotnom false

Primjer odgovora false

Page 45: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

41

Metoda PUT

Putanja /DiplomskiRadCloud/user/{username}

Ulazni podaci username: korisničko ime, password: lozinka, role: uloga

Opis Ažurira postojećeg korisnika. Mijenja lozinku ili ulogu. Ukoliko je uloga

ima vrijednost null (niz znakova 'null'), briše korisniku ulogu.

Primjer odgovora {"role":"admin","username":"korisnik1111"}

Metoda DELETE

Putanja /DiplomskiRadCloud/user/{username}

Ulazni podaci username: korisničko ime

Opis Briše postojećeg korisnika. Status odgovora je 204 ako je korisnik uspješno

obrisan.

Primjer odgovora

Metoda GET

Putanja /DiplomskiRadCloud/role/{name}

Ulazni podaci name: ime uloge

Opis Dohvaća ulogu sa zadanim imenom. Status odgovora je 404 ako uloga ne

postoji.

Primjer odgovora {"name":"admin"}

Metoda GET

Putanja /DiplomskiRadCloud/role

Ulazni podaci

Opis Dohvaća sve postojeće uloge.

Primjer odgovora [{"name":"admin"},{"name":"role1"},{"name":"user"}]

Metoda POST

Putanja /DiplomskiRadCloud/role/

Ulazni podaci name: ime uloge

Opis Stvara novu ulogu. Status odgovor je 201 ako je uloga stvorena. Ako uloga

već postoji status odgovora je 500.

Primjer odgovora {"name":"student"}

Page 46: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

42

Metoda DELETE

Putanja /DiplomskiRadCloud/role/{name}

Ulazni podaci name: ime uloge

Opis Briše ulogu sa zadanim imenom. Status odgovora je 204.

Primjer odgovora

Metoda GET

Putanja /DiplomskiRadCloud/user_agent

Ulazni podaci

Opis Dohvaća sve korisničke agente za pristup servisu u oblaku.

Primjer odgovora

[{"name":"DiplomskiRadAplikacija","id":35,"type":"webapp","username":"nsek

ulic"},{"name":"DiplomskiRadAplikacija","id":39,"type":"webapp","username":"

kknezevic"}]

Metoda GET

Putanja /DiplomskiRadCloud/user_agent/{id}

Ulazni podaci id: identifikator korisničkog agenta

Opis Dohvaća korisničkog agenta sa zadanim identifikatorom.

Primjer odgovora {"name":"DiplomskiRadAplikacija","id":35,"type":"webapp","username":"nsek

ulic"}

Metoda POST

Putanja /DiplomskiRadCloud/user_agent/

Ulazni podaci name: ime korisničkog agent, type: vrsta korisničkog agenta,

additional_data: dodatni podaci, username: korisničko ime korisnika

Opis

Stvara novog agenta. Trebutno podržava vrsta korisničkog agenta je

webapp. Parametar additinal_datamora biti u formatu '(key:value)*'.

Npr. Ako su dodatni podaci ime aplikacije=WebAPP i adresa

aplikacije=localhost, parametar additional_data će biti:

ime:WebAPP;adresa:localhost;

Ako je agent uspješno stvoren, status odgovora je 201.

Primjer odgovora {"name":"WebAplikacija","id":43,"additionalData":"email:[email protected]

;","type":"webapp","username":"nsekulic"}

Metoda PUT

Page 47: Primjer temeljne arhitekture za izgradnju sustava Internet ... · 0x62 slovo b, oktet 0x63 slovo c, a okteti 0xc4 i 0x87 slovo ć. Na kraju je dodan još jedan oktet 0x00 kako bi

43

Putanja /DiplomskiRadCloud/user_agent/{id}

Ulazni podaci id: identifikator agenta, name: ime korisničkog agent, type: vrsta korisničkog

agenta, additional_data: dodatni podaci, username: korisničko ime korisnika

Opis

Ažurira postojećeg agenta sa zadanim identifikatorom. Ako je vrijednost

parametra additional_data null (niz znakova null), briše dodatne podatke.

Status uspješnog ažuriranja je 200.

Primjer

odgovora

{"name":"WebApp","id":43,"additionalData":"email:[email protected];","

type":"webapp","username":"nsekulic"}

Metoda DELETE

Putanja /DiplomskiRadCloud/user_agent/{id}

Ulazni podaci id: identifikator agenta

Opis Briše korisničkog agenta sa zadanim identifikatorom. Ako je agent obrisan,

vraća status 204.

Primjer odgovora