=$95â1, 5$' eu 835$9/-$1-( 679$5,0$ 35(.2 86/8*$ 8 2%/$.8 ... · $5+,7(.785$ ,17(51(7$ 679$5,...
TRANSCRIPT
SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
ZAVRŠNI RAD br. 5563
UPRAVLJANJE STVARIMA PREKO
USLUGA U OBLAKU ZA INTERNET
STVARI
Marta Posavec
Zagreb, lipanj 2018.
SVEUČILIŠTE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RAČUNARSTVAODBOR ZA ZAVRŠNI RAD MODULA
Zagreb, 14. ožujka 2018.
ZAVRŠNI ZADATAK br. 5563
Pristupnik:Studij:Modul:
Marta Posavec (0036492119)RačunarstvoProgramsko inženjerstvo i informacijski sustavi
Zadatak: Upravljanje stvarima preko usluga u oblaku za Internet stvari
Opis zadatka:
Istražiti dostupne usluge u oblaku za Internet stvari i mogućnosti upravljanja stvarima koje one nude. Sobzirom na svojstva i dostupnost, odabrati jednu uslugu i primjerima ispitati rad s tom uslugom.Razmotriti i po mogućnosti ostvariti spajanje stvari na odabranu uslugu, pohranu podataka koje jestvar poslala prema usluzi u oblaku, upravljanja sa stvari korištenjem postavki i ostalih mogućnostikoje usluga u oblaku pruža.
Zadatak uručen pristupniku: 16. ožujka 2018.Rok za predaju rada: 15. lipnja 2018.
Predsjednik odbora zazavršni rad modula:
. Mentor:
Doc. dr. sc. Leonardo Jelenković
Djelovođa: Izv. prof. dr. sc. Ivica Botički
Doc. dr. sc. Mirjana Domazet-Lošo
SADRŽAJ
1. UVOD .................................................................................................... 1
2. ARHITEKTURA INTERNETA STVARI ZASNOVANA NA USLUGAMA
U OBLAKU ........................................................................................... 2
2.1. Mreža uređaja ............................................................................. 2
2.2. Poveznik...................................................................................... 3
2.3. Usluge u oblaku ......................................................................... 4
3. SAMSUNG ARTIK ................................................................................ 6
3.1. Postavke uređaja u oblaku ........................................................ 6
3.2. Komunikacija uređaja s Artik uslugom u oblaku .................... 9
3.2.1. REST API ................................................................................. 9
3.2.2. WebSocket API ....................................................................... 9
3.3. Mogućnosti vezane za uređaje u Artik oblaku ....................... 10
4. PRIMJENA INTERNETA STVARI ...................................................... 14
4.1. Pametni domovi ....................................................................... 14
4.2. Nosive pametne stvari ............................................................. 15
4.3. Pametni gradovi ....................................................................... 15
4.4. Okoliš i vode ............................................................................. 16
4.5. Mjerenja..................................................................................... 16
4.6. Industrijska kontrola ................................................................ 17
4.7. Pametna vozila ......................................................................... 17
4.8. Sustavi za zdravstvo ................................................................ 18
4.9. Sustavi sigurnosti i kontrole hitnih stanja ............................. 19
4.10. Sustavi za trgovinu i opskrbni lanac ...................................... 19
4.11. Sustavi za poljoprivredu i uzgoj životinja .............................. 20
5. OSTVARENJE SUSTAVA .................................................................. 21
5.1. Slanje podataka sa senzora u Artik oblak preko poveznika . 21
5.1.1. Pokretanje računala Raspberry Pi 3 Model B .................... 21
5.1.2. Povezivanje senzora ............................................................ 22
5.1.3. Ostvarenje programske podrške......................................... 26
5.1.4. Konačni rezultat eksperimenta ........................................... 30
5.2. Programska simulacija interakcije dvaju uređaja preko Artik
usluge u oblaku ........................................................................ 31
5.2.1. Programsko ostvarenje ........................................................ 32
5.2.2. Konačni rezultat eksperimenta ........................................... 36
6. ZAKLJUČAK....................................................................................... 39
7. LITERATURA...................................................................................... 40
1
1. UVOD
Internet stvari (engl. Internet of Things – IoT) sustav je međusobno povezanih
pametnih uređaja i senzora diljem svijeta, a ujedno i jedno od najatraktivnijih
područja informatičke industrije današnjice. Pomoću sustava IoT, stvari koje
čovječanstvo svakodnevno koristi već stoljećima pretvaraju se u pametne uređaje
koji polako, ali sigurno, mijenjaju način života. Danas se sustav IoT koristi u području
zdravstva, kućanskim uređajima i građevinama, energetskim i proizvodnim tvrtkama
te prijevoznim sredstvima, a predviđa se da će do 2020. godine povezivati oko 26
do 28 milijardi pametnih stvari koje će pokrivati i mnoga druga područja, pa možda
čak i međusobno povezane stvarati cijele pametne gradove. U današnje je vrijeme
Internet, kao i mnoge sklopovske komponente i pametni uređaji, dostupan u gotovo
svim dijelovima svijeta, za povoljnu te konstantno padajuću cijenu, što otvara prostor
za eksponencijalni razvoj Interneta stvari.
Sustav Interneta stvari zahtijeva korištenje i upravljanje mnogim te ponekad
vrlo velikim podacima, što je gotovo nemoguće realizirati isključivo lokalnom
fizičkom memorijom. U tu se svrhu razvijaju sustavi IoT usluga u oblaku, koje uvelike
olakšavaju izradu IoT projekata te ih je svakim danom sve više. Obzirom na sve
veću popularnost područja Interneta stvari, odvija se velika marketinška borba za
poziciju najkvalitetnije platforme među tvrtkama proizvođačima usluga u oblaku,
među kojima su najveći Amazon, Google i Microsoft. Jedna od takvih platformi u
vlasništvu Samsunga jest Artik, koji nudi mnoge usluge i komponente potrebne za
izradu IoT projekata. Cilj ovog rada upravo je istražiti i prikazati usluge koje nudi
Samsung Artik u sklopu arhitekture Interneta stvari zasnovane na uslugama u
oblaku. Funkcionalnosti Artik usluge u oblaku bit će opisane u ovom radu te
prikazane kroz primjenu.
2
2. ARHITEKTURA INTERNETA STVARI ZASNOVANA NA
USLUGAMA U OBLAKU
Donedavno su mnoge tvrtke računalnu opremu za pohranu podataka
kupovale te, nešto davnije, iznajmljivale od velikih korporacija, vlade ili sveučilišta.
Međutim, kako su podaci postajali sve veći, postajalo je sve neophodnije osmisliti
novi način pohrane podataka, konkretno, usluge u oblaku. Oblak je velika mreža
međusobno povezanih poslužitelja, koja pruža mnoge usluge, pomoću kojih se
procesi, umjesto na samom uređaju, izvode „na Internet vezi“. Neki jednostavni te
svima poznati primjeri usluga u oblaku jesu Google Drive, Dropbox te Spotify, koji
pružaju usluge u osobne svrhe, kao što su pohrana podataka te slušanje glazbe.
Budući da se u sklopu Interneta stvari obrađuju mnogi veliki podaci, upravo
usluge u oblaku igraju veliku ulogu za razvoj sustava IoT. Senzori prikupljaju velik
broj informacija, koje se spremaju u oblak, gdje se zatim obrađuju te se donose
odluke na temelju tih informacija. S obzirom da se često koriste stotine, pa čak i
tisuće senzora, bilo bi besmisleno na svaki od njih pohranjivati informacije koje
kasnije treba koristiti u međuovisnosti. Upotrebom usluga u oblaku, svaki od tih
senzora svoje prikupljene podatke pohranjuje u oblak, tako da se automatski mogu
koristiti i uspoređivati. Upravo se u oblaku nalazi „mozak“ većine IoT projekata, dok
uređaji i senzori služe samo za prikupljanje informacija i obavljanje akcija.
Ukoliko se postavlja pitanje je li korištenje usluga u oblaku neophodno za
razvoj IoT projekata, odgovor je ne. No u tom se slučaju mora uzeti u obzir znatno
povećanje budžeta. Osim što je povoljno, korištenje usluga u oblaku ima mnoge
druge prednosti, kao što su produljene trajanja baterije uređaja i senzora, plaćanje
samo potrebnih usluga (tzv. pay-as-you-go model), sposobnost prikupljanja velike
količine podataka te sposobnost da bilo kakav uređaj s mogućnošću povezivanja na
Internet postane „pametna stvar“ [1].
Arhitektura Interneta stvari zasnovana na uslugama u oblaku sastoji se od tri
osnovne komponente: mreže uređaja, poveznik (engl. gateway) te usluga u oblaku.
2.1. Mreža uređaja
Jedna od tri osnovne komponente arhitekture Interneta stvari bazirane na
uslugama u oblaku jest skup međusobno povezanih uređaja, koji pomoću senzora
3
prikupljaju informacije te pomoću aktuatora obavljaju akcije u svojoj okolini, koji se
naziva bežičnom mrežom uređaja. Pojednostavljeno se može reći da ova
komponenta zapravo sadrži upravo te tzv. „stvari“ koje se cijelo vrijeme spominju
kroz izraz Internet stvari.
Obzirom da za međusobnu povezanost uređaja u mreži nije potrebna
kvalitetna i brza veza širokog dometa, u tu se svrhu mnoga sadašnja ostvarenja
oslanjaju na standard IEEE 802.15.4. Ovaj standard nudi takozvanu osobnu bežičnu
mrežu (engl. wireless personal area network – WPAN), koja pruža vezu na razini
fizičkog sloja te sloja podatkovne poveznice [2]. Veza koju definira standard IEEE
802.15.4 jest povoljna zbog svojih karakteristika, kao što su niska brzina prijenosa
podataka te mali domet [3].
Osim standarda IEEE 802.15.4., za povezivanje uređaja u mreži često se
koristi i Bluetooth koji koristi manje količine energije (engl. Bluetooth Low Energy –
BLE). Energetska učinkovitost BLE-a, koja dovodi i do dugotrajnijeg perioda
povezivanja, čini ga jednim od najpoželjnijih načina povezivanja u Internetu stvari
[9].
Na razini mrežnog sloja, povezanost uređaja unutar mreže najčešće se
realizira pomoću 6LoWPAN protokola (engl. IPv6 over Low power Wireless
Personal Area Networks protocol), koji je adaptacija Internet protokola verzije 6
(IPv6). Motivacija za stvaranje 6LoWPAN protokola bila je zamisao da bi svi, pa čak
i oni najslabiji te s ograničenim mogućnostima, uređaji trebali imati mogućnost
povezivanja na Internet, a time i sudjelovanja u Internetu stvari [4].
2.2. Poveznik
Komponenta arhitekture Interneta stvari zasnovane na uslugama u oblaku
koja povezuje ostale dvije komponente jest, kao što mu i samo ime govori, poveznik
(engl. gateway), koji može biti fizički uređaj ili program. Njegova je svrha prenijeti
podatke koje prikupljaju senzori iz mreže uređaja u oblak, te u suprotnom smjeru,
od oblaka prenijeti naredbu za obavljanje akcije do aktora.
U mnogim IoT sustavima, senzori prema oblaku ukupno šalju čak desetke
tisuća podataka u sekundi. U takvim slučajevima poveznik, osim što igra ulogu
privremenog spremnika podataka, također obavlja lokalno pretprocesiranje
informacija prije prosljeđivanja u oblak. Nakon analize i sažimanja primljenih
4
podataka, poveznik prosljeđuje prema oblaku podatke minimalnog potrebnog
opsega, što može uvelike ubrzati prijenos i obradu podataka.
Nadalje, još jedna veoma korisna uloga poveznika u arhitekturi Interneta
stvari baziranoj na uslugama u oblaku jest osiguravanje sigurnosti prijenosa
podataka. Obzirom da poveznik prosljeđuje podatke u oba smjera, on ne samo da
sprječava gubljene podataka koji se prenose od senzora do oblaka, nego i štiti
uređaje iz mreže od zlonamjernih vanjskih napada [5].
2.3. Usluge u oblaku
Podaci prikupljeni od strane senzora, preko poveznika dolaze do oblaka, koji
je zapravo „mozak“ cijelog sustava Interneta stvari. Osim što se tamo pohranjuju,
ono što je zapravo značajnije, podaci se u oblaku obrađuju pomoću unaprijed
određenih algoritama za obradu podataka. U osnovi, tim se algoritmima generiraju
naredbe, koje se zatim šalju natrag do aktora u mreži, koji na temelju tih naredbi
obavljaju određene akcije.
IoT platforme za usluge u oblaku sastoje se od više dijelova, od kojih svaki
obavlja određenu skupinu zadaća. Sastavnica koju valja prvu spomenuti jest
poveznica prema vanjskim uređajima, odnosno prema povezniku. Zadaće te
sastavnice su primanje informacija od strane poveznika, kao i prosljeđivanje
informacija koje sadrže naredbe za aktore. Primljene informacije pohranjuju se u
bazu podataka oblaka, koja također predstavlja jedan od sastavnih dijelova
platforme.
Neke od važnijih usluga u oblaku jesu upravljanje uređajima, analitika te
procesiranje podataka u akcije. Upravljanje uređajima odnosi se na osiguravanje
ispravnog rada povezanih stvari, bez obzira na moguća ažuriranja programske
podrške i tome slično. Provođenje kompleksnih algoritama analize podataka i
strojnog učenja te izlučivanje zaključaka nad informacijama korištenjem prediktivne
analize svrstava se pod analitiku. Procesiranje podataka vrši se na temelju unaprijed
definiranih pravila, koja ovise o stanju ili događaju vezanom za stvar ili njenu okolinu,
što u konačnici dovodi do akcije koja se prosljeđuje do aktora.
Jedna od vanjskom korisniku zanimljivijih usluga koje nudi IoT platforma jest
vizualizacija. Važnost ove usluge korisniku jest mogućnost preglednog prikaza
raznih uzoraka, trendova te razvoja stanja i događaja, vezanih za određenu
5
povezanu stvar ili više njih. Na posljetku, potrebna je sastavnica koja povezuje
različite protokole i tipove podataka u jednu smislenu programsku cjelinu te
omogućuje preciznu komunikaciju sa svim povezanim komponentama sustava [6].
Slika 2.1. Arhitektura Interneta stvari zasnovana na uslugama u oblaku [7]
6
3. SAMSUNG ARTIK
Kao i mnoge druge velike tehnološke tvrtke, Samsung je također, relativno
nedavno, distribuirao svoju verziju platforme za IoT usluge u oblaku. Prema
Samsungu, ova tzv. end-to-end platforma u pravom smislu tog izraza nudi sve
komponente potrebne za ostvarenje IoT projekata. Točnije, Artik kao platforma za
Internet stvari, ujedinjuje sklopovlje, programsku podršku, usluge u oblaku,
sigurnost te partnere ekosustava [8]. Osim usluga u oblaku, Samsung nudi i svoje
vlastite poveznike koji su prilagođeni za jednostavno povezivanje s Artik uslugom u
oblaku.
Samsung je počeo s oblikovanjem sustava usluga u oblaku, koji bi omogućio
brz prijenos velikih količina podataka u stvarnom vremenu, u svrhu komunikacije
uređaja u području zdravstva i medicine. Taj se oblak, koji se tada zvao SAMI, već
duže vrijeme koristi za Samsungov sustav za praćenje zdravlja kroz rekreaciju,
prehranu i slično (engl. Samsung Health). Međutim, ubrzo se pokazalo da je taj
projekt na dobrom putu za ostvarenje i IoT projekata. Stoga je Samsung najavio
Artik sklopovske komponente, koje bi, između ostalog, omogućile povezivanje stvari
sa SAMI oblakom. Danas su sklopovske komponente Artika i SAMI usluge u oblaku,
koje su preimenovane u Artik usluge u oblaku, sjedinjene u platformu koja obuhvaća
sve potrebne komponente za Internet stvari te se naziva Artik [10].
Artik usluga u oblaku osmišljena je tako da može komunicirati s mnogim IoT
poslužiteljima te primati podatke za pohranu od uređaja treće strane. Takav je
pristup omogućen dopuštanjem razvojnim programerima da grade opise uređaja i
podataka, koji sadrže pravila i naredbe, iz temeljnih predložaka. Nakon što se
podaci poslani sa senzora pohrane u Artik oblak, na temelju njih se definirana
pravila i naredbe šalju od Artika k uređajima aktorima. Artik usluga u oblaku uvelike
će uštedjeti vrijeme razvojnih programera, obzirom da se zamoran posao analize i
upravljanja podacima prebacuje na platformu, koja je napravljena upravo da radi
ono što mnoge aplikacije zahtijevaju [11].
3.1. Postavke uređaja u oblaku
Za postavljanje uređaja kroz usluge u oblaku koje nudi Artik platforma,
potrebno je imati Artik račun, koji je besplatan. Nakon registracije, na poveznici
7
https://developer.artik.cloud/ potrebno je stvoriti novi tip uređaja. Pri stvaranju novog
tipa uređaja, potrebno je unijeti naziv koji će se prikazivati te jedinstveni naziv tipa
uređaja (slika 3.1.).
Slika 3.1. Stvaranje novog tipa uređaja u Artik oblaku
Nakon što se stvori novi tip uređaja, potrebno je stvoriti manifest za taj tip
uređaja. Stvaranje manifesta uključuje definiranje podataka koje će oblak primati od
definiranog tipa uređaja te akcija koje će se iz oblaka slati k uređaju da ih obavi.
Manifest se može preuzeti u JSON obliku, a može se i ažurirati uvozom nove JSON
datoteke (slika 3.2.).
Slika 3.2. Manifest stvorenog tipa uređaja za projekt
Nakon stvaranja tipa uređaja i njegovog manifesta, potrebno je stvoriti novi
uređaj tog tipa, što se radi na poveznici https://my.artik.cloud/devices/new. Kod
stvaranja novog uređaja, prvi je korak odabir tipa uređaja (slika 3.3.).
8
Slika 3.3. Odabir tipa uređaja pri stvaranju novog uređaja u Artik oblaku
Nakon odabira tipa uređaja, potrebno je unijeti ime uređaja i potvrditi unos.
Time je uređaj stvoren te se mogu pogledati njegovi podaci, prikazani na slici 3.4.,
pomoću kojih će se kasnije omogućiti povezivanje fizičkog uređaja s postavljenim
uređajem u Artik oblaku.
Slika 3.4. Pregled podataka o uređaju u Artik oblaku
Važan podatak za daljnji rad s postavljenim uređajem jest ID uređaja, koji se
može iščitati u podacima o uređaju, prikazanima na slici 3.4. Osim ID-ja uređaja,
bitan je i token uređaja, koji je potrebno generirati. Token uređaja generira se klikom
na „Generate Device Token…“, što je vidljivo na slici 3.4.
9
3.2. Komunikacija uređaja s Artik uslugom u oblaku
Komunikacija uređaja s Artik uslugom u oblaku ostvaruje se korištenjem
jednog od dva aplikacijska programska sučelja (engl. Application Programming
Interface – API), REST API ili WebSocket API.
3.2.1. REST API
REST (engl. Representational State Transfer) API Artik usluge u oblaku
temelji se na protokolu HTTP (engl. HyperText Transfer Protocol), odnosno
njegovim zahtjevima GET, POST, PUT i DELETE. Komunikacija putem REST API
sučelja služi za razmjenu povijesnih, već pohranjenih podataka u oblaku na temelju
određene vremenske oznake (engl. timestamp) ili vremenskog intervala. Ovaj se
način komunikacije uglavnom koristi u analitičke svrhe. Također, putem REST API
sučelja moguće je poslati akcije u oblak na uređaj koji te akcije treba obaviti.
3.2.2. WebSocket API
Drugi način komunikacije uređaja s Artik uslugom u oblaku jest putem
WebSocket API sučelja. Takozvani prijenos uživo (engl. live-streaming) putem
WebSocket API sučelja, omogućava razmjenu podataka i akcija između uređaja i
oblaka u stvarnom vremenu (engl. real-time). Postoje tri vrste WebSocket-a koje se
koriste pri komunikaciji s Artik oblakom.
Prva od njih je Firehose WebSocket, koji koriste aplikacije koje služe za
kontrolu konekcije. Ova komunikacija je jednosmjerna te radi na principu
osluškivanja poruka u stvarnom vremenu. Primjer takve poruke je ping, koji Artik
usluga u oblaku šalje prema WebSocket klijentu svakih 30 sekundi radi kontrole
konekcije. Ukoliko ping ne pristigne klijentu, on se mora iznova povezati s oblakom.
Druga vrsta WebSocketa jest Event Feed WebSocket, koji služi za slanje
informacija o događajima vezanim za uređaje te također radi na principu
jednosmjerne komunikacije. Neki primjeri takvih događaja su stvaranje novog
uređaja, uspješno povezivanje uređaja, brisanje uređaja i slično.
Treća vrsta WebSocketa jest Device Channel WebSocket. Ovaj WebSocket,
za razliku od prethodna dva, služi za dvosmjernu komunikaciju između uređaja i
Artik oblaka. Pomoću njega izmjenjuju se poruke o registraciji, koja se mora obaviti
10
nakon stvaranja konekcije, te sve ostale poruke koje sadrže mjerene podatke ili
akcije. Poruke se mogu izmjenjivati s Artik uslugom u oblaku ili s drugim uređajem,
ukoliko se u poruci šalju akcije. U slučaju slanja poruke drugom uređaju, potrebno
je definirati ID odredišnog uređaja u poruci [26].
3.3. Mogućnosti vezane za uređaje u Artik oblaku
Nakon postavljanja uređaja, postoje razne mogućnosti koje Artik nudi za rad
s tim uređajima. Na web stranici oblaka svakog pojedinog korisnika Artik usluge u
oblaku postoje kartice „Devices“, „Scenes“, „Rules“, „Charts“, „Data Logs“ te
„Exports“.
Na kartici „Devices“ mogu se vidjeti svi uređaji postavljeni od strane tog
korisnika te dodatni podaci o tim uređajima, moguće je poslati akciju na neki od tih
uređaja, ukoliko su akcije definirane manifestom tog uređaja, te stvoriti novi uređaj.
Opisane mogućnosti kartice „Devices“ prikazane su na slici 3.5.
Slika 3.5. Kartica „Devices“
Kartica „Scenes“, prikazana na slici 3.6., služi za rad sa scenama. Scene u
sklopu Artik usluge u oblaku zapravo su skupine akcija koje se šalju na jedan ili više
uređaja kad je ta scena aktivna. Definiranje scene zamjenjuje definiranje mnogih
kompleksnih pravila, koja će biti opisana kasnije, te time posao programera čini
puno jednostavnijim. Primjer korištenja scene jest kad osoba dođe kući, da se obave
akcije paljenja svjetala, postavljanje termostata na 22°C te otključavanje vrata. S
druge strane, kad osoba odlazi od kuće, potrebno je obaviti akcije gašenja svjetala,
postavljanja termostata na 18°C te zaključavanja vrata. Ovo su primjeri dvije scene,
koje upravljaju s tri uređaja odjednom, što je puno jednostavnije nego za svaki od
11
tih uređaja definirati novo pravilo. Scene se aktiviraju slanjem HTTP zahtjeva POST
[27].
Slika 3.6. Kartica „Scenes“
Na kartici „Rules“, prikazanoj na slici 3.7., moguće je upravljati s maloprije
spomenutim pravilima. Pravila se u Artik oblaku definiraju u obliku ako vrijedi uvjet
vezan za polje nekog uređaja, onda pošalji akciju na uređaj. Uvjet i akcija ne moraju,
te najčešće i nisu vezani za isti uređaj. Također, u jednom je pravilu moguće
definirati više uvjeta te više akcija. „Ako je temperatura veća od 30°C, onda upali
klima uređaj“ je primjer pravila, u kojem je „temperatura“ polje uređaja termometar,
a „upali“ akcija manifesta klima uređaja. Razlika između pravila i scena jest način
aktiviranja, točnije, scene se aktiviraju putem HTTP zahtjeva te ne ovise o poljima
uređaja, dok se pravila aktiviraju upravo primitkom poruke s podacima koji
odgovaraju uvjetu pravila.
Slika 3.7. Kartica „Rules“
12
Na kartici „Charts“ moguće je u grafičkom obliku pogledati stanje svih polja
postavljenih uređaja u ovisnosti o vremenu. Što se tiče vremenske trake, postoje
opcije za odabir točaka u vremenu početka i kraja intervala koji se želi pratiti, odabir
duljine vremenskog perioda za prikaz te ručnog zumiranja tog perioda. Pomoću ovih
opcija moguće je pogledati snimljene podatke za bilo koji vremenski interval i
vremensku točku. Sve opisane komponente kartice „Charts“ prikazane su na
slici 3.8.
Slika 3.8. Kartica „Charts“
Kartica „Data Logs“ služi za pregled svih primljenih poruka s podacima te
poslanih poruka s akcijama. Za svaku poruku s podacima moguće je vidjeti o kojem
se uređaju radi, točnu vremensku točku snimanja podataka te primanja podataka u
oblak te snimljene podatke, a za svaku poruku s akcijom moguće je vidjeti odredišni
te izvorišni uređaj, vremensku točku kad je poruka poslana, naziv akcije te
parametre akcije ukoliko postoje. Prikaz poruka moguće je filtrirati po datumu i
vremenu te odabirom uređaja za koji se žele pogledati poruke. Slika 3.9. prikazuje
listu poruka koje sadrže akcije na kartici „Data Logs“.
13
Slika 3.9. Pregled poruka s akcijama na kartici „Data Logs“
Konačno, kartica „Exports“, prikazana na slici 3.10., služi za izvoz podataka
te pregled prošlih izvoza. Podaci se mogu izvesti u JSON ili CSV obliku. Moguće je
izvesti sve snimljene podatke, iz intervala od maksimalno 30 dana, sa svih uređaja
ili s odabranih tipova uređaja. Također, opcija za izvoz podataka postoji na
karticama „Charts“ te „Data Logs“.
Slika 3.10. Kartica „Exports“
14
4. PRIMJENA INTERNETA STVARI
Internet stvari primjenjuje se svakim danom u sve više i više područja života
i svijeta. Primjeri stvari u sklopu Interneta stvari sežu od najosnovnijih stvari poput
pametnih olovki ili odjeće, pa sve do kompleksnih sustava kao što su čitavi pametni
gradovi [12]. Slika 4.1. grafički prikazuje popularnost različitih područja primjene
Interneta stvari.
Slika 4.1. Deset najpopularnijih područja primjene Interneta stvari [16]
4.1. Pametni domovi
Najraširenije, a ujedno i mnogima jedno od najatraktivnijih, područje primjene
Interneta stvari jest automatizacija kućanskih poslova i aktivnosti (slika 4.2.). Neke
primjene u ovom području su praćenje potrošnje vode i energije radi racionalizacije
resursa i smanjenja troškova, kontrola otvaranja vrata i prozora, kao sustav
sigurnosti te očuvanje umjetnina i dobara praćenjem u muzejima i skladištima
umjetnina. Najpopularnija primjena Interneta stvari u domovima jest daljinsko ili
glasovno upravljanje uređajima i prekidačima. Neki primjeri toga su zvučno
upravljanje osvjetljenjem, glasovno otvaranje ili zatvaranje vrata, upravljanje
uređajima preko mobilnih aplikacija i slično.
15
Slika 4.2. Primjena Interneta stvari u domovima [13]
4.2. Nosive pametne stvari
Pametna odjeća i modni dodaci također su veoma popularna primjena
Interneta stvari. Danas je primjena Interneta stvari u ovom području dosta raširena
u obliku dodataka poput satova i narukvica, za što su primjeri svima dobro poznati
Samsung i Apple pametni satovi. Osim pametnih satova, često se mogu vidjeti i
pametne narukvice koje služe kao sredstvo plaćanja te ulaznice u mnogim
zabavnim parkovima, na festivalima i slično.
S druge strane, pametna odjeća nije još razvijena u svijetu kao što su pametni
modni dodaci, ali za budućnost se nagoviješta da će sva odjeća u sebi sadržavati
senzore koji će mjeriti tlak, puls, temperaturu tijela, potrošnju kalorija i mnoge druge
stvari.
4.3. Pametni gradovi
Jedna od najatraktivnijih primjena Interneta stvari jesu, općenito, pametni
gradovi (slika 4.3.). Unutar ove kategorije primjene Interneta stvari, mogu se izdvojiti
mnogi primjeri. Neki od njih su praćenje slobodnih parkirnih mjesta u gradu,
praćenje kvalitete strukture zgrada, mostova i drugih građevina, praćenje prometa
vozila i pješaka te izvanrednih situacija u prometu radi optimizacije puta, upravljanje
16
uličnom rasvjetom obzirom na duljinu dana i osvjetljenje koje ovisi o Suncu i
oblacima te upravljanje otpadom i praćenje količine otpada radi optimizacije rute
komunalnih vozila.
Slika 4.3. Primjena Interneta stvari u pametnom gradu [15]
4.4. Okoliš i vode
Jedno od vrlo bitnih područja primjene Interneta stvari jest okoliš. U sustav
pametnog okoliša ubraja se detekcija šumskih požara, točnije, praćenje plinova
izgaranja i uvjeta za nastajanje požara u svrhu definiranja zona upozorenja. Zatim,
kontrola emisije stakleničkih i ostalih štetnih plinova, praćenje razine snijega u
preventivne svrhe, ali i svrhe skijaškog turizma, kontrola i sprječavanje lavina putem
praćenja vibracija, vlažnosti tla i gustoće zemlje te ranija detekcija potresa.
U područje okoliša mogu se ubrojiti i „pametne vode“. Primjena Interneta
stvari u vodama očituje se u praćenju kemijskih i otpadnih tvorničkih istjecanja u
rijeke i mora, kontroli razine zagađenja mora te praćenju razine vode. Također, kad
se govori o „pametnim vodama“, može se spomenuti i praćenje pitkosti gradske
vode iz slavine te daljinsko upravljanje uvjetima bazena.
4.5. Mjerenja
Mjerenje mnogih, ne tako jednostavno izmjerivih, fizičkih veličina danas se
obavlja primjenom Interneta stvari. Neki primjeri toga su praćenje i upravljanje
potrošnjom energije, mjerenje razine vode, ulja ili plinova u spremnicima i
17
cisternama, mjerenje tlaka vode u sustavima za transport vode te mjerenje težine,
odnosno razine popunjenosti silosa.
4.6. Industrijska kontrola
Jedno od najraširenijih područja primjene Interneta stvari jest, svakako,
industrija. Unutar ovog područja mogu se nabrojati mnogi primjeri korištenja
Interneta stvari. Neki od njih su automatska dijagnostika strojeva i kontrola imovine,
praćenje razina toksičnih plinova i kisika unutar kemijskih postrojenja radi sigurnosti
radnika i robe, kontrola temperature unutar industrijskih i medicinskih hladnjaka i
zamrzivača u kojima se čuva osjetljiva roba, praćenje stanja ozona tijekom procesa
sušenja mesa u tvornicama hrane te automatska dijagnostika vozila, točnije, slanje
upozorenja u hitnim situacijama ili savjeta vozačima u stvarnom vremenu.
4.7. Pametna vozila
Iako još nije tako razvijeno kao neka druga područja, i pametna se vozila
razvijaju kao jedno od područja primjene Interneta stvari (slika 4.4.). Ovo funkcionira
na način da vozilo ima ugrađene senzore za praćenje prometa i stanja na cestama
te za komunikaciju s centrom za cestovnu kontrolu. Osim toga, vozilo ima i ugrađene
sustave za dijagnostiku
Slika 4.4. Primjena Interneta stvari u pametnim vozilima [14]
18
4.8. Sustavi za zdravstvo
IoT zdravstvo može se podijeliti u dvije kategorije primjene: kliničke primjene
i daljinsko praćenje. Primjena Interneta stvari u klinikama u principu pomaže pri njezi
hospitaliziranih pacijenata koji zahtijevaju stalnu pažnju (slika 4.5.). Takvi sustavi u
bolnicama sadrže senzore za prikupljanje informacija o fiziološkom stanju pacijenta
koje se pohranjuju i obrađuju u oblaku te se bežično prosljeđuju liječnicima i
njegovateljima Svrha takvih kliničkih IoT sustava jest stalni protok informacija o
stanju pacijenta, koji zamjenjuje potrebu za stalnom prisutnošću njegovatelja.
Slika 4.5. Primjena Interneta stvari u klinikama [13]
S druge strane, sustavi za daljinsko praćenje, osim što koriste za trenutno
tretiranje osoba koje se ne nalaze u bolnici, također se koriste i za stalnu njegu i
nadziranje starijih, nemoćnih ili drugih potrebitih osoba (slika 4.6.). Neki primjeri toga
su detekcija padova te praćenje vitalnih znakova. Također, kad se govori o zdravlju
u sklopu Interneta stvari, valja spomenuti i sustave za mjerenje UV zračenja koji
upozoravaju na pažnju kod izlaganja Suncu.
19
Slika 4.6. Primjena Interneta stvari u daljinskom praćenju zdravlja [13]
4.9. Sustavi sigurnosti i kontrole hitnih stanja
Još jedno, mnogima veoma zanimljivo, područje primjene Interneta stvari,
jesu sustavi sigurnosti i kontrole hitnih stanja. Kontrola pristupa ograničenim
područjima te otkrivanje osoba na područjima zabranjenog pristupa primjeri su
korištenja Interneta stvari u svrhe sigurnosnih sustava. Što se tiče sustava za
otkrivanje i kontrolu hitnih stanja, neki od primjera su mjerenje razina zračenja u
okolici nuklearnih elektrana radi detekcije curenja te mjerenje razina eksplozivnih i
opasnih plinova u industrijskim sredinama te u rudnicima.
4.10. Sustavi za trgovinu i opskrbni lanac
Trgovački sektor svima je dobro poznato područje, a ujedno i jedno od
područja primjene Interneta stvari. U sustav pametne trgovine mogu se ubrojiti
praćenje stanja skladišta i proizvoda duž opskrbnog lanca te obrada plaćanja koja
se temelji na lokaciji ili vremenskom intervalu, što se koristi u sustavima javnog
prijevoza, teretana, tematskih parkova i slično. Također postoje pametne aplikacije
koje prilagođavaju izbor proizvoda kupcu analizom njegovih navika, preferencija i
alergijskih sastojaka ili obzirom na rok trajanja te pametno upravljanje proizvodima
kontrolom rotacije proizvoda na policama te u skladištima u svrhu automatizacije
procesa punjenja.
20
Što se tiče opskrbnog lanca, kao primjeri korištenja Interneta stvari, valja
spomenuti lociranje individualnih predmeta na velikim područjima kao što su
skladišta ili luke te kontrola nekompatibilne robe, točnije, sustav upozorenja u
slučajevima skladišta u kojima je skladištena i lako zapaljiva i eksplozivna roba. Što
se tiče prijevoza robe, Internet stvari služi u svrhe kontrole ruta pri prijevozu
osjetljivih proizvoda poput lijekova, dragulja, novca ili nekih opasnih predmeta.
4.11. Sustavi za poljoprivredu i uzgoj životinja
Jedno od širokih područja primjene Interneta stvari jest poljoprivreda. U
sustave pametne poljoprivrede mogu se ubrojiti praćenje vlažnosti tla i promjera
debla u vinogradima radi kontrole kvalitete vina, kontrola mikroklime u staklenicima
radi optimizacije uvjeta za proizvodnju voća i povrća, selektivno navodnjavanje
suhih zelenih površina radi smanjenja potrošnje vode, praćenje meteoroloških
uvjeta u poljima radi osiguranja od nepogodnih uvjeta te praćenje vlažnosti i
temperature u raznim biljkama ili sjenu radi sprječavanja razvoja gljivica ili drugih
zaraznih mikroorganizama.
Kao i u poljoprivredi, Internet stvari koristi se i pri uzgoju životinja. Neki
primjeri toga su kontrola uvjeta rasta i razvoja mladunčeta životinja kako bi se
osiguralo njihovo zdravlje, lociranje i identifikacija životinja kada su puštene na
velike otvorene prostore, poput pašnjaka, ili u velikim štalama te kontrola ventilacije
i kvalitete zraka na farmama i otkrivanje štetnih plinova iz izmeta.
21
5. OSTVARENJE SUSTAVA
Dio mogućnosti koje nudi Samsung Artik za izradu IoT projekata bit će
prikazan kroz ostvarenje dvaju primjera. Prvi primjer izveden je pomoću senzora
DHT11, koji mjeri temperaturu i vlažnost te senzora BMP180, koji mjeri tlak zraka,
računala Raspberry Pi 3 Model B kao poveznika u sustavu te Artik platforme za
usluge u oblaku. Ovim se primjerom demonstrira slanje podataka sa senzora u
oblak, preko poveznika.
Drugi je primjer programska simulacija interakcije uređaja, odnosno pametnih
stvari, s Artik uslugom u oblaku. Stoga u ovom primjeru ne sudjeluju fizički senzori,
stvari niti poveznik, već se njihove uloge realiziraju programskom simulacijom. IoT
sustav koji se demonstrira ovim primjerom sastoji se od mikrofona, putem kojeg se
daju naredbe i pametnih vrata, kojima se upravlja naredbama poslanih od strane
mikrofona. Cilj ovog primjera jest demonstracija obostrane interakcije uređaja i Artik
usluge u oblaku.
5.1. Slanje podataka sa senzora u Artik oblak preko poveznika
Prvi primjer ostvarenja sustava korištenjem Artik usluge u oblaku sastoji se
od slanja podataka o temperaturi, vlažnosti i tlaku zraka sa senzora, preko računala
Raspberry Pi, pa do Artik oblaka. Za ostvarenje ovog projekta potrebno je postaviti
uređaj u oblaku, postupkom opisanim u poglavlju 3.1. Za svrhe ovog primjera,
manifest koji opisuje postavljeni uređaj sadrži tri polja te ne sadrži akcije koje bi se
slale iz oblaka prema stvari. Polja manifesta su temperatura zraka, čija je mjerna
jedinica stupanj Celzijus, vlažnost zraka, koja se mjeri u postotcima, te tlak zraka,
čija je mjerna jedinica Pascal. Sva tri polja su u obliku decimalnog broja, odnosno
tipa podataka Double.
5.1.1. Pokretanje računala Raspberry Pi 3 Model B
Jedan od najpopularnijih uređaja koji se koriste kao poveznici u arhitekturi
Interneta stvari zasnovanoj na uslugama u oblaku jest takozvano računalo na jednoj
ploči (engl. single-board computer), Raspberry Pi. Najnoviji model računala
Raspberry Pi jest Raspberry Pi 3 Model B+, a u ovom se radu koristi model
Raspberry Pi 3 Model B, prikazan na slici 5.5. Ovaj model koristi procesor Quad
22
Core 1.2GHz Broadcom BCM2837 64bit, ima RAM veličine 1GB, podržava WiFI,
Bluetooth Low Energy te 100 Mbit/s Ethernet, sadrži prošireni ulaz/izlaz opće
namjene (engl. General-Purpose Input/Output – GPIO) od 40 pinova, 4 USB 2 utora,
HDMI utor i utor za Micro SD memorijsku karticu te neka druga sučelja.
Slika 5.5. Raspberry Pi 3 Model B – komponente i specifikacije [17]
Drugi korak izrade ovog projekta bio je pokrenuti poveznik sustava,
Raspberry Pi. Za to je, osim samog računala, potrebna Micro SD memorijska
kartica, Micro USB izvor struje, USB tipkovnica, USB miš, monitor te HDMI kabel.
Nakon povezivanja svih navedenih komponenti i pokretanja strujnog kruga,
instalacija operacijskog sustava Raspbian 9 se automatski pokreće. Ovaj
operacijski sustav dolazi s programskim jezicima Python 2.x, Python 3.x, Node.js,
Java, Scratch i još nekima.
5.1.2. Povezivanje senzora
U ovom se projektu koriste dva senzora, DHT11 te BMP180. Oba senzora
spadaju među jeftinije i manje preciznije senzore, prilagođene za privatne uporabe
i jednostavne eksperimente poput ovog. Senzori se vrlo jednostavno preko
eksperimentalne pločice povezuju na pinove proširenog GPIO-a računala
Raspberry Pi, koje su prikazane na slici 5.6. Upravo ih njihova povoljnost te
23
jednostavnost korištenja čine vrlo popularnima među programerima koji razvijaju
IoT projekte.
Slika 5.6. Pinovi proširenog GPIO-a Raspberry Pi 3 Model B računala [18]
5.1.2.1. Senzor DHT11
DHT11 je digitalni senzor koji proizvodi ispravljeni digitalni signal temperature
te vlažnosti zraka. Senzor ima negativni temperaturni koeficijent (engl. Negative
Temperature Coefficient - NTC) za mjerenje temperature te 8-bitni mikrokontroler
za generiranje vrijednosti temperature i vlažnosti kao serijskih podataka [20]. Senzor
mjeri temperaturu na intervalu vrijednosti od 0°C do 50°C, s preciznošću od ±2°C,
a vlažnost mjeri u rasponu od 20% do 80%, s preciznošću od 5%. Također,
proizvođači napominju kako se intervali očitanja mjerenja moraju ograničiti na
barem svake dvije sekunde, jer bi u suprotnom moglo doći do pogrešnog očitanja
[21].
24
Senzor DHT11 ima četiri pina, ali se jedan od njih ne koristi. Senzor se može
nabaviti u izvornom obliku ili kao dio sklopa s tri pina (slika 5.7.). Pinovi senzora
DHT11 koje se koriste su pin za napajanje (VCC (+)), pin za izvor signala podataka
te pin za uzemljenje. U ovom se projektu senzor koristi u izvornom obliku, odnosno
s četiri pina.
Slika 5.7. Senzor DHT11 u sklopu modula s tri pina te u izvornom obliku [19]
U slučaju korištenja senzora DHT11 u izvornom obliku, između pina za
napajanje i pina za izvor signala podataka potrebno je spojiti otpornik od 10kΩ, dok
je na sklopu s tri pina taj otpornik već spojen. Način na koji su pinovi senzora DHT11
povezani s pinovima računala Raspberry Pi 3 u ovom eksperimentu prikazan je
tablicom 5.1 te shemom na slici 5.8.
Tablica 5.1. Način povezivanja pinova senzora DHT11 s pinovima računala Raspberry Pi
Pin senzora DHT11 Pin računala Raspberry Pi 3
1 (napajanje - VCC (+)) 2 (izvor od 5V)
2 (izvor signala podataka) 7 (GPIO 4)
3 (ne koristi se) -
4 (uzemljenje (-)) 6 (uzemljenje)
25
Slika 5.8. Shema povezivanja senzora DHT11 s računalom Raspberry Pi 3 [19]
5.1.2.2. Senzor BMP180
Senzor BMP180 jedan je od najboljih izbora među povoljnim senzorima za
relativno precizno mjerenje tlaka i temperature (slika 5.9.). Pomoću činjenice da se
tlak zraka mijenja promjenom nadmorske visine, senzor BMP180, osim temperature
i tlaka, mjeri i nadmorsku visinu. Obzirom da se u svrhe mjerenja temperature u
ovom projektu koristi senzor DHT11, od podataka koje mjeri senzor BPM180 koristi
se samo tlak zraka. Senzor BMP180, proizveden od strane Boscha, nasljednik je
senzora BMP085 te ima ista programska svojstva, što programerima uvelike
olakšava prilagodbu sa senzora BMP085 na BMP180. Senzor se nalazi na tiskanoj
pločici s regulatorom od 3.3V, I2C mjenjačem razina te otpornicima na I2C pinovima.
Za komunikaciju ovog senzora s računalom Raspberry Pi koristi se I2C sabirnica.,
koja se uvelike koristi za povezivanje integriranih krugova manjih brzina s
procesorima i mikrokontrolerima pri komunikaciji na maloj udaljenosti [22].
Slika 5.9. Senzor BMP180 [24]
26
Senzor BMP180 ima četiri pina: pin za napajanje (VCC (+)), pin za uzemljenje
te dva I2C pina: podatkovni (engl. Serial Data - SDA) i vremenski (engl. Serial Clock
– SCL) [23].
Način na koji su pinovi senzora BMP180 povezani s pinovima računala
Raspberry Pi 3 u ovom eksperimentu prikazan je tablicom 5.2. te shemom na
slici 5.10.
Tablica 5.2. Način povezivanja pinova senzora BMP180 s pinovima računala Raspberry
Pi 3
Pin senzora BMP180 Pin računala Raspberry Pi 3
1 (napajanje - VCC (+)) 1 (izvor od 3.3V)
2 (uzemljenje) 14 (uzemljenje)
3 (SCL) 5 (GPIO 3 - SCL)
4 (SDA) 3 (GPIO 2 - SDA)
Slika 5.10. Shema povezivanja senzora BMP180 s računalom Raspberry Pi 3 [25]
5.1.3. Ostvarenje programske podrške
U ovom je primjeru, nakon definiranja postavki uređaja u oblaku, pokretanja
poveznika Raspberry Pi te fizičkog povezivanja senzora s poveznikom, potrebno
programski ostvariti preuzimanje podataka sa senzora na poveznik, povezivanje
27
poveznika s Artik uslugom u oblaku te slanje podataka s poveznika u oblak. Sav
programski kod u ovom primjeru napisan je u programskom jeziku Python.
5.1.3.1. Preuzimanje podataka sa senzora
Prvi je korak preuzimanje podataka sa senzora DHT11 te BMP180. Ovaj je
dio ostvaren pomoću gotovih Python Adafruit biblioteka upravo za rad s navedenim
senzorima. Obzirom da neke od tih biblioteka nisu prilagođene za Python verzije
3.x, ovaj se dio programskog ostvarenja pokreće kao Python 2.7.13 program.
Adafruit Industries jest tvrtka koja proizvodi niz elektroničkih proizvoda te nudi brojne
izvore učenja, biblioteke i kodove iz područja elektroničkih uređaja i njihove primjene
među kojima su i biblioteke korištene u ovom radu.
Za očitanje podataka koje mjeri senzor DHT11 koristi se Python biblioteka
Adafruit DHT: Ova biblioteka, osim što ostvaruje preuzimanje podataka, također
rješava ranije spomenuti problem vremenske osjetljivosti pri očitavanju sa senzora,
na način da zahtijeva niz očitanja sve dok se ne očitaju valjani podaci. Sve što je
potrebno napraviti za korištenje biblioteke Adafruit DHT jest klonirati Git repozitorij
u kojem se ona nalazi te instalirati njezinu setup.py datoteku. Dodatno, u tom se
repozitoriju nalazi i nekoliko jednostavnih primjera korištenja biblioteke. Nakon
kloniranja repozitorija, biblioteka je na raspolaganju za korištenje u vlastitim Python
skriptama, na način da je se uključi u skriptu kao modul [21].
Slično kao kod senzora DHT11, za preuzimanje podataka koje mjeri senzor
BMP180 koristi se Python biblioteka Adafruit BMP. Ova je biblioteka inicijalno
stvorena za rad sa senzorom BMP085, prethodnikom senzora BMP180, no,
obzirom da ta dva senzora imaju ista programska svojstva, biblioteka se koristi i za
senzor BMP180. Ova se biblioteka također najjednostavnije preuzima kloniranjem
Git repozitorija u kojem se nalazi. Uz biblioteku, za rad sa senzorom BMP180
potrebno je i instalirati SMBus (engl. System Management Bus) modul za rad s I2C
sabirnicom. Također, kao i kod biblioteke Adafruit DHT, potrebno je instalirati
setup.py datoteku biblioteke Adafruit BMP. Nakon kloniranja Git repozitorija te
potrebnih instalacija, biblioteka je spremna za daljnje korištenje [25].
Korištenjem dviju opisanih biblioteka, napisana je Python skripta koja
konstantno, dok se ne prekine, preuzima mjerene podatke o temperaturi, vlažnosti
i tlaku zraka sa senzora DHT11 i BMP180, ispisuje očitane podatke u konzolu te ih
28
zapisuje u tekstualnu datoteku. Ovom je skriptom ostvarena cjelokupna programska
podrška za preuzimanje podataka sa senzora na poveznik.
5.1.3.2. Povezivanje s Artik uslugom u oblaku i slanje podataka u oblak
Drugi, a ujedno i posljednji korak ostvarenja ovog projekta jest programsko
ostvarenje povezivanja računala Raspberry Pi s Artik uslugom u oblaku te slanje
podataka s računala u oblak. Komunikacija s oblakom u ovom je primjeru ostvarena
putem WebSocket API sučelja, opisanog u poglavlju 3.2.2. U ovom se dijelu
programskog ostvarenja koristi Python modul asyncio za rad s asinkronim
funkcijama. Obzirom da se taj modul pojavio distribucijom Pythona verzije 3,
komunikacija s Artik oblakom implementirana je u programskom jeziku Python 3.
Osim modula asyncio, potrebno je koristiti i modul websockets, za rad s
WebSocket API sučeljem te modul json za rad s JSON formatom datoteka. Isječak
koda 5.1. prikazuje uvoz modula asyncio, websockets i json te postavljanje
potrebnih varijabli za povezivanje s Artik uslugom u oblaku. U datoteci config.json
definirani su ID uređaja i token uređaja.
Isječak koda 5.1. Uvoz potrebnih modula i postavljanje varijabli
import asyncio
import websockets
import json
import time
import sys
with open('config.json') as json_data:
CONFIG = json.load(json_data)
DEVICE_ID = CONFIG['device_id']
DEVICE_TOKEN = CONFIG['device_token']
CONNECTION_URL = 'wss://api.artik.cloud/v1.1/websocket?ack=true'
Isječak koda 5.2. prikazuje funkciju start() kojom se u početku stvara
WebSocket konekcija s Artik uslugom u oblaku te šalje registracijska poruka u oblak.
Nakon toga, sve dok se program ne prekine, funkcija preuzima snimljene podatke
29
od strane senzora koji se pohranjuju u datoteku te nad tim podacima poziva funkciju
za slanje podataka u oblak.
Isječak koda 5.2. Funkcija start()
async def start():
#establish a connection and send the registration payload
print("\nPovezivanje na: ", CONNECTION_URL)
async with websockets.connect(CONNECTION_URL) as websocket:
print("\WebSocket konekcija je stvorena ... ")
registration = {
'type': 'register',
'sdid': DEVICE_ID,
'authorization': 'bearer ' + DEVICE_TOKEN,
}
print("\Slanje registracijske poruke sadržaja:\n ",
xxxxxxxxxxxxxxxxxjson.dumps(registration))
await send_message(websocket, registration)
while True:
#...preuzimanje snimljenih podataka iz datoteke...
message = {
'sdid': DEVICE_ID,
'data': {
'temp': temp,
'hum': hum,
'press': press
},
'cid': 'id-' + str(int(time.time()))
}
await send_message(websocket, message)
Konačno, funkcija send_message(websocket, message), prikazana
isječkom koda 5.3., obavlja slanje poruke u Artik uslugu u oblaku. Ova se funkcija
30
poziva prilikom slanja registracijske poruke te prilikom svakog slanja snimljenih
podataka u oblak.
Isječak koda 5.3. Funkcija send_message(websocket, message)
async def send_message(websocket,message):
'''
Primjer sadržaja poruke:
{"sdid": "4b2108...", "data": {"state": true}, "cid": 1501787234}
'''
message = json.dumps(message)
print("> Slanje poruke: {}".format(message))
await websocket.send(message)
5.1.4. Konačni rezultat eksperimenta
Konačno, nakon uspješnog ostvarenja svih prethodnik koraka, na web
stranici svog Artik oblaka moguće je vidjeti rezultat eksperimenta. Podatke o
temperaturi, vlažnosti i tlaku zraka poslane u oblak moguće je pratiti u grafičkom
obliku te kao listu primljenih poruka, kao što je opisano u poglavlju 3.3. Na slikama
5.11., 5.12. i 5.13. prikazani su grafički prikazi snimljenih podataka o temperaturi,
vlažnosti i tlaku zraka, preuzeti s kartice „Charts“ Artik usluge u oblaku.
Slika 5.11. Grafički prikaz snimljene temperature zraka
Slika 5.12. Grafički prikaz snimljene vlažnosti zraka
31
Slika 5.13. Grafički prikaz snimljenog tlaka zraka
5.2. Programska simulacija interakcije dvaju uređaja preko Artik
usluge u oblaku
Drugi eksperiment ovog rada sastoji se od programske simulacije sustava u
kojem komuniciraju uređaji mikrofon i pametna vrata preko Artik usluge u oblaku.
Cilj ovog primjera jest demonstrirati kako funkcionira obostrana komunikacija pri
korištenju Artik usluge u oblaku. Skripta, napisana u programskom jeziku Python,
simulira ulogu stvari i poveznika u sustavu te vezu između njih. Osim toga, skriptom
je, kao i u prošlom primjeru, realizirana komunikacija s Artik uslugom u oblaku te
aplikacija za upravljanje sustavom.
Sustav stvari koji se simulira sastoji se od mikrofona, koji prikuplja podatke i
šalje ih u oblak te pametnih vrata, na koja se iz oblaka šalju akcije ovisno o
podacima poslanih s mikrofona. Uređaji, odnosno njihova polja i akcije, postavljeni
su u oblaku postupkom opisanim u poglavlju 3.1. Postoje četiri akcije pomoću kojih
se upravlja s pametnim vratima: otvori, zatvori, otključaj te zaključaj. Ove četiri
akcije, ujedno su i moguće vrijednosti polja poruka uređaja mikrofon, dok uređaj
pametna vrata ima dva polja: otvoreno, koje može biti istinito ili neistinito te
zaključano, koje također može biti istinito ili neistinito. Definirana su, također, četiri
pravila: „ako je polje poruka uređaja mikrofon jednako „open“, onda poslati akciju
„open“ na uređaj vrata“ te ostala tri pravila ekvivalentna ovome Postupak definiranja
pravila u Artik oblaku opisan je u poglavlju 3.3.
Dakle, simulirani sustav radi tako da korisnik po želji, u bilo kojem trenutku,
putem mikrofona pošalje jednu od četiri navedene poruke, koja se šalje u oblak te
pohranjuje. Zatim se na temelju definiranih pravila šalje odgovarajuća akcija na
pametna vrata. Nakon primitka akcije, vrata izvršavaju dobivenu akciju te aplikacija
postavlja novo stanje polja uređaja vrata u oblaku, slanjem poruke s novim
podacima, koji odgovaraju primljenoj akciji. Osim toga, aplikacija ispisom
32
odgovarajuće poruke kontrolira slučajeve kad korisnik, na primjer, pokuša otvoriti
zaključana ili već otvorena vrata i slično tome te slučaj unosa nepostojeće naredbe.
5.2.1. Programsko ostvarenje
Simulacija cjelokupnog opisanog sustava ostvarena je jednom Python
skriptom, koja koristi modul asyncio, za rad s asinkronim funkcijama, modul json,
za rad s podacima oblika JSON, modul websockets, za rad s WebSocket API
sučeljem te još neke module.
Uvoz potrebnih modula, postavljanje globalnih varijabli za vezu s Artik
uslugom u oblaku te postavljanje početnih stanja uređaja vrata prikazani su
isječkom koda 5.4.
Isječak koda 5.4. Uvoz modula i definiranje varijabli
import json
import asyncio
import websockets
import time
import sys
class door:
opened = False
locked = False
with open('config_door.json') as json_data:
CONFIG_DOOR = json.load(json_data)
DEVICE_ID_DOOR = CONFIG_DOOR['device_id']
DEVICE_TOKEN_DOOR = CONFIG_DOOR['device_token']
with open('config_microphone.json') as json_data:
CONFIG_MICROPHONE = json.load(json_data)
DEVICE_ID_MICROPHONE = CONFIG_MICROPHONE['device_id']
DEVICE_TOKEN_MICROPHONE = CONFIG_MICROPHONE['device_token']
CONNECTION_URL = 'wss://api.artik.cloud/v1.1/websocket?ack=true'
33
Prvi korak koji program treba obaviti, nakon uvoza potrebnih modula i
postavljanja globalnih varijabli, jest uspostaviti konekciju s Artik uslugom u oblaku
te poslati registracijske poruke na oba uređaja u oblaku. To se događa u funkciji
start(). Nakon uspostave konekcije i slanja registracijskih poruka, u funkciji se,
sve dok se program ne prekine, čeka unos naredbe putem konzole od strane
korisnika. Nakon unosa naredbe, na temelju unesene naredbe poziva se funkcija
send_message_microphone(websocket, message), u kojoj se šalje poruka,
s naredbom koju je korisnik unio, u Artik oblak. Funkcija start() prikazana je
isječkom koda 5.5.
Isječak koda 5.5. Funkcija start()
async def start():
#Povezivanje na Artik
print("\nConnecting to: ", CONNECTION_URL)
async with websockets.connect(CONNECTION_URL) as websocket:
print("\nWebsocket connection is open ... ")
#Slanje registracijskih poruka
registration = {
'type': 'register',
'sdid': DEVICE_ID_DOOR,
'authorization': 'bearer ' + DEVICE_TOKEN_DOOR,
}
print("\nSending register message payload for door:\n ",
xxxxxxxxxxxxxxxxxjson.dumps(registration))
await send_message_door(websocket, registration)
registration = {
'type': 'register',
'sdid': DEVICE_ID_MICROPHONE,
'authorization': 'bearer ' + DEVICE_TOKEN_MICROPHONE,
}
print("\nSending register message payload for
xxxxxxxxxxxxxxxxxxxmicrophone:\n ", json.dumps(registration))
await send_message_microphone(websocket, registration)
34
while True:
#...Čekanje naredbe...
#Postavljanje poruke
payload = {
'sdid': DEVICE_ID_MICROPHONE,
'data': {},
'cid': 'id-' + str(int(time.time()))
}
if naredba == 'open':
#Kontrola neispravne naredbe
if door.locked == True:
print("Cannot open a locked door.")
continue
if door.opened == True:
print("Door already opened.")
continue
#Poziv funkcije za slanje poruke
payload['data']['message'] = 'open'
await send_message_microphone(websocket, payload)
#Kod za ostale tri naredbe ekvivalentan je kodu za „open“
Sljedeći korak programa jest slanje poruke s naredbom na uređaj mikrofon u
Artik oblaku, odnosno postavljanje nove vrijednosti u polje poruka uređaja mikrofon
u oblaku. To odrađuje funkcija send_message_microphone(websocket,
message), prikazana isječkom koda 5.6. Nakon slanja poruke, funkcija čeka
poruku od Artik oblaka koja sadrži akciju, koja se iz oblaka šalje na temelju
definiranih pravila. Po primitku takve poruke, poziva se funkcija
handle_action_door(websocket, message) s primljenom porukom kao
drugim argumentom.
Isječak koda 5.6. Funkcija send_message_microphone(websocket, message)
async def send_message_microphone(websocket, message):
send_message = json.dumps(message)
await websocket.send(send_message)
received_message = await websocket.recv()
recieved_message = json.loads(received_message)
35
if 'type' in message and message['type'] == 'register':
return
while not ('type' in recieved_message and
xxxxxxxxxxxxxxxxxrecieved_message['type'] == 'action'):
received_message = await websocket.recv()
recieved_message = json.loads(received_message)
await handle_action_door(websocket, recieved_message)
Funkcija handle_action_door(websocket, message), prikazana
isječkom koda 5.7., služi za obradu primljene akcije. Dakle, ovisno o akciji poslanoj
iz oblaka, funkcija postavlja novo stanje vrata, u konzolu ispisuje poruku o uspješnoj
obradi akcije, stvara poruku koja sadrži nove podatke te poziva funkciju
send_message_door(websocket, message), koja će novo stanje vrata poslati
u oblak.
Isječak koda 5.7. Funkcija handle_action_door(websocket, message)
async def handle_action_door(websocket, message):
action = message['data']['actions'][0]
payload = {
'sdid': DEVICE_ID_DOOR,
'data': {},
'cid': 'id-' + str(int(time.time()))
}
if action['name'] == 'open':
payload['data']['opened'] = True
door.opened = True
print(„Door successfully opened.“)
await send_message_door(websocket, payload)
elif action['name'] == 'close':
payload['data']['opened'] = False
door.opened = False
print(„Door successfully closed.“)
await send_message_door(websocket, payload)
36
elif action['name'] == 'lock':
payload['data']['locked'] = True
door.locked = True
print(„Door successfully locked.“)
await send_message_door(websocket, payload)
elif action['name'] == 'unlock':
payload['data']['locked'] = False
door.locked = False
print(„Door successfully unlocked.“)
await send_message_door(websocket, payload)
else:
#unknown action for handling
print(„Unknown action for handing {}“.format(action))
Konačno, funkcija send_message_door(websocket, message),
prikazana isječkom koda 5.8., šalje podatke na uređaj pametna vrata u Artik oblaku,
odnosno postavlja novu vrijednost jednog od polja uređaja vrata.
Isječak koda 5.8. Funkcija send_message_door(websocket, message)
async def send_message_door(websocket, message):
message = json.dumps(message)
await websocket.send(message)
5.2.2. Konačni rezultat eksperimenta
Nakon pokretanja opisanog programa, moguće je u stvarnom vremenu pratiti
što se događa s vratima prilikom slanja naredbi. Primljene poruke s podacima te
poslane poruke s akcijama u Artik oblaku moguće je pratit na kartici „Data Logs“,
kao što je opisano u poglavlju 3.3. Najzanimljivije je, ipak, pratiti promjene stanja
uređaja vrata na kartici „Charts“, koja je također opisana u poglavlju 3.3., jer se tamo
najbolje može vidjeti kako se odvija interakcija u stvarnom vremenu. Paralelno s
praćenjem stanja u grafičkim prikazima u oblaku, zanimljivo je pratiti poruke koje se
korisniku ispisuju u konzoli. Na taj se način može dobiti zaista dobar uvid u
interakciju simuliranih uređaja s Artik uslugom u oblaku.
37
Slike 5.14. i 5.15. grafički prikazuju promjene stanja polja otvoreno i polja
zatvoreno uređaja vrata u usporedbi s promjenama stanja poruke uređaja mikrofon
u vremenu.
Slika 5.14. Grafički prikaz polja otvoreno uređaja vrata i polja poruka uređaja mikrofon
Slika 5.15. Grafički prikaz polja zaključano uređaja vrata i polja poruka uređaja mikrofon
Također, valja napomenuti da se akcije na vrata mogu poslati i ručno,
direktno iz Artik usluge u oblaku, no u tom slučaju uređaj mikrofon u ovom sustavu
gubi svoju svrhu. Akcije se na uređaj u Artik oblaku šalju s kartice „Devices“, klikom
na munju kod željenog uređaja te odabirom akcije koja se želi poslati, što je
prikazano na slici 5.16. Naravno, i ovo je moguće samo ukoliko je aplikacija za
upravljanje sustavom pokrenuta.
38
Slika 5.16. Ručno slanje akcije na vrata kroz Artik uslugu u oblaku
39
6. ZAKLJUČAK
Internet stvari, zbog svoje iznimno korisne primjene te svojstva da uvelike
olakšava ljudske živote, jedno je od najatraktivnijih područja informatičke industrije
današnjice. Eksponencijalnim porastom popularnosti Interneta stvari i njegove
primjene, svakim danom raste i broj platformi koje nude usluge u oblaku za Internet
stvari. Jedna od takvih platformi jest Samsung Artik. Usluge koje Artik oblak nudi u
sklopu Interneta stvari prikazane su kroz dva jednostavna primjera, a opet
primjenjiva u stvarnom životu.
Prvi se primjer sastoji od slanja podataka o temperaturi, vlažnosti i tlaku zraka
od senzora, preko poveznika, do Artik usluge u oblaku. Ostvarenjem ovog primjera
pokazala se jednostavnost komunikacije senzora s Artik oblakom Osim toga, ovim
je primjerom pokazana mogućnost praćenja stanja postavljenog uređaja kroz
grafičke prikaze u stvarnom vremenu, koje nudi Artik usluga u oblaku.
U drugom se primjeru simulira komunikacija dva uređaja putem Artik usluge
u oblaku. Ova je simulacija osmišljena kako bi se demonstrirala interakcija uređaja
korištenjem Artik oblaka, odnosno opcije definiranja akcija i pravila koje on nudi.
Sustav se sastoji od uređaja mikrofon, putem kojeg korisnik šalje naredbe, te
uređaja pametna vrata, nad kojima se izvršavaju poslane naredbe. Ovim je
primjerom pokazano kako Artik na temelju primljenih poruka s podacima od strane
mikrofona te definiranih pravila šalje akcije na uređaj pametna vrata. Također, kroz
oba je primjera demonstrirana jednostavnost definiranja postavki uređaja te
njegovih svojstava u Artik oblaku.
Iz ostvarenja opisana dva primjera, može se zaključiti da je Artik usluga u
oblaku osmišljena da uvelike olakša izradu IoT projekata, time što su mnoge
komponente projekta ostvarene korištenjem postojećih usluga, dok bi ih u
suprotnom razvojni programeri morali ručno implementirati. Osim toga, Artik
platforma je jednostavna za korištenje i snalaženje. Zbog ovih svojstava Artik usluge
u oblaku, čak i ljudi koji nemaju mnogo znanja o programiranju mogu izrađivati
vlastite IoT projekte, bez puno muke i uloženog truda.
40
7. LITERATURA
[1] Jordan Wright, Internet of things: What is it & why it needs the cloud,
https://blog.cloudhelix.io/internet-of-things-what-it-is-why-it-needs-the-cloud-
f150f6726382, 03.04.2018.
[2] Devadiga, K., IEEE 802.15.4 and the Internet of things, Aalto University
School of Science
[3] IEEE Standards Association, IEEE Std 802.15.4-2015 (Revision of IEEE
Std 802.15.4-2011) - IEEE Standard for Low-Rate Wireless Networks,
https://standards.ieee.org/findstds/standard/802.15.4-2015.html,
05.04.2018.
[4] 4LoWPAN, https://en.wikipedia.org/wiki/6LoWPAN, 05.04.2018.
[5] Margaret Rouse, IoT Gateway, https://whatis.techtarget.com/definition/IoT-
gateway, 11.04.2018.
[6] Padraig Scully, 26.01.2016., 5 Things To Know About The IoT Platform
Ecosystem, https://iot-analytics.com/5-things-know-about-iot-platform/,
13.04.2018.
[7] IoT Gateway Basis | Intel IoT Gateway Features, http://www.rfwireless-
world.com/IoT/IoT-Gateway.html, 13.04.2018.
[8] Samsung ARTIK™ Smart IoT Platform Delivers the Power of IoT
Development to Businesses, https://news.samsung.com/global/samsung-
artik-smart-iot-platform-delivers-the-power-of-iot-development-to-businesses,
17.04.2018.
[9] Bluetooth Low Energy (BLE) and the Internet of Things (IoT),
https://www.linkedin.com/pulse/bluetooth-low-energy-ble-internet-things-iot-
mohammad-afaneh, 02.05.2018.
[10] Samsung's Artik is the perfect example of why IoT is confusing,
https://www.theverge.com/2016/4/29/11536376/samsungs-artik-internet-of-
things-confusing, 05.05.2018.
[11] Samsung ARTIK Platform Aims At Removing IoT Pain Points,
http://www.ubergizmo.com/articles/samsung-artik/, 08.05.2018.
[12] 50 Sensor Applications for a Smarter World,
http://www.libelium.com/resources/top_50_iot_sensor_applications_ranking/
, 13.05.2018.
41
[13] Internet of Things (IoT) – Part 5 (Applications), https://www.c-
sharpcorner.com/UploadFile/f88748/internet-of-things-applications/,
13.05.2018.
[14] Digitech Invests in Connected Cars Company CarForce,
https://iot.do/digitech-connected-cars-2016-10, 13.05.2018.
[15] IoT Apps for Smart Cities with GE Predix and Scriptr.io,
https://blog.scriptr.io/implement-smart-cities-applications/, 14.05.2018.
[16] Smart Gateways, Blockchain and the Internet of Things (Charalampos
Doukas-Create-Net), https://www.slideshare.net/AGILEIoT/smart-gateways-
blockchain-and-the-internet-of-things-charalampos-doukascreatenet,
15.05.2018.
[17] Raspberry Pi 3B Single Bord Computer,
https://www.littlebirdelectronics.com.au/raspberry-pi-3b-single-board-
computer, 20.05.2018.
[18] Raspberry Pi and the I2C Air Pressure Sensor BMP180, https://tutorials-
raspberrypi.com/raspberry-pi-and-i2c-air-pressure-sensor-bmp180/,
22.05.2018.
[19] How to set up the DHT11 humidity sensor on the Raspberry Pi,
http://www.circuitbasics.com/how-to-set-up-the-dht11-humidity-sensor-on-
the-raspberry-pi/, 22.05.2018.
[20] DHT11 – Temperature and Humidity Sensor,
https://components101.com/dht11-temperature-sensor, 23.05.2018.
[21] DHT11 Temperature and Humidity Sensor and the Raspberry Pi,
https://www.raspberrypi-spy.co.uk/2017/09/dht11-temperature-and-
humidity-sensor-raspberry-pi/, 23.05.2018.
[22] BMP180 Barometric Pressure/Temperature/Altitude Sensor – 5V ready,
https://www.adafruit.com/product/1603, 25.05.2018.
[23] Raspberry Pi and I2C Air Pressure Sensor BMP180, https://tutorials-
raspberrypi.com/raspberry-pi-and-i2c-air-pressure-sensor-bmp180/,
25.05.2018.
[24] BMP180 Barometric Pressure & Temperature Sensor, http://electronics-
diy.com/product_details.php?pid=825, 27.05.2018.
42
[25] Sensors – Pressure, Temperature and Altitude with the BMP180,
https://thepihut.com/blogs/raspberry-pi-tutorials/18025084-sensors-
pressure-temperature-and-altitude-with-the-bmp180, 27.05.2018.
[26] REST and WebSockets, https://developer.artik.cloud/documentation/data-
management/rest-and-websockets.html#rest-and-websockets, 27.05.2018.
[27] Scenes, https://developer.artik.cloud/documentation/scenes.html,
08.06.2018.
43
NASLOV, SAŽETAK I KLJUČNE RIJEČI
Naslov
Upravljanje stvarima preko usluga u oblaku za Internet stvari.
Sažetak
Samsung Artik jedna je od platformi koja nudi usluge u oblaku za Internet stvari.
Arhitektura Interneta stvari zasnovana na uslugama u oblaku sastoji se od mreže
uređaja, poveznika te usluge u oblaku. Uređaji mogu biti senzori, koji prikupljaju
podatke, ili aktuatori, koji obavljaju akcije. Pri postavljanju uređaja u Artik oblaku,
moguće je definirati polja u koja se pohranjuju primljeni podaci, te akcije koje se
šalju na uređaj. Komunikacija uređaja s Artik uslugom u oblaku odvija se putem
jednog od sučelja REST API ili WebSocket API. Kroz Artik uslugu u oblaku moguće
je postaviti uređaje, definirati pravila i scene te pratiti stanja uređaja u vremenu i
izmjenu poruka s uređajima. Neka od područja primjene Interneta stvari su pametni
domovi, nosive stvari, pametni gradovi, okoliš i vode, mjerenja, industrijska kontrola,
pametna vozila, sustavi za zdravstvo, sigurnost i kontrola hitnih stanja, trgovina i
opskrbni lanac te poljoprivreda i uzgoj životinja. Primjena Artik usluge u oblaku
demonstrirana je kroz dva primjera. Prvi se primjer sastoji od slanja podataka o
temperaturi, vlažnosti i tlaku zraka od senzora, preko poveznika, u oblak, a drugi se
primjer sastoji od programske simulacije interakcije uređaja mikrofon i uređaja
pametna vrata preko Artik usluge u oblaku.
Ključne riječi
Internet stvari, Samsung Artik, usluge u oblaku za Internet stvari, upravljanje
stvarima.
44
Title
Things Management Through Internet of Things Cloud Services.
Summary
Samsung Artik is one of the platforms that offer cloud services for the Internet of
Things (IoT). The IoT architecture based on cloud services consists of a device
network, a gateway and cloud services. Devices are either sensors that collect data
or actors who perform actions. When configuring a device in Artik cloud service, it
is possible to define fields to store received data and actions that are sent to the
device. Communication with Artik cloud service takes place via either REST API or
WebSocket API interface. Through Artik cloud service, it is possible to configure
devices, define rules and scenes, track device status and see exchanged
messages. Some areas of IoT application are smart homes, wearable technology,
smart cities, environment and water, smart metering, industrial controls, smart
vehicles, health systems, security and emergency control, retail and supply chains
and agriculture and animal breeding. Application of Artik cloud service has been
demonstrated through two examples. The first example consists of sending
temperature, humidity and air pressure measurements from sensors, through the
gateway and to the cloud, and the second example is a software simulation of
microphone and smart door device interaction through Artik cloud service.
Keywords
Internet of Things, Samsung Artik, IoT cloud services, things management.