• Rezultati Niso Bili Najdeni

Zasnova in uporabljene tehnologije

dogodki v operacijskem sistemu [4, stran 319 - 322]. V obeh primerih mora biti programska oprema monitorja ˇcim krajˇsa, da ne posega v delovanje operacijskega sistema in s tem ne vpliva na eksperiment. Hkrati morajo biti meritve opravljene preudarno, ker lahko preveliko ˇstevilo meritev predstavlja preobremenitev za vire raˇcunalniˇskega sistema. Poslediˇcno se mora nadzorni del za zajem podatkov na testnem vozliˇsˇcu izvajati soˇcasno s testno aplikacijo, prednost pa mora imeti sle-dnja.

Testno omreˇzje LOG-a-TEC se uporablja v raznovrstnih eksperimentih, tako z eksperimentalnimi napravami kot z infrastrukturnimi. Nadgradnja mora biti temu primerno univerzalna in prilagodljiva. Uporabniˇski vmesnik mora biti intu-itiven in preprost za uporabo ter integriran v ˇze razvito platformo SMS. Nazorno mora prikazovati stanja naprav med izvajanjem eksperimenta (npr. naprava je aktivna oz. izkljuˇcena iz eksperimenta, izvaja aplikacijo ali pa je z izvajanjem ˇ

ze zakljuˇcila ipd.). Jasno naj bo razviden prehod med stanji z moˇznostjo pri-kaza dodatnih informacij vozliˇsˇca. Sinhron zaˇcetek delovanja eksperimentalne aplikacije na veˇc napravah lahko doseˇzemo z uvedbo ukaza za zaˇcetek izvajanja meritev. Podobno naj bodo omogoˇceni tudi ukazi za zaustavitev in ponovitve eksperimenta. Uporabniku naj bo ponujen vmesnik za interakcijo z vozliˇsˇci, s katerim lahko poˇslje ukaze eni napravi, ali veˇc napravam hkrati.

Kot vsak nadzorni sistem naj tudi ta stremi k ˇcim veˇcji odzivnosti in posoda-bljanju stanj in informacij v realnem ˇcasu. V brezˇziˇcnem omreˇzju s senzorskimi napravami je doseganje realno ˇcasovnih odzivov naprav v pravem pomenu besede praktiˇcno nemogoˇce. Brezˇziˇcen prenos sporoˇcila iz ene naprave na drugo vnaˇsa zamudo, ravno tako obdelava sporoˇcila, zato v tem primeru sistem v realnem ˇcasu razumemo bolj kot sistem, ki se odzove “brez obˇcutne zakasnitve”[36, stran 214].

4.2 Zasnova in uporabljene tehnologije

Predhodno opisane zahteve smo naslovili z naˇcrtovanjem spletnega vmesnika za prikaz stanj in mehanizmom izmenjevanja sporoˇcil med vozliˇsˇci. Spletni vmesnik uporabniku prikazuje realno ˇcasoven pregled nad stanjem vozliˇsˇc v eks-perimentu in omogoˇca poˇsiljanje ukazov ter prejemanje odgovorov ciljnih naprav.

Mehanizem izmenjevanja sporoˇcil je namenjen posredovanju informacij med upo-rabnikom in napravami. Realizirali smo ga z uporabo centraliziranega pristopa, kjer ena naprava deluje kot centralni upravitelj vseh naprav v testnem omreˇzju.

Vsebuje bazo podatkov vseh vozliˇsˇc in njihovo realno ˇcasovno stanje. Uporabni-kov ukaz se na centralni napravi obdela in prenese do izbranega vozliˇsˇca, hkrati pa naprave same posodabljajo svoje stanje s poˇsiljanjem sporoˇcil na centralno napravo, le ta pa jih posreduje uporabniku. Diagram idejne zasnove prikazuje slika 4.1.

Slika 4.1: Diagram idejne zasnove delovanja nadzornega sistema.

Ceprav smo lahko za izvedbo nadzornega sistema izbirali med veˇˇ c orodji, smo strmeli smo k uporabi ˇze uveljavljenih, kar zmanjˇsa razvojni ˇcas v primeru nadgradenj. V nadaljevanju so predstavljena izbrana orodja in utemeljitve glede na zahteve sistema.

4.2.1 Izmenjevanje sporoˇcil

Testno omreˇzje lahko predstavimo kot porazdeljen sistem (ang. distributed sy-stem), vsako vozliˇsˇce v njem pa kot svoj podsistem. Aplikacija razˇsiritve je tako porazdeljen program (ang. distributed program), ki svoje delo opravlja med veˇc raˇcunalniki hkrati.

4.2 Zasnova in uporabljene tehnologije 31

