Objavljeno: 30.3.2021 | Avtor: Simon Peter Vavpotič | Monitor April 2021

Amazonove oblačne storitve tudi za (domači) internet stvari

Varna hramba in obdelovanje podatkov v spletnem oblaku sta z velikimi podatkovnimi centri, razpršenimi po vsem svetu, postala dostopna tudi v internetu stvari. Kaj omogočajo storitve v oblaku? Kako jih uporabljamo? Katere so zastonj in za katere moramo plačati?

Čeprav je bilo globalno omrežje računalniških centrov za podporo Amazonovim spletnim storitvam (angl. Amazon Web Services – AWS) v začetku namenjeno predvsem zagotavljanju navidezne računalniške opreme in spletnih storitev za podjetja ter ustanove, ki ne želijo vlagati v lastno strežniško infrastrukturo, danes omogoča tudi storitve za naprave interneta stvari (IoT), ki jih vsakodnevno uporabljamo doma in v pisarni.

Izvajanje zahtevnejših operacij, kot so razpoznavanje besedil, pisanje po nareku, razpoznavanje obrazov, zahteva veliko procesnih zmogljivosti in zapletene algoritme z velikimi zbirkami podatkov, ki jih je treba z razvojem naravnih jezikov in s tehnološkim napredkom nenehno dopolnjevati.

Storitve AWS poskušajo napravam IoT zagotoviti sproti posodabljane manjkajoče funkcionalnosti in dodatne procesne zmogljivosti ter dolgoročno varno hrambo podatkov. Z uporabo AWS je prenos podatkov prek interneta v naprave IoT in iz njih varnejši. Obenem so njihova stanja stalno razpoložljiva, četudi so z internetom povezane le občasno.

V nasprotju s prepričanjem mnogih naprave IoT niso le igrače, ki jih po navodilih s spleta sami v kratkem času sestavimo za nekaj evrov, saj lahko kupimo tudi gotove izdelke, kot so spletni radii, vremenske postaje, registratorji prisotnosti na delu, sistemi za varovanje (doma) itn. Ko se odločamo za nakup nove naprave IoT, pa moramo vsekakor preveriti njeno združljivost s storitvami AWS.

Je koncept naprave IoT v računalniškem oblaku povsem nov?

Zamisel ni zares nova, saj so jo, denimo proizvajalci univerzalnih programirljivih daljinskih upravljalnikov, kot sta Logitech in Philips, uporabljali že pred vsaj desetimi leti. Programiranje daljinskih upravljalnikov so omogočili le prek spletnih aplikacij v svojih javno dostopnih oblačnih strežniških infrastrukturah. V osebni računalnik smo morali najprej namestiti posebno odjemalsko aplikacijo (debelega klienta), ki pa brez spletnih storitev ni delovala.

Za izvedbo nastavitve daljinskega upravljalnika ali morebitno kopiranje kod iz drugih daljinskih upravljalnikov smo morali na strežniku proizvajalca ustvariti svoj brezplačni spletni profil, kamor smo shranili vse nastavitve in zajete kode iz originalnih daljinskih upravljalnikov.

Ta princip proizvajalci najboljših univerzalnih daljinskih upravljalnikov uporabljajo še danes, saj jim omogoča občasno anonimno analizo v uporabniških profilih shranjenih kod tipk originalnih daljinskih upravljalnikov. Tako lahko vzdržujejo skupno zbirko kod, ki je na voljo tudi uporabnikom brez originalnih daljinskih upravljalnikov.

Od zamisli …

Nekoč pozabljeni koncept velikih računalniških centrov s skoraj neomejenimi zalogami procesnih in pomnilniških zmogljivosti s smelo zastavljenimi in cenovno ugodnimi storitvami AWS ponovno dobiva zagon in v tudi praksi uvaja že dolgo znane modele računalniških storitev: SAAS (programska oprema kot storitev, angl. software as a service), PAAS (programska osnova kot storitev, angl. platform as a service) in IAAS (infrastruktura kot storitev, angl. infrastructure as a service), pri čemer lahko v vsakega pod določenimi pogoji vključimo tudi naprave IoT.

