Kategoriat
Yleinen

Datan keräys Raspberry Pi:n avulla

Viime blogissa kirjoitimme, kuinka saatiin käyttöömme oma SQL-database. Seuraavaksi tuli aika hyödyntää sitä opetuskäyttöön.

Projekti alkoi Raspberry Pi:n ja siihen kytkettävän sensorin tilaamisella. Pi:hin ladattiin oma Raspbian Os käyttöjärjestelmä ja varmistettiin, että sensori toimii ja kerää dataa. Tehtävänä oli mitata lämpötilaa, ilmankosteutta ja ilmanpainetta. Pi kuitenkin lämmitti sensoria, joten lämpötilan arvo vääristyi. Realistista arvoa varten tarvittiin johto, joka mahdollisti sensorin erille laittamisen Pi:stä. Tässä vaiheessa huomasimme, että tarvitsemme ulkopuolisia palveluja datan keräämistä varten.

NodeRed ja Azure IoT Central

Pi:lle ladattiin NodeRed lisäohjelma. Ohjelmassa spesifioitiin Pi:n IP osoite ja Pi yhdistettiin verkkoon. NodeRedin selaimessa määriteltiin kytkentäkaavio. Kaavion tarkoituksena oli aluksi käynnistää SenseHat ja sen jälkeen siirtää kerätty data Azuren IoT Centraliin.

Pian kuitenkin huomasimme, että Noden kerättyä dataa ei IoT Centralista pystynyt viemään SQL palvelimelle. Toiveena oli, että IoT Central päivittää siirretyt datat samaan tiedostoon. Siirretty data loi kuitenkin jokaisen siirron jälkeen uuden tiedoston, joten sen siirtäminen SQL palvelimelle ei ollut mahdollista.

Seurauksena NodeRed ja IoT Central hylättiin ja päätettiin siirtyä Azuren sisäisiin palveluihin.

Azuren palvelut datan keräämiseksi

Pi:lle vaadittavien ohjelmien asentamista varten tarvittiin Windows käyttöjärjestelmällä toimiva kone. Koneella oli tarkoitus kirjoittaa koodi, jolla saataisiin Pi yhdistämään Azuren IoT hubiin. Koodi myös siirtäisi sensorin avulla kerättyä dataa Azureen.

Ensimmäisenä ohjelmana asennettiin Visual Studio Code. Studioon asennettiin vaaadittavat lisäosat. Seuraavaksi asennettiin DotNet Core, Node.js, Azure Functions Core Tools, Azure Storage Explorer ja Putty.

Käyttöönotto alkoi koodaamisella. Visual Studioon kirjoitettiin C# koodi. Koodiissa määriteltiin sensorin asetukset. Asetukset koskivat esimerkiksi lämpötilan yksikköä ja kuinka usein sensori keräisi dataa. Myös kellonaika määriteltiin paikallisen kellonajan mukaiseksi. Jotta laite osaisi yhdistää Azure IoT hubiin, lisättiin sen avain.

Asetuksien määrittämisen jälkeen oli aika siirtää koodi Pi:lle. Siirtäminen tapahtui Node.js ohjelman avulla. Aluksi määriteltiin siirettävän tiedoston parametrit. Tiedosto puhdistettiin ja varmistettiin sen moitteeton toimivuus. Mikäli tiedostossa olisi virheitä, ohjelma ilmoittaisi siitä välittömästi.

Toimivuuden varmistuksen jälkeen aloitettiin tiedoston siirtäminen. Aluksi Pi:lle luotiin uusi kansio, johon tiedostot asennettaisiin. Kansion nimeksi annettiin SenseHATDotNetCore. Nodeen syötettiin koodi, joka yhdistäisi Pi:hin ja siirtäisi haluamamme tiedostot siihen.

Projektin loppusuora

Pi:llä käynnistettiin sen oma Terminal. Terminaalissa käynnistettiin juuri siirtämämme tiedosto. Tämä onnistui ensin navigoimalla juuri luotuun kansioon. Seuraavaksi ohjelma käynnistettiin./SenseHATDotNetCore komennolla.

Juuri käynnistetty koodi toimi! Dataa siirtyi vartin välein IoT hubiin. Nyt ainoana tavoitteena oli datan siirtäminen meidän SQL palvelimelle. Tämän suoritimme Stream Analytics jobin avulla. Datan sisätuloksi määritettiin IoT hub ja ulostuloksi SQL-database.

Pi saatiin toimimaan, joten se voidaan asentaa haluamamme luokkaan. Luokassa Pi mittaa vartin välein lämpötilan, ilmankosteuden ja ilmanpaineen.

Datan analysointi

Data oli siirretty onnistuneesti SQL palvelimelle. Voitiin siis aloittaa sen analysointi. PowerBi-ohjelma valikoitui analysoinnin työkaluksi. Sensorin data avattiin ohjelmassa. Seuraavana vuorossa oli datan puhdistaminen. Esimerkiksi, ilmankosteus muutettiin prosenteiksi, päivämäärä ja aika yhdistettiin. Datan käsittelyn jälkeen rakennettiin visualisoinnit, joista ilmenee mm. tämänhetkinen lämpötila, päivittäinen ilmankosteus ja ilmanpaine.

Mitä jatkossa?

Lähes kaikki tavoitteet saatiin suoritettua. Dataa kerääntyy ja sitä voidaan käyttää opetuksessa. Oppilaat voivat harjoitella esimerkiksi datan siivoamista ja analysointia. Myös koodaamisesta kiinnostuneet voivat Pi:llä testata osaamistaan.