Tee se itse TEKSTI, KOODI JA KUVAT: OLLI-PEKKA HEINISUO Sosiaalinen alkometri Näin teet laitteen, jolla voit mitata veresi alkoholipitoisuuden ja jakaa sen sosiaaliseen mediaan – sijaintitietojen kera! ksinkertaisen alkometrin rakentaminen Arduino-mikrokontrollerin avulla on yllättävän helppoa ja mielenkiintoista. Toteuttamiseen tarvitaan vain sensori, vastus ja ehkäpä lcd-näyttö. Pienellä lisävaivalla laitteesta saa tehtyä kuitenkin paljon monipuolisemman, joten pakettiin on mukava lisätä myös sekä matkapuhelinyhteys että ja satelliittipaikannus. Näiden ominaisuuksien avulla voi tehdä kaikenlaista kivaa, kuten laittaa vehje päivittämään veren alkoholipitoisuus ja sijaintitiedot Y automaattisesti Twitteriin ja Facebookiin. Voit siis marssia laite mukanasi missä tahansa ja päivittää sen avulla sosiaaliseen mediaan, mikä on humalasi aste (tai ei ole). Järjestelmän osat Fyysinen mittalaite koostuu rakennetaan Arduino-mikrokontrollerin ympärille. Sen lisäksi tarvitaan kaasusensori, näyttömoduuli, gsm/gprs/gps-moduuli sekä akku, kaapelit ja virtakytkin. Arduino on ikään kuin laitteen aivot, ja sillä ohjataan sekä luetaan muita osia. Kaasusensorista luetaan hengitysilman alkoholipitoisuus, gsm/gprs/gps-moduulin avulla 1. SparkFunin MQ-3 sensorille kytkemistä helpottava levy, itse sensori osoittaa pöytälevyä kohti. 44 MikroPC 9/2013 luodaan yhteys internetiin ja haetaan laitteen sijainti koordinaatteina. Näyttömoduuli helpottaa käyttämistä, koska kunkin vaiheen näkee näytöltä ja moduulissa on muutamia painikkeita laitteen ohjaamista varten. Koodiosuuden voi jakaa kahteen eri osaan: itse alkometrin eli Arduinon koodi ja toinen osa on pilvipalveluun tallennettava rajapinnan koodi, jonka kautta Arduino lähettää tiedot sosiaalisen median palveluihin. Järjestelmän kolmas osa on myös softaa, eli sosiaalisen median palveluihin luotavat sovellukset, joilla voi esittää esimerkiksi Facebookissa ja Twitterissä rajapinnan lähettämät tiedot käyttäjän tilasta. 2. Gsm/gprs/gps-moduuli kiinni Arduinossa, vasemmalla jumpperit ja etualalla sim-kortti. W W W . M I K R O P C . N E T Järjestelmän rakenne laitteisto Kaasusensori ohjelmisto verkkopalvelu Arduino Sovellus Heroku HTTP POST AT-komennot Gsm/grps/ gps-moduuli JSON-data Rajapinta Tietokanta Sovellus Sovellus Facebook Twitter Näyttömoduuli Sosiaalinen alkometrijärjestelmä koostuu laitteistosta, ohjelmistosta ja verkkopalveluista. Laitteen toiminta Kun käyttäjä kytkee Arduinoon virran, suoritetaan aluksi alustustoimenpiteitä laitteen rekisteröimiseksi gms-verkkoon. Tällöin näytöllä lukee ”Initializing…”. Tämän jälkeen laite kysyy, käytetäänkö gps:ää vai ei, ja mihin sosiaalisen median palveluihin tiedot lähetetään. Näytöllä näkyvät seuraavanlaiset vaihtoehdot (vuorotellen): Use GPS: ON/OFF Mode: All/Facebook/Twitter/None Asetuksia voi muuttaa näyttömoduulin Left- ja Right-painikkeilla sekä hyväksyä kaikki Select-painikkeella. Näytölle ilmestyy teksti ”Ready to start! Press select.” Kun Selectiä painetaan uudestaan, laite yrittää hakea koordinaatit gps:llä, jos käyttäjä aikaisemmin asetti gps:n päälle. Sisätiloissa gps ei välttämättä löydä satelliitteja ollenkaan ja ulkonakin niiden löytyminen voi 3. LiPo-akku kytkettynä dc-plugiin virtakytkimen läpi. W W W . M I K R O P C . N E T viedä useita minuutteja. Jos ja satelliittejä ei löydy viiden minuutin sisällä, gps poistetaan käytöstä. Seuraavaksi näytölle ilmestyy teksti ”Press select to start measuring.”. Kun Selectiä painaa jälleen uudestaan, alkaa sekunnin kuluttua mittaus, jonka aikana tulee puhaltaa sensoriin. Mittaus kestää myös noin sekunnin verran. Arduino lukee tällöin jonkin verran arvoja sensorilta ja laskee niistä keskiarvon ja muuntaa raakadatan promillearvoksi. Kun mittaus on valmis, Arduino näyttää veren alkoholipitoisuuden arvon ja lähettää lukemat rajapinnalle matkapuhelinverkossa gprs:llä. Lähetyksessä saattaa kestää hetki, jonka jälkeen Arduino palaa takaisin alkutilaan, jossa valitaan asetukset ja sama voidaan toistaa hetken kuluttua uudelleen. Saapunut pyyntö käsitellään rajapinnassa, joka päivittää sitten käyttäjän tilan haluttui- hin palveluihin. 4. MQ-3-kaasusensori. Huomaa vastus sinisen ja mustan johdon välissä. Sensori on kytketty näyttömoduulin pinneihin (vastaavat Arduinon pinnejä). 5. Peukalon vieressä ohjausnapit. Yläreunassa hyppykaapelit. Laitteiston kokoaminen Rakentaminen kannattaa aloittaa sensorista. Kaasusensori eli MQ-3 vaatii vähintään 24 tunnin alkupolton, jotta se antaa yhtenäisempiä lukemia vakaammin. Poltto tapahtuu kytkemällä sensori Arduinoon täysin samalla tavalla kuin sieltä lukisi dataa ja jättämällä se sitten ”polttamaan” itseään muutamaksi päiväksi. Arduinon on siis oltava päällä putkeen muutama päivä niin, että sensori on kytketty siihen. Huomaa myös, että sensorin kuuluu lämmetä: jos se ei lämpene, se on todennäköisesti kytketty väärin. Kytkemisen helpottamiseksi käytetään tässä Sparkfunin kyseiselle sensorille tehtyä kytkentälevyä. Liittimet H1 ja A1 kytketään molemmat Arduinon 5 voltin liitäntään. GND kytketään MikroPC 9/2013 45 Tee se itse nimensä mukaisesti Arduinon samannimiseen liitäntään eli ”maahan”. B1 kytketään johonkin analogipinniin, esimerkiksi A1:een. GND:n ja B1:n välille kytketään 10 kOhm:n vastus. Vastuksen kokoa säätelemällä analogipinnistä luettava arvoväli vaihtelee. Kokeilujen pohjalta 10 kOhm:n vastus tuottaa arvoja suunnilleen väliltä 100–1 000, joista sitten lasketaan veren alkoholipitoisuus. Yksinkertaisesti sanottuna: mitä suurempi luku, sitä enemmän alkoholia on veressä. Ennen kuin siirryt seuraavaan vaiheeseen, suorita sensorin alkupoltto kuten aikaisemmin ohjeistettiin. Seuraavaksi Arduinoon kytketään gps/ gprs/gsm-moduuli. Moduuliin asetetaan mikä tahansa normaalikokoinen sim-kortti. Gsm/gps-kytkin laitetaan keskiasentoon, sillä tila valitaan koodissa ohjelmallisesti. Ohjelmointia ja kommunikointia varten toisella laidalla sijaitsevat kytkimet laitetaan myöhemmin oikeisiin asentoihinsa. Poista näiden kytkimien vieressä olevat kolme siltauspalaa eli jumpperia. Viimeiseksi lisätään näyttömoduuli. Tarvitset kolme naaras-naaras-hyppylankaa (tai kolvin ja piuhaa), joiden toinen pää kytketään gps/gprs/gsm-moduulin pinneihin, joista poistettiin kolme jumpperia. Toinen pää kytketään lcd-moduulin pinneihin. Tällä tavalla vältytään käyttämästä samoja pinnejä molempien korttien ohjaukseen. Liitä näyttömoduuli pinon päällimmäiseksi. Kytke johdot seuraavasti (toinen pää alemmasta moduulista poistettujen jumpperien tilalle ulkoreunaa lähempänä oleviin pinneihin): D2_J10, D11_J11, D12_J12 Paketti on nyt akkua vaille valmis. Akku on todennäköisesti helpoin kytkeä dc-plugin ja virtakytkimen avulla Arduinon dc-liittimeen. Akun osalta kannattaa varmistaa, että se antaa ulos vähintään 7 volttia mutta korkeintaan 12 volttia. Esimerkiksi kaksikennoisen LiPon jännite on 7,4 V. Ohjelmiston asentaminen Järjestelmä vaatii melko paljon koodia toimiakseen, joten se on ylläpitämisen ja muutosten tekemisen helpottamiseksi jaossa GitHub-nimisessä verkkopalvelussa. GitHub on rakennettu Git-nimisen hajautetun versionhallintaohjelmiston ympärille, jonka on alun perin kehittänyt linuxin isä Linus Torvalds. Avoimen koodin kehittämiseen voi osallistua GitHubissa kuka tahansa. Mitä hölmömpi idea, sitä hauskempaa sen toteuttaminen on. Koodin voi kloonata omalle koneelle tekemällä tilin GitHubiin, asentamalla Gitin ja lataamalla koodin Git GUI:lla tai Git Bashilla. Git GUI on windowsissa ja OS X:ssä toimiva graafinen sovellus Gitin hallintaan. Git Bash on vastaava tekstipohjainen sovellus. Gitin voi ladata osoitteesta git-scm.com/ downloads. Lisää ohjeita aiheesta löydät GitHubista: help.github.com/articles/set-up-git. Arduino-koodin saat ladattua valitsemalla Git GUI:ssa Repository > Clone. Kirjoita sitten Source location -kenttään https://github. com/skvark/ArduBreathalyzer.git, Target directory -kenttään koodille sopiva tallennuspaikka koneeltasi ja klikkaa lopuksi Clone. Rajapinnan saat osoitteesta https://github.com/skvark/ArduBreathalyzerAPI.git. Git Bashissa kopioinnin voi tehdä komennolla git clone [koodin https-osoite]. Mikäli tekstikomentojen suorittaminen tuntuu hankalalta, voit navigoida selaimella suoraan osoitteisiin https://github.com/ skvark/ArduBreathalyzer jossa on painike Download ZIP. Ladatun paketin voi sitten purkaa haluamaansa kohteeseen. Tämä tapa ei kuitenkaan ole luontainen versionhallinnalle, eikä tapaa voi käyttää, jos laittaa rajapinnan Herokuun, sillä tällöin versionhallinta puuttuu kansiosta kokonaan. Nyt kun olet saanut koodin koneellesi, täytyy molemmat osat laittaa kuntoon käyttöä varten. Rajapinta on pystytettävä ensimmäiseksi, koska Arduinon koodiin on tehtävä muutama muutos rajapinnan antamien arvojen mukaan. Rajapinnan rakenteesta ja toiminnasta on tarkempia tietoja sivulla 49. Rajapinta Herokuun Seuraavilla ohjeilla laitetaan ArduBreathalyzerAPI-rajapinnan pyörimään Herokuun. Heroku on web-sovellusten pyörittämiseen tarkoitettu helppokäyttöinen ja ilmainen pilvipalvelu (ilmainen, jos ei käytä lisäominaisuuksia, kuten tehokkaampia ”dynoja”). Toinen tapa olisi pystyttää omalle palvelimelle samanlainen ympäristö, mutta se on melko työlästä ja vaatii oman palvelimen tai pääsyn jollekin palvelimelle, jossa on tarvittavat oikeudet ohjelmistojen asentamiseen. (Rajapinnan kehitys ei kuitenkaan ole tapahtunut Herokussa vaan omalla palvelimellani, koska Heroku on tarkoitettu vain sovellusten julkaisualustaksi.) Mene osoitteeseen https://id.heroku.com/ signup/www-home-top ja luo tili. Lataa sitten Heroku Toolbelt osoitteesta toolbelt.heroku. com. Toolbeltin mukana asentuu windowsille Git Bash, muilla käyttöjärjestelmillä kannattanee käyttää järjestelmän omaa terminaalisovellusta. 1. Avaa joko Git Bash tai terminaali/komentorivi ja kirjoita siihen heroku login. 2. Syötä Herokun kirjautumistietosi. 6. Git GUI on yksinkertainen käyttöliittymä Gitin hallintaan. 7. Git Bashin näkymä, kun sovellus asennetaan tai päivitetään Herokuun. Tässä tapauksessa Herokuun on menossa jo versio 21, jolloin ruudulle tulostuu vähemmän tietoa, koska kaikkia riippuvuuksia ei tarvitse asentaa uudestaan. 46 MikroPC 9/2013 W W W . M I K R O P C . N E T 3. Heroku kysyy luodaanko ssh-avain, jollei sellaista jo löydy. a. Luo uusi eli vastaa Y, jos sitä ei ole. b. Jos sinulla on jo olemassa ssh-avain, tämä vaihe hypätään yli automaattisesti. 4. Avaa kansio, jonne olet kloonannut GitHubista ArduBreathalyzerAPI:n: cd [polku kansioon, jossa koodi sijaitsee]. 5. Luo Herokuun sovellus komennolla heroku create. 6. Luo tietokanta komennolla heroku addons:add heroku-postgresqlev. Tietokannan nimi saattaa vaihdella, joten avaa tässä välissä haluamaasi tekstieditoriin kansiossa oleva tiedosto dbwrapper.py ja kopioi Git Bashiin (nimen näkee myös Herokun web-käyttöliittymästä) tulostunut nimi tiedoston riville 8: url = urlparse. urlparse(os.environ[”NIMI_TÄHÄN”]). 7. Suorita komennot git add dbwrapper.py ja git commit -m ’tietokannan nimi muutettu’ 8. Sovelluksen ajaminen on nyt mahdollista, joten suorita: git push heroku master. 9. Jos sovellus käynnistyi onnistuneesti, näet sen aloitussivun ruudulle tulostuneessa osoitteessa vierailemalla (älä kuitenkaan täytä etusivun lomaketta vielä, ohjeet siihen tulevat seuraavaksi). Tarvitset rajapinnan osoitetta seuraavissa vaiheissa. Osoite on täysin satunnaisesti nimetty. Voit tämän jälkeen vielä vierailla Herokussa ja kirjautua tilillesi, josta näet myös sovelluksesi tilan, nimen ja voit muuttaa sen asetuksia. Alkometri on tarkoitettu vain hupikäyttöön. Sen avulla ei voi missään tapauksessa esimerkiksi päätellä olevansa ajokunnossa. Sovellukset someen Ennen kuin pääset syöttämään tietoja uunituoreeseen rajapintaan, täytyy luoda sovellukset sosiaalisen median palveluihin. Ilman niitä promillemäärääsi ja sijaintiasi ei saa lähetettyä automaattisesti palveluihin. Facebookiin voi luoda sovelluksen osoitteessa: developers.facebook.com/apps. Twitter- ja Foursquare-ohjeet ovat sivulla 49. 1. Create New App ja täytä sovelluksen nimi sekä kategoria. 2. Lähetä lomake. 3. App ID ja App Secret ovat rajapinnassa käytettävät arvot, ota nämä talteen. 4. Syötä sivusto Facebook Login -toiminnolla kohtaan: Heroku_sovelluksesi_osoite/ success. 5. Oletuksena on käytössä eristystila eli sovellus ei näy kuin kehittäjille, tämän voi jättää päälle ellei halua julkaista sovellusta myös muiden ihmisten käyttöön (oleellista, jos joku muu kuin sinä haluaa käyttää sosiaalista alkometriä). 6. Mene kohtaan oikeudet ja lisää User & Friends Permissions -kohtaan publish_actions. Nyt kun sinulla on olemassa oma sovellus Facebookissa, voit mennä aikaisemmin käynnistetyn rajapinnan etusivulle ja syöttää Facebookin App ID:n ja App Secretin lomakkeeseen. Jos haluat käyttöön myös Twitterin ja Foursquaren, luo sovellus myös niihin ja kopioi tarvittavat avaimet lomakkeeseen ennen kuin lähetät sen. Ole tarkkana, sillä virheellisiä avaimia ei syötetä tietokantaan eikä lomaketta näytetä enää sen jälkeen, jos yksikin sovellus on lisätty sinne onnistuneesti. Tämän jälkeen voit lisätä käyttäjän rajapintaan. Kirjoita osoiteriville [sovelluksesi osoite]/add_user ja täytä tarvittavat kentät, jonka jälkeen lomakkeen lähettämällä sinut ohjataan palveluihin yksi kerrallaan sallimaan se, että sovellus voi päivittää tilasi puolestasi. Kun kaikki on sallittu onnistuneesti, näytetään salainen avain, joka on lisättävä seuraavaksi muutaman muun tiedon kanssa Arduinon koodiin. Koodi Arduinoon Avaa Arduinon koodi (ArduBreathalyzer.ino) Arduinon kehitysympäristöön sieltä, mihin sen aikaisemmin GitHubista siirsit. Kehitysympäristön saa osoitteesta arduino.cc/en/Main/ Software. Täydennä seuraavat koodin alussa olevat muuttujien arvot lainausmerkkien väliin: String user = String(”rajapinnan_käyttäjänimi”); String token = String(”salainen_avain”); String url = String(”http://sovelluksen_nimi.herokuapp.com”); 8. Rajapinnan etusivun lomakkeella tallennetaan ensin some-sovellusten avaimet tietokantaan, lisätään käyttäjät ja lopuksi rajapinta näyttää käyttäjän nimen, salaisen avaimen ja palvelut, joihin käyttäjä voi lähettää tietoa Arduinolla. 9. Herokussa voi linkittää sovelluksen esimerkiksi GitHubiin ja lisätä sovellukselle oman www-osoitteen. W W W . M I K R O P C . N E T MikroPC 9/2013 47 Tee se itse String apn = String(”internet”); APN-arvo riippuu operaattorista, jolta olet ostanut liittymän. Sen voi etsiä esimerkiksi täältä: wiki.androidsuomi.fi/Suomalaisten_ operaattoreiden_APN_asetukset Suurin osa operaattoreista käyttää oletuksena arvoa ”internet”. Näiden lisäksi saatat joutua muuttamaan funktiota, jolla promillemäärä lasketaan verestä. Se löytyy koodista nimellä double calculate_bac(int raw_value). Koodi on nyt lataamista varten valmis, eli kytke Arduino usb-kaapelilla tietokoneeseen ja paina Upload-painiketta kehitysympäristössä, jolloin koodi latautuu Arduinoon. Gsm/ gprs/gps-moduulin kaksi kytkintä pitää olla koodin latauksen jälkeen asennossa Arduino ja Comm, jotta Arduino juttelee suoraan moduulille. Tämän jälkeen kaikki on käyttövalmista, mutta suosittelen kalibroimaan sensorin ennen käyttämistä. Testaamaan! Ennen ensimmäistä käyttökertaa alkoholisensori pitää kalibroida. Kalibroiminen tapahtuu juomalla alkoholiannoksia ja puhaltamalla sensoriin noin kymmenen minuuttia juoman nauttimisen jälkeen. Varsinaisen koodin lisäksi olen laatinut testikoodin, jolla voi testata sensorin antamia arvoja. Testikoodi löytyy erillisenä tiedosto- na nimellä sensortest.ino ja se tulee saman paketin mukana GitHubista kuin varsinainen alkometrin koodikin. Testikoodi lukee sensorin arvoja koko ajan kun Arduino on päällä ja sensori kytkettynä testikoodissa määriteltyyn analogipinniin. Tulokset näkee Arduinon kehitysympäristön serial monitorista, kun Arduino on kytkettynä tietokoneeseen ja testikoodi on ladattu siihen. Raakadatasta voi sitten esimerkiksi taulukoiden (en.wikipedia.org/wiki/Blood_alcohol_content) perusteella päätellä jonkinlaisen muunnoskaavan, jotta luvuista saa laskettua promillet. Tätä tarkempaa tiedettä on turha harjoittaa, sillä sensorin antamiin arvoihin vaikuttaa hyvin paljon ilmankosteus ja lämpötila, koska kyseessä on halpa ja epätarkka sensori. Lukemat ovat siis vain suuntaa antavia. Tarkennuksia ja parannusehdotuksia Laitteen toiminta perustuu pitkälti gsm/gprs/ gps-moduulin vastaanottamiin at-komentoihin, joita myös tavalliset kännykät käyttävät. Eri laitteet tukevat erilaisia komentoja. Gps esimerkiksi kytketään päälle komennolla AT+CGPSPWR=1. Arduinolla näitä komentoja lähetetään shieldille Serial-kirjaston avulla. Tietoturvan kannalta on oleellista ymmärtää, että käyttäjien tunnistaminen hoidetaan rajapinnassa käyttäjäkohtaisella merkkisar- jalla. Tällä pyritään estämään se, ettei kuka tahansa käyttäjänimen ja palvelun osoitteen tietävä voi lähettää väärää dataa käyttäjän tileille (tässä tapauksessa siis veren alkoholipitoisuuden ja sijaintitiedot). Ratkaisu ei todellakaan ole pomminvarma, joten sen vuoksi oikeaa käyttöä varten kannattaa joko jatkokehittää koodia tai sitten luoda tätä tarkoitusta varten erillinen tili Twitteriin tai oma sivu Facebookiin. Tekstissä esitellyt koodit ovat melko yksinkertaisia runkoja, joiden tarkoitus on helpottaa kehittämään parempia ja laajempia sovelluksia. Runkojen avulla pystyy toteuttamaan paljon hyvin erilaisia sosiaaliseen mediaan Arduinon kautta kytköksissä olevia palveluja – ja miksei myös muutakin. Rajapintaa voi laajentaa ottamaan vastaan myös erilaista tietoa tai esimerkiksi lisätä tietojen muokkaus- ja poistomahdollisuuden. Datasta voisi vaikkapa luoda interaktiivisia karttoja. Arduinon koodissa on paljon parannettavaa: siihen voi lisätä tuen useille käyttäjille ja esimerkiksi hankkia tarkemman sensorin. Laitteesta saa nopeasti tehtyä myös yksinkertaisen seurantalaitteen, joka päivittää sijaintisi tietyin väliajoin sosiaaliseen mediaan tai pelkkään rajapintaan. Tällöin näyttöä ja sensoria ei tarvita ollenkaan.앫 10. Sovellusten luominen Facebookissa on helppoa: luomiseen vaaditaan ainoastaan nimi ja kategoria. 12. Sovelluksen perusasetuksista voi valita, kuinka sovellus toimii Facebookin kanssa: rajapinnan tapauksessa pitää valita Sivusto Facebook Login -toiminnolla. 11. Sovelluksen oikeudet-välilehdeltä voi säätää, kenelle sovelluksen kautta lähetetyt tiedot näkyvät vakiona ja esimerkiksi lisätä sovellukselle oikeudet päivittää käyttäjän tilaa. 48 MikroPC 9/2013 W W W . M I K R O P C . N E T Käsitteitä Rajapinta (API, application programming interface) Määritelmä, jonka perusteella eri sovellukset voivat vaihtaa tietoja. Rest (Representational State Transfer) Malli, jonka mukaan useimmat http-ohjelmointirajapinnat on toteutettu yhteensopivuuden takaamiseksi. At-komennot (Hayes AT commands) Ohjeita, joita mobiililaitteiden ja tavallisten puhelimien modeemit noudattavat. Oauth Avoin standardi, jolla voidaan tunnistaa (autentikoida) käyttäjiä erilaisiin palveluihin. Json (JavaScript Object Notation) Yksinkertainen tekstimuotoinen datansiirtomuoto, jota on helppo käyttää javascript-ohjelmissa. Voidaan käyttää myös muilla ohjelmointikielillä. Osat Arduino-laitteen lisäksi tarvitset ○ DFRobot Arduino gsm/gprs/gps-shield ○ DFRobot Lcd Keypad Shield for Arduino ○ MQ-3-sensori ○ MQ-3 breakout -levy ○ 2,1 mm male barrel jack (kaapelilla) ○ Rocker switch (virtakytkin) ○ LiPo 7,4 V 1000 mAh -akku (+ ehkä omat liittimet) ○ Prepaid-dataliittymä ○ Johtoa Osille tulee hintaa noin 140–150 euroa. Kaikki tarvittavat osat esimerkiksi Robot Shopista: robotshop.com/eu/ home.html. Rajapinnan rakenne ja toiminta ARDUBREATHALYZERAPI-RAJAPINTA ON toteutettu Pythonilla ja CherryPy:llä. Itse rajapintaosuus sovelluksesta tottelee vain post- ja get-pyyntöjä. Muut rest-arkkitehtuurin mukaiset pyynnöt eivät toimi. Rajapinta toimii polussa /api, eikä sitä tule sekoittaa aikaisemmin esiteltyihin tukena toimiviin lomakkeisiin, jotka lähinnä alustavat rajapinnan toiminnan. Sovelluksen rakenne koostuu päätiedostosta, joka sisältää pääasiassa CherryPy:lle tarkoitettuja luokkia ja niiden metodeja. Tämän lisäksi tietokantaoperaatioita varten on dbwrapper-moduuli sekä sosiaalisen median palveluja varten servicewrapper-moduuli. Moduulit käyttävät pythonin tietokanta-ajuria sekä valmiita eri sosiaalisen median palveluille tarkoitettuja kirjastoja. Sosiaalisen mediaan käyttäjät tunnistetaan Oauth-menetelmällä, jota varten rajapinnan rekisteröintivaiheessa suoritetaan niin kutsuttu oauth-tanssi, jolla haetaan tarvittavat avaimet käyttäjien tunnistamista varten. Eri riippuvuudet asentuvat requirements.txt-nimisen tiedoston mukaan, jota pythonin pip-niminen pakettienhallinta käyttää. Rajapinnan voi siksi ladata helposti Herokuun. Osana rajapintasovellusta on PostgreSQL-tietokanta, jonne käyttäjien tiedot ja asetukset tallennetaan. Datan perillemenon rajapintaan voi varmistaa hakemalla dataa palvelusta seuraavanlaisella get-pyynnöllä eli kirjoittamalla vastaavan mukaisen osoitteen selaimen osoiteriville (vuosi, viikko ja viikonpäivä ovat numeroita), kun dataa on lisätty sovellukseen: http://sovelluksen_nimi.herokuapp.com/ api/käyttäjänimi/vuosi/viikko/viikonpäivä. Tällöin vastauksena palautuu kyseisen päivän arvot ja tiedot json-muotoisena koneluettavana datana. Arduinon lähettämän post-pyynnön rakenne selviää joko rajapinnan tai Arduinon koodia lukemalla.앫 Twitter-sovellus 13. Laitteisto käynnistyy. Kun kaikki on ok, keskimmäisen moduulin net-valo vilkkuu 3 sekunnin välein ja kaksi muuta (pwr ja stat) palavat koko ajan. Twitteriin voi luoda sovelluksen osoitteessa dev.twitter.com/apps. 1. Valitse Create a new application. 2. Täytä vaaditut kentät (Callback URL: [Heroku-sovelluksesi osoite]/success) 3. Lähetä lomake. 4. OAuth settings -otsikon alta löytyy tarvittavat avaimet 5. Mene Settings-välilehdelle ja vaihda Application typeksi Read and Write. Foursquare-sovellus Rajapinnassa on tuki Foursquare-sovelluksen lisäämiselle, mutta itse datan lähettämistä palveluun ei ole toteutettu ainakaan vielä tätä tekstiä kirjoitettaessa. Foursquareen voi luoda sovelluksen osoitteessa foursquare.com/developers/apps. 1. Valitse Create a New App ja täytä kentät. 2. Redirect URI(s): [Heroku-sovelluksesi osoite]/success. 3. Laita ruksi kohtaan New users can connect via the web. 4. Lähetä lomake. 5. Client ID ja Client Secret ovat rajapinnassa käytettävät arvot. 14. Tämä juttu kirjoitettiin selvinpäin. W W W . M I K R O P C . N E T MikroPC 9/2013 49
© Copyright 2024