Pri SAAS omogoča vključitev naprave IoT aplikacija v oblaku, ki jo naprava uporablja za podporo naprednim funkcionalnostim. Zanimivejšo možnost predstavlja PAAS, pri katerem na izbrani programski osnovi sami pripravimo storitev v obliki programske kode, ki jo naprava IoT nato uporablja kot dodatno funkcionalnost. IAAS pa omogoča popolno svobodo, saj sami vzpostavimo navidezno strežniško okolje, pri čemer namestimo vso sistemsko in aplikacijsko programsko opremo (potrebujemo licence), vzpostavimo delovanje navidezne omrežne infrastrukture (določimo domene naslovov IP, ki vključujejo intranet, vmesno področje in naslove za dostop z interneta) ter zagotovimo komunikacijo z napravami IoT (nastavimo usmerjanje in požarne pregrade). To zahteva poglobljeno znanje računalništva in je primerno predvsem za podjetja z ekipami računalniških strokovnjakov, ki lahko sama zagotavljajo primerno stopnjo varovanja navideznih strežnikov.

Za izobraževanje, raziskovalno in domačo rabo je PAAS prikladnejša možnost, saj AWS ponudi široko paleto možnosti v okviru storitev AWS IoT Core in AWS Lambda. AWS Lambda ne omogoča le uporabe vnaprej definiranih funkcij (npr. za razpoznavanje govora), temveč tudi pisanje lastnih programskih funkcij v različnih programskih jezikih, ki za trajno pomnjenje podatkov uporabljajo podatkovno zbirko AWS DynamoDB ali podatkovne pogone v okviru preproste storitve za shranjevanje AWS (angl. Simple Storage Service – S3). Za AWS Lambda zato ne potrebujemo lastnega navideznega strežnika, odlično pa je, da je podprtih veliko programskih jezikov, med katerimi so tudi C/C++, C#, Java, JavaScript in Python. Prek konzole AWS je na voljo tudi urejevalnik programske kode, lahko pa jo urejamo tudi v lastnem računalniku.

Kako do storitev AWS in katere so brezplačne?

Čeprav je spletna stran aws.amazon.com z informacijam in navodili za začetek uporabe storitev AWS dostopna vsakomur, se moramo za uporabo storitev registrirati in pridobiti dostop do konzole AWS na spletni strani console.aws.amazon.com. Pri postopku registracije potrebujemo kreditno kartico in mobilni ali pametni telefon, prek katerega lahko sprejemamo sporočila sms, obenem pa lahko pred dokončno odobritvijo dostopa do storitev pričakujemo tudi telefonski klic Amazonovega operaterja ali operaterke, s katerim preverijo pristnost podatkov, navedenih v prijavi. Celoten postopek traja nekaj ur.

Vendar to ne pomeni, da bomo morali za uporabo storitev AWS mesečno plačevati. Enostavne funkcionalnosti v okviru storitev AWS IoT Core, AWS Lambda in trajna hramba podatkov v okviru storitve AWS S3 (če ne presežemo vnaprej določenega števila GB) so brezplačne. Medtem ko je uporaba navideznih strežnikov v okviru storitev AWS E2C plačljiva, razen peščice strežnikov z oznako Free Tier Eligible (slov. možnost zastonjske uporabe), katerih uporaba je brezplačna prvo leto po registraciji uporabnika, če ne preseže vnaprej določenega števila ur brezplačne uporabe na mesec. Vsekakor se izplača pred uporabo katerekoli storitve na spletni strani aws.amazon.com/free preveriti, pod katerimi pogoji je ta brezplačna.

Storitve AWS za naprave IoT

