HiFiBerry DAC+ ADC Pro nam po podatkih proizvajalca, dostopni na spletni strani [3], omogoˇca 24-bit 192 kHz digitalno-analogno pretvorbo na dveh kanalih in 24-bit 192 kHz analogno-digitalno pretvorbo prav tako na dveh kanalih. Specifikacije so predstavljene v preglednici 2.2.
Nadgradnja se primarno uporablja kot dodatna avdio kartica za raˇcunalnike RPI. Po-slediˇcno je njena namestitev dokaj enostavna, saj proizvajalec redno posodablja go-nilnike za novejˇse modele RPI. Velika prednost te kartice je tudi, da jo je mogoˇce upravljati preko ALSA mikserja (ang. ALSA mixer). ALSA, je napredna zvoˇcna arhi-tektura za Linux operacijske sisteme (ang. Advanced Linux Sound Architecture) [4], ki
Teoretiˇcne osnove in pregled literature
Preglednica 2.2: Specifikacije razˇsiritvenega modula HiFiBerry DAC+ ADC Pro [3].
Parameter Vrednost
Frekvenˇcni odziv 10 Hz -70 kHz Vhodno ojaˇcanje -12 dB do 32 dB
Poraba moˇci <0.3 W
Frekvenca vzorˇcenja 44.1 kHz – 192 kHz
nam zagotavlja zvoˇcno funkcionalnost na Linux operacijskih sistemih in podpira vrsto profesionalnih avdio kartic in njihovo enostavno upravljanje. V povezavi s tem obsta-jajo razvite in aktivno vzdrˇzevane knjiˇzice napisane v programskem jeziku Python, ki za osnovo uporabljajo ALSA mikser, kar nam ˇse dodatno olajˇsa sam razvoj programa za operiranje s to nadgradnjo.
Za delo z omenjeno zvoˇcno kartico bomo tako uporabili dve Python knjiˇzici. Prva je PyAudio [5], ki je dokaj enostavna in ponuja ˇstevilne metode. Princip uporabe, npr. zajemanje ali generiranje signala, temelji na ustvarjanju toka zajema, ki ga nato lahko shranjujemo v datoteko, obdelujemo ali posredujemo naprej. Najveˇcja prednost je predvsem enostavnost uporabe. Druga je knjiˇzicaPython-sounddevice[6], ki nam ponuja ˇse nekoliko veˇc moˇznosti. Dobra lastnost te knjiˇzice je, da nam lahko zajeti signal zapiˇse v obliki Numpy [7] numeriˇcnih polj. Numeriˇcna polja je veliko laˇzje uporabiti pri nadaljnjih izraˇcunih saj so optimizirana za delo z veˇcjo koliˇcino podatkov.
Knjiˇzica Python-sounddevice poleg tega omogoˇca tudi delo s surovimi podatki, ˇce to naˇsa aplikacija zahteva. Z njeno uporabo enostavno zajemamo in predvajamo signal z definiranim ˇcasom trajanja in frekvenco ali pa ustvarjamo toka vhoda ali izhoda (ang.
InputStream inOutputStream).
2.2 Spletna aplikacija
V nadaljevanju naloge bomo predstavili uporabljena orodja in tehnologije, ki smo jih uporabili pri razvoju spletne aplikacije za naˇs specifiˇcni primer. V prvem delu bodo opisani aktualni standardizirani protokoli s podroˇcja Interenta stvari (IoT), ki smo jih uporabili pri izdelavi aplikacije, ter njihove prednosti in omejitve. Drugi del bo posveˇcen predvsem Django paketu za izdelavo spletnih strani ter pristopu kontejneri-zacije (ang. dockerize) aplikacije. Poglavje zakljuˇcimo s predstavljenimi metodami za procesiranje signalov.
6
Teoretiˇcne osnove in pregled literature
2.2.1 Tehnologije s podroˇ cja Interneta Stvari
Posebnost naˇse spletne aplikacije je, za razliko od ˇze obstojeˇcih aplikacij interneta stvari (IoT), da nam mora omogoˇcati pretakanje velikega toka podatkov, ki se ustvarja pri izvajanju meritev dinamike struktur. Za zagotavljanje zanesljivosti prejemanja paketov in poenostavitvijo prikaza ter shranjevanja toka podatkov, smo se osredotoˇcili na ˇze obstojeˇce protokole, ki so zgrajeni na osnovi TCP/IP protokola. Glede na naravo naˇsega problema, smo se odloˇcili za uporabo kombinacije protokolov MQTT (ang.
Message Queuing Telemetry Transport) in WebSocket.
2.2.1.1 MQTT protokol
MQTT je popularen odprtokodni protokol za komunikacijo med napravami (M2M) na podroˇcju IoT. Prvo verzijo protokola sta leta 1999 razvila Andy Stanford-Clark in Arlen Nipper za namen spremljanja stanja naftnih cevi. Javno dostopen in ˇsirˇse uporabljen je postal po letu 2013, ko je bila verzija v3.1 uradno potrjena. Od takrat naprej se protokol aktivno nadgrajuje, razvija in uporablja na ˇstevilnih podroˇcjih interneta stvari. Po podatkih uradne spletne strani specifikacije [8], so najpogostejˇsi primeri uporabe v avtomobilski industriji, logistiki in transportu, nadzorovanju proizvodnih procesov, pametnih domovih, razliˇcnih vejah energetike ter celo v potroˇsniˇskih izdelkih (npr. male vremenske postaje). Z drugimi besedami, po opisu iz knjige [9], reˇsuje tipiˇcne izzive na podroˇcju IoT in M2M aplikacij in tako ponuja:
– enostavno poˇsiljanje podatkov med klienti,
– posredovanje velikega volumna podatkov brez pretiranih zahtev zmogljivosti sistema, – poˇsiljanje majhnih paketov v velikih koliˇcinah,
– moˇzno posluˇsanje dogodkov v primeru spremembe stanja, – podpira vedno-povezan in vˇcasih-povezan model,
– zagotavlja dostavo paketov tudi pri nezanesljivih internetni povezavi, – omogoˇca komunikacijo zelo blizu realnega ˇcasa (ang. real-time delivery), – ponuja varnost in zasebnost,
– zelo skalabilen in omogoˇca distribucijo podatkov med veˇc tisoˇc klienti.
V tem teoretiˇcnem delu bodo predstavljene osnovne funkcije in princip delovanja proto-kola, ki jih programer potrebuje za razumevanje in razvoj aplikacij in so delno povzete po knjigi [9]. Podrobnejˇse specifikacije pa so dostopne v uradnem standardu izdanemu s strani neprofitne organizacije OASIS [10].
MQTT deluje po sistemu objavi-naroˇci (ang. publish/subscribe). Pri tovrstnem sis-temu so na eni strani odjemalci oz. klienti (ang. client), med njimi pa posrednik (ang. broker). Klienti so zaloˇzniki (ang. Publisher) ali naroˇcniki (ang. Subscriber).
Zaloˇzniki pod doloˇceno temo (ang. topic) objavljajo podatke in jih posredujejo posre-dniku, naroˇcniki pa se na to temo prijavijo in podatke prejemajo preko posrednika. Za enostavnejˇso predstavo sistema si lahko ogledamo shemo 2.3.
Posrednik
Ponekod v literaturi poimenovan tudi MQTT server, je kljuˇcen gradnik MQTT sistema, ki upravlja s sporoˇcili, skrbi za varnost in avtentifikacijo klientov ter zagotavlja, da so
Teoretiˇcne osnove in pregled literature
MQTT posrednik (ang. broker) Založniki
(ang. publishers) Založniki in naročniki
(ang. publishers and subscribers) Naročniki (ang. subscribers)
Objavljanje Naročanje
Slika 2.3: Delovanje MQTT protokola. Klienti so lahko naroˇcniki, zaloˇzniki ali oboje