Technology

Tesla-tunkkaajan tuntemuksia

July 10, 2014

Read time 3 min

Ensimmäisen puolentoista viikon mielenkiintoisen koulutusrumban jälkeen me kaksi kesädevaajaa, Kai ja Santeri, ryhdyimme tositoimiin. Labrapalaverissa projektiksi valikoitui Reaktorin Teslan käyttäjiä helpottavan sovelluksen teko. Tarkoituksena oli kartoittaa latausasemia, näyttää kuinka pitkälle auton latauksella pääsee ja lisäksi etsiä lähin latausasema.

Sovellus suunniteltiin käytettäväksi Teslan keskikonsolilla, mutta vajaan viikon kehitystyön jälkeen unelmamme murtuivat. Testasimme sovelluksen prototyyppiä Teslan selaimella ja jouduimme toteamaan sen olevan aivan liian hidas interaktiiviselle karttasovellukselle. Idea sovelluksesta lensi romukoppaan ja lähdimme tekemään jotain aivan muuta.

Kesikset kyydissä

Reaktorin Heikki Pora oli tehnyt Tesla slack-botin, jolla voi hakea autosta tietoja, kuten sijainnin, akun varauksen ja säätilan. Lisäksi Reaktorilla oli tulossa lyhyt esiintyminen ITS European Congress älykkään liikenteen tapahtumassa noin kahden viikon päästä. Päätimme demota Teslasta kerättävän datan hyödyntämistä upealla visualisaatiolla.

Heti ensimmäisenä ruvettiin keräämään kaikkea Teslasta saatavaa dataa. Teslasta saa dataa kahden rajapinnan kautta. Slack-botin käyttämän rajapinnan kautta saa dataa kaikesta mahdollisesta, kuten ovatko ovet auki, onko autossa takaspoileri, ulko- ja sisälämpötila, onko ilmastointi päällä ja PALJON muuta – mutta vain noin kerran minuutissa. Teslan Stream rajapinnan kautta saa tietoa auton nopeudesta, vaihteesta, sijainnista, suunnasta ja korkeudesta neljä kertaa sekunnissa, noin kolmen sekunnin viiveellä. Saimmekin kerättyä puolentoista viikon aikana yli 200 000 datapistettä.

Dataa kerättiin MongoDB-tietokantaan, koska hitaamman rajapinnan data oli jo valmiiksi JSON-formaatissa ja data oli tarkoitettu selaimen käytettäväksi. Backend tehtiin nodejs:llä ja expressillä. Datankäsittely ja visualisointi tehtiin kokonaan frontendissä jQueryn, lodashin ja Google Maps API:n avulla.

Kartta

Protosimme aluksi datan käyttöä tekemällä auton karttapisteistä lämpökartan, joka näytti missä Teslalla oltiin ajettu eniten. Tämän visualisaation tekeminen osoitti, että dataa on helppo esittää mielenkiintoisilla tavoilla. Lämpökartan jälkeen päätimme tehdä sovelluksen, joka toistaa uudelleen kaiken Teslasta kerätyn datan ja näyttää auton liikkeet kartalla.

Auton liikkumisen visualisointi toteutettiin piirtämällä viiva jokaisen karttapisteen välille. Tämä kuitenkin kävi nopeasti raskaaksi Google Mapsin Polylineille, kun karttapisteitä oli kymmeniätuhansia. Ongelma ratkaistiin piirtämällä korkeintaan tuhannen pisteen viivoja, jonka jälkeen aloitettiin uuden viivan piirtäminen.

Teslan akun taso, latauksen tila ja nopeus näytettiin oikeassa reunassa olevilla indikaattoreilla. Lisäksi karttaan merkittiin kaikki paikat, joihin autolla oli pysäköity (eli parkkivaihde on ollut käytössä). Latausasemat oli merkitty karttaan kolmella mustalla salamalla.

Tiimiin kuului yhteensä 5-2 devaajaa, karpo ja visu. Devaajia katosi asiakkuuksiin projektin edetessä kovan myynnin takia. Visu oli projektissa mukana vain muutaman päivän ajan, mutta sai ulkonäölle todellisia ihmeitä aikaiseksi. Aikaisemmin ulkonäkö oli devaajien ja karpon vastuulla, joka kyllä näkyi visuaalisessa ilmeessä. Allaolevassa kuvakaappauksessa on täysin samat tiedot kuin ylläolevassa. Projektin muuttuessa visualisoinniksi, karpon rooli muuttui ja hän teki esitykselle eeppisen intro-videon.

Lokaatiokartta

Projekti toimi hyvänä sisäänajona ketterään työskentelyyn ja oli kehittäjän näkökulmasta mehukas tekele. Projektin fokus muuttui useaan kertaan, mutta siihen pystyttiin reagoimaan nopeasti. Tehty työ ei tuntunut hukkaan heitetyltä, kun ei lähdetty liikaa hifistelemään prototyyppausvaiheessa. Balaillaan!

– Kai Kulju, Santeri Hiltunen

 

Never miss a post