Storitve AWS IoT Core omogočajo napravam IoT sprejemanje podatkov iz računalniškega oblaka AWS in njihovo posredovanje vanj pa tudi uporabo zalednih storitev AWS, ki niso neposredno dostopne z interneta. AWS IoT Core (jedrne storitve za IoT) temelji na sporočilnem modelu komunikacije za prenos telemetričnih podatkov (angl. Message Queueing Telemetry Transport – MQTT), ki omogoča prenos podatkov med napravami IoT in zalednimi storitvami AWS, kot sta AWS Lambda in AWS EC2, in med oddaljenimi napravami IoT.

MQTT vključuje objavo tem in naročanje nanje ter objavo sporočil. Sporočilni posrednik (angl. message broker) skrbi za objavo in usmerjanje sporočil tako, da sporočilo z določeno temo dobi le na temo naročena naprava. Naprave IoT si lahko na ta način pošiljajo ukaze in izmenjujejo podatke ter statusne informacije. Namesto MQTT lahko uporabimo tudi protokol WSS (angl. WebSocket Secure), ki podpira enake funkcionalnosti, medtem ko protokol HTTPS omogoča le objavo tem, ne pa tudi naročanja nanje.

AWS IoT Core pozna poleg MQTT tudi t. i. senčno storitev za hrambo zadnjega stanja oziroma sence, vsake s sporočilnim posrednikom povezane naprave IoT. Senco predstavljajo objavljene teme ter pretekla sprejeta in poslana sporočila. Senca je oblačnim storitvam na voljo tudi, ko naprava IoT ni povezana z oblakom, pri čemer naprava svojo senco posodobi vsakokrat, ko se poveže v z oblakom.

Tretji del AWS IoT Core je zbirka pravil, ki omogoča posredovanje sporočil notranjim storitvam AWS, kot je storitev Lambda za funkcijsko obdelavo podatkov. Programske funkcije lahko napišemo v različnih programskih jezikih in jih namestimo v oblak AWS. Pri tem imamo za trajno hrambo podatkov na voljo podatkovno zbirko AWS DynamoDB in storitev za shranjevanje podatkov S3.

Katere naprave lahko povežemo z AWS?

Čeprav računalnike, notesnike, tablice in pametne telefone navadno povezujemo z internetom prek običajnih spletnih storitev, jih lahko z ustrezno programsko opremo povežemo tudi z internetom stvari. Ločnica med klasičnimi internetnimi napravami in napravami interneta stvari tako ni izključujoča, saj so lahko nekatere naprave povezane z internetom na oba načina.

Res pa je, da naprave IoT uporabljajo enostavnejše komunikacijske protokole, kot je MQTT za sporočilno komunikacijo. Še vedno pa morajo zagotavljati visoko stopnjo podatkovne varnosti, zato v mnoge naprave IoT proizvajalci in domači graditelji že vgrajujemo strojne podpore za hitro varnostno šifriranje/dešifriranje podatkov, s čimer razbremenimo glavni mikrokrmilnik.

… do realizacije

S cenenimi moduli Wi-Fi ESP8266, ki si jih je lahko privoščil vsak računalniški konjičkar, je koncept interneta stvari (IoT) končno pred leti zaživel tudi v praksi. A majhni 32-bitni moduli s sorazmerno veliko bliskovnega pomnilnika in z vmesniki Wi-Fi so potrebovali varen dostop do intraneta in/ali interneta ter stalno prisotne internetne zaledne aplikacije, za katere bi večina uporabnikov potrebovala domači računalniški strežnik. Nadobudni programerji so kljub temu ustvarjali vse več privlačnih projektov, kot je bil brezžični internetni radio, ki so zahtevali vse več zmogljivosti. Z novejšim modulom Wi-Fi, ESP32, smo dobili tudi spletno kamero z možnostjo enostavnega razpoznavanja obrazov.

Za zahtevnejše funkcionalnosti, kot so prepoznavanje gest, razpoznavanje govora in pisav ter druge kompleksne operacije, zmogljivost modulov Wi-Fi ne zadošča, zato so storitve AWS več kot dobrodošle.

