Data2MQTT

Last modified: 
09/11/2014 - 01:30
Platforms: 
Linux

Data2MQTT alkoi ensin backend:inä Kotibussi projektille mutta alkoi kasvaa omaksi ideakseen. Data2MQTT tuo monen eri API rajapinnan tiedot helppokäyttöiseen MQTT rajapintaan. MQTT on siitä erillainen että sen sijaan että asiakasohjelmat tekisivät jatkuvasti pyyntöjä palveluun niin MQTT työntää muutoksia asiakasohjelmalle. Näin asiakasohjelman ei tarvitse jatkuvasti ladata tietoa joka ei välttämättä ole edes muuttunut.

Miksi Data2MQTT ?

Avointa dataa alkaa olla paljon tarjolla, mutta ikävä kyllä melko pirstoutuneena ja vaihtelevien rajapintojen kautta. Useimmat ovat helppokäyttöisten REST rajapintojen takan, XML ja/tai JSON vastauksilla HTTP protokollan yli. XML ja JSON formaatit ovat kyllä melko helppokäyttöisiä mutta monen APIn yhteydessä hyvin raskaita monimutkaisia ja sisältää paljon ylimääräistä ja periaatteessa turhaa tietoa.

Esimerkiksi Tampereen SIRI ajoneuvoseurannan vastausten mielenkiintoinen tieto (lat,lon) on hyvin syvällä ja suuren datamäärän sisällä. Tyypillinen SIRI vastauspyyntö on noin 120-140 kt kokoinen XML tiedosto. Esimerkiksi sovellus joka haluaa käyttää SIRI dataa linja-autojen näyttämiseen kartalla sekunnin tarkkuudella joutuu lataamaan 120kt dataa joka sekuntti. Se voi tuntua pieneltä määrältä tämän päivän yhteyksillä mutta jos 100 asiakasohjelmaa lataa 120kt joka sekunti, datan määrä alkaa olla aika paljon vain parin muuttuvan luvun takia.

Datamäärä kuormittaa palveluntarjoajan palvelimia ja verkkoyhteyksiä. Tämä sitten johtaa siihen että palveluntarjoaja joutuu rajoittamaan APIn käyttöä pyyntömäärilläa ja muilla rajoituksilla.

Yllä mainittu data lataus on siis hyvinkin tuhlaava ja tehoton tapa ja ns push malli soveltuisi tähän huomattavasti paremmin

Sen sijaan että asiakasohjelma pyytää tietoja, jotka eivät välttämättä ole edes muuttuneet, palvelin työntää asiakasohjelmalle muutokset kun ne tapahtuvat.

data2mqtt ohjelmiston tarkoitus on vastata tähän haasteeseen ja tarjota MQTT palvelun muodossa erillaisia usein muuttuvia tietoja. Ohjelma on vielä kehitysvaiheessa mutta osaa jo tarjota esimerkiksi Tampereen liikenteen ajoneuvoseurannan tietoja MQTT palvelun kautta. Ohjelmaan on myös suunniteltu lisätä tuki GeoRSS syötteille (joita esim VR:n Junat kartalla palvelu tarjoaa). Myös säätiedot soveltuvat tällaiseksi dataksi.

Ohjelmistosta on myös hyötyä pienille sulautetuille järjestelmille joilla on vähän muistia ja/tai tehoa. Hyvänä esimerkkinä on Koti-bussi projekti jota ajetaan Arduino alustalla.

Koska ohjelma on taustalla pyörivä palvelinohjelmisto saatavilla ei ole hienoja kuvia tai videota.

Alustava versio on kohta saatavilla github:sta.