Professional Documents
Culture Documents
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.
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.
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.
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.
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.
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.
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.
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