Realizacije večine projektov se moramo kljub temu v veliki meri lotiti sami, saj je gotovih rešitev še malo. K sreči je na spletu velika ponudba razvojnih modulov in podrobnih navodili za uporabo storitev z AWS zanje.

Razvojni moduli za gradnjo naprav IoT

Pred leti je Arduino Uno tudi uporabnikom brez poprejšnjega znanja s področja razvoja strojne opreme omogočil sestavljanje in programiranje preprostih digitalnih naprav s priključki za združljive hčerinske module, avtorji manj zahtevnih projektov pa so pogosto uporabljali tudi povezovanje z natičnimi kabli. Danes je z Arduinovim razvojnim okoljem združljivih že toliko modulov, da težko izberemo pravega.

Kot naprave IoT so zanimivi razvojni moduli, ki jih lahko povežemo z internetom prek Wi-Fi ali etherneta ali na drug način (npr. prek bluetootha ali priključka USB) in imajo dovolj zmogljivosti za implementacijo komunikacijskega protokola MQTT ter zagotavljanje sprotnega šifriranja/dešifriranja podatkov.

Večina se kljub temu z internetom povezuje prek omrežja Wi-Fi, zato je možnost vzpostavitve povezave z AWS odvisna predvsem od razpoložljivih programskih knjižnic za gradnjo vgrajene programske opreme oziroma znanja in časa, ki ga mora sicer programer vložiti v implementacijo ustreznih komunikacijskih protokolov.

Bistveno razliko med moduli IoT tako predstavlja kriptografski čip oziroma morebitna kriptografska enota v mikrokrmilniku modula, ki zagotavlja višjo stopnjo varnosti in večjo hitrost delovanja, saj se komunikacijskemu modulu ni treba ukvarjati s kodiranjem in z dekodiranjem podatkov ter zagotavljanjem unikatnega zaporedja naključnih števil ob vsakem ponovnem zagonu modula. Kriptografski moduli imajo navadno vgrajen lastni analogni generator naključnih števil, zato ni bojazni, da bi po vsakem ponovnem zagonu tvorili enako zaporedje naključnih števil.

Programski razvojni kompleti in razvojna okolja

V spletni konzoli AWS so na seznamu združljivih komunikacijsko-krmilnih modulov ob vsakem modulu tudi povezava do ustreznega programskega razvojnega kompleta (angl. software development kit – SDK), ki vključuje primere izvorne kode, in navodila za namestitev razvojnega okolja.

Za osnovno povezavo razvojnega modula prek storitev AWS IoT Core je treba ustvariti senčno kopijo naprave IoT v okviru storitev AWS IoT Core in poverilnice za dostop do AWS IoT Core, dodati poverilnice za dostop do svoje (domače) dostopne točke Wi-Fi v izvorno kodo ter prevesti in naložiti vgrajeno programsko opremo v napravo IoT. Na spletu so na voljo tudi videi, v katerih avtorji natančno predstavijo postopek.

Samogradnja naprave IoT

Če vemo, kakšno napravo bi radi izdelali, dober načrt najlažje poiščemo s spletnim iskalnikom (Google, Bing, Yahoo itd.), ki običajno ponudi precej zadetkov. V iskalno geslo je zato modro vnesti tudi kakšno lastnost, ki si jo še posebej želimo. Hkrati velja pred nabavo komponent natančno prebrati navodila in preveriti, ali imamo za izdelavo na voljo vsa potrebna orodja in znanja. Številni avtorji predpostavljajo, da imamo doma tiskalnik 3D. Če ga nimamo, moramo razmisliti, iz katerega materiala in kako bomo izdelali dovolj trdno in lepo oblikovano ohišje.

