Razvoj sistema IoT na oblačni platformi Microsoft Azure
Avtor: Ivana Škender
Mentor: Matej Rojc
Somentor: Grega Močnik
Stopnja: Študijski program 2. stopnje Elektrotehnika, Smer elektronika
Datum: Junij, 2020
DKUM: IVANA ŠKENDER
Avtor: Ivana Škender
Mentor: Matej Rojc
Somentor: Grega Močnik
Stopnja: Študijski program 2. stopnje Elektrotehnika, Smer elektronika
Datum: Junij, 2020
DKUM: IVANA ŠKENDER
V okviru magistrske naloge smo razvili IoT sistem na oblačni platformi Microsoft Azure. Na oblačni platformi Microsoft Azure smo uporabili več storitev, ki so zelo uporabne na področju interneta stvari. IoT sistem v nalogi tako predstavlja napredno rešitev za razvoj pametnega IoT okolja, v katerem strojna oprema stalno spremlja vlago, temperaturo in tlak v prostorih fakultete. Oblačna platforma Microsoft Azure omogoča razvoj številnih storitev, ki so ključne v IoT sistemih. Predlagani IoT sistem predstavlja veliko možnosti za razvoj storitev na osnovi naprednih algoritmov za analitiko in umetno inteligenco v oblačni platformi Microsoft Azure.
Microsoft Azure je platforma za računalništvo v oblaku, ki jo je razvilo podjetje Microsoft [11]. Platforma podpira veliko množico storitev, ki omogočajo zasnovo, razvoj in upravljanje aplikacij v velikem globalnem internetnem omrežju. Ponudnik storitev v oblaku prevzame skrb za vzdrževanje osnovne infrastrukture, uporabnik pa upravlja z viri v oblaku tako, kot da bi bili viri v njegovem lastnem podatkovnem centru. Azure IoT platforma omogoča več kot sto storitev, med katerim so tudi aplikacije na navideznih napravah, podpora za umetno inteligenco, in mešano resničnost (angl. mixed reality).
V nalogi želimo razviti IoT sistem na Azure platformi, v katerem bi pridobivali realne podatke o stanju IoT okolja v prostorih na fakulteti in jih posredovali na oblak. V okviru predstavljenega sistema smo se omejili na baterijsko napajane senzorje v prostorih, ki imajo možnost meritve temperature, vlage, in zračnega tlaka. V predlaganem sistemu IoT, vsak prehod predstavlja IoT napravo na strani oblačne platforme Azure, s tem pa omogočimo tudi nadzor vključenih prehodov, dodajanje novih prehodov ipd. Podatki zajeti v prostorih, so dostopni tudi za nadaljnjo uporabo, npr. za samodejni vklop/izklop klimatske naprave. Predstavljena rešitev ne potrebuje nujno interakcije z uporabniki, posledično lahko IoT naprave izvajajo aktivnosti tudi na osnovi, kar ji je ukazala druga IoT naprava. To je tudi osnovna ideja interneta stvari. Oblačna platforma Microsoft Azure nam v predlaganem sistemu omogoči shranjevanje in obdelavo zajetih podatkov v oblaku, posledično pa se lahko dostopa do podatkov tudi v primeru, ko se ne nahajamo v prostorih IoT okolja ali niti nismo na fakulteti. Microsoft Azure platforma pri tem zagotavlja ustrezno varnost podatkov, ko jih shranjujemo preko uporabe njenih storitev. Predlagana rešitev tudi odpira različne možnosti nadgradenj in razširitev.
V predlaganem sistemu potrebujemo kar nekaj komunikacijskih protokolov za prenos podatkov iz IoT okolja v Azure oblak. Za pošiljanje podatkov s senzorjev na fizični prehod (angl. gateway) smo uporabili BLE protokol. BLE je posebej primeren, ko je bolj pomembna življenjska doba baterije, kot pa hitrost prenosa podatkov. BLE prenos podatkov je v bistvu enosmerna komunikacija. Na primer platforma RuuviTag uporablja BLE komunikacijo in ima lasten MAC naslov, na podlagi katerega vemo kateri RuuviTag pošilja specifične podatke. V predlaganem sistemu za povezavo odjemalca in posrednika, oziroma Raspberry Pi in Azure IoT Hub platformi, uporabljamo šifrirano povezavo TLS. Ker so sporočila MQTT organizirana glede na predlagane teme (angl. topic) ima razvijalec možnost, da določi kateri odjemalci naj prejemajo in pošiljajo samo določena sporočila. Na primer, senzorji lahko pošiljajo podatke posredniku tako, da objavljajo svoje podatke v temi »sensor_data«, posrednik pa posreduje nato podatke tistim aplikacijam za shranjevanje in obdelavo podatkov, ki so naročene na temo »sensor_data«. Na drugi strani se nahaja konzolna aplikacija, preko katere sistemski administrator pošilja ukaze za prilagoditev konfiguracij senzorjev, kot so na primer občutljivost in frekvenca vzorčenja, pri čemer se spremembe objavijo v temi »config_change«. Senzorji so naročeni na temo »config_change«, in zato lahko pridobijo podatke o novih dogodkih v tej temi.
Za predlagani sistem potrebujemo strojno in programsko opremo, pa tudi storitve v oblaku na Microsoft Azure oblačni platformi. Za strojno opremo smo uporabili: RuuviTag senzorske platforme za meritev temperature, vlage in zračnega tlaka v prostoru. Raspberry Pi smo uporabili kot prehod med fizičnim in digitalnim svetom. Raspberry Pi uporablja BLE komunikacijo za povezavo s senzorji in MQTT komunikacijski protokol za pošiljanje sporočil na oblačno platformo Microsoft Azure. Programsko kodo smo pisali v Python programskem jeziku, ki bere podatke senzorjev, izvaja povezovanje na oblačno platformo, in pošiljanje podatkov senzorjev na Microsoft Azure oblačno platformo. Da bi dosegli čim boljšo prilagodljivost in enostavno nadgradnjo sistema, smo postavili tudi spletno aplikacijo, ki omogoča dodajanje novih senzorjev in novih prehodov v sistem. Senzorske platforme RuuviTag smo razporedili po več prostorih na fakulteti FERI. Tako se dve platformi nahajata v prostoru G216, dve v prostoru G215, in dve v laboratoriju Bacquerel (BQ). Do vseh storitev na oblačni platformi Microsoft Azure dostopamo skozi uporabniški vmesnik Azure Portal. Azure Portal nam omogoča uporabo in upravljanje vseh storitev, ki jih ponuja oblačna platforma Microsoft Azure. Prva storitev, ki smo jo uporabili je IoT Hub. IoT Hub je zvezdišče v oblaku, ki povezuje fizični prehod IoT sistema in ostale storitve v oblaku. Za hiter in enostaven prenos podatkov znotraj oblačne platforme Microsoft Azure, je na razpolago storitev Stream Analytics. Ta storitev ni brezplačna (Free, oziroma Students račun), in če bi bila stalno uporabljana, bi njena cena v obdobju enega meseca znašala okoli $ 87. Zaradi tega smo za prenos podatkov uporabili storitev Azure Functions. S pomočjo orodja Power BI smo na koncu še vizualizirali podatke, ki jih senzorske platforme pošiljajo na oblačno platformo Microsft Azure. V Power BI Desktop okolju smo se najprej povezali na SQL strežnik, ki smo ga ustvarili na Azure platformi in z načinom povezave ‘DirectQuery’ pridobili podatke. Nato smo obdelali in uporabili tiste podatke za izdelavo poročila, ki smo ga objavili na storitvi Power BI Service. V okviru oblačne platforme Microsoft Azure, lahko s pomočjo storitve Stream Analytics,Azure Machine Learning Studio in umetne inteligence AI ustvarimo tudi kvaliteten sistem za vremensko napoved. Programsko kodo na Raspberry Pi smo za ta namen prilagodili tudi za branje podatkov s samo ene RuuviTag platforme, in sicer samo za branje senzorjev temperature in vlage, ker v tem primeru potrebujemo samo te parametre. Stream Analytics orodje zajema podatke, ki jih pošiljamo na IoT Hub in jih nato posreduje v Blob Storage shrambo in tudi v Power BI Service. Na pregledni plošči, ki smo jo ustvarili v Power BI Service orodju za podatke v realnem času, lahko nato spremljamo podatke o trenutni temperaturi, vlagi, in verjetnosti dežja. Podatke o temperaturi in vlagi dobimo iz senzorjev v okolju, verjetnost dežja pa se izračuna na podlagi teh podatkov v storitvi Machine Learning Studio.