56
5 Diskusija
V celotnem procesu izdelave magistrskega dela smo kar precej ˇcasa posvetili iskanju tehnologij, ki bi bile primerne za tovrstno aplikacijo. Raziskave smo se lotili s pre-gledom tehnologij, ki jih uporabljajo znane aplikacije za sporoˇcanje kot so WhatsApp, Messenger in Viber, saj vemo, da se tudi tam sreˇcujemo s pretakanjem velike koliˇcine podatkov, pa naj bo to video klic ali veliko ˇstevilo sporoˇcil razliˇcnih uporabnikov. Po-leg tega smo ˇzeleli izbrati tehnologijo, ki je robustna in zanesljiva. Hitro smo se sreˇcali s protokolom MQTT, ki je odprtokoden in podprt za vrsto platform. MQTT sporoˇcila se ponavadi poˇsilja v obliki nizov in jih prejemnik le dekodira. V naˇsem primeru to ni bilo primerno, saj je bila koliˇcina podatkov prevelika. Zato smo mora operirati z binarnimi podatki, katerih prenos je bolj uˇcinkovit. Doloˇcili smo katere kliente na napravi za zajem in preraˇcun potrebujemo ter s pomoˇcjo asinhronega naˇcina progra-miranja sprogramirali uˇcinkovito poˇsiljanje zajetih meritev. MQTT protokol je odliˇcna izbira, kadar so klienti naprave ali mikrokontrolerji, ni pa tako uˇcinkovit, kadar je klient brskalnik.
Naslednji izziv je bil preuˇciti Django paket, katerega prednost je, da daje uporabniku popolno svobodo za izdelavo spletnih aplikacij, a hkrati ˇze ponuja osnovne funkcije kot so: delo s podatkovno bazo, doloˇcevanje poti in upravljanje z datotekami. Tu je nastopil problem s povezavo MQTT protokola in Django aplikacije. Predhodnega dela na tem podroˇcju ni veliko, knjiˇzic, ki bi nam to poenostavile, praktiˇcno ni. V prvih poskusih smo povezavo vzpostavili, a pretok podatkov v aplikacijo ni bil uˇcinkovit, poleg tega spletni brskalniki protokola MQTT ne podpirajo sami po sebi. Za ta namen nam je na voljo WebSocket protokol, ki je po naravi podoben MQTT-ju in hkrati podprt s strani Django paketa ter ga razumejo vsi moderni spletni brskalniki. Poˇsiljanje toka podatkov preko WebSocket v Django aplikacijo in nato preko plasti kanala v brskalnik je delovalo dobro, zato smo se v naˇsem primeru odloˇcili za kombinacijo MQTT in WebSocket protokola. MQTT za potrebe poˇsiljanja, shranjevanja, izvedbe izraˇcuna in upravljanje naprave, WebSocket pa za prejemanje podatkov in prikaz toka podatkov v spletnem brskalniku v ˇzivo.
Sledila je ˇse implementacija Welchove metode za procesiranej signalov. Tu smo si pomagali z implementacijo metode v Python numeriˇcni knjiˇznice Scipy. Celoten me-rilni sistem je bilo potrebno ˇse uskladiti in povezati ter zagotoviti dobro uporabniˇsko izkuˇsnjo. Na tem mestu je smiselno ˇse komentirati pomen stabilne internetne povezave.
Ker gre za neprekinjen tok podatkov, moramo zagotoviti, da so paketi prejeti. Za to poskrbi sam protokol MQTT, saj bodo podatki prejeti tudi v primeru slabˇse povezave,
Diskusija
lahko pa se pojavi teˇzava, da sam prikaz v realnem ˇcasu ni tako tekoˇc. ˇCe torej nimamo stabilne povezave ali je omreˇzje precej obremenjeno npr. s strani drugih uporabnikov, je pred izvedbo meritve smiselna izbira veˇcjega medpomnilnika v kontrolni formi. S tem bo dolˇzina binarnih podatkov v posameznem paketu veˇcja, bo pa poslanih manj sporoˇcil na sekundo, kar poslediˇcno sprosti pasovno ˇsirino.
Kot smo prikazali v poglavju 4 na enostavnem eksperimentu, je uporaba aplikacije preprosta. V laboratorijskem okolju, kjer imamo dobre pogoje za meritev, pridobimo dobre rezultate. Vsekakor bi bilo smiselno testiranje aplikacije tudi za druge komple-ksnejˇse eksperimente, kjer bi morda povezali med seboj veˇc zajemnih naprav.
58
6 Zakljuˇ cki
V okviru magistrskega dela,Oddaljeno spremljanje dinamike struktur, je bilo prikazano sledeˇce:
1. Predstavljene so bile aktualne tehnologije na podroˇcju interneta stvari in razvoja spletnih aplikacij.
2. Predstavljena je bila nadgradnja za mali raˇcunalnik Raspberry Pi za zajem po-datkov v velikem dinamiˇcnem razponu.
3. Preuˇcena je bila Welchova metoda za analizo signalov.
4. Preuˇcen je bil Django paket za izdelavo spletnih aplikacij.
5. Izdelana je bila spletna aplikacija za izvedbo meritev, spremljanje vrednosti v realnem ˇcasu in vizualizacijo rezultatov.
6. Pokazano je bilo, da je z uporabo ustreznih tehnologij in asinhronega programi-ranja moˇzno pretakanje zajema v velikem dinamiˇcnem razponu.
7. Prikazana je bila uporaba merilnega sistema s spletno aplikacijo na enostavnem eksperimentu.
Z rezultati meritev in izdelavo delujoˇce spletne aplikacije smo pokazali, da je tudi s pomoˇcjo relativno ugodnega malega raˇcunalnika in odprtokodnih tehnologij na po-droˇcju interneta stvari moˇzno merjenje in spremljanje dinamskih meritev pri razme-roma visokih frekvencah vzorˇcenja ter veliki dinamiˇcni globini analogno-digitalne pre-tvorbe.
Predlogi za nadaljnje delo
Glede na to, da je spletna aplikacija izdelana modularno, bi bilo smiselno dodati ˇse druge metode za izraˇcun, ki bi bile uporabljene pri izvedbi raznovrstnih eksperimentov.
Poleg tega ima uporabljena nadgradnja malega raˇcunalnika tudi dva kanala za izhod, torej bi bil smiselen razvoj podaplikacije za vzbujanje sistemov. V tem primeru bi v aplikaciji lahko definirali izhodni signal. Za enostavnejˇso namestitev novih naprav bi bilo potrebno tudi bolje avtomatizirati konfiguracijo zajemnih naprav. Lahko bi dodali ˇse podporo za mikrokontrolerje (npr. Arduino). Aplikacijo bi bilo treba tudi nekoliko nadgraditi na produkcijsko raven (namestitev certifikatov za varne HTTPS, wss in MQTTs kriptirane povezave).
Zakljuˇcki
60
Literatura
[1] Raspberry Pi Foundation - About Us. dostopno na: https://www.raspberrypi.org/
[ogled 25. maj 2021].
[2] Buy a raspberry Pi. dostopno na: https://www.raspberrypi.org/products/ [ogled 27. maj 2021].
[3] Datasheet DAC+ ADC Pro, 2020. dostopno na: https://www.hifiberry.com/
docs/data-sheets/datasheet-dac-adc-pro/ [ogled 15. junij 2021].
[4] Advanced Linux Sound Architecture (ALSA) project homepage. dostopno na:
https://www.alsa-project.org/wiki/Main Page [ogled 10. junij 2021].
[5] PyAudio Documentation. dostopno na: https://people.csail.mit.edu/hubert/
pyaudio/docs/ [ogled 30. maj 2021].
[6] Play and Record sound with Python. dostopno na: https://python-sounddevice.
readthedocs.io/en/0.4.1/ [ogled 30. maj 2021].
[7] NumPy. dostopno na: https://numpy.org/ [ogled 07. februar 2022].
[8] MQTT Use Cases. dostopno na: https://mqtt.org/use-cases/ [ogled 20. julij 2021].
[9] G. C. Hillar,MQTT Essentials - A Lightweight IoT protocol. Birmingham: Packt Publishing, 2017.
[10] R. Coppen, MQTT Version 5.0 OASIS Standard, OASIS, 2019. dostopno na:
https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.pdf [ogled: 20. 7. 2021].
[11] Eclipse Mosquitto. dostopno na: https://mosquitto.org/ [ogled 15. junij 2021].
[12] Eclipse Mosquitto Test. dostopno na: https://test.mosquitto.org/ [ogled 9. junij 2021].
[13] MQTT client with idiomatic asyncio interface. dostopno na: https://github.com/
sbtinstruments/asyncio-mqtt [ogled 11. junij 2021].
[14] Eclipse Paho. dostopno na: https://www.eclipse.org/paho/index.php?page=
downloads.php [ogled 11. junij 2021].
Literatura
[15] I. A. M. I. L. I. Fette, Google, The WebSocket Protocol, Internet Engineering Task Force (IETF), 2011. dostopno na: https://datatracker.ietf.org/doc/html/rfc6455 [ogled: 20. 7. 2021].
[16] A. Lombardi,WebSocket, S. S. Laurent in B. MacDonald, ur. California: O’Reilly Media, Inc., 2015.
[17] The WebSocket API (WebSockets). dostopno na: https://developer.mozilla.org/
en-US/docs/Web/API/WebSockets API [ogled 11. junij 2021].
[18] Getting started - websockets 9.1 documentation. dostopno na: https:
//websockets.readthedocs.io/en/stable/intro.html [ogled 1. maj 2021].
[19] An overview of HTTP. dostopno na: https://developer.mozilla.org/en-US/docs/
Web/HTTP/Overview [ogled 11. junij 2021].
[20] The Web framework for perfectionists with deadlines — Django. dostopno na:
https://www.djangoproject.com/ [ogled 20. junij 2021].
[21] Empowering App Developement for Developers. dostopno na: https://www.
docker.com/ [ogled 20. junij 2021].
[22] Django documentation. dostopno na: https://docs.djangoproject.com/en/3.2/
[ogled 20. junij 2021].
[23] Django REST framework. dostopno na: https://www.django-rest-framework.org/
[ogled 20. junij 2021].
[24] Django Channels. dostopno na: https://channels.readthedocs.io/en/stable/ [ogled 20. junij 2021].
[25] A. Mel´e, Django 3 By Example. Birmingham: Packt Publishing, 2020.
[26] ASGI Documentation. dostopno na: https://asgi.readthedocs.io/en/latest/ [ogled 25. junij 2021].
[27] Redis. dostopno na: https://redis.io/ [ogled 25. junij 2021].
[28] E. Stoneman, Learn Docker in a Month of Lunches. Shelter Island: Manning publications Co., 2020.
[29] Corutines and Tasks. dostopno na: https://docs.python.org/3/library/asyncio.
html [ogled 10. avgust 2021].
[30] C. Hatting, Using Asyncio in Python. California: O’Reilly, 2020.
[31] J. K. H. K. Shin, Fundamentals of Signal Processing for sound and vibration en-gineers. West Sussex, England: Wiley, 2008.
[32] open source HTML5 Charts for your website. dostopno na: https://www.chartjs.
org/ [ogled 11. november 2021].
62
Priloga A
Priloga A
Priloga A
Priloga A
141 142
143 a s y n c def c a n c e l _ t a s k s ( t a s k s ) :
144 """ Ko se t a s k i z a k l j u c i j o ali ce mi u s t a v i m o
145 p r o g r a m jih z a p r e m o """
146 for t a s k in t a s k s :
147 if t a s k . d o n e () :
148 c o n t i n u e
149 t a s k . c a n c e l ()
150 try:
151 a w a i t t a s k
152 e x c e p t a s y n c i o . C a n c e l l e d E r r o r :
153 p a s s
154
155 a s y n c def m a i n () :
156 """ I z v a j a n j e p r o g r a m a n e s k o n c n o , ce
157 M Q T T p o s r e d n i k a ni , se p o s k u s i m o p o n o v n o p o v e z a t i """
158 r e c o n n e c t _ i n t e r v a l = 3 # [ s e c o n d s ]
159 w h i l e T r u e :
160 try:
161 a w a i t c l i e n t _ 1 ()
162 e x c e p t M q t t E r r o r as e r r o r :
163 p r i n t( f’ E r r o r "{ e r r o r }". P o n o v n a p o v e z a v a cez { r e c o n n e c t _ i n t e r v a l } s e c o n d s . ’)
164 f i n a l l y:
165 a w a i t a s y n c i o . s l e e p ( r e c o n n e c t _ i n t e r v a l )
166
167 a s y n c i o . run ( m a i n () )
66
Priloga B
Priloga B
Priloga C
Klient za izvedbo izraˇcuna in shranjevanje datotek.
1 i m p o r t p a h o . m q t t . c l i e n t as m q t t
Priloga C
Priloga C