Čeprav domači graditelji naprav IoT velikokrat posegajo po standardnih razvojnih ploščicah s priključnimi konektorji, ki jih lahko povezujejo z drugimi razvojnimi ploščicami kar z natičnimi kabli, lahko željni trdnejših prototipov namesto tega izdelamo tudi lastna tiskana vezja s podnožji za izbrane razvojne ploščice. Razvojne ploščice z moduli Wi-Fi večinoma temeljijo na Espressif Systemsovih modulih ESP ali Microchipovih modulih WINC in WFI, kot so moduli ESP8266, ESP32, ESP32-S2, ESP32-C3, WINC1000, WINC15x0, WINC3400 in WFI32E1.

Programiranje in diagnostika modulov iz PC

Moduli, razen WFI32E1, nimajo lastnega priključka USB in jih lahko programiramo le prek vmesnikov RS-232, SPI in I2C, ki delujejo pri napetostnih nivojih med 0 V in 3,3 V. Programiranje prek RS-232 omogočajo moduli ESP, medtem ko lahko module WINC programiramo tudi prek vmesnikov SPI in I2C (samo nekatere).

Za programiranje modulov Wi-Fi potrebujemo računalnik z Windowsi ali eno od različic Linuxa. Čeprav imajo vsi Raspberry Pi vrstični konektor, ki omogoča neposredno komunikacijo z moduli in njihovo programiranje prek RS-232, SPI in I2C, si večina želi za pisanje in prevajanje vgrajene programske opreme ter njen prenos v modul Wi-Fi uporabiti notesnik ali klasični namizni PC, pri katerem ne gre brez ustreznega vmesnika, ki ga povežemo prek vtičnice USB. Vmesnik potrebujejo tudi stari peceji, ki imajo vtičnico RS-232, saj ta uporablja napetostne nivoje med +/- 12 V.

K sreči ima večina razvojnih ploščic z moduli Wi-Fi vmesnik za programiranje s priključkom USB že vgrajen, za druge pa ga moramo kupiti ali pa v ta namen ustrezno sprogramirati katero od splošnonamenskih razvojnih plošč, kot je Arduino Uno. Računalniški znalci lahko vmesnik USB/RS-232, USB/SPI ali USB/I2C izdelamo tudi na osnovi katerega od priljubljenih mikrokrmilnikov (npr. PIC18F14K50 ali PIC32MX250F128B). Več na spletni strani sites.google.com/site/pcusbprojects.

Se je pisanja programov z uporabo storitev AWS Lambda težko naučiti?

Pri Amazonu poskušajo v čim večji meri ustreči in se prilagoditi željam svojih kupcev in naročnikov storitev, pri čemer AWS ni izjema. Izdatna programerska pomoč s številnimi videi je dobrodošla začetniku kakor tudi izkušenemu programerju. Delovanje AWS lahko preizkusimo tudi z namensko razvojno ploščo, katere koraki povezovanja z AWS so natančno predstavljeni v internetnih videih.

Vendar je za resno delo potrebno podrobnejše poznavaje delovanja storitev AWS IoT Core pa tudi drugih storitev, med katerimi so še posebej zanimive storitve Lambda, ki omogočajo poganjanje lastne programske kode v popularnih programskih jezikih, kot so Java, C#, Python itn., brez lastnega navideznega strežnika. Programsko kodo lahko urejamo v svojem računalniku ali spletnem urejevalniku v spletni konzoli AWS.

Projekt: Upravljanje, spremljanje in varovanje doma

Ko sem razmišljal, kako praktično uporabiti zastonjske storitve AWS, vsekakor nisem mogel mimo sistemov za upravljanje doma, ki združujejo merjenje meteoroloških parametrov, nadziranje ogrevanja in hlajenja pa tudi komunikacijo s sistemom za varovanje in spremljanje doma oziroma analiziranje podatkov s tipal za varovanje doma pri enostavnejših načinih varovanja doma.

