-
Notifications
You must be signed in to change notification settings - Fork 0
Tehnička dokumentacija
- Trello | Management Board
- GitHub repozitorij | microsensor
- Github | Sonarqube reports
- Postman | API dokumentacija
- Javadoc | Dokumentacija
- 1. Uvod
- 2. Funkcionalni zahtjevi
- 3. Nefunkcionalni zahtjevi
- 4. Ograničenja
- 5. Dizajn arhitekture softvera
- 6. Modularnost
- 7. Microbit kod
- 8. Microbit shema DHT22
- 9. Pokretanje aplikacije
U ovome dokumentu opisat ćemo specifikaciju softverskih zahtjeva. Softver bi omogućio pregled podataka kao što su temperatura, vlaga zraka i količina svjetlosti u dvorani. Korisnici softvera imali bi uvid u podatke u realnom vremenu, ali i statističke podatke. Uz pomoć sustava, korisnik može prijaviti svoju prisutnost na predavanju u određenoj dvorani u kojoj se nalazi.
U ovome dokumentu opisat ćemo specifikaciju softverskih zahtjeva. Softver bi omogućio pregled podataka kao što su temperatura, vlaga zraka i količina svjetlosti u dvorani. Korisnici softvera imali bi uvid u podatke u realnom vremenu, ali i statističke podatke. Uz pomoć sustava, korisnik može prijaviti svoju prisutnost na predavanju u određenoj dvorani u kojoj se nalazi.
- Sustav za prijavu
- Prilikom otvaranja aplikacije, korisnik je tražen za unos osobnih podataka koje je dobio od strane fakulteta kako bi se prijavio u aplikaciju.
Slika 1. Prikaz fragmenta ERA modela za funkcionalnost prijave
Tablica _korisnik_ sadrži atribute koji su vezani za korisnika. U tablicu spremamo ime, prezime, email i lozinku korisnika. Korisnika kreira referada kod upisa na fakultet.
Slika 2. Prikaz Mockup-a za funkcionalnost prijave
Slika 3. Prikaz Use Case dijagrama za funkcionalnost prijave
Korisnici aplikacije (studenti) prijavljuju se pomoću svog AAI@EduHr elektroničkog identiteta. Nakon unosa korisničke oznake i lozinke, te pritiska na gumb prijave, aplikacija korisnika prebacuje na glavni zaslon aplikacije.
- Sustav za mjerenje i prikaz podataka u realnom vremenu
- Nakon prijave u aplikaciju, korisnik ima pregled u podatke očitane sa raznih senzora u realnom vremenu.
Slika 4. Prikaz fragmenta ERA modela za funkcionalnost prikaza realnih podataka
U tablicu _zgrada_ spremamo naziv zgrade, upravo zbog toga što fakultet može imati više zgrada u kojoj se održavaju predavanja. Tablica _dvorana_ služi nam za spremanje dvorana, te sadrži vanjski ključ na tablicu _zgrada_. U tablicu _mjerenje_ zapisujemo podatke koje dobivamo iz senzorskih očitanja. Zapisivat ćemo temperaturu, vlagu zraka, jakost svjetlosti, datum te dvoranu na koju se odnose navedena senzorska očitanja.
Slika 5. Prikaz Mockup-a za funkcionalnost prikaza realnih podataka
Slika 6. Prikaz Use Case dijagrama za funkcionalnost prikaza realnih podataka
Na glavnom zaslonu aplikacije korisnik ima uvid u nekoliko podataka koji su dohvaćeni s micro:bit senzora. Podaci su mjereni u realnom vremenu unutar neke od prostorija fakulteta (na primjeru Dvorana 10), a na aplikaciji su prikazani sljedeći podaci: temperatura zraka, vlaga zraka, jačina svjetlosti.
- Sustav za statistički prikaz podataka
- Nakon prijave u aplikaciju, korisnik ima pregled u statističke podatke očitane sa raznih senzora kroz određeno razdoblje. Kako je prikaz statističkih podataka usko povezan s prikazom realnih podataka, nepotrebno je ponavljati prikaz dijagrama.
Slika 7. Prikaz Mockup-a za funkcionalnost prikaza statističkih podataka
Odabirom opcije „Statistički podaci“ na glavnom izborniku aplikacije korisnik dobiva uvid u podatke mjerene u nekom prošlom vremenu. Na primjeru zaslona aplikacije vidljivi su podaci mjereni u protekla četiri dana, odnosno dnevne varijacije između temperature i vlage zraka, te jačine svjetlosti. Putem jednostavnog grafa vizualno su prikazane razlike između izmjerenih temperatura zraka za neko prošlo vrijeme, u ovom slučaju za period od četiri dana.
- Sustav za prijavu prisutnosti na predavanju
- Nakon prijave u aplikaciju, sustav dohvaća podatke sa senzora, točnije, u kojoj dvorani se nalazi, te korisnik može prijaviti svoju prisutnost na predavanju u dvorani u kojoj se nalazi.
Slika 8. Prikaz fragmenta ERA modela za funkcionalnost prijave prisutstva
U tablicu _prisustvo_ bilježit ćemo prisutnost korisnika (studenata) na predavanju, zapravo ćemo zapisati koji korisnik je bio na određenom kolegiju određenog datuma. Tablica _studenti_na_kolegiju_ sadrži popis studenata koji su bili prisutni na određenom kolegiju. Zapravo se radi o vanjskim ključevima na tablicu kolegij i tablicu korisnik. Kako je prethodno navedeno, u tablicu _zgrada_ spremamo naziv zgrade, upravo zbog toga što fakultet može imati više zgrada u kojoj se održavaju predavanja. Tablica _dvorana_ služi nam za spremanje dvorana, te sadrži vanjski ključ na tablicu _zgrada_. U tablicu _raspored_ spremamo podatke o održavanju predavanja određenog kolegija (koji je ujedno i vanjski ključ na tablicu _kolegij_) u određenoj dvorani (koja je ujedno i vanjski ključ na tablicu _dvorana_) te sadrži podatke o vremenu predavanja.
Slika 9. Prikaz Mockup-a za funkcionalnost prijave prisutstva
Slika 10. Prikaz Use Case dijagrama za funkcionalnost prijave prisutstva
Kada korisnik odabere opciju „Prijava prisustva“ aplikacija automatski dohvaća podatke o kolegiju na kojem student želi zabilježiti svoje prisustvo, odnosno podatke o dvorani u kojoj se trenutno održava isti kolegij. Naime, potrebno je potvrditi svoje prisutstvo u dvorani, bilo danim QR kodom od profesora, četveroznamenkastim kodom ili unosom PIN-a. Nakon što je unesen validan kod za predavanje, pritiskom na gumb „Prijavi se“ korisnik izvršava prijavu prisustva.
Nefunkcionalni zahtjevi zapravo su opisnici sustava. Oni moraju biti potpuni i konzistentni kako nebi došlo do raznih poteškoća u radu aplikacije. Razlikujemo tri tipa nefunkcionalnih zahtjeva, a to su zahtjevi programskog produkta, organizacijski zahtjevi i vanjski zahtjevi.
- Zahtjevi programskog produkta su:
- Sustav mora raditi na Android operativnom sustavu
- Sustav mora imati vrijeme odaziva manje od 3 sekunde
- Sustav mora biti spojen na internet
- Sustav mora biti stalno dostupan
- Sustav mora posjedovati Bluetooth
- Organizacijski zahtjevi su:
- Korištenje micro:bit-a
- Korištenje podataka s micro:bita na mobilnom uređaju
- Vanjski zahtjevi su:
- Sustav mora biti siguran
- Sustav mora održavati privatnost podataka
Aplikacija je vezana samo uz Android tehnologiju i za njeno korištenje potrebno je imati minimalnu verziju sustava Android 7.0 Nougat (SDK 24). Isto tako, aplikacija je namijenjena korištenju na fakultetima, pa je za prijavu u aplikaciju potrebno imati AAI@EduHR korisnički račun.
Slika prikazuje višu razinu arhitekture sustava u kojem aplikacija Microsensor radi, te prikazuje poveznice između arhitekturalnih jedinica. Kako bi aplikacija nesmetano mogla raditi potrebno je biti povezan na internet iz razloga što se baza podataka nalazi na udaljenom web poslužitelju. Komunikacija između između mobilnog i microbit uređaja se ostvaruje putem bluetooth tehnologije, gdje je microbit uređaj postavljen u "beacon" modu, tj. odašilje podatke svim uređajima u blizini. Baza podataka je implementirana u MySQL sustavu za upravljanje bazom podataka, a hostana je na besplatnom hosting sustavu 000webhost.com
Slika 11. Prikaz više razine arhitekture sustava
Kako bi još bolje shvatili funkcionalnost sustava, u nastavku je prikazana niža razina arhitekture sustava. Korisnici aplikacije dobivaju informacije i upravljaju aplikacijom preko korisničkog sučelja. To sučelje predaju podatke dobivene od korisnika modulu za obradu podataka koji ih nakon obrade šalje prezentacijskom modulu koji vrši prikaz na mobilnom uređaju. U prezentacijskom modulu je korištena Butter Knife biblioteka koja omogućuje spajanje (engl. binding) polja i metoda sa prikazom (engl. view) pomoću anotacija. Modul za komunikaciju putem Bluetooth veze povezuje se sa Microbitom preko sučelja Bluetooth Low Energy. Microbit šalje podatke sa senzora na svoje Bluetooth sučelje koje ga prosljeđuje Android mobilnom uređaju. Modul za obradu podataka koristi modul za slanje web zahtjeva kako bi poslao i primio podatke iz baze podataka. Modul za slanje web zahtjeva sučelje je prema web servisu koji se odvija na web poslužitelju i komunicira sa bazom podataka. Valja napomenuti da ovaj modul koristi 3 vanjske biblioteke:
- Retrofit - služi za "pretvaranje" vanjskog web servisa u Java sučelje
- GSON - služi za pretvorbu JSON objekta u Java objekte i obrnuto
- OkHttp - HTTP klijent koji omogućava slanje i primanje više zahtjeva unutar jednog socketa
Web servis ovisno o zahtjevima koje zaprima od modula za slanje web zahtjeva obavlja čitanje ili pisanje u bazu podataka.
Slika 12. Prikaz niže razine arhitekture sustava
Slika 15. Prikaz dijagrama klasa mogula app
Slika 16. Prikaz dijagrama klasa modula webservice
S ciljem implementacije programskog proizvoda sa čistom arhitekturom, prilikom razvoja funkcionalnosti 'Prikaz statističkih podataka' korišten je princip modularnosti. Sukladno tome, svaki način prikaza statističkih podataka biti će izdvojen kao zaseban modul (komponenta).
U ovom slučaju, prikaz statističkih podataka u obliku liste (ListModuleFragment) čini jedan modul, a prikaz statističkih podataka u obliku grafa (GraphModuleFragment) čini drugi modul. Na ovaj način sustav postaje slabo povezan (engl. loose coupled) jer komponente sustava nemaju puno znanja o drugim komponentama, te tako ne ovise previše jedna o drugoj. Svaki modul (komponenta) se tako može isključiti ili uključiti po potrebi. Nadalje, sustav je dostupan za proširenje pa se tako dodavanje novog prikaza statističkih podataka (npr. u obliku izvještaja) može izvesti jednostavnim kreiranjem novog modula te implementacijom sučelja (Display Module) koji StatisticsViewFragment zahtjeva.
Princip modularnosti smo također koristili i kod funkcionalnosti 'Prijava prisustva'. Naime, korisnik svoje prisustvo na nastavi može prijaviti korištenjem jednog od tri dostupna modula (komponente). Jedan modul čini prijava prisustva pomoću skeniranja QR koda (QRCodeModuleFragment) kojeg korisnik dobije. Drugi modul omogućuje prijavu pristupa pomoću unosa koda (CodeModuleFragment) kojeg korisnik dobije neposredno prije prijave, dok treći modul čini prijavu prisustva pomoću četveroznamenkastog PIN-a (PinAttendanceFragment). Moguća je nadogradnja sustava putem proizvoljnog četvrtog modula za prijavu prisustva pomoću implementacije AttendanceModule sučelja kojeg FormAttendanceSubmission zahtjeva.
Ovo poglavlje sadrži prikaz programskog koda za razvoj microbit aplikacije, koji je izrađen na stranici MakeCode.
Slika 18. Prikaz microbit koda
Prikazani programski kod napravljen je korištenjem dostupnih programskih blokova koji funkcioniraju na način da dok je microbit uređaj uključen, šalje preko BLE URL koji se sastoji od podataka koji microbit očita sa ugrađenih senzora. Korišten je dostupan dodatak za rad s BLE tehnologijom i dodatak za čitanje podataka s analognih pinova. Blokovi koda su zapravo napisani u programskom jeziku JavaScript, te se primjer koda nalazi na GitHub stranici.
Kako micro:bit nema ugrađen vlastiti senzor za potrebe mjerenja vlage zraka, koristili smo nadogradnju putem DHT22 senzora za mjerenje vlage. Senzor se s micro:bit-om povezuje pomoću posebne ploče (Edge Connector Breakout Board) na koju se priključuju tri žice. Žice je potrebno priključiti na pinove: nula, 3V (volta) i uzemljenje. Za potpun rad senzora također je potrebno koristiti otpornik koji se postavlja između senzora i micro:bit-a, odnosno na pinove nula i 3V.
- Korisnici koji postoje u bazi podataka:
- Korisnik 1: Email: admin@foi.hr
- Korisnik 2: Email: dbaricevi@foi.hr
Password: admin
Password: bratic
Važno je napomenuti kako testiranje aplikacije nije moguće izvesti preko Android simulatora, zbog toga što ne podržava Bluetooth povezanost. Tako da je za testiranje potrebno koristiti Android mobilni uređaj.