Komunikacija med porazdeljenimi sistemi lahko temelji na komunikaciji s pre-prostim poˇsiljanjem in prejemanjem sporoˇcil ali pa s klici oddaljenih postop-kov [37]. Primeri slednjih so lahko Java RMI1 ali ZeroRPC2, s katerimi lahko odjemalec v porazdeljenem sistemu preko streˇznika prikliˇce neki postopek ali me-todo. Tovrstno funkcionalnost bi lahko izkoristili za izvrˇsevanje uporabnikovih ukazov na vozliˇsˇcih, kot so to naredili v [25] in [13].

Odloˇcili smo se pa za uporabo komunikacije s sporoˇcili, kjer bo ena izmed na-prav, imenovana centralna naprava, zbirala in uporabniku posredovala sporoˇcila vseh ostalih naprav. Za namene posredovanja ukazov mora centralna naprava vzpostaviti komunikacijski kanal in ustvariti povezovalno omreˇzje za povezavo med oddajnikom in prejemnikom. Ker so vozliˇsˇca z infrastrukturnim omreˇzjem povezana v internet, lahko za povezovalno omreˇzje uporabimo omreˇzno povezavo.

Najbolj preprosto izmenjevanje sporoˇcil lahko izvedemo z internetnimi protokoli (na primer TCP, UDP ali MQTT). Odloˇcili smo se za uporabo knjiˇznice ZeroMQ3, ki je namenjena uporabi v porazdeljenih aplikacijah. Njen asinhroni naˇcin delo-vanja omogoˇca skoraj realno ˇcasovno izmenjevanje sporoˇcil med napravami in v ozadju delovanja programa skrbi za vzpostavitev ter vzdrˇzevanje komunikacij-skega kanala [38].

4.2.2 Spletni vmesnik

Uporabniˇski vmesnik predstavlja izhodno komponento sistema, ki uporabniku prikazuje potek izvajanja eksperimenta. Umestili smo ga v spletno stran portala SMS, zato smo stremeli k uporabi orodij, ki se v njem ˇze uporabljajo.

Spletno stran lahko delimo na ˇcelno (and. frontend) in zaledno (ang. backend) stran, kot prikazuje slike 4.2. Prvi del se izvaja na strani odjemalca, v brskalniku uporabnika in je namenjen prikazu podatkov ter interakciji z uporabnikom. Za razvoj ˇcelnega dela strani se najpogosteje uporabljajo oznaˇcevalni jezik HTML (ang. Hypertext Markup Language), predloge CSS (ang. Cascading Style She-ets) in programski jezik JavaScript, katerih uporabnost lahko dodatno razˇsirimo

1https://en.wikipedia.org/wiki/Java remote method invocation

2https://www.zerorpc.io/

3https://zeromq.org/

s knjiˇznicami in programskimi okvirji (ang. framework). Za izdelavo statiˇcnega dela spletne strani uporabniˇskega vmesnika smo uporabili jezik HTML in ga obli-kovali s predlogami CSS ter okvirjem Bootstrap4. Dinamiˇcen prikaz in interak-tivnost z uporabnikom smo izvedli s programom v jeziku JavaScript in knjiˇznico jQuery5.

Slika 4.2: Zasnova izdelave spletnega vmesnika.

Zaledni del spletne strani se izvaja na aplikacijskem streˇzniku, kjer se shranjeni podatki urejajo in posredujejo na ˇcelno stran. Za razvoj zalednega sistema smo izbirali med ˇstevilnimi razvitimi okvirji in programskimi jeziki ter se odloˇcili za uporabo streˇznika Flask6, predvsem zaradi univerzalnosti in preproste uporabe.

Narejen je v okolju Python in ponuja preproste metode za posredovanje spletnih vsebin brskalniku.

Zaradi zahtev po realno ˇcasovnem odzivu smo za komunikacijo med ˇcelnim in zalednim delom uporabili protokol WebSocket7. Za razliko od mehanizma SSE (ang. server sent events) ponuja vzpostavitev dvosmernega komunikacijskega kanala, s katerim lahko brskalnik in streˇznik asinhrono izmenjujeta sporoˇcila, kar poslediˇcno omogoˇca posodobitev spletne strani v primeru sprememb v zalednem delu (npr. v eksperimentu). Za implementacijo v aplikacijo na strani odjemalca smo uporabili knjiˇznico SocketIO8, v programu aplikacijskega streˇznika pa okolje Flask-SocketIO9.

4https://getbootstrap.com/

5https://jquery.com/

6https://flask.palletsprojects.com/en/2.0.x/

7https://datatracker.ietf.org/doc/html/rfc6455

8https://socket.io/

9https://flask-socketio.readthedocs.io/en/latest/