Professional Documents
Culture Documents
Mihocek Ivan Mev 2017 Zavrs Struc PDF
Mihocek Ivan Mev 2017 Zavrs Struc PDF
Mihocek Ivan Mev 2017 Zavrs Struc PDF
Mihocek, Ivan
2017
Repository / Repozitorij:
STUDIJ RAČUNARSTVA
Ivan Mihocek
ZAVRŠNI RAD
Čakovec, 2017.
MEĐIMURSKO VELEUČILIŠTE U ČAKOVCU
STUDIJ RAČUNARSTVA
Ivan Mihocek
ZAVRŠNI RAD
Mentor
Čakovec, 2017.
Sažetak
U sklopu ovog rada napravljeno je i dokumentirano daljinsko upravljanje LED rasvjetom
preko PubNub protokola te je ukratko objašnjena paradigma Internet of Things te pametne
kuće. Platforma na kojoj je rad rađen je popularno računalo Raspberry Pi, s Raspibian
verzijom Linuxa. Napisana je programska podrška koja se vrti na Raspberry Piju (Python i
bash shell) te jednostavno korisničko sučelje u JavaScriptu i HTML-u. Raspberry Pi također
vrti apache server na sebi. Napravljena je i jednostavna demonstracija pomoću LED diode.
Za regulaciju jačine svjetlosti korištena je PWM modulacija. U uvodu je dan kratak opis polja
koje će se obrađivati, nadalje je opisan IoT. Prelazi se na samu tehničku izvedbu i opis
hardverskog dijela (Raspberry) te softverskog dijela s isječcima koda. U zaključku su dana
predložena poboljšanja samog sustava.
Ključne riječi:
Internet of Things, Smart Home, Smart Lightning, Raspberry Pi, LED, Python, Raspibian,
PWM
Sadržaj
Sažetak ....................................................................................................................................... 1
1. Uvod ...................................................................................................................................... 2
2. Programski alati i podrška ..................................................................................................... 3
2.1. Internet of Things paradigma ......................................................................................... 3
2.1.1. Općenito .................................................................................................................. 3
2.1.2. Primjena................................................................................................................... 3
2.1.3. Pametna kuća ........................................................................................................... 5
2.1.4. Protokoli .................................................................................................................. 7
2.1.4.1. Zigbee ............................................................................................................... 8
2.1.4.2. Z-Wave ........................................................................................................... 10
2.1.4.3. Wi-Fi .............................................................................................................. 10
2.1.4.4. MQTT............................................................................................................. 11
2.1.4.5. PubNub ........................................................................................................... 12
2.2. Arhitektura sustava ....................................................................................................... 14
2.2.1. Blok-shema ............................................................................................................ 14
2.2.2. Raspberry Pi .......................................................................................................... 14
2.2.3. LED rasvjeta .......................................................................................................... 16
2.2.3.1. Općenito ......................................................................................................... 16
2.2.3.2. PWM kontrola jačine rasvjete ........................................................................ 18
2.2.3.3. Rasvjeta .......................................................................................................... 19
Programska podrška ............................................................................................................. 21
2.2.4. Programska podrška na Raspberry Pi platformi .................................................... 21
2.2.4.1. Skripta pidriver.py .......................................................................................... 22
2.2.4.2. Skripta za dobivanje IP adrese na e-mail ....................................................... 23
2.2.4.3. Apache server ................................................................................................. 24
2.2.5. Primanje i vizualizacija podataka .......................................................................... 24
3. Rezultati ............................................................................................................................... 27
4. Zaključak ............................................................................................................................. 29
5. Literatura ............................................................................................................................. 30
Ivan Mihocek Udaljeno upravljanje LED rasvjetom
1. Uvod
Automatizacija kuće (engl. Home Automation) je korištenje i kontrola kućanskih
uređaja preko daljinskog upravljanja ili automatski. U tu svrhu se u zadnje vrijeme najviše
počeo spominjati Internet of Things, tj. mreža senzora i aktuatora unutar kuće koji upravljani
preko centralnog sustava automatiziraju dom.
Ova tema odabrana je zbog lake dostupnosti Raspberry Pi platforme, zbog mnogo dostupnog
otvorenoga koda te zbog zanimljivosti same teme.
Cilj rada je približiti Raspberry Pi platformu studentima, naučiti nešto o Internet of Things
paradigmi te proučiti pametne kuće kao dolazeću novu tehnologiju.
2.1.2. Primjena
Najveća primjena IoT paradigme je u sljedećim poljima:
Samostalni kućanski aparati na struju ili plin postali su održivima tijekom 1900-ih s
uvođenjem distribucije električne energije i doveli su do uvođenja strojeva za pranje rublja
(1904.), grijalica za vodu (1889.), hladnjaka, šivaćih strojeva, perilice posuđa i sušilice za
odjeću. Godine 1975. razvijena je prva tehnologija kućne automatizacije opće namjene X10.
To je komunikacijski protokol za elektroničke uređaje. Primarno koristi ožičenje prijenosnika
električne energije za signalizaciju i upravljanje. Do 2012. godine, u Sjedinjenim Državama,
prema ABI Researchu, instalirano je 1,5 milijuna kućanskih sustava.
Trenutni najveći problem za korisnike pametnih kuća su nesigurni sustavi (Wi-Fi i njegova
ranjivost) te činjenica da je tehnologija još u povojima, pa se može dogoditi da korisnik kupi
uređaje, i nakon nekog vremena proizvođač odluči napustiti taj servis, gasi servere i uređaji
postanu beskorisni.
2.1.4. Protokoli
Za povezivanje pametne kuće koriste se razni protokoli za komunikaciju. Ti protokoli se
mogu podijeliti u dvije vrste:
2.1.4.1. Zigbee
Zigbee je je bežični protokol baziran na IEEE 802.15.4 specifikaciji. Dizajniran je za
komunikaciju gdje je potrebno ostvariti nisku potrošnji i nisku brzinu prijenosa te gdje nije
potreban veliki domet (10 – 100 m). Veći dometi se ostvaruju na principu isprepletene mreže
(engl. mesh network), gdje svaki krajnji čvor može poslati poruku drugom krajnjem čvoru
preko posrednika koji su između u mreži.
Svaki uređaj u mreži ima dvije adrese: 64-bitnu MAC adresu i 16-bitnu mrežnu adresu. MAC
adresa je unikatna u svijetu, dok je mrežna adresa unikatna u mreži.
Fizički se komunikacija odvija na 2,4 GHz (širom svijeta), 902 – 928 MHz (SAD i Australija)
te 868 MHz (Europa).
• Coordinator – uređaj koji kreira mrežu i daje joj jedinstveni PAN ID broj.
Njegova mrežna adresa je uvijek 0.
• Ruter – uređaj koji bi trebao biti priključen na stalno napajanje (gradska
mreža), a ne bateriju. Sposoban je povećavati domet mreži preko mesh
topologije.
• End device – uređaj koji može biti energetski ograničen (baterijsko napajanje)
te može slati podatke samo do najbližeg rutera, koji se onda dalje brine da
podaci stignu na odredište.
Budući da je Zigbee standard specificiran i otvoren, mnogi proizvođači rade svoje čipove,
module i programske pakete koji podržavaju Zigbee komunikaciju.
Još jedna bitna stavka u pametnim kućama je sigurnost. Zigbee protokol koristi 128-bitne
simetrične enkripcijske ključeve za zaštitu.
2.1.4.2. Z-Wave
Z-Wave je bežični protokol koji se koristi u pametnim kućama. Karakteristike su mu
pouzdanost i niska brzina prijenosa. Koristi nelicencirane frekvencije za prijenos (868 i 908
MHz), što pomaže u sprječavanju smetnji i interferencija s Wi-fi, Bluetooth i Zigbee
protokolima. Poruka može preskočiti četiri čvora na putu do krajnjeg čvora, što je dovoljno za
većinu primjena u pametnim kućama.
Sigurnost Z-Wave protokola je u tome što je to zatvoreni protokol te nigdje nije objavljen
dizajn radiodijela čipova, što u praksi onemogućava potencijalne zlonamjernike u
kriminalnim radnjama.
2.1.4.3. Wi-Fi
Wi-Fi je tehnologija za bežično lokalno povezivanje s uređajima na temelju IEEE
802.11 standarda. Wi-Fi je zaštitni znak Wi-Fi Alliancea koji ograničava upotrebu terminala
Wi-Fi Certified na proizvode koji uspješno provode testove za certificiranje
interoperabilnosti. Uređaji koji mogu upotrebljavati Wi-Fi tehnologiju uključuju osobna
računala, konzole za videoigre, pametne telefone, digitalne fotoaparate, tablet-računala,
pametne televizore, digitalne audioreproduktore i moderne pisače. Kompatibilni Wi-Fi uređaji
mogu se povezati s internetom putem WLAN-a i bežične pristupne točke. Takva pristupna
točka (ili hotspot) ima raspon od oko 20 metara u zatvorenom prostoru i veći raspon na
otvorenom. Pokrivenost hotspotom može biti manja kao (npr. jednokrevetna soba sa zidovima
koji blokiraju radiovalove) ili vrlo velika (npr. nekoliko četvornih kilometara ostvareno
korištenjem višestrukih preklapajućih pristupnih točaka).
Wi-Fi najčešće koristi 2,4 GHz UHF i 5 GHz ISF frekvencije. Bez fizičkih veza, on je
osjetljiviji na napad od žičanih veza, kao što je ethernet.
Za komunikaciju između centralne jedinice i cloud servisa koriste se razni protokoli; ovdje su
obrađeni MQTT i PubNub.
2.1.4.4. MQTT
MQTT je publish-subscribe bazirani protokol namijenjen za upotrebu na vrhu TCP-IP
protokola. Troši vrlo malo mrežnog prometa te je podoban za senzore koji šalju svoje podatke
na „oblak“. Zahtijeva priključenje na neku vrstu dispečera (engl. Broker), koji prima pretplate
(engl. subscribe) pojedinog senzora/uređaja na neku temu. [5]
Protokol MQTT (Message Queue Telemetry Transport) razvili su Andy StanfordClark
(IBM) i Arlen Nipper (Eurotech) 1999. godine, da bi pratili naftovod usred pustinje. Bio im je
potreban protokol koji bi omogućio efikasnu brzinu prijenosa podataka uz malu potrošnju
baterije i jeftiniji cjelokupni sustav. Razvijeni protokol MQTT s objavi – pretplati
arhitekturom pokazao se lakšim i ekonomičnijim od protokola HTTP (HyperText Transfer
Protocol) s modelom zahtjeva i odgovora. Model objavi – pretplati pogonjen je događajima i
omogućava klijentima da objavljuju poruke bez brige o njihovoj konačnoj destinaciji.
Konačnu destinaciju objavljene poruke određuje posrednik MQTT koji na osnovi klijentskih
pretplata prosljeđuje poruke i tako oslobađa klijente od slanja zahtjeva za porukama od
interesa, za razliku od protokola HTTP kod kojeg klijenti moraju tražiti informacije koje
trebaju od poslužitelja. Protokol MQTT odlikuje i mala veličina fiksnog zaglavlja od svega 2
bajta što dodatno smanjuje mrežno opterećenje.
2.1.4.5. PubNub
PubNub je također publish-subscribe protokol za komunikaciju između senzora i
servisa za vizualizaciju podataka. Vrlo lako se koristi te postoje biblioteke koje ga podržavaju
u JavaScriptu, .NET-u, Javi, Rubyju, Pythonu itd. U ovom radu se koristi ovaj protokol. Dio
koji se vrti na Raspberry Piju je napisan u Pythonu, dok je dio koji se izvodi u browseru
Javascript.
Mreža PubNub sadržava 300 milijuna uređaja te streama više od 750 milijardi poruka
na mjesec. PubNub koristi model objavljivanja/pretplate za streaming podataka u realnom
vremenu i signalizaciju uređaja te podržava sve mogućnosti WebSocketa, Socket.IO, SignalR,
WebRTC Data Channel i drugih protokola za streaming. PubNub nudi SDK-ove za više od 70
različitih programskih jezika i okruženja, uključujući JavaScript, iOS i Android, kao i
JavaScript okvire kao što su AngularJS, Ember.js i Backbone.js. PubNub također pruža
programsku podršku za SBC platforme, uključujući Raspberry Pi, Arduino, Texas Instruments
i Microchip.
Slika 7. Blok-shema
Izvor: Ivan Mihocek
2.2.2. Raspberry Pi
Raspberry Pi je računalo u obliku male tiskane pločice koja na sebi sadrži sve elemente
potrebne za rad, nastalo kao proizvod Raspberry Pi Foundation sa željom da se potakne razvoj
informatičke pismenosti s naglaskom na programiranje. Izvorni model je postao mnogo
popularniji nego što se očekivalo te se prodavao izvan ciljanog tržišta (npr. u robotici). Do
2016. g. prodano je 11 milijuna uređaja, što je najprodavanije britansko računalo svih
vremena.
Osnovu sustava čine i 21 GPIO 3,3 V podatkovne linije te 10/100 ethernet modul za
priključak na žičnu mrežu i USB hub s 2 vanjska priključka.
Slika 8. Raspberry Pi
Izvor: https://www.raspberrypi.org/
2.2.3.1. Općenito
Svjetleća dioda ili LED (od engl. light-emitting diode), često LE-dioda, posebna
vrsta poluvodičke diode koja emitira svjetlost kada je propusno polarizirana, tj. kada kroz nju
teče struja. Prilikom direktne rekombinacije para elektron – šupljina, emitira se foton svjetla.
Takvo svojstvo imaju poluvodiči galijev arsenid (GaAs), galijev fosfid (GaP) i silicijev
karbid (SiC). Ta pojava se naziva elektroluminiscencija. Boja emitiranog svjetla ovisi o
U slučaju da bi preklapali neko veće trošilo od diode (na primjer žarulja sa žarnom
niti), GPIO pinovi ne bi mogli osigurati dovoljnu struju. Tada je potreban kompleksniji krug,
gdje GPIO pin uključuje i isključuje tranzistorsku sklopku, koja upravlja relejem na koji je
spojena žarulja (Slika 9.). Dioda tu služi za zaštitu od induciranog napona u trenutku
prekidanja struje u zavojnici releja.
PWM (engl. Pulse width modulation) je modulacijska tehnika koja se koristi da bismo
s jednom naponskom razinom u sustavu (npr. 3,3 ili 5 V) mogli kontrolirati razinu snage
dovedene u trošilo. To se radi tako da se prosjek napona kontrolira uključivanjem i
isključivanjem. Efektivna snaga dovedena u sustav je onda ovisna o omjeru vremena koliko je
napon uključen i isključen (Slika 9.). Taj omjer se naziva radni ciklus (engl. duty cycle). U
ovom radu je ta tehnika iskorištena za kontrolu svjetlosti ledice. Za kreiranje PWM signala
iskorištena je Python biblioteka RPIO. [9]
2.2.3.3. Rasvjeta
LED rasvjeta je rasvjeta u kojoj je izvor svjetla svjetleća dioda (LED) ili više njih.
LED rasvjeta ima životni vijek i električnu efikasnost nekoliko puta veću od žarulja sa
žarnom niti te su puno efikasnije i od flourescentnih žarulja. Za usporedbu, LED žarulja s
istom količinom svjetlosti kao žarulja sa žarnom niti troši 10 puta manje energije. Za razliku
od flourescentnih žarulja, LED žarulja nema vrijeme zagrijavanja, već momentalno svijetli u
punom sjaju. U Tablici 2. je prikazana usporedba triju najpopularnijih vrsta žarulja te je očito
da je LED rasvjeta najtrajnija i najštedljivija. Zbog dugotrajnosti i štedljivosti, početna razlika
u cijeni se vrlo brzo isplati.
Korištenje automatskog smanjenja svjetla (engl. dimming) je aspekt pametne rasvjete koji
služi za smanjenje potrošnje energije. Ručno osvjetljavanje svjetla također ima isti učinak
smanjenja potrošnje energije.
Pametna rasvjeta koja koristi senzore pokreta može raditi zajedno s drugom rasvjetom koja je
spojena na istu mrežu kako bi prilagodila rasvjetu po različitim uvjetima.
Programska podrška
2.2.4. Programska podrška na Raspberry Pi platformi
Na Raspberry Piju se vrti Raspbian 7 OS, temeljen na Debian verziji Linuxova OS-a.
Na Raspberry Pi se spaja pomoću SSH shella, koji omogućuje pristup konzoli preko IP
adrese uređaja. Alat korišten za SSH konekciju je Putty [10].
Također, potrebno je postaviti GPIO pin u izlazni pin, koji može pogoniti ledicu:
#Setup GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(16, GPIO.OUT)
Nakon toga potrebno je registrirati kanal i funkciju koja će se zvati kad se dobije neka
poruka:
pubnub.subscribe(pubnubChannelName, gpioCallback)
Ovaj dio koda prima poruke s browsera i prema njima pali i gasi ledicu:
global glow
respstring = ''
command = msg
if('req' in command):
if(command['req'] == 'toggle'):
if(glow):
glow = False;
respstring = 'off'
else:
glow = True
respstring = 'on'
GPIO.output(16, glow)
Dio koda za PWM povećavanje i smanjivanje jačine svjetlosti nije prikazan zbog
veličine te će biti predan u digitalnom obliku.
Za lakši pristup Raspberry Piju napravljena je skripta koja javi IP adresu samog Pija
na e-mail adresu kod samog bootanja sustava. Skripta se zove startup_mailer.py te je
njezin poziv također dodan u /etc/rc.local datoteku.
testIP = "8.8.8.8"
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((testIP, 0))
ipaddr = s.getsockname()[0]
host = socket.gethostname()
U svrhu ovog završnog rada razvijeno je jednostavno grafičko sučelje. Statički dio je u
HTML-u, dok interakcija s PubNubom radi u Javascriptu.
#led {
position: absolute;
margin: 0px;
left: 110px;
top: 75px;
width: 51px;
height: 75px;
right: auto;
bottom: auto;
border-radius: 25px 25px 0px 0px;
border: 0px none rgb(0, 0, 0);
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-transform: translateZ(0px);
background-size: 100% 100%;
}
Dio za komunikaciju preko PubNuba je u Javascriptu. Najprije se moramo povezati s
istim ključem koji je korišten na Raspberry Piju te istim imenom kanala:
pubnub.subscribe({
channel: 'gpio-raspberry-control',
message: function(m){
$( document ).ready(function() {
$('#plus').click(function(e){
pubmsg = { "req" : "plus" };
pubnub.publish(
{
channel : 'gpio-raspberry-control' ,
message : pubmsg
}
);
});
$('#minus').click(function(e){
pubmsg = { "req" : "minus" };
pubnub.publish(
{
channel : 'gpio-raspberry-control' ,
message : pubmsg
}
);
});
$('#toogle').click(function(e){
pubmsg = { "req" : "toogle" };
pubnub.publish(
{
channel : 'gpio-raspberry-control' ,
message : pubmsg
}
);
});
});
Na Slici 15. je prikazano moguće unapređenje sustava, gdje bi se na grafičkom sučelju
prikazivao tlocrt kuće s postavljenim žaruljama (bežičnim). Klikom na pojedinu žarulju dobio
bi se uvid u njezino stanje (on/off) i jačinu svjetlosti (postotak). Trenutno zbog vremenskog
ograničenja u ovom radu to nije izvedeno (a i zbog skupih bežičnih žarulja) te je ostavljeno za
neke buduće radove.
3. Rezultati
Nakon bootanja, Raspberry pošalje svoju IP adresu na odabrani e-mail. Ako se ta IP adresa
unese u web-preglednik, i ako je računalo/mobitel u istoj lokalnoj mreži kao Raspberry, dolazi
se do stranice za upravljanje i vizualizaciju podataka. Tu se može paliti i gasiti LED rasvjeta.
Ako računalo/mobitel nije u lokalnoj mreži, potrebno je ručno pokrenuti datoteku index.html.
Tim pristupom se LED rasvjeta može paliti i gasiti s bilo kojeg mjesta na svijetu s internet-
konekcijom.
U ovom radu je pokazano da se pomoću lako dostupnih platformi i otvorenoga koda može
lako doći do vidljivih rezultata u Internet of Things paradigmi. Pomoću lako dostupnih
materijala moguće je doći do rezultata koji su lako primjenjivi u praksi, industriji i znanosti.
4. Zaključak
Ovim završnim radom pokazano je da Raspberry Pi kao raširena platforma za IoT
projekte vrlo dobra za ovakve projekte (LED rasvjeta). Također, je pokazano da je PubNub
kao sustav za povezivanje IoT uređaja vrlo fleksibilan i jednostavan za korištenje. Za
cjelokupno programiranje korišten je programski jezik Python koji je prikladan za ovakve
projekte jer je vrlo jednostavan i lak za korištenje. Pokazano je da je dobro koristiti raširenu
platformu kao što je Raspberry Pi zbog lake nabavljivosti i vrlo velike online zajednice koja
omogućava razmjenu ideja i programskog koda.
Za sljedeći korak, bilo bi potrebno zamijeniti ledicu pravom LED žaruljom. Također,
redizajn i postavljanje stranice za prikaz i upravljanje na internetu bio bi dobar sljedeći korak.
5. Literatura
[1] M2M Research Series: Smart Homes and Home Automation
https://ec.europa.eu/research/innovation-union/pdf/active-healthy-
ageing/berg_smart_homes.pdf
[13] Inteligentna ili pametna kuća, Željko Knok, Bruno Trstenjak, Jurica Trstenjak:
hrcak.srce.hr/file/99078
[14] "Sustainable Smart Home and Home Automation: Big Data Analytics Approach", Li,
Rita Yi Man; Li, Herru Ching Yu; Mak, Cho Kei; Tang, Tony Beiqi.