You are on page 1of 10

Univerzitet u Novom Sadu jul - avgust 2017.

Fakultet tehničkih nauka Novi Sad

DNEVNIK STRUČNE PRAKSE

Rukovodilac stručne prakse: Student:


dr Miodrag Brkić Nemanja Grbić
Sadržaj
1. Uvod
2. O projektu
3. O programu projekta KNX protokola
3.1. CommunicationService.java
3.2. DeviceType.java
3.3. Function.java
3.4. Listener.java
3.5. Packet.java
3.6. State.java
3.7. Terminal.java
4. Zaključak

2
1. Uvod
Firma Ion Solutions se bavi projektovanjem “pametnih” kuća, zgrada i ugradnjom
opreme. Pametna kuća predstavlja objekat opremljen najmodernijom
tehnologijom sa kojom dobijate visok nivo bezbednosti, značajne uštede u
potrošnji energije i jednostavno upravljanje svim sistemima tog objekta. Firma se
deli na 2 tima ljudi i svaki tim ima svoju određenu funkciju.
Prvi tim radi na softveru za kontrolu kućnih uređaja (rasveta, roletne, klima
uređaji...) preko velikog broja komunikacionih uređaja (telefon, zidni displej,
tablet…). Preko Java programskog jezika programiraju kontrolne jedinice kao što
su mikrokontroleri Raspberry Pi. Taj tim programera je takođe zadužen i za
održavanje sistema preko internet komunikacije.
Drugi tim ljudi se bavi projektovanjem i ugradnjom sistema. Sistem se uglavnom
sastoji od rasvete, roletna, klima uređaja, senzora, kamera… Takođe ako prvi tim
ne uspe da reši problem preko internet komunikacije, drugi tim se šalje na teren
da reše problem sistema.
Firma me je priključila prvom timu i dala poseban projekat koji će u budućnosti
firme biti od koristi.

3
2. O projektu
Postoje mnogobrojni “smart home” protokoli. Kako bi firma imala veće tržište
potrebno je što veći broj protokola savladati. Projekat na kom sam radio bio je da
napišem program koji će kontrolisati uređaje makete preko računara. Maketa je
predstavljala uređaje u kući kao što su roletne, rasveta i klima uređaj i radila je
preko KNX protokola. Korišćen je ETS4 program koji je poseban za KNX protokol i
služi za programiranje KNX sistema. Programiranje preko ETS4 programa je GUI
programskog tipa i bilo je potrebno prevesti u procerudalni tip programiranja u
Java programski jezik. Da bi saznali koje bite ETS4 šalje maketi, korišćen je
Wireshark program koji pokazuje bite u komunikaciji između računara i makete.

Slika 1.1. Izgled makete

4
3. O programu projekta KNX protokola
Program projekta KNX protokola kontroliše lampice na maketi koje predstavljaju
uređaje kao što su roletne, rasveta i klima uređaj. Sastoji se od 14 fajlova od čega
su 7 klasa, 3 klase niti i 4 enumeratora. Program radi tako što preko terminala
zadajete komande i dobijate povratnu poruku da li je komanda izvršena ili nije. Na
slici 2.1. možete videti sve fajlove programa projekta KNX protokola.

Slika 2.1. Lista fajlova

Obeleženi fajlovi će biti detaljnije objašnjeni jer su oni ključni. Fajlovi


AddressLevels.java , DeviceAddress.java , DeviceCommand.java i Priorities.java su
pomoćni fajlovi fajla Device.java koji predstavlja od čega se sastoji uređaj. Ukratko
sastoji se od imena, tipa, adresa na različitim nivoima (različiti nivoi predstavljaju
tip komande koja se šalje) i prioriteta. U Temperature.java se nalaze formule koje
služe za merenje trenutne temperature i zadavanje željene temperature koje se
koriste u tipu uređaja FAN_COIL.

3.1. CommunicationService.java
CommunicationService.java je fajl klasa u njoj se nalazi funkcija send() koja šalje
komande maketi. Tu se vodi računa u zavisnosti od komande koja se zadaje
određeni paketi bita se šalju. Slanje više komandi uzastopno u kratkom
vremenskom periodu nije dobro i može doći do kvara sistema. Zato ovaj fajl radi
kao nit i konstantno vodi računa da postoji vremenski razmak između komandi.

