korisniČko programiranje uradiofrekvencijske signale, (120khz) koji predstavljaju digitalnu...
TRANSCRIPT
-
SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
ZAVRŠNI RAD br. 5984
KORISNIČKO PROGRAMIRANJE U
KONTEKSTU INTERNETA STVARI
Maja Matešić
Zagreb, lipanj 2019.
-
2
-
3
-
4
Sadržaj
1. Uvod .................................................................................................. 5
2. Internet stvari .................................................................................... 6
2.1. Povijest Interneta stvari ................................................................. 7
2.2. Sadašnjost i budućnost Interneta stvari ......................................... 7
2.3. Primjena Interneta stvari ............................................................... 8
2.4. Pametna kuća ............................................................................... 9
2.5. Uobičajena arhitektura sustava Interneta stvari .......................... 10
3. Korisnički programski jezik .............................................................. 12
3.1. Zadatak ....................................................................................... 12
3.2. Korisnički usmjerena arhitektura ................................................. 12
3.3. Popis naredbi .............................................................................. 14
3.4. Primjeri korištenja naredbi ........................................................... 18
4. Ostvarenje interpretera za korisnički program ................................. 22
4.1. Opis koda .................................................................................... 22
4.2. Primjeri pokretanja ...................................................................... 25
5. Zaključak ......................................................................................... 28
6. Literatura ......................................................................................... 29
-
5
1. Uvod
Danas je teško zamisliti život bez Interneta. Internet nam je prije svega omogućio
povezivanje ljudi i uređaja te brži i efikasniji prijenos podataka. Posljednjih godina
sve češće možemo čuti pojmove kao što su pametni satovi, pametne kuće, pametni
mobilni uređaji, a u budućnosti ćemo moći čuti i za druge slične pojmove. Sve ovo
spada u pojam Interneta stvari (engl. Internet of Things - IoT). Internet stvari postaju
jako rasprostranjene u industriji te se sve više nalaze i u našim domovima, a da
toga nismo ni svjesni. Pojam Interneta stvari se odnosi na povezivanje uređaja na
Internet ili uređaja s drugim uređajima (M2M, engl. Machine to Machine), a svrha
mu je olakšati i unaprijediti svakodnevne poslove, kako poslovne tako i one
kućanske.
Cilj je ostvariti interakciju fizičkog svijeta i računalnih sustava. To nam omogućuje
koncept Interneta stvari koji, korištenjem mrežne infrastrukture, prima i šalje
podatke. S obzirom na koncept M2M, Internet stvari pronašle su svoju primjenu u
medicini, kućnoj automatizaciji, građevini, trgovini i drugdje.
Čest pojam koji čujemo u zadnje vrijeme je pametna kuća. Pametne kuće se mogu
uključiti u razne interakcije sa njihovim stanovnicima na različitim razinama
„pametnosti“. Upravo u ovom radu ćemo govoriti kako ostvariti način komunikacije
između korisnika i uređaja u kući koristeći pritom korisnički programski jezik,
jednostavan i razumljiv za korištenje ljudima koji nemaju informatičko obrazovanje.
-
6
2. Internet stvari
Postoji mnogo definicija za Internet stvari, a jedna od njih je: „Internet stvari je
kolekcija ili skup stvari (objekata ili uređaja) koji su dizajnirani da bi bili upravljani te
da bi pružali informacije bežičnom vezom preko interneta koristeći najčešće
mobilnu aplikaciju za nadzor i upravljanje“1. Definicije Interneta stvari razlikuju se o
širini pogleda na procese koji se događaju i o perspektivi iz koje se promatraju, ali
većina se odnosi na spajanje svakodnevnih stvari na Internet, mjerenje,
prikupljanje, pohranu i razmjenu podataka s ostalim stvarima i ljudima.
„Stvari“ u nazivu odnose se na uređaje i svakodnevne objekte, od onih najmanjih
(ručni sat ili medicinski senzori) do onih velikih (roboti, auti, zgrade). Stvar u Internet
stvarima može biti jednostavna poput žarulje koja se pali i gasi putem aplikacije na
mobitelu, ali i prilično kompleksna kao autonomno vozilo opremljeno stotinama
senzora koji prikupljaju i odašilju podatke na obradu.
Internet stvari je danas jedan od najatraktivnijih područja informatičke industrije.
Internet stvari možemo promatrati kao globalnu mrežu koja povezuje pametne
stvari, razne uređaje (za pohranu podataka, za komunikaciju s korisnicima),
senzore. Mrežna sučelja (npr. Wi-Fi) omogućuju tim predmetima da se povežu
(međusobno ili s određenim serverima) i da razmjenjuju podatke koje su skupili
pomoću senzora ili da djeluju na okolinu svojim aktuatorima (npr. sklopka koja gasi
svjetlo u prostoriji). Svi uređaji aktivno komuniciraju sa korisnicima generirajući i
primajući informacije iz okoliša. Također, sadrže i sklopove koji im omogućuje
kontrolu izlaza. Između uređaja se razmjenjuju podaci na temelju kojih se
poduzimaju određene akcije, npr. da se ugasi grijanje kad se dosegne određena
sobna temperatura ili da elektromotor zatvori garažna vrata kad dobije informaciju
od senzora da je auto parkiran.
Sve se to ostvaruje u svrhu jednog cilja koji uključuje optimizacije, ekonomske
koristi, povećanje efikasnosti, smanjenje ljudskog rada, povećanje komfora,
preventivne aktivnosti i slično.
1 J. Sinković, Vodič za razumijevanje Internet stvari – Internet of Things (IoT),
https://www.racunalo.com/vodic-za-razumijevanje-internet-stvari-internet-of-
things-iot/
https://www.racunalo.com/vodic-za-razumijevanje-internet-stvari-internet-of-things-iot/https://www.racunalo.com/vodic-za-razumijevanje-internet-stvari-internet-of-things-iot/
-
7
Slika 1. Prikaz Interneta stvari
2.1. Povijest Interneta stvari
Povijest Interneta započinje još 1962. godine (u sklopu američke agencije za
istraživačke projekte (DARPA)), ali tek pokretanjem World Wide Weba započinje
prava era razvoja. Prva web stranica napravljena je 1991. godine, dok se pojam
Internet stvari javlja 1999. godine od strane Kevina Ashtona, jednog od osnivača
Auto-ID centra na institutu za tehnologiju u Massachusetts-u, a publicirao se 2004.
godine. Internet je u početku predstavljao „Internet of Computers“, globalna mreža
koja je omogućavala ono što nam danas omogućuju World Wide Web (www) i File
Transfer Protocol (FTP), a to je komunikacija i razmjena informacija između
korisnika i kompjutora. S vremenom se povećala procesna snaga uređaja i
spremišni kapacitet, stoga se razvijaju mobilne mreže, a komunikacijski elektronički
uređaji postaju sve manji i jeftiniji. Upravo je to omogućilo gotovo neprimjetno
infiltriranje komponenata Interneta stvari u stvarni svijet.
2.2. Sadašnjost i budućnost Interneta stvari
Danas se za mali iznos novca može kupiti „računalo“ (preciznije, SoC
mikrokontroler, „development bord“) s dual-core procesorom, integriranim
Bluetooth i wireless sučeljima i hrpom ulazno-izlaznih pinova na koje se mogu
spajati senzori, aktuatori i ostale komponente. Prema nekim procjenama, trenutno
je na Internet spojeno od 6 do 14 milijardi različitih uređaja, a prognozira se da bi
broj uređaja za samo dvije godine trebao dosegnuti brojku od 20 milijardi, dok je
CISCO tu manje skroman te za isto razdoblje predviđa preko 50 milijardi spojenih
uređaja.
-
8
Brzi rast industrije Interneta stvari prepoznat je od strane poduzetnika, potrošača,
ali i od državnih vlada koji su shvatili koje sve prednosti donosi povezivanje uređaja
na Internet. Nebrojene mogućnosti povezivanja već danas nam pruža Internet
stvari, a kako će to izgledati u budućnosti ne možemo ni zamisliti. Smatra se da će
Internet stvari svoj vrhunac dosegnuti 2020. godine i da će predstavljati „iduću
Industrijsku revoluciju“.
Slika 2. Broj uređaja spojenih na internet
2.3. Primjena Interneta stvari
Primjenu Interneta stvari možemo pronaći u gotovo svim sferama današnjeg
modernog života, od medicine, industrije, građevine pa sve do poljoprivrede. Iako
je primjena Interneta stvari široka, još uvijek se o nekim rješenjima samo raspravlja,
dok su neka uspješno implementirana.
Primjena Interneta stvari u medicini najčešće se odnosi na pacijente. Doktori mogu
pomoću pametnih uređaja, koji mjere krvni tlak ili otkucaje srca (udaljeno
prikupljanje real-time informacija o zdravstvenim indikatorima pacijenta), pratiti
stanje pacijenta. Kako bi se smanjile pogreške u tretmanu, koristi se za praćenje
objekata i ljudi, identifikaciju novorođenčadi, praćenje zauzeća soba i smanjenje
vremena čekanja u hitnim slučajevima. Također, koristi se za kontroliranje
inventara i medicinskih materijala kako bi se otkrio potencijalni kvar ili nedostatak
opreme.
U industriji i proizvodnji koristi se za praćenje ljudi, stanja strojeva i proizvoda.
Kod praćenja ljudi, odnosno zaposlenika, misli se na praćenje evidencije dolazaka
i odlazaka s posla. U proizvodnji se senzori ugrađuju u strojeve koji potom
-
9
međusobno komuniciraju slanjem i pohranom podataka. Omogućeno je alarmiranje
uslijed nedostatka zaliha, te automatsko obnavljanje količine zaliha, izbjegavanje
uskog grla proizvodnje i kontrola kvalitete. Ništa manje značajna nije provjera
ispravnosti opreme i prevencija od kvarova koju omogućuju ugrađeni senzori.
U poljoprivredi se sve češće koriste IoT rješenja, najčešće implementirana kao
pametni staklenici koji koriste tehnologiju za praćenje temperature, vlažnosti
zemlje, ph vrijednosti i količine hranjivih tvari. Automatizira se sustav
navodnjavanja, ali i prilagođavaju se mikroklime staklenika temeljem vanjskih
klimatskih uvjeta i promjena. Kao primjer IoT rješenja u poljoprivredi možemo
navesti FarmBot, open-source projekt koji se sastoji od CNC robota za uobičajene
poljoprivredne radnje (navodnjavanje, precizna sadnja sjemena, eliminacija
krovova, praćenje stanja zemlje).
Danas je Internet stvari ipak najrašireniji kod privatnih potrošača, zato sve češće
možemo čuti pojam „pametna kuća“. Sve uređaje u kući moguće je povezati na
mrežu te upravljati njihovim radom pomoću mikrokontrolera, senzora i druge
elektronike preko jedinstvenog sučelja. Implementacija Interneta stvari u pametnoj
kući najčešće je ostvarena u obliku upravljanja sustavom grijanja/hlađenja,
sustavom rasvjete, senzorima pokreta i zatvaranja/otvaranja vrata ili prozora, video
nadzora ili alarmnog sustava. Korisnik može upravljati sustavima i uređajima iz
vlastitog doma ili bilo gdje izvan njega i u bilo kojem trenutku.
2.4. Pametna kuća
Korijeni pametne kuće sežu još u 1975. godinu, objavljivanjem X10,
komunikacijskog protokola za automatizaciju kuće. X10 odašilje kratke
radiofrekvencijske signale, (120kHz) koji predstavljaju digitalnu informaciju, kroz
električna ožičenja pa sve do prekidača ili utičnica koji se mogu programirati.
Powerline Carrier System (PCS) je tehnologija koja se koristi za odašiljanje
signala, a koja koristi ranije spomenuti protokol. X10 signali omogućuju
komunikaciju između prijemnika i odašiljača. Prijemnik koji je spojen na električnu
utičnicu u domu može primiti signal, koji mu šalje PCS odašiljač, te upravljati
uređajem na koji je on prikopčan.
-
10
Slika 3. Prikaz pametne kuće2
Pametna kuća je kuća koja sadrži elektroničke uređaje povezane na centralni
računalni sustav tako da se mogu paliti i gasiti u određenim trenucima (grijanje se
automatski pali svako jutro u 06:00h) ili na određene događaje (svjetlo se pali samo
kad se aktivira senzor za pokret). Uređaji se mogu nadzirati, s bilo kojeg mjesta u
bilo koje vrijeme, pomoću internetske veze, preko mobilnih ili nekih drugih
umreženih uređaja.
Zbog užurbanog načina života koji živimo, potreba za pametnim kućama je sve
veća. Upravo je pojednostavljenje svakodnevnih obaveza, ali i prije svega
poboljšanje same kvalitete života, glavni cilj izgradnji pametne kuće.
2.5. Uobičajena arhitektura sustava Interneta stvari
Koju god definiciju interneta stvari koristili, glavni koncept iza svake IoT-tehnologije
i implementacije je isti: uređaji su integrirani s virtualnim svijetom Interneta i prate,
očitavaju i nadgledaju objekte i njihovu okolinu. Korisnici i developeri dodaju
komponente, daju im mrežne sposobnosti i mogućnost očitavanja, programiraju ih
2 M. Rouse, smart home or building (home automation or domotics),
https://internetofthingsagenda.techtarget.com/definition/smart-home-or-building
https://internetofthingsagenda.techtarget.com/definition/smart-home-or-building
-
11
kako bi mogli obavljati određene zadatke te izrađuju Web aplikaciju koja komunicira
s uređajima. Osnovne komponente arhitekture Interneta stvari:
• Aplikacija – Programska komponenta IoT-sustava koja omogućuje
spajanje korisnika na IoT-sustav i daje opcije praćenja i kontrole pametnih
stvari. Korisnik upravlja uređajima preko servisa u oblaku. Pomoću
aplikacije, korisnik prati stanje uređaja, šalje naredbe te potiče uređaj na
neku akciju.
• Servis u oblaku (engl. Cloud) – Skup svih pohranjenih, primljenih i
obrađenih poruka koje su stigle od uređaja preko pristupnika i koje su
poslane natrag prema uređaju (uvjet je da servis zna koji uređaj komunicira
s kojim prijemnikom i koja vrsta veze se koristi). Podaci o korisnicima i
korisničkim aplikacijama nalaze se u oblaku, a sve se to sprema u bazu
podataka.
• Pristupnik (engl. Router) – Uređaj koji omogućuje komunikaciju između
uređaja i oblaka (prikuplja poruke svih uređaja na mreži i šalje ih u oblak).
Pristupniku mora biti poznata adresa i protokol koji servis u oblaku koristi.
• Stvar (Uređaj) – Objekti opremljeni senzorima koji prikupljaju podatke koji
se prenose mrežom i pokretačima koji omogućuju poduzimanje određene
akcije. Njime se može upravljati s bilo kojeg mjesta u bilo koje vrijeme
pomoću komunikacijskog protokola koji podržava taj uređaj. Također,
posjeduje jedinstvenu adresu po kojoj je prepoznat u mreži.
Slika 4. Shema rada IoT-sustava
-
12
3. Korisnički programski jezik
Ideja ovog rada je istražiti mogućnosti stvaranja jednostavnog programskog jezika za
upravljanje Internet stvarima koji bi mogli koristiti svi, tj. i oni koji nemaju osnovno
znanje programiranja (u nekom programskom jeziku kao što su C/C++, Java, C#,
Python i slični).
Takav programski jezik, obzirom na jednostavnost, imat će skromne mogućnosti
upravljanja, ali bi one možda mogle biti dostatne za mnoge potrebe.
Umjesto samog kodiranja u programskom jeziku, akcije bi se mogle unositi i kroz
korisničko sučelje (korisnik bi samo odabirao naredbe i parametre za njih).
U nastavku se razmatra sustav pametne kuće i na njemu je smišljen takav
programski jezik.
Naredbama namijenjenim za komunikaciju s oblakom upravlja se podacima u
oblaku. Podaci se ažuriraju slanjem i pohranom informacija u oblak, a mogu se i
iščitavati iz istoga. Isto vrijedi i za komunikaciju s napravama u kući, najčešće su to
senzori. Želja je da se korisniku omogući praćenje stanja u kući i reakcija na
promjene te mogućnost definiranja postavki rada naprava pomoću naredbi koje ima
na raspolaganju.
Korisnik će imati kontrolu nad:
• Temperaturom (dodatno grijanje/hlađenje)
• Rasvjetom
• Prozorima
• Žaluzinama
• Prskalicama
3.1. Zadatak
Zadatak završnog rada bio je osmisliti programski jezik za korisnike pametnih kuća.
Taj jezik mora biti što jednostavniji kako bi ga znali koristiti svi korisnici pametnih
kuća, od najmlađih do onih najstarijih, prvenstveno oni koji nemaju informatičko
predznanje. Programski jezik mora uključivati i periodičke aktivnosti te reakciju na
događaje u sustavu. U zadatku se pretpostavlja postojanje jednostavnog sučelja za
komunikaciju s napravama i uslugama u oblaku.
3.2. Korisnički usmjerena arhitektura
Programski jezik namijenjen je za odvijanje komunikacije s oblakom preko sučelja
za oblak i napravama preko sučelja za naprave.
-
13
Slika 5. Korisnički usmjerena arhitektura
Oblak Interneta stvari je platforma koja služi za obradu i pohranu povezanih
podataka. Platforma je izrađena tako da može primati ogromne količine podataka
koje generiraju senzori, web stranice, aplikacije, korisnici, dok se sve te akcije
odvijaju u stvarnom vremenu.
Svi podaci koje skupe senzori šalju se preko poveznika do oblaka kojeg možemo
nazvati „mozak“ cijelog sustava. Oblak ne služi samo za pohranjivanje podataka,
nego i za obradu pomoću unaprijed određenih algoritama za obradu podataka.
Neke od važnijih usluga koje sadrži oblak su upravljanje uređajima, analitika te
procesiranje podataka u akcije. Danas najpoznatije IotT-platforme su: Google
Cloud Platform, Particle, Salesforce IoT Cloud, ThingWorx, IBM Watson IoT i dr.
IoT-naprave su nestandardne računalne naprave koje se bežično povezuju na
mrežu i imaju mogućnost prenošenja podataka. Sadrže ugrađene procesore,
senzore i komunikacijski hardware za prikupljanje, slanje i reakcije na podatke koje
dobivaju iz okoline.
Oblak i naprave se spajaju na određene poveznike kako bi mogli međusobno
komunicirati. Proširenje koje se još može ostvariti u zadatku je to da se zaista
-
14
poveže programski jezik s međuslojem za oblak i naprave kako bi se odvijala
stvarna komunikacija.
3.3. Popis naredbi
Već je ranije spomenuto da u jeziku postoje naredbe koje su zadužene za oblak i
naredbe zadužene za naprave. Također, postoje definirane naredbe za periodičko
izvršavanje pravila koja korisnik zadaje.
Struktura pravila:
POKRENI_U t0 [PONAVLJAJ_SVAKIH t1 [BROJ_PONAVLJANJA N ]]
...
KRAJ
:
|
:
OCITAJ id | POSTAVI id | DOHVATI id | POHRANI id
:
AKO uvjet ONDA
...
KRAJ_AKO
U naredbama za periodičko izvršavanje pravila, naredbama u kojima zadajemo
vrijeme, ponavljanje i broj ponavljanja izvođenja određenog pravila, postoji
definirana struktura i izgled same naredbe.
POKRENI_U t0 [PONAVLJAJ_SVAKIH t1 [BROJ_PONAVLJANJA N ]]
POKRENI_U, PONAVLJAJ_SVAKIH i BROJ_PONAVLJANJA su ključne riječi u
naredbi, dok t0 i t1 predstavljaju vrijeme u obliku H:M:S (sati, minute i sekunde),
N je prirodan broj.
POKRENI_U – Zadavanjem parametra t0 u POKRENI_U definiramo vrijeme kada
treba početi izvođenje danog pravila (npr. t0 = 08:00:00 – započni s izvođenjem
pravila u 08:00 sati).
-
15
PONAVLJAJ_SVAKIH - Zadavanjem parametra t1 u PONAVLJAJ_SVAKIH
definiramo period ponavljanja danog pravila (npr. t1 = 00:02:00 – ponavljaj pravilo
svaka dva sata). Ako nije zadan period ponavljanja, pravilo se izvodi samo jedanput
(N = 1).
BROJ_PONAVLJANJA – Zadavanjem parametra N u BROJ_PONAVLJANJA definiramo
koliko puta se izvođenje pravila treba ponoviti (npr. N = 5 – ponovi izvođenje pravila
5 puta). Ako nije zadan broj ponavljanja, pravilo se izvodi beskonačno (N = -1).
Svaki program koji korisnik piše treba na početku (u prvoj liniji) sadržavati
POKRENI_U, dok je ostatak periodičke naredbe proizvoljan.
Primjeri periodičkih naredbi:
POKRENI_U 12:00:00
POKRENI_U 08:00:00 PONAVLJAJ_SVAKIH 00:30:00
POKRENI_U 20:00:00 PONAVLJAJ_SVAKIH 12:00:00 BROJ_PONAVLJANJA 3
Pokretanje programa prije intervala djelovanja pravila – kada se program pokrene
prije t0, onda se pravilo aktivira kada dođe taj trenutak (t == t0).
Pokretanje programa „za vrijeme“ intervala djelovanja pravila – ako se program
pokrene nakon t0, onda se provjerava je li pravilo periodičko. Ako je pravilo
periodičko, onda se pronalazi idući trenutak kad pravilo treba aktivirati (kada je t ==
t0 + t1 * k, k je prirodan broj manji od N).
Pokretanje programa poslije intervala djelovanja – ako se pravilo pokreće prekasno,
nakon t0 + t1 * N, onda se ovakvo pravilo neće aktivirati.
Naredbe koje se koriste za komunikaciju s napravama:
OCITAJ id – naredba koja se koristi za očitavanje stanja s naprave (npr. vraća
stanje prozora (otvoren ili zatvoren) ili trenutnu vrijednost temperature u sobi)
Svi dohvati od naprave i oblaka spremaju se u pomoćnu varijablu id koju se kasnije
može koristiti.
POSTAVI id = vrijednost – naredba koja se koristi za postavljanje stanja
naprava (npr. ako želimo uključiti prskalice postavljamo vrijednost prskalica u „ON“)
Navedeni id-jevi, kao i postavke za komunikaciju s oblakom trebali bi biti zapisani
u konfiguracijskoj datoteci, koju bi program interpreter pročitao i znao kako to
-
16
povezati (koje senzore i kako pročitati za pojedini id, kamo u oblak poslati podatke
i slično).
id = [temperatura, prozori, rasvjeta, zaluzine, prskalice,
grijanje, hladjenje]
Primjeri naredbi za naprave:
OCITAJ temperatura
POSTAVI rasvjeta = ON
OCITAJ prskalice
POSTAVI hladjenje = ON
POSTAVI temperatura = 25
Naredbe koje se koriste za komunikaciju s oblakom:
DOHVATI id – naredba koja dohvaća zadnju pohranjenu vrijednost nekog id-a u
oblak (npr. dohvatiti zadnju vrijednost temperature pohranjene u oblaku)
POHRANI id – naredba koja pohranjuje vrijednost id-a u oblak (npr. pohranjuje
vrijednost rasvjete („ON“ ili „OFF“) u oblak)
id = [temperatura, prozori, rasvjeta, zaluzine, prskalice,
grijanje, hladjene]
Primjeri naredbi za oblak:
DOHVATI temperatura
POHRANI prozori
DOHVATI prskalice
DOHVATI grijanje
POHRANI rasvjeta
Unutar bloka naredbi može postojati i „AKO“ blok naredbi. U tom slučaju naredbe
u „AKO“ bloku izvode se samo ako je uvjet u naredbi AKO ispunjen. Svako pravilo
može sadržavati samo jedan „AKO“ blok. Nema gniježđenja „AKO“ blokova unutar
„AKO“ bloka.
Struktura „AKO“ bloka:
AKO id vrijednost ONDA
-
17
...
KRAJ_AKO
AKO id vrijednost – naredba kojom provjeravamo
istinitost postavljenog uvjeta (npr. provjera ako je temperatura == 25), ako je uvjet
istinit ulazi se u „AKO“ blok i izvode se naredbe u njemu.
KRAJ_AKO – naredba koja označava kraj „AKO“ bloka
Primjer „AKO“ bloka:
AKO temperatura == 20 ONDA
POSTAVI temperatura = 25
POHRANI temperatura
KRAJ_AKO
KRAJ – naredba koja označava kraj pravila
-
18
3.4. Primjeri korištenja naredbi
Primjer 1. Paljenje prskalica
POKRENI_U 05:30:00 PONAVLJAJ_SVAKIH 12:00:00 BROJ_PONAVLJANJA 2 OCITAJ prskalice AKO prskalice == OFF ONDA
POSTAVI prskalice = ON POHRANI prskalice
KRAJ_AKO KRAJ
Kratak opis: Pravilo se pokreće u 05:30:00, ponavlja se dvaput, svakih 12 sati. Prvo
se s naprave očitava stanje prskalica. Ako su ugašene, onda se pale i nova
vrijednost pohranjuje se u oblak, inače je pravilo gotovo.
Primjer 2. Zatvaranje prozora
POKRENI_U 12:00:00 PONAVLJAJ_SVAKIH 08:00:00 BROJ_PONAVLJANJA 4 DOHVATI prozori AKO prozori == ON ONDA
POSTAVI prozori = OFF POHRANI prozori
KRAJ_AKO
KRAJ
Kratak opis: Pravilo se pokreće u 12:00:00, ponavlja se četiri puta, svakih 8 sati.
Prvo se dohvaća vrijednost prozora iz oblaka, zatim se provjerava jesu li prozori
otvoreni. Ako su prozori otvoreni, prozori se zatvaraju i nova vrijednost pohranjuje
se u oblak, inače je pravilo gotovo.
Primjer 3. Promjena temperature
POKRENI_U 07:30:00 PONAVLJAJ_SVAKIH 01:00:00
OCITAJ temperatura
AKO temperatura < 20 ONDA
POSTAVI grijanje = ON
KRAJ_AKO
KRAJ
Kratak opis: Pravilo se pokreće u 07:30:00, ponavlja se beskonačno svakih sat
vremena. Na početku se očitava temperatura s naprave. Ako je temperatura niža
od 20°C, pali se grijanje, inače je pravilo gotovo.
-
19
Primjer 4. Gašenje prskalica
POKRENI_U 20:00:00
POSTAVI prskalice = OFF
KRAJ
Kratak opis: Prskalice se gase u 20:00:00. Pravilo se izvršava samo jedanput.
Primjer 5. Gašenje rasvjete
POKRENI_U 08:00:00 PONAVLJAJ_SVAKIH 12:00:00
DOHVATI rasvjeta
AKO rasvjeta == ON ONDA
POSTAVI rasvjeta = OFF
POHRANI rasvjeta
KRAJ_AKO
KRAJ
Kratak opis: Pravilo se pokreće u 08:00:00 i ponavlja se beskonačno svakih 12 sati.
Na početku se dohvaća vrijednost rasvjete iz oblaka. Ako je rasvjeta upaljena, gasi
se i pohranjuje se nova vrijednost u oblak, inače je pravilo gotovo.
Primjer 6. Podizanje žaluzina
POKRENI_U 20:00:00 PONOVI_SVAKIH 24:00:00
DOHVATI zaluzine
AKO zaluzine == ON ONDA
POSTAVI zaluzine = OFF
POHRANI zaluzine
KRAJ_AKO
KRAJ
Kratak opis: Pravilo se pokreće u 20:00:00 i ponavlja se beskonačno svaki dan. Na
početku se dohvaća vrijednost žaluzina iz oblaka. Ako su žaluzine spuštene, podižu
se i pohranjuje se nova vrijednost u oblak, inače je pravilo gotovo.
Primjer 7. Otvaranje prozora
POKRENI_U 09:00:00 PONOVLJAJ_SVAKIH 24:00:00
POSTAVI prozori = ON
KRAJ
Kratak opis: Prozori se otvaraju svaki dan u 09:00:00.
-
20
Primjer 8. Paljenje rasvjete
POKRENI_U 19:30:00
POSTAVI rasvjeta = ON
POHRANI rasvjeta
KRAJ
Kratak opis: Pravilo se pokreće u 19:30:00 i izvršava se samo jednom. Pali se
rasvjeta i nova vrijednost pohranjuje se u oblak.
Primjer 9. Promjena temperature za različite dijelove dana
POKRENI U 06:00:00
POSTAVI temperatura = 23
KRAJ
Kratak opis: Pravilo se pokreće u 06:00:00 i izvršava se samo jednom. Temperatura
na napravi se postavlja na 23°C.
POKRENI_U 08:00:00
OCITAJ temperatura
AKO temperatura < 21 ONDA
POSTAVI temperatura = 21
KRAJ_AKO
KRAJ
Kratak opis: Pravilo se pokreće u 08:00:00 i izvršava se samo jednom. Očitava se
temperatura sa naprave. Ako je očitana vrijednost manja od 21°C, onda se
temperatura na napravi postavlja na 21°C, inače je kraj pravila.
POKRENI_U 06:00:00 PONAVLJAJ_SVAKIH 00:30:00
POSTAVI hladjenje == OFF
POSTAVI grijanje == OFF
OCITAJ temperatura
AKO temperatura > 25 ONDA
POSTAVI hladjenje == ON
KRAJ_AKO
KRAJ
Kratak opis: Pravilo se pokreće u 06:00:00 i izvršava se svakih pola sata. Na
početku se gasi grijanje i hlađenje te se očitava temperatura sa naprave. Ako je
temperatura veća od 25°C, pali se hlađenje.
-
21
POKRENI U 22:00:00
POSTAVI temperatura = 21
KRAJ
Kratak opis: Pravilo se pokreće u 22:00:00 i izvršava se samo jednom. Temperatura
na napravi postavlja se na 21°C.
-
22
4. Ostvarenje interpretera za korisnički program
Nakon osmišljavanja korisničkog programskog jezika, glavni zadatak bio je osmisliti
način kako ga programski ostvariti i na neki način simulirati akcije koje se izvode.
Za interpretaciju korisničkog jezika koristio se programski jezik Python. Python je
interpretirani, interaktivni, objektno orijentirani programski jezik visoke razine, koji
posjeduje dinamičku semantiku. Stvorio ga je Guido van Rossum 1991. godine, a
ime je dobio po kultnoj britanskoj komediji „Monty Python“. Odlikuje ga
visokokvalitetna struktura podataka, koja ga, u kombinaciji s dinamičkim pisanjem
i vezivanjem, čini veoma atraktivnim za brz razvoj različitih aplikacija. Pythona
odlikuje i velika fleksibilnost, stoga se može koristiti za pisanje jednostavnih
programa, ali posjeduje i snagu potrebnu za kreiranje složenih operacija.
4.1. Opis koda
Izvršavanje pravila zamišljeno je kao čitanje iz datoteke i reagiranje na ključne riječi
korisničkog jezika. U datoteku se može upisati jedno ili više pravila po želji. Po prvoj
i zadnjoj ključnoj riječi u pravilu znamo kada pravilo započinje, a kada završava.
U funkciji parse(filename) čita se datoteka liniju po liniju i odvaja se svaka riječ te
linije te sprema u polje (parsed_line). Postoji i provjera je li kraj pravila, ako da,
povećava se broj pravila i postupak se ponavlja za sljedeće pravilo. Unutar parse
funkcije pozivaju se još dvije funkcije, a to su add_trigger(linija, parsed_line) i
add_command(linija, parsed_line).
-
23
Slika 6. Funkcija parse(filename)
Funkcija add_trigger provjerava ispravnost upisanih naredbi i dodjeljuje vrijednosti
varijablama zaduženim za vrijeme. Ako je neka naredba krivo napisana ili je
neispravan format vremena ili nedostaje dio naredbe koji je obavezan, sukladno
grešci korisnik će biti obaviješten o nepravilnosti unosa. Unutar klase Pravilo
definirane su varijable:
Slika 7. Varijable klase Pravilo
U varijablu start_at upisuje se vrijednost t0 (iza POKRENI_U,) u varijablu period
upisuje se vrijednost t1 (iza PKRENI_SVAKIH), dok se u varijablu repeats upisuje
vrijednost N (iza BROJ_PONAVLJANJA).
Unutar funkcije add_command provjerava se o kojoj se naredbi radi, a ostatak
naredbe sprema u polje commands[]. Također postoji provjera radi li se možda o
-
24
„ako“ bloku, ako da zastavica ifBlock je True, a naredbe se spremaju u polje
ifCommands[].
Slika 8. Funkcija add_command
U funkcijama dohvati, pohrani, ocitaj, postavi, ako ispisuje se koja akcija se događa
izvođenjem te naredbe, dok se dodatno u funkcijama ako i postavi simuliraju
vrijednosti parametara koji se koriste u naredbi.
U glavnom programu prolazi se po pravilima i poziva funkcija check_and_activate()
u kojoj se izračunava vrijeme idućeg pokretanja i pozivaju naredbe iz polja
commands[], odnosno ifCommands[].
Slika 9. Glavna funkcija
-
25
Slika 10. Funkcija check_and_activate
4.2. Primjeri pokretanja
Pravila koja će se koristiti kao primjeri za pokretanje programa:
Slika 11. Pravila korištena za pokretanje
-
26
Rezultati pokretanja:
Time: 2019-06-10 12:35:00.082329
POKRENI_U 2019-06-10 12:35:00 PONAVLJAJ_SVAKIH 5.0 BROJ_PONAVLJANJA 3
Ocitaj temperatura ( 25 )
Ako je temperatura < 21 ONDA
Time: 2019-06-10 12:35:05.062795
POKRENI_U 2019-06-10 12:35:00 PONAVLJAJ_SVAKIH 5.0 BROJ_PONAVLJANJA 2
Ocitaj temperatura ( 21 )
Ako je temperatura < 21 ONDA
Time: 2019-06-10 12:35:10.048684
POKRENI_U 2019-06-10 12:35:00 PONAVLJAJ_SVAKIH 5.0 BROJ_PONAVLJANJA 1
Ocitaj temperatura ( 19 )
Ako je temperatura < 21 ONDA
Postavi grijanje = ON
Time: 2019-06-10 12:35:10.048684
POKRENI_U 2019-06-10 12:35:10 PONAVLJAJ_SVAKIH 1 BROJ_PONAVLJANJA 1
Postavi prskalice = OFF
Time: 2019-06-10 12:35:20.006334
POKRENI_U 2019-06-10 12:35:20 PONAVLJAJ_SVAKIH 15.0 BROJ_PONAVLJANJA
-1
Dohvati rasvjeta ( ON )
Ako je rasvjeta == ON ONDA
Postavi rasvjeta = OFF
Pohrani rasvjeta
Time: 2019-06-10 12:35:35.026408
POKRENI_U 2019-06-10 12:35:20 PONAVLJAJ_SVAKIH 15.0 BROJ_PONAVLJANJA
-1
Dohvati rasvjeta ( ON )
Ako je rasvjeta == ON ONDA
Postavi rasvjeta = OFF
Pohrani rasvjeta
-
27
Time: 2019-06-10 12:35:50.049099
POKRENI_U 2019-06-10 12:35:20 PONAVLJAJ_SVAKIH 15.0 BROJ_PONAVLJANJA
-1
Dohvati rasvjeta ( ON )
Ako je rasvjeta == ON ONDA
Postavi rasvjeta = OFF
Pohrani rasvjeta
Time: 2019-06-10 12:36:05.070185
POKRENI_U 2019-06-10 12:35:20 PONAVLJAJ_SVAKIH 15.0 BROJ_PONAVLJANJA
-1
Dohvati rasvjeta ( OFF )
Ako je rasvjeta == ON ONDA
...
Primjerima smo obuhvatili sve vrste definiranja naredbe vremena izvođenja. Prvo
pravilo se izvelo tri puta, drugo jedanput, dok se treće pravilo izvodi beskonačno s
periodom izvođenja od 15 sekundi.
-
28
5. Zaključak
Osnovni cilj ovoga rada bio je osmisliti i ostvariti jednostavan programski jezik
namijenjen svim ljudima, ali prvenstveno onima bez ikakvog informatičkog i
programerskog znanja. S obzirom na svoju jednostavnost, program omogućuje
operacije upravljanja Internet stvarima koje će zadovoljiti osnovne potrebe svakog
korisnika. Glavni dio rada je prilagodba i pojednostavljenje upravljanja uređajima
kako bi bilo tko mogao isprogramirati željene akcije. Ovaj osmišljeni programski
jezik omogućuje izvođenje pravila u zadanom vremenu i periodu te određenom
broju ponavljanja. Područje djelovanja pravila uglavnom se odnosi na pametne
kuće, dok se vrlo jednostavno može proširiti i na neka druga područja.
Korištenjem programskog jezika Python ostvarena je simulacija rada korisničkog
programskog jezika. U izradi programskog jezika predviđalo se postojanje sučelja
za komunikaciju s napravama i s uslugama u oblaku. Eventualno proširenje koje bi
se moglo napraviti je povezivanje s međuslojevima prema oblaku i napravama
preko određenih poveznika, kako bi se programom moglo upravljati napravama i
oblakom u stvarnom vremenu.
-
29
6. Literatura
1. C. Doukas, Building Internet of Things with the Arduino, 2012.
2. J. Sinković, Vodič za razumijevanje Internet stvari – Internet of Things (IoT),
https://www.racunalo.com/vodic-za-razumijevanje-internet-stvari-internet-of-
things-iot/
3. M. Rouse, Thing (in the Internet of Things),
https://internetofthingsagenda.techtarget.com/definition/thing-in-the-Internet-
of-Things
4. M. Rouse, smart home or building (home automation or domotics),
https://internetofthingsagenda.techtarget.com/definition/smart-home-or-building
5. A. Grizhnevich, IoT architecture: building blocks and how they work,
https://www.scnsoft.com/blog/iot-architecture-in-a-nutshell-and-how-it-works
6. Basel Nikola Bitar, Internet of Things – IoT,
https://repozitorij.unin.hr/islandora/object/unin:1884/preview
7. A. Banafa, 7 Trends of the Internet of Things in 2017,
https://datafloq.com/read/7-trends-of-internet-of-things-in-2017/2530
8. A. Calihman, Architectures in the IoT Civilization,
https://www.netburner.com/learn/architectural-frameworks-in-the-iot-civilization/
9. L. Columbus, Roundup Of Internet Of Things Forecasts And Market
Estimates, 2016,
https://www.forbes.com/sites/louiscolumbus/2016/11/27/roundup-of-internet-
of-things-forecasts-and-market-estimates-2016/#7bc26101292d
10. Sven Obadić, IoT i pametna kuća,
https://repozitorij.unios.hr/islandora/object/etfos:1651/preview
11. TechTarget, IoT Cloud (Salesforce IoT Cloud),
https://searchcustomerexperience.techtarget.com/definition/IoT-Cloud-Salesforce-IoT-
Cloud
https://www.racunalo.com/vodic-za-razumijevanje-internet-stvari-internet-of-things-iot/https://www.racunalo.com/vodic-za-razumijevanje-internet-stvari-internet-of-things-iot/https://internetofthingsagenda.techtarget.com/definition/thing-in-the-Internet-of-Thingshttps://internetofthingsagenda.techtarget.com/definition/thing-in-the-Internet-of-Thingshttps://internetofthingsagenda.techtarget.com/definition/smart-home-or-buildinghttps://www.scnsoft.com/blog/iot-architecture-in-a-nutshell-and-how-it-workshttps://repozitorij.unin.hr/islandora/object/unin:1884/previewhttps://datafloq.com/read/7-trends-of-internet-of-things-in-2017/2530https://www.netburner.com/learn/architectural-frameworks-in-the-iot-civilization/https://www.forbes.com/sites/louiscolumbus/2016/11/27/roundup-of-internet-of-things-forecasts-and-market-estimates-2016/#7bc26101292dhttps://www.forbes.com/sites/louiscolumbus/2016/11/27/roundup-of-internet-of-things-forecasts-and-market-estimates-2016/#7bc26101292dhttps://repozitorij.unios.hr/islandora/object/etfos:1651/previewhttps://searchcustomerexperience.techtarget.com/definition/IoT-Cloud-Salesforce-IoT-Cloudhttps://searchcustomerexperience.techtarget.com/definition/IoT-Cloud-Salesforce-IoT-Cloud
-
30
Sažetak
Korisničko programiranje u kontekstu Interneta stvari
Ovaj rad opisuje korisnički programski jezik za Internet stvari kojemu je uloga
upravljanje stvari uključujući komunikaciju s oblakom i napravama. Jezik je
pojednostavljen za što lakše razumijevanje i korištenje. Prvo je objašnjena uloga i
svrha jezika, a zatim je opisana struktura, sintaksa i oblik pravila i naredbi te što se
događa njihovim izvođenjem. Na kraju su dani primjeri pravila i rezultati njihovog
pokretanja.
Ključne riječi: Internet stvari, korisničko programiranje
Summary
User Friendly Programming for a Device in Internet of Things
This document presents user friendly programming language for Internet of Thing
devices which could be used to control devices and facilitate their communication
with the Cloud and device peripherals, abstracting both. Language is simplified for
easier understanding and use. Firstly, the role and the purpose of language are
explained, then structure, syntax and form of rules and commands and what
happens when they execute are described. Examples of rules and results of their
launch are shown in the end.
Keywords: Internet of Things, User Friendly Programming