0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaPredstavljamoTestni IoT sistem v oblaku za študente telekomunikacij

    Testni IoT sistem v oblaku za študente telekomunikacij

    um feriAvtorja: Grega Močnik, mag.inž. ele. in Danilo Zimšek, uni. dipl. inž. tk.
    E-pošta: grega.mocnik@um.si
    2019_274_22

    Na FERI-ju smo za študijski program telekomunikacij pripravili storitev v oblaku za povezovanje naprav IoT in analizo podatkov IoT. Storitev v oblaku je zasnovana modularno. Takšna zasnova omogoča preprosto menjavanje gradnikov in komunikacijskih protokolov.

    Omogočeno menjavanje posameznih gradnikov predstavlja napredno učno okolje za študente, ki se spoznavajo s tovrstno tematiko. Študenti telekomunikacij v sklopu predmetov spoznavajo komunikacijske standarde, ki predstavljajo stanje tehnike na najrazličnejših področjih, eno izmed njih je področje Interneta stvari. Na tem področju srečamo ogromno komunikacijskih protokolov za različne fizične komunikacije med napravami. Že dolgo je poznano, da je spoznavanje teorije skozi prakso najučinkovitejše učenje, zato smo na našem inštitutu razvili učno okolje – storitev v oblaku. Zgradbo osnovne različice okolja ponazarja slika 1.

    Slika 1: Zgradba IoT sistema v oblaku

    Celotno učno okolje sestoji iz omrežja IoT, storitve v oblaku in uporabniških vmesnikov. V omrežju IoT so naprave IoT, ki se povezujejo z uporabo protokolov fizičnega sloja IEEE 802.15.4, BLE ali Wifi HaLow. Uporaba naštetih protokolov omogoči da naprave v omrežju IoT delujejo z nizko porabo energije. Vendar pa zahtevajo uporabo prehoda, ki omogoči povezovanje in komunikacijo z napravami v omrežju internet.

    Komunikacijski prehod IoT paketom, ki so namenjeni v internet zamenja fizični in po potrebi omrežni sloj paketa. Na fizičnem sloju uporabi protokole fizičnega sloja Ethernet ali WiFi, odvisno od tehnologije povezave samega prehoda v internet. Na omrežnem sloju se uporabi MAC protokol. Takšen paket (v našem primeru gre za MQTT publish paket) prehod pošlje do MQTT posrednika v storitvi v oblaku.

    Dodatna pojasnila:
    IEEE 802.15.4.: je tehnični standard, ki definira delovanje brezžičnih osebnih omrežij z nizko stopnjo napajanja. Določa fizični sloj in je osnova za specifikacije Zigbee, ISA100.11a, WirelessHART, MiWi, 6LoWPAN, Thread, od katerih vsaka dodatno razširja standard z razvojem zgornjih plasti, ki niso opredeljene v IEEE 802.15.4. Še posebej 6LoWPAN definira vezavo za različico IPv6 internetnega protokola (IP).

    BLE: Bluetooth Low Energy (BLE), ali včasih imenovan tudi „Bluetooth Smart“, je light-weight implementacija klasičnega Bluetootha in je bil predstavljen kot del specifikacije jedra Bluetooth 4.0. Čeprav obstaja nekaj prekrivanja s klasično Bluetooth tehnologijo, ima BLE dejansko povsem drugačen način delovanja. Prve verzije BLE je razvila Nokia, pod imenom “Wibree”. Nato je prevzel Wibree Bluetooth SIG.

    WiFi HaLow: IEEE 802.11ah je brezžični omrežni protokol, objavljen leta 2017, ki se imenuje tudi Wi-Fi HaLow (izgovarja se „HEY-Low“) kot sprememba standarda IEEE 802.11-2007 za brezžično omrežje. Uporablja 900 MHz pas (ZDA) in 850 MHz (EU), s tem zagotavlja brezžično omrežje razširjenega obsega v primerjavi z običajnimi omrežji Wi-Fi, ki delujejo v pasovih 2,4 GHz in 5 GHz. Na račun izbire frekvenčnega pasu privarčuje z energijo, kar omogoča ustvarjanje velikih skupin postaj ali senzorjev, ki sodelujejo pri izmenjavi signalov in podpirajo koncept Interneta stvari (IoT). Protokol se lahko primerja z Bluetoothom, prednost WiFi HaLow je višja hitrost prenosa podatkov in širši obseg pokritosti.

    Spomnimo:
    Kako deluje MQTT: Na spodnji sliki vidimo MQTT posrednik, ki je v središču komunikacijskega sistema. Odjemalci A, B, C in D pa so povezani preko različnih fizičnih slojev nanj. Prednost protokola MQTT je strukturirano pošiljanje podatkov. Odjemalci se ločijo v dve skupini objavitelji in naročniki. Objavitelji podatkov na teme objavljajo podatke. Naročniki pa iz teme pridobivajo podatke. Posamezen odjemalec je lahko objavitelj in naročnik. Naloga posrednika je, da omogoči dostopnost podatkov napravam, ki so prijavljene (naročnikom – naprave C in B) na t.i. temo na kateri se nahaja podatek in omogoči objaviteljem (naprava A), da podatke objavljajo na temah.


    Preko MQTT posrednika so podatki na voljo drugim napravam v celotnem omrežju. To so lahko storitve za zagotavljanje podatkov uporabniškim vmesnikom ali naprave IoT.

    Vsi podatki iz vseh IoT naprav se prenašajo v realno-časovno podatkovno bazo preko MQTT posrednika in MQTT prehoda (MQTT bridge). MQTT prehod deluje kot MQTT odjemalec in je naročen na vse teme posrednika kar mu omogoči, da pridobi vse podatke iz MQTT omrežja. Te podatke shranjuje v podatkovno bazo.
    Preko REST aplikacijskega programskega vmesnika (API) dostopajo do podatkov uporabniški vmesniki. Uporabniški vmesniki lahko pridobijo želene zgodovinske in filtrirane podatke, preko protokola MQTT pa realno časovne podatke iz senzorjev.

    Slika 2: Zgradba IoT sistema v oblaku z implementiranimi rešitvami in opombami

    Osnovna implementacija sistema
    Osnovna implementacija sistema je ena od različic zgoraj opisanega sistema. Osnovna implementacija omogoča preprosto testiranje vsakega od uporabljenih protokolov in za študente predstavlja osnovno okolje za seznanitev s protokoli in načini implementacije le teh.

    Osnovno implementacijo sistema ponazarja slika 2. Na sliki 2 so poleg opisov posameznega sklopa v sistemu tudi navedene konkretne rešitve, ki smo jih izbrali za implementacijo posameznega sklopa.

    Osnovno omrežje IoT sestavljajo BLE senzorji (ruuvi, DSPLAB sun (BLE verzija) in Thingy), ki so v omrežju IoT in so z IoT prehodom povezani prek BLE. IoT prehod je implementiran na kartičnem računalniku Raspberry PI 3. Ta zagotavlja BLE povezljivost v njegovi osnovni zgradbi. Funkcionalnost prehoda IoT je implementirana s Python skripto. Skripta od vseh senzorjev v časovnem intervalu 30 sekund pridobiva trenutno temperaturo, vlago in zračni tlak. Pri tem se za senzorje ruuvi uporabi Python knjižnica ruuvitag-sensor [2], za senzor Thingy se uporabi blueman in thingy52 [3]. Ostali senzorji, imajo prilagojene generične knjižnice. Za vsakega od podatkov iz vsake naprave tvori paket MQTT sporočilo publish z uporabo knjižnice paho [1]. Nato sporočilo pošlje do MQTT posrednika. Pri tem se uporabi fizična povezava, preko katere je naprava trenutno povezana v internet (WiFi ali Ethernet).

    Za posrednik (broker) MQTT smo uporabili odprtokodno implementacijo Eclipse Mosquitto mqtt broker [4]. Gre za strežnik, ki je primeren za implementacijo tako na zmogljivi strojni opremi, kot tudi na vgrajenih sistemih. Strežnik implementira MQTT protokol verzije 3.1.1.

    Vsi podatki iz senzorskih vozlišč, potujejo preko brokerja na sistemu v oblaku, nato se shranijo v podatkovno bazo. Podatkovna baza nam omogoči kasnejšo poizvedbo po zgodovinskih podatkih, filtriranje podatkov in napredno obdelavo podatkov, kot je napovedovanje vrednosti. Za shranjevanje podatkov je implementirana realno časovna podatkovna baza Rethinkdb [5]. Za shranjevanje podatkov v bazo skrbi mqtt prehod [6]. Deluje tako, da je prijavljen na vse teme izbranega MQTT posrednika, kar pomeni, da pridobiva podatke od vseh senzorjev in jih z ReQL stavkom shrani v podatkovno bazo, ki je v enakem sistemu v oblaku.

    Slika 3: Tehnične stopnje razvojnih modelov, ki sestavljajo celoto koncepta Internet stvari

    Strukturirane podatke iz podatkovne baze lahko pridobimo tudi z storitvijo REST API. S to storitvijo omogočimo, dostop do podatkov mobilnim aplikacijam, spletnim storitvam in vmesnikom. REST API Storitev je implementirana kot Python program. Za implementacijo storitve preko vmesnika je uporabljena knjižnica flask [7], za pridobivanje podatkov iz baze pa knjižnica rethinkdb [8]. S povezavo teh dveh knjižnic omogočimo dostopnost strukturiranih podatkov iz podatkovne baze z storitvijo REST.

    Zaključek
    Opisana implementacija sistema v oblaku ponuja osnovne funkcionalnosti, ki predstavljajo t.i. backend pristop do podatkov, kar pomeni, da je platforma primerna za nadgradnjo in omogoča enostavno širjenje funkcionalnosti, kot so uporabniška vizualizacija podatkov, napovedovanje vrednosti in avtomatizacija na podlagi vzorcev iz podatkov (frontend). Platforma je zgrajena iz odprtokodne programske opreme, tako ponuja veliko možnosti in prilagoditev sistema. S to vrsto platforme lahko pokrivamo tri tehnične stopnje razvoja tehnologij v konceptu Internet stvari. Kot prikazuje slika 3.

    S to platformo omogočimo tudi multimodalno učenje, saj s pomočjo platforme lahko ustvarimo poligon s podatki za strojno učenje, pri predmetih kjer potekajo vaje in predavanje na temo umetne inteligence. Senzorji v tem sistemu zajemajo najrazličnejše podatke, backend stopnja nam omogoča, da se podatki strukturirano razvrstijo v podatkovne baze s frontendom pa omogočimo, da so podatki dostopni najrazličnejšim načinom uporabe, kot je učenje nevronske mreže. Mogoče je tudi praktično spoznavanje s komunikacijskimi protokoli, ki potekajo po telekomunikacijskem ISO/OSI modelu. Pri predmetih kjer potekajo spoznavanje z vgrajenimi sistemi lahko nudi sistem v oblaku napredno podporo aplikativne obdelave podatkov in spoznavanje kakšen način je primeren za povezavo senzorskih in aktuatorskih naprav v omrežje IoT. Prav modularna zgradba omogoča neomejeno dodajanje najrazličnejših funkcionalnosti na vseh tehničnih stopnjah, ki bi jih v okviru pedagoških procesov implementirali študenti za razvoj lastnih naprav, učenje na primeru, izdelavo diplomskega in magistrskega dela. Tovrstna platforma je primerna tudi za znanstvene razprave, s katerimi lahko primerjamo oz. naredimo evalvacijo najrazličnejših modulov znotraj zgradbe oblačnega sistema.

     

    Dodatna pojasnila:
    Realno časovna podatkovna baza: je sistem zbirke podatkov, ki uporablja obdelavo v realnem času za obdelavo delovnih obremenitev, katerih stanje se nenehno spreminja. To se razlikuje od tradicionalnih baz podatkov, ki vsebujejo trajne podatke, večinoma nespremenjene s časom. Prednost realno časovnih podatkovnih baz je tudi da namesto tipičnih zahtev REST HTTP (lahko se tudi uporabi REST HTTP) realno časovna podatkovna baza uporablja sinhronizacijo podatkov – vsakič, ko se podatki spremenijo, vsaka povezana naprava prejme to posodobitev v nekaj milisekundah. Odjemalcem ni treba izvesti poizvedbe ampak so obveščeni o spremembah podatkov.

    Zakaj smo izbrali RethinkDB? In katero podatkovno bazo izbrati?
    Ko izbiramo podatkovno bazo, se najprej odločamo med relacijsko (SQL) in nerelacijsko (NoSQL) podatkovno strukturo. Medtem ko lahko vsaj pri manjših projektih uporabimo obe od možnosti, je dobro, da se zavedamo glavnih razlik med njima, ko se odločamo med njima.

    Strukture podatkov
    Podatkovne baze SQL uporabljajo jezik SQL (strukturni povpraševalni jezik za delo s podatkovnimi bazami) za definiranje strukture in manipulacijo s podatki. Na eni strani je jezik SQL široko razširjen in zelo močan zlasti za kompleksne poizvedbe. Na drugi strani lahko postane omejujoč. SQL zahteva preddefinirano shemo podatkov, ki določa strukturo podatkov, preden začnemo delo s samimi podatki. Vsi podatki morajo slediti isti strukturi. Slednje zahteva veliko vnaprejšnje priprave, kasnejša sprememba v strukturi pa je lahko težka in moteča za celotni sistem.

    NoSQL podatkovna baza na drugi strani ima dinamično shemo za nestrukturirane podatke, podatki pa so shranjeni na različne načine:

    • stolpično usmerjene zbirke
    • dokumentne zbirke,
    • zbirke grafov,
    • shrambe s ključi.

    Slednje pomeni, da lahko ustvarimo dokument brez vnaprejšnjega definiranja njegove strukture, vsak dokument lahko ima svojo strukturo in sproti lahko dodajamo polja za podatke, ko jih potrebujemo.

    Razširljivost
    V večini primerov implementacij, so podatkovne baze SQL vertikalno razširljive, kar pomeni, da lahko povečamo obremenitev enega strežnika preprosto tako, da zagotovimo dodatne strojne vire v obliki centralne procesne enote, diska in delovnega pomnilnika. V nasprotju so podatkovne baze NoSQL horizontalno razširljive. To pomeni, da lahko več prometa obdelamo z deljenjem dodajanjem več strežnikov v bazo NoSQL. Zaradi slednjega so NoSQL podatkovne baze prednostna izbira za velike ali vedno spreminjajoče se podatkovne zbirke.
    Primerjava podatkovnih baz SQL proti NoSQL (MySQL proti RethinkDB)
    Najbolj priljubljena implementacija relacijske podatkovne baze je MySQL, nerelacijske pa Firebase, ki ni odprtokodna (RethinkDB je odprtokodna), zato se osredotočimo na razlike med njima. MySQL se običajno uporablja v primerih, ko imamo točno določeno in dobro definirano domeno, na katero se podatki nanašajo in hkrati ne pričakujemo tekom uporabe novih podatkov. Na drugi strani je Firebase ali RethinkDB dobra izbira, ko imamo domeno, pri kateri pričakujemo hitro rast in nimamo točne definicije sheme ali jo je težko določiti. Za primere uporab kot so sistemi IoT z realnočasovno analizo podatkov, mobilne aplikacije in sistemi za upravljanje vsebin, kjer se podatkovne sheme hitro spreminjajo, je dobra odločitev podatkovna baza NoSQL in najbolj razširjena odprotkodna implementacija le-te RethinkDB.

    REST: REST je kratica za REpresentational Sate Transfer, izraz, ki ga je leta 2000 skoval Roy Fielding. Gre za komunikacijsko arhitekturni slog za oblikovanje »ohlapno« (brez neposredne povezave) povezanih aplikacij preko HTTP, ki se pogosto uporablja pri razvoju spletnih storitev. V današnjem času se je REST razvil za najrazličnejše aplikacijske protokole ne le za HTTP. Tovrstna arhitektura omogoča povezovanje dveh različnih spletnih storitev, ki nimata v osnovnem modelu nič skupnega na enostaven način, saj obe storitvi razumeta funkcionalnost REST arhitekture.

     

    Slika 4: Primer uporabe opisane platforme

    Primer uporabe prikazuje slika 4. Na sliki je na levi strani predstavljen primer uporabe opisane platforme z uporabljenimi tehnologijami. Na desni strani pa je za razumevanje posamezne stopnje predstavljen še implementacijski diagram platforme. Konkreten primer predstavlja razvoj pametnega stanovanja s konkretnimi napravami v prvi stopnji. Druga stopnja skrbi za t.i. backend storitev, ki skrbi, da so podatki dostopni rešitvam v posamezni stopnji. Tretja stopnja pa skrbi za interakcijo z uporabnikom. V tej stopnji je implementirana nevronska mreža, ki se sproti uči iz podatkov ter skrbi za akcije, ki jih preko aktuatorjev, mobilne aplikacije ali spletne strani doživi uporabnik stanovanja. Tovrstna modularna zgradba omogoča tudi povezovanje z znanimi IoT platformami, kot sta Google Home ali Apple Homekit, mogoče je tudi integracija z Microsoftovim Azure centrom. Takšen primer je le eden izmed neštetih, saj lahko zamenjamo Google Home z Applovim Homekitom ali pa v sistem dodamo tudi Amazon Alexo. Integracija tovrstnih rešitev sicer zahteva razvoj novih modulov, ki skrbijo samo za povezavo obstoječe platform z drugimi. Poseben primer uporabe, ki ga velja izpostaviti je implementacija umetne inteligence v tak sistem, saj omogoči, da lahko na primer nevronska mreža, ki je že naučena (mogoče jo je tudi naučiti) deluje na konkretnih problemih.

    Viri
    https://pypi.org/project/paho-mqtt/
    https://github.com/ttu/ruuvitag-sensor
    https://devzone.nordicsemi.com/b/blog/posts/nordic-thingy52-raspberry-pi-python-interface
    https://mosquitto.org/
    https://www.rethinkdb.com/
    https://github.com/mchmarny/mqtt-bridge
    http://flask.pocoo.org/
    https://www.rethinkdb.com/docs/guide/python/
    https://svet-el.si