5
3.2. DeviceType.java
U fajlu DeviceType.java su definisani tipovi uređaja i funkcije svakog tipa uređaja.
Na slici 3.1. možemo videti 5 tipova uređaja i njihove funkcije.Tako da ako imamo
veliki broj uređaja dele se u grupe na ovih 5 tipova.

Slika 3.1. Prikaz fajla DeviceType.java

Tip uređaja SWITCH predstavlja prekidačke uređaje, tip uređaja DIMMER


prestavlja rasvetu koja ima nivo jačine svetlosti, BLINDS predstavlja roletne, a
FAN_COIL predstavlja tip klima uređaja koji ima 3 nivoa brzine ventilatora,
grejanje i hlađenje. Takođe tip uređaja FAN_COIL može da izmeri trenutnu
temperaturu i ima opciju da zada željenu temperaturu tako da automatski greje ili
hladi.

6
3.3. Function.java
Na slici 4.1. je prikazan fajl Function.java u kojem su definisane sve funkcije svih
uređaja i bitovi koji se šalju sa tom funkcijom.Bitovi su predstavljeni u
heksadecimalnom obliku, a adresa funkcije je predstavljena u decimalnom obliku.

Slika 4.1. Prikaz fajla Function.java

3.4. Listener.java
Listener.java fajl je klasa nit i konstantno prisluškuje i prima informacije od
makete. Preko Listener.java fajla znamo stanje uređaja na maketi. Na primer da li
je rasveta uključena ili isključena i tako program zna da li je komanda izvršena ili
nije. Takođe u Listener fajlu su definisane i funkcije connect() , disconnect() ,
stateConnection() i getDeviceByAdress() .

7
3.5. Packet.java
U Packet.java fajlu su definisani paketi bita. Na slici 5.1. su prikazane grupe paketa
bita za slanje.Pomoću Wireshark programa utvrđeni su biti koji su potrebni u
komunikaciji.

Slika 5.1. Prikaz fajla Packet.java

Grupa paketa bita CONNECTION_REQUEST služi pri uspostavljanju veze, a


DISCONNECT_REQUEST se koristi pri prekidanju veze. Grupa paketa bita
SEND_REQUEST se koristi u slanju komandi.Svim ovim grupama je potrebna grupa
TUNNELLING_ACT tako da se ova grupa paketa svuda koristi.

8
3.6. State.java
State.java fajl je klasa nit koji proverava status veze. Na slici 6.1. je prikazan
State.java fajl i vidi se dok je veza uspostavljena proverava se status veze svake 4
sekunde, a ako je veza prekinuta svake 2 sekunde dok se veza ne povrati.

Slika 6.1. Prikaz fajla State.java

9
3.7. Terminal.java
U Terminal.java fajlu se nalaze funkcije main() i startService() sa kojima sve
počinje. Sa startService() funkcijom klase niti počinju da rade, a main() funkcija
ispisuje u konzoli terminal koji se kontroliše brojevima kao što je prikazano na slici
7.1.

Slika 7.1. Prikaz Konzole

4. Zaključak
Stručna praksa u ovoj firmi mi je dala veliko iskustvo o programiranju. Naučio sam
kako se implementiraju niti, kako se organizuju klase kad su na složenijem nivou,
kako se implementira zaštitno kodovanje. Takođe sam i upoznao programiranje
mikrokontrolera i UDP komunikaciju. Video sam kako programeri dolaze do
odgovora i rešavaju probleme u kodu. Upoznao sam i sisteme pametnih kuća i
način na koji se projektuju. Iako sam radio samo na softverskom delu ovaj posao
je drugačiji od samog programiranja. Svaki program se testira uživo na uređajima i
odlično iskustvo je što sa programom koji napišeš kontrolišeš uređaje oko sebe.
Stručne prakse su jako dobar način da studenti dobiju nova znanja i iskustva.

10

You might also like