30
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.

KORISNIČKO PROGRAMIRANJE Uradiofrekvencijske signale, (120kHz) koji predstavljaju digitalnu informaciju, kroz električna ožičenja pa sve do prekidača ili utičnica koji se mogu

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

  • 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