Ko smo zdoma, pride prav tudi možnost daljinskega nadzora in uporabe sistema za upravljanje doma. Prednost AWS je vgrajena podpora za varno spletno komunikacijo, s katero preprečimo dostop morebitnim hekerjem, hkrati pa lahko z osebnim računalnikom, s tablico ali pametnim telefonom spremljamo dogajanje v našem domu kjerkoli prek interneta. Storitvi AWS S3 in Lambda omogočata tudi varno shranjevanje in analizo diagnostičnih podatkov ter obveščanje o izrednih dogodkih, denimo okvari ogrevanja ali iztekanju vode.

Kako se lotiti implementacije?

Za osnovo lahko uporabimo enega od novejših razvojnih modulov Wi-Fi (npr. ESP32-S2), ki ima dovolj priključkov za povezavo digitalnih merilnikov vremenske postaje (temperatura, vlažnost zraka, zračni pritisk), tipal sistema za varovanje doma (npr. tipala prisotnosti v prostorih, javljalniki plina itn.) in krmilnikov ogrevalnih ter klimatskih naprav. Toda kako povezati množico naprav z enim samim z AWS IoT Core združljivim modulom? Večino tipal lahko povežemo prek skupnih zaporednih vodil RS232, SPI ali I2C, za kar potrebujemo malo priključkov. Novejši ogrevalni sistemi in klimatske naprave omogočajo upravljanje prek Wi-Fi, kar ne zahteva priključkov, saj z razvojnim modulom komunicirajo prek domače dostopne točke. Preostale priključke razvojnega modula lahko porabimo kot tipkovnico za ročno upravljanje.

Komunikacija med storitvami AWS IoT Core in razvojno ploščo poteka po protokolu MQTT, s katerim je mogoče je tudi upravljanje na daljavo. Denimo, če se nameravamo domov vrniti prej, kot smo načrtovali, lahko s pametnim telefonom prek interneta vklopimo ogrevanje ali klimatsko napravo. Z AWS lahko rešimo tudi problem enostavnega napovedovanja vremena, saj lahko razvojni modul za shranjevanje in analizo podatkov uporabi storitve AWS Lambda in AWS DynamoDB.

Primeri rešitev

Če v spletni iskalnik vpišemo geslo »AWS IoT Core ESP32 temperature data recording«, dobimo kopico videov primerov z uporabe storitev AWS. Podobne rešitve najdemo tudi za marsikateri drug izziv. Lastno prototipno rešitev nato oblikujemo z združevanjem želenih funkcionalnosti, nakar je navadno potrebnih še nekaj prilagoditev, testiranj, popravkov in dopolnitev vgrajene programske opreme ter strojne opreme, da dobimo uporabno napravo.

Večina vzorčnih projektov je narejena v razvojnem okolju Arduino, zato je programska koda sorazmerno lahko razumljiva tudi ljubiteljskim računalničarjem. Amazon občasno prireja tudi spletne izobraževalne dogodke za razvijalce, ki želijo podrobnejši vpogled v popularne storitve AWS.

Bliskovit razvoj AWS tudi v prihodnje

Storitve AWS imajo dovolj procesne moči in znanja tudi za tiste, ki se pri načrtovanju novih naprav IoT spopadajo s težkimi problemi na področju umetne inteligence, in druge, ki želijo z uporabo navidezne računalniške infrastrukture v Amazonovem oblaku prihraniti denar za nakup in vzdrževanje lastnih računalniških strežnikov.

Računalništvo v oblaku s podporo napravam IoT prodira tudi v naše domove. Podobno kot imajo danes manj zahtevni uporabniki namesto osebnega računalnika pametni telefon ali pametni televizor, lahko v bližnji prihodnosti v prihodnosti pričakujemo naprave IoT, ki se bodo pri izvajanju zahtevnejših funkciji, kot je razpoznava govora, opirale na storite AWS …

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

Komentirajo lahko le prijavljeni uporabniki

 
  • Polja označena z * je potrebno obvezno izpolniti
  • Pošlji