Sisältö
- Yleistä tietoa
- REST/JSON-rajapinnat
- Rajapintojen Swagger-kuvaukset
- Kelikamerat
- Tiesääasemien ajantasaiset mittaustiedot
- Ajantasaiset tiejaksojen keliennusteet
- Liikenteen automaattiset mittaustiedot (LAM)
- Liikennetiedotteet
- TMC/ALERT-C paikannuspisteistö
- Muuttuvien liikennemerkkien tiedot
- Maanteiden kunnossapitotiedot
- Jalankulun ja pyöräilyn mittaustiedot
- MQTT WebSocket -rajapinnat
Yleistä tietoa
Tieliikenteen tiedot syntyvät Fintrafficin hallinnoimissa tieliikenteen ohjaus- ja mittausjärjestelmissä. Tieliikenteen avoimet tiedot sisältävät tällä hetkellä:
Kelikamerat. Keli- ja liikennekameroiden kuvista saadaan tietoa tienpinnan tilasta sekä liikennetilanteesta. Rajapinnan kautta on haettavissa kaikkien julkisten kelikameroiden tiedot ja osoitelinkit mistä kelikameroiden kuvat löytyvät. Kameroita on käytössä reilut 470 kappaletta.
Tiesääasemien tiedot. Tiesääasemat mittaavat tavallisten säätietojen (ilman lämpötilan ja suhteellinen kosteus, kastepistelämpötila, sade ja tuulitiedot jne) lisäksi tietoa tienpinnan tilasta erityisten tienpinta-anturien avulla. Suomen maanteillä on yli 350 tiesääasemapistettä, jotka sijaitsevat yleensä pääteiden varsilla. Rajapinnan kautta on noudettavissa tiesääasemien keräämät mittaustiedot, jotka päivittyvät minuutin välein.
Tiejaksojen keliennusteet. Viesti sisältää keliennusteet, jotka päivittyvät viiden minuutin välein.
Liikenteen automaattiset mittaustiedot (LAM). Tiehen upotetulta induktiosilmukalta saadaan tietoja liikennemääristä ja nopeuksista ajoneuvoluokittain.
Liikennetiedotteet. Tieliikenteen häiriötiedotteet, painorajoitukset, tietyöt ja erikoiskuljetukset ovat saatavissa Datex2 sekä Simppeli-JSON -muodossa.
TMC/ALERT-C paikannuspisteistö, jota käytetään mm. liikennetiedotteissa.
Muuttuvien liikennemerkkien tiedot
Maanteiden kunnossapitotiedot
Jalankulun ja pyöräilyn mittaustiedot
Metatiedot. Rajapintojen kautta on haettavissa tieliikenteen tiedonkeruupisteiden sijainti- ja tilatiedot. GeoJSON-formaatissa saatavat sijaintitiedot päivittyvät 12 tunnin välein ja tilatiedot tunnin välein.
Käyttörajoitukset
Katso Ohjeita ja lisätietoa rajapintojen käyttöön > Yleistä huomioitavaa
Tuetut ja vanhentuneet rajapinnat
Tuettujen ja vanhentuneiden rajapintojen listaus löytyy täältä.
REST/JSON-rajapinnat
Rajapintojen Swagger-kuvaukset
Rajapintakuvaukset löytyvät Swagger-kuvauksesta.
Sieltä löytyvät rajapintojen tarkemmat parametrit, joita kaikkia ei ole tässä dokumentaatiossa välttämättä kerrottu.
Kelikamerat
Asemien yksinkertaiset tiedot ja yksittäisen aseman tarkemmat tiedot
/api/weathercam/v1/stations
/api/weathercam/v1/stations/{id}
Viesti sisältää kaikkien julkisten kelikameroiden tiedot ja osoitteen mistä kelikamerakuvat löytyvät. Esim. esiasennon C0450701 kuva löytyy osoitteesta https://weathercam.digitraffic.fi/C0450701.jpg.
Aseman tiedoista kannattaa huomioida ainakin alla olevat kentät, joista voi päätellä onko kamera tai esiasento keruussa.
- Kameran kentät
state
jacollectionStatus
- Esiasennon kenttä
inCollection
Kaikkien asemien data ja yksittäisen aseman data
/api/weathercam/v1/stations/data
/api/weathercam/v1/stations/{id}/data
Kelikamerakuvat päivittyvät noin 10 minuutin välein.
Halutun kameran tai esiasennon 24h historia
/api/weathercam/v1/stations/{camraId}/history
/api/weathercam/v1/stations/{presetId}/history
Rajapinta palauttaa linkit menneisiin kuviin viimeisen 24 tunnin ajalta.
Tiesääasemien ajantasaiset mittaustiedot
Asemien yksinkertaiset tiedot ja yksittäisen aseman tarkemmat tiedot
/api/weather/v1/stations
/api/weather/v1/stations/{id}
Antureiden tiedot
Kaikkien asemien data ja yksittäisen aseman data
/api/weather/v1/stations/data
/api/weather/v1/stations/{id}/data
Viesti sisältää tiesääasemien viimeisimmät antureiden mittaustiedot.
Tietoa päivitetään lähes reaaliaikaisesti, mutta ulospäin tarjottavaa viestiä pidetään välimuistissa minuutin ajan ts. se päivittyy minuutin välein. Reaaliaikaiset tiedot on saatavissa WebSocket-rajapinnasta.
Viimeisen 24h historia
Halutun tiesääaseman kaikkien anturien datan saa rajapinnasta:
/api/weather/v1/stations/{id}/data/history
Yksittäisen anturin datan saa rajapinnasta:
/api/weather/v1/stations/1001/data/history?sensorId={sensorId}
Molempiin kyselyihin on mahdollista rajata ajanhetkeä from={ISO 8061 -aika}
ja to={ISO 8061 -aika}
parametreillä. Oletuksena ilman from-parametriä kyselyt palauttavat vain viimeisimmän tunnin datan.
Ajantasaiset tiejaksojen keliennusteet
Tarkat ja yksinkertaisemmat tiejaksot
/api/weather/v1/forecast-sections
/api/weather/v1/forecast-sections/{id}
/api/weather/v1/forecast-sections?xMin=22&yMin=59&xMax=27&yMax=60
/api/weather/v1/forecast-sections-simple
/api/weather/v1/forecast-sections-simple/{id}
/api/weather/v1/forecast-sections-simple?xMin=22&yMin=59&xMax=27&yMax=60
Tiejaksot päivitetään normaalisti kerran vuodessa.
Tiejaksojen keliennusteet
/api/weather/v1/forecast-sections/forecasts
/api/weather/v1/forecast-sections/{id}/forecasts
/api/weather/v1/forecast-sections/forecasts?xMin=22&yMin=59&xMax=27&yMax=60
/api/weather/v1/forecast-sections-simple/forecasts
/api/weather/v1/forecast-sections-simple/{id}/forecasts
/api/weather/v1/forecast-sections-simple/forecasts?xMin=22&yMin=59&xMax=27&yMax=60
Keliennusteet päivittyvät viiden minuutin välein.
Liikenteen automaattiset mittaustiedot (LAM)
Dokumentaatio
LAM-dokumentaatio -sivulta löytyy tarkempi kuvaus aineistosta ja dataan liittyviä selitteitä.
Asemien yksinkertaiset tiedot ja yksittäisen aseman tarkemmat tiedot
/api/tms/v1/stations
/api/tms/v1/stations/{id}
/api/tms/v1/stations/{id}/sensor-constants
Saatavilla olevien laskennallisien antureiden tiedot
Kaikkien asemien data ja yksittäisen aseman data
/api/tms/v1/stations/data
/api/tms/v1/stations/{id}/data
Viesti sisältää LAM (Liikenteen Automaattinen Mittaus) –asemien mittaustiedot.
Viestissä on kullakin LAM-asemalla olevien laskennallisien antureiden mittausarvot.
Tietoa päivitetään lähes reaaliaikaisesti, mutta ulospäin tarjottavaa viestiä pidetään välimuistissa minuutin ajan ts. se päivittyy minuutin välein. Reaaliaikaiset tiedot on saatavissa WebSocket-rajapinnasta.
Tilastohaku
Tilastohaku-lomakkeella voi hakea haluttuja raportteja lam-mittauspisteillä.
Tietojen hakulomake löytyy sivulta https://tie.digitraffic.fi/ui/tms/history/.
Raakadatahaku
Mittauspisteiden data on saatavissa myös raakadatana ja lisätietoa löytyy LAM-dokumentaatio/LAM-raakadata -sivulta.
Liikennetiedotteet
Liikennetiedotteita on mahdollista hakea DATEX II -standardin mukaisessa formaatissa sekä yksinkertaisemmassa Simppeli JSON -muodossa, joka noudattaa GeoJSON-standardia. Näin olle Simppeli JSON sisältää myös tiedotteen geometrian toisin kuin DATEX II. Simppeli JSON voidaa hakea myös ilman aluegeometrioita, jolloin siirrettävän datan määrä vähenee, sillä aluegeometriat ovat kohtuullisen suuria. Aluegeometriat on mahdollista hakea erillisen rajapinnan kautta yksitellen tai kaikki kerralla paikallista tallennusta varten ja yhdistää sitten rajapinnan tarjoamaan Simppeliin JSON -viestiin. Simppeeli JSON -viestin voi siis pyytää myös aluegeometrioiden kanssa, mutta siirrettävän datan määrä on monin kertainen.
Liikennetiedotteet käyttävät TMC/ALERT-C paikannuspisteistöä häiriöiden maantieteellisen sijainnin ilmoittamiseen. Lisää tietoa löytyy kohdasta TMC/ALERT-C paikannuspisteistö
Viestien teksteissä olevat päivämäärien ja aikojen muoto voi vaihdella. Viestien aikakenttät noudattavat ISO 8601 aikamuotoa ja ilmoitetaan UTC (Zulu) -aikana. Päivämäärien ja kelloaikojen parsimisessa kannattaa käyttää jotakin yleiskäyttöistä kirjastoa, joka osaa parsia ajan oikein millä tahansa aikavyöhykeellä ISO 8601 -muotoisesta päivämäärästä.
Liikennetiedotteiden tyypit
- Erikoiskuljetus
EXEMPTED_TRANSPORT
- Viesti sisältää tietoa teillä kulkevista erikoiskuljetuksista, jotka vaikuttavat muihin tiellä liikkujiin.
- Tietyö
ROAD_WORK
- Viesti sisältää tietoa tietöiden eteemisestä ja aiheuttamista muutoksista liikenteelle.
- Liikennetiedote
TRAFFIC_ANNOUNCEMENT
- Viesti sisältää tieliikenteen häiriötiedotteita, jotka koskevat merkittäviä tieliikenteen sujuvuuteen vaikuttavia häiriöitä. Tällaisia ovat esimerkiksi liikenneonnettomuudesta johtuvat poikkeusjärjestelyt.
- Painorajoitus
WEIGHT_RESTRICTION
- Viesti sisältää poikkeuksellisia teiden käyttöä rajoittavia painorajoituksia.
Liikennetiedotteiden DATEX II -muotoisen datan rajapinnat
/api/traffic-message/v1/messages.datex2?inactiveHours=0&situationType=EXEMPTED_TRANSPORT
/api/traffic-message/v1/messages.datex2?inactiveHours=0&situationType=ROAD_WORK
/api/traffic-message/v1/messages.datex2?inactiveHours=0&situationType=TRAFFIC_ANNOUNCEMENT
/api/traffic-message/v1/messages.datex2?inactiveHours=0&situationType=WEIGHT_RESTRICTION
Liikennetiedotteiden Simppelin JSON -muotoisen datan rajapinnat
/api/traffic-message/v1/messages?inactiveHours=0&includeAreaGeometry=false&situationType=EXEMPTED_TRANSPORT
/api/traffic-message/v1/messages?inactiveHours=0&includeAreaGeometry=false&situationType=ROAD_WORK
/api/traffic-message/v1/messages?inactiveHours=0&includeAreaGeometry=false&situationType=TRAFFIC_ANNOUNCEMENT
/api/traffic-message/v1/messages?inactiveHours=0&includeAreaGeometry=false&situationType=WEIGHT_RESTRICTION
Liikennetiedotteiden aluegeometriat
Liikennetiedote voi sisältää aluegeometrioita, jotka lötyvät JSON-polusta: properties.announcements[x].locationDetails.areaLocation.areas[x].locationCode
Mikäli rajapintakutsun includeAreaGeometry
-parametrin arvo on false
jätetään vastauksen GeoJSON geometria palauttamatta. Geometriat kannataa mieluummin hakea talteen paikallisesti alla kerrotusta rajapinnasta, eikä hakea niitä joka kerta erikseen.
Avaa esimerkki Simppeli JSON liikennetiedotteesta, jossa ALERT-C aluegeometria sijainti koodilla 27:
{ "type": "Feature", "geometry": null, "properties": { "situationId": "GUID50379079", "situationType": "TRAFFIC_ANNOUNCEMENT", "trafficAnnouncementType": "general", "version": 1, "releaseTime": "2021-01-31T15:57:29.105Z", "announcements": [ { "language": "FI", "title": "Liikennetiedote. ", "location": { "countryCode": 6, "locationTableNumber": 17, "locationTableVersion": "1.11.37", "description": "Lappi Norjan vastaiset rajanylityspaikat." }, "locationDetails": { "areaLocation": { "areas": [ { "name": "Lappi", "locationCode": 27, "type": "PROVINCE" } ] } }, "features": [ { "name": "Liikenne pysäytetään" } ], "roadWorkPhases": [], "comment": "Rajoituksia henkilöliikenteen rajanylitykseen Norjan suuntaan: Polmak, Karigasniemi ja Kivilompolo suljettu klo 21:00-09:00. Näätämö suljettu 24/7 Utsjoki suljettu 24/7 Kilpisjärvi avoinna 24/7 Lisätietoa Norjaan matkustamisesta on osoitteessa www.entrynorway.no", "timeAndDuration": { "startTime": "2021-01-06T14:58:00Z" }, "additionalInformation": "Liikenne- ja kelitiedot verkossa: https://liikennetilanne.fintraffic.fi/", "sender": "Fintraffic Tieliikennekeskus Oulu" } ], "contact": { "phone": "02002100", "email": "oulu.liikennekeskus@fintraffic.fi" } } }
Aluegeometriat löytyvät rajapinnasta:
- ALERT-C alue sijainti koodilla 27:
/api/traffic-message/v1/area-geometries/27
- Kaikki alueet ilman geometriaa:
/api/traffic-message/v1/area-geometries
TMC/ALERT-C paikannuspisteistö
Häiriötiedotteiden, painorajoitusten ja tietöiden maantieteellisen sijainnin ilmoittamiseen käytetään TMC/ALERT-C -paikannuspisteistöä. Lisätietoa täällä. Lisätietoa löytyy TMC/ALERT-C -sivulta.
/api/traffic-message/v1/locations/versions
/api/traffic-message/v1/locations/types
/api/traffic-message/v1/locations
/api/traffic-message/v1/locations/{id}
Muuttuvien liikennemerkkien tiedot
/api/variable-sign/v1/signs
/api/variable-sign/v1/signs/{id}
/api/variable-sign/v1/signs/history
Viesti sisältää muuttuvan liikennemerkin viimeisimmän tilan. Tällä hetkellä tuettuja merkkejä ovat muuttuvat nopeusrajoitukset sekä varoitusmerkit. Digitraffic julkaisee tilatiedot vain laiteryhmän master-laitteesta. Tämä tarkoittaa sitä, että ajoradan vasemmalla puolella olevan merkin ja mahdollisen ramppimerkin tietoja ei välitetä erikseen.
Varoitusmerkkien tyypit:
/api/variable-sign/v1/signs/code-descriptions
Varoitusmerkit kuvina:
https://vayla.fi/tieverkko/liikennemerkit
Tiedot on saatavina myös datex2-muotoisena:
/api/variable-sign/v1/signs.datex2
Varoitusmerkissä mahdollisesti olevat []-merkkien sisällä olevat kyltit on mahdollista generoida svg-muodossa:
/api/variable-sign/v1/images/ramppi_{number}
/api/variable-sign/v1/images/tie_{number}
Maanteiden kunnossapitotiedot
Väylävirasto vastaanottaa teiden kunnossapitourakoitsijoilta kunnossapitoajoneuvojen reaaliaikaista sijainti- ja toimenpidetietoa. Tiedot välittyvät ajoneuvoista urakoitsijoiden tietojärjestelmiin, joista ne edelleen välitetään Väyläviraston Harja-järjestelmään. Digitraffic vastaanottaa myös nämä tiedot ja julkaisee niitä avoimena datana alla kerrotuissa rajapinnoissa. Tiedot päivittyvät keskimäärin minuutin välein. Harja datan domain on state-roads
.
Tämän lisäksi tällä hetkellä tuodaan myös muutamien kuntien kunnossapitodataa. Tämän datan domain on eri kuin state-roads
.
Väylävirasto valmistelee myös vuorokautta vanhempien kunnossapidon toteumatietojen julkaisua omissa avoimen datan palveluissaan.
Kunnossapidon domain
/api/maintenance/v1/tracking/domains
Rajapinta palauttaa mahdolliset domainit. Domain kertoo mistä järjestelmästä data tulee.
Ajoneuvojen tehtävätyypit
/api/maintenance/v1/tracking/tasks
Rajapinta palauttaa ajoneuvojen suorittamien tehtävien tarkemmat selitteet.
Ajoneuvojen seurantadata
/api/maintenance/v1/tracking/routes?domain=state-roads
Rajapinta palauttaa ajoneuvon kulkeman reitin. Reitti ei täysin vastaa ajoneuvon maastossa kulkemaa reittiä, koska julkaistava reitti muodostetaan yhdistelemällä ajoneuvosta saatavat sijaintitiedot viivaksi ja erillistä reititystä tieverkolle ei tehdä. Reitti voi olla myös pelkkä piste, jos ajoneuvolta ei ole saatu useampaa seurantapistettä.
Uusi seuranta, jossa ei ole viitettä edeliseen muodostetaan aina kun:
- Ajoneuvon suorittama tehtävä muuttuu
- Kahden peräkkäisen vastaanotetun sijaintiviestin aikaväli on yli 5 minuuttia
- Kahden peräkkäisen vastaanotetun sijaintiviestin välinen laskennallinen ajonopeus on yli 140 km/h
Näillä käsittelyllä poistetaan suurimmat ajoneuvojen tuottamassa datassa mahdollisesti esiintyvät virheet.
Ajoneuvon viimeisin sijainti
/api/maintenance/v1/tracking/routes/latest?domain=state-roads
Rajapinta palauttaa viimeisimmät kunnossapitoajoneuvoista vastaanotetut sijainti- ja tehtävätiedot
Jalankulun ja pyöräilyn mittaustiedot
Jalankulun ja pyöräilyn mittaustietoja saadaan tällä hetkellä Oulun alueelta.
Kaikkien mittauspisteiden tiedot GeoJSON-muodossa
/api/counting-site/v1/counters
Metatietoja
/api/counting-site/v1/directions
/api/counting-site/v1/domains
/api/counting-site/v1/user-types
Mittauspisteiden dataa json-muodossa
Mittauspisteiden dataa CSV-muodossa
/api/counting-site/v1/values.csv
MQTT WebSocket -rajapinnat
REST/JSON-rajapinnan lisäksi tarjolla on WebSocket-rajapinta, joka mahdollistaa tieliikenteen automaattisten mittaustietojen (LAM), tiesääasemien tietojen sekä maanteiden kunnossapitotietojen kuuntelemisen. Käytetty protokolla on MQTT over WebSockets, joka mahdollistaa ainoastaan haluttujen tietojen vastaanoton aiheiden avulla.
Tuotannon osoite on wss://tie.digitraffic.fi:443/mqtt
.
Kirjautuessa tulee käyttää SSL-yhteyttä.
Pahon JS-clientia käyttäessä osoite on pelkkä tie.digitraffic.fi
ja portti 443
, esimerkki alempana.
Testin osoite on vastaavasti tie-test.digitraffic.fi
.
Yksinkertainen asiakas sovellus selaimelle löytyy Tuki > MQTT esimerkkejä -sivulta.
Aiheet
Jokaisen tarjottavan datalajin juuressa on myös aihe status
. Viesti kertoo, milloin data on viimeksi päivittynyt epookki sekunteina. Esim.:
status: {
"updated" : 1676628995
}
Voit korvata <id>
-osan #
-merkillä, jolloin kuunnellaan koko joukon viestejä. Esim. tms-v2/#
Tiesääasemien ajantasaiset mittaustiedot
weather-v2/<roadStationId>/<sensorId>
weather-v2/status
Sääaseman mittaustieto-viesti
{
"value":11068,
"time":1667973021
}
Ajantasaiset LAM mittaustiedot
tms-v2/<roadStationId>/<sensorId>
tms-v2/status
TMS-viesti
{
"value":108,
"time":1667972911,
"start":1667966400,
"end":1667970000
}
Liikennetiedotteet
traffic-message-v2/datex2/<situationType>
Viestin sisältö on Datex2 XML muotoa.traffic-message-v2/simple/<situationType>
Viestin sisältö on liikennetiedotteiden simppeli JSON joka on gzip-pakattu ja base64-koodattu.
Mahdolliset situationType -arvot: TRAFFIC_ANNOUNCEMENT
, EXEMPTED_TRANSPORT
, WEIGHT_RESTRICTION
, ROAD_WORK
Esimerkki simppeli JSON pakattu ja koodattu arvo: H4sIAAAAAAAAAO1VS27bMBDd5xSE1rZCfWI7XtWIk9ZtqgSN0wBpg4KR6JiVRAokFSAIvOtRfIZeQBfrSKJs+RcUXXfjD+dx5s0bzszrEUKWfsmohYbIuqBE55JanfL0iYqUavlSWl7hoA28FozrCganoRAyYpxoqkrjN+Se2J6P+7jXQT3Hdr2ed9JHDwBeVI4zKTIqNavhxrViOieaCT6JqgjvbyfjE+zjUw97TaAVZtrwmH4ZXVxMzn6MguDqNjg7/3weTBu0lmQ2Y+GIc5HzkKaU69W982B8Pm6Az1QqcFoaTs2RpAklik5ZWuNd7Hpd7HRdf4oHQ9cdYs8eDNz7LRd78adDDw+9no29/gpPWqSMaLUOYEsIf8rJk6nIxFwpE2I6MWkzily/g0aKxTFJiI0uGYsp5xRUjYSmSJS/tUjzPKJKA2DKwC8Hw5zZaO0zEWGl6LoSpqQ5h9KfiagK2OusTc2NKXlMaJCnj1SWEKd/CPN1La/l2I5j+57VwgK/ULKsIWFyQ8/FMmFJUizRJZlrhrroY7FMVbFsZf0dAsiYphlDGSnPhugavgkkjCZKdItfjLPiN3I6LorTDlI5ZEUIRzckATXSYhkz2zJUFjuajKkmLFFb0khBolEUSarU5V7xqhfOUiJf6i7ZMoI5zTkLWUYSpqvuspqMWroYP+KZwTOpe65Ysp/FUnc/gBB0G2oqViFvcpGybUCL9y4lYy8N8K72mW5o2KQ62AFEDCQ3PD3P7W3YF1tESALNf3ZIu40KNO/P9Qe9naCcmGZrldp6k5rj+v1Naq1/GzQtRUPBo/813CfOP9ewf7iGrY58u4Y+Phn8ZQ0jJtcJW7fBp+DqLrCOti+uG39Wrz8zkB9W56V2d0LG13PYCTtWDUN/xKNxLvdNUmAu9aE9gocY37eHIeXR4R3iuLbnePe7A4tEEStDk2TCZ0KmKx5Wsxa66CdBMYXHWu0HBPsqFkrBwJxrnanh8XGyWiDVnrBn8OzrBQo/j9cLQwHFeuJbFysIbBfaOIipinOFpiSFJU9rsotGLnjiMIHDjYaysrngdcrYxdh1MF6HoymM4Mqma4f2Zpx3GzxNNBMrIprcZvBJ3xDVx5Wgi6PFH4BXin4LCQAA
Voit kokeilla viestin purkamista esim. https://facia.dev/tools/compress-decompress/gzip-decompress/ -sivulla.
Tai komentoriviltä:
- Linux:
echo "<viesti>" | base64 -d | gzip -d
- MacOS:
echo "<viesti>" | base64 -d -i - -o - | gzip -d
Esimerkki JavaScript-koodi viestin pakkauksen purkamiseen löytyy JSFiddle:stä.
Maanteiden kunnossapitotiedon viimeisin sijainti
maintenance-v2/routes/<domain>
maintenance-v2/status
Sallitu domain-parametrin arvot ovat state-roads
, autori-kuopio
, autori-oulu
and paikannin-kuopio
.
Kunnossapitoviesti
{
"time":1668157878,
"source":"Harja/Väylävirasto",
"tasks":[
"MAINTENANCE_OF_GUIDE_SIGNS_AND_REFLECTOR_POSTS"
],
"x":22.031937,
"y":62.567092
}
Yksinkertainen JavaScript WebSocket -client
Alla olevassa koodissa viitataan puuttuvaan muuttujaan clientName, täydennä siihen sovelluksesi nimi.
HUOM! Mikäli et hae dataa jatkuvasti, sulje yhteys kutsumalla client.disconnect().
Esimerkkikoodissa yhteys katkaistaan 30 s kuluttua.
<html>
<head>
<title>Test mqtt tms-messages</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js" ></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.2/mqttws31.min.js"></script>
<script>
'use strict';
const lines = [];
let messagesLastMinuteCount = 0, client;
function connect() {
console.log('trying to connect to road mqtt...');
// enter a valid client name to fix the syntax error
client = new Paho.MQTT.Client("tie.digitraffic.fi", 443, clientName);
client.onConnectionLost = function (response) {
console.info(Date.now() + ' Connection lost:' + response.errorMessage);
};
client.onMessageArrived = function(message) {
messagesLastMinuteCount++;
addMessage(JSON.parse(message.payloadString));
updateList();
};
const connectionProperties = {
onSuccess:onConnect,
onFailure: onConnectFailure,
mqttVersion:4,
useSSL:true
};
client.connect(connectionProperties);
window.setInterval(logMessageCount, 60*1000);
}
function disconnect() {
client.disconnect();
}
function logMessageCount() {
console.info(Date.now() + ' ' + messagesLastMinuteCount + ' messages per minute');
$("#messagesPerMinute").text(messagesLastMinuteCount);
messagesLastMinuteCount = 0;
}
function onConnect() {
console.info(Date.now() + ' Connection open');
client.subscribe("tms-v2/#");
}
function onConnectFailure(response) {
console.info(Date.now() + ' Connection failed .' + response.errorCode + ": " + response.errorMessage);
}
function addMessage(message) {
const text = JSON.stringify(message);
if (lines.length > 100) {
lines.shift();
}
lines.push(text);
}
function updateList() {
$(".messages").html(lines.join('<br/>'));
}
connect();
// disconnect after 30 seconds
setTimeout(disconnect, 30000);
</script>
</head>
<body>
Messages (<span id="messagesPerMinute"><counting></span> messages per minute):
<div class="messages" />
</body>
</html>