Naar de inhoud

De techniek achter Plens

KNMI-radar, Open-Meteo, openrouteservice en de PDOK Locatieserver: welke bron Plens waarvoor gebruikt, onder welke voorwaarden, en waar het misging.

Ontwerp, ontwikkeling en marketing

Gepubliceerd Bijgewerkt 8 min lezen

Kort gezegd

  • De KNMI-radar levert neerslag voor twee uur vooruit, in stappen van vijf minuten op een kilometer. Plens haalt die binnen met een eigen ingest.
  • Open-Meteo vult wind, temperatuur en de verwachting na twee uur aan. openrouteservice plant de route, PDOK vindt Nederlandse adressen.
  • De belangrijkste regel in de code: geen data is niet hetzelfde als geen regen.

Plens combineert de KNMI-radarverwachting voor de komende twee uur, Open-Meteo voor wind, temperatuur en de verwachting daarna, openrouteservice voor de route en de PDOK Locatieserver voor Nederlandse adressen.

Welke data heeft een regenadvies voor je route nodig?

Vier soorten: neerslag in kleine stappen, het weer daaromheen, de route met je tempo, en een adres om mee te beginnen. Plens haalt die voor de app en voor plensapp.nl bij vier bronnen.

Welke data heeft een regenadvies voor je route nodig?
WatBronWaarom deze
Neerslag, 0 tot 120 minutenKNMI Data Platform, radar_forecast 2.0Stappen van 5 minuten op 1 km, CC BY 4.0
Wind, temperatuur, verwachting daarnaOpen-MeteoModelverwachtingen, ook voorbij de radar
Route en hoogteopenrouteserviceGeen cachingverbod in de voorwaarden
Adressen in NederlandPDOK LocatieserverOverheidsdata, geen sleutel nodig

Daarnaast gebruikt Plens een eigen index uit OpenStreetMap voor schuilplekken en straatverlichting, en BeSt Address voor Belgische adressen. Elke bron zit achter een eigen interface, zodat een leverancier te vervangen is zonder dat het rekenmodel het merkt. De bronnen en licenties staan publiek op plensapp.nl/bronnen.

De native app praat met geen van deze bronnen rechtstreeks. Het architectuurdocument zegt: “De server berekent het vertrekadvies één keer volgens dezelfde productregels als de webapp.” Hoe Plens van idee tot app kwam, lees je in hoe we Plens bouwden.

KNMI-radar: wat het is en hoe ver het vooruit kijkt

De KNMI-radarverwachting kijkt twee uur vooruit, in stappen van vijf minuten op een raster van een kilometer. Plens gebruikt de dataset radar_forecast 2.0 van het KNMI Data Platform: een verwachting die de buien van nu vooruit laat trekken (een advectienowcast met pySTEPS), gevoed door gecorrigeerde radarbeelden uit Nederland, België en Duitsland.

Volgens de bronnenanalyse van het team staat een nieuw bestand ongeveer 1 minuut en 50 seconden na de geldigheidstijd klaar. De licentie is CC BY 4.0: commercieel gebruik mag, met bronvermelding. Op de bronnenpagina van Plens staat erbij dat het KNMI niet betrokken is bij Plens en het niet aanbeveelt. De radar dekt ook heel België, gemeten tot Arlon en Torgny.

Waarom Plens het KNMI niet per verzoek bevraagt

Voor de Open Data API van het KNMI heb je een API-sleutel nodig. Volgens het KNMI-ontwikkelaarsportaal heeft een geregistreerde sleutel een quotum van 1.000 verzoeken per uur, en deelt de anonieme sleutel zijn limiet met alle andere anonieme gebruikers. Elke vraag van een gebruiker doorsturen gaat dus niet.

Plens draait daarom een eigen ingest, als losse worker op een eigen server. Die abonneert zich via MQTT op meldingen van nieuwe radarbestanden, haalt per melding het HDF5-bestand op (ongeveer 580 kB), decodeert de beelden, projecteert het raster en zet het resultaat achter een eigen HTTP-API. Daar haalt de app zijn reeksen per punt op. Volgens de documentatie komt dat neer op 288 ophaalacties per dag, ongeacht het aantal gebruikers.

Eén valkuil noemt het team de meest waarschijnlijke manier om deze pijplijn stil te laten falen: de sentinelwaarden 65534 (ontbreekt) en 65535 (buiten beeld). Wie die niet maskeert, krijgt voor een pixel buiten het beeld ongeveer 655 mm per vijf minuten, en het scoremodel maakt daar een oneindig natte rit van.

Waarom geen uurdata?

Omdat een korte bui in een uurgemiddelde verdwijnt. De providerdocumentatie van Plens zegt het met een voorbeeld:

een bui die om 08:12 begint en om 08:34 ophoudt bestaat in een uurgemiddelde simpelweg niet.

Providerdocumentatie van Plens

Voor een rit van twintig minuten is dat het verschil tussen droog en nat aankomen. Daarom leidt de radar voor neerslag zolang hij reikt, en is Open-Meteo de bron voor alles eromheen.

Open-Meteo: waarvoor en tegen welke voorwaarden

Open-Meteo levert wat de radar niet levert: wind, temperatuur en de neerslagverwachting voorbij twee uur. Plens voegt de twee reeksen samen. De radar leidt voor neerslag, Open-Meteo vult temperatuur en wind aan, en voorbij de radarhorizon neemt het model het over.

Dat overnemen ging eerst mis, en de documentatie beschrijft het open. De samengestelde reeks stopte bij de laatste radarstap, dus een rit van vier uur kreeg voor zijn laatste twee uur steeds dat laatste radarbeeld. Regende het toevallig toen de radar keek, dan regende het de hele middag. Bij een woon-werkrit merk je dat niet. Het werd pas zichtbaar toen er langere tochten bij kwamen. Nu plakt Plens de modelstappen achter de radarreeks, met voor elke stap zijn eigen tijdspanne, zodat een uur tussen twee modelstappen niet als gat in de data telt.

Over de voorwaarden is Open-Meteo duidelijk. Volgens de gebruiksvoorwaarden is de gratis API alleen voor niet-commercieel gebruik, en apps met abonnementen of advertenties noemen ze expliciet commercieel. Daarvoor heeft Open-Meteo betaalde API-abonnementen. De data valt onder CC BY 4.0, dus bronvermelding hoort erbij. Plens toont bij je weer een bronregel die zegt welke gegevens echt zijn gebruikt, ook als de radar tijdelijk ontbreekt.

Route en tempo: openrouteservice

openrouteservice plant de route, en Plens deelt die op in stukken van ongeveer twee minuten fietsen. Het bemonstert dus in tijd, niet in afstand: maximaal 40 punten per route, elk op het midden van zijn stuk.

Dat sluit aan op de radar. Bij 18 km/u leg je in vijf minuten anderhalve kilometer af, dus punten op gelijke rijtijd passen bij stappen van vijf minuten op een kilometer. En elk punt staat voor evenveel minuten buiten, zodat snelle stukken niet stilletjes zwaarder meetellen.

De weerinterface werkt met tijdreeksen per punt. Twaalf vertrektijden maal twaalf routepunten zijn daardoor geen 144 verzoeken maar twaalf reeksen. Dat maakt een volledige vergelijking van vertrektijden goedkoop genoeg om bij elke controle te draaien. De hoogte komt in hetzelfde routeverzoek mee, zonder extra verzoek.

Waarom openrouteservice

Een woon-werkroute verandert zelden, dus je wilt hem één keer plannen en bewaren. Dat schrapte de meeste routeplanners: volgens de analyse van het team verbieden onder meer Google, Mapbox en Stadia Maps het opslaan van routes. De voorwaarden van openrouteservice hebben geen cachingverbod. De ritplanning vraagt een vaste route daardoor hooguit één keer per dertig dagen op.

De gratis laag heeft een limiet per minuut en een per dag, met elk een eigen foutcode: 429 bij te veel verzoeken per minuut, waar wachten helpt, en 403 als het dagquotum op is, en dan helpt pas morgen. Tot 7 september herkende de code alleen de 429. Wie zijn dagquotum had opgebruikt, kreeg het advies een ander startpunt te proberen, en dat kon nooit werken.

Op 6 oktober gaf openrouteservice tussen 22:40 en 22:45 zeven time-outs en één HTTP 502. Sindsdien zit er een laag omheen. Antwoordt de dienst na 2,5 seconden niet, dan gaat er een tweede verzoek naast. Een geslaagde route blijft tien minuten in het geheugen van de server, en na drie fouten binnen een minuut slaat Plens de dienst dertig seconden over. Lukt het dan nog niet, dan rekent het advies verder met een geschatte route en zegt het scherm “route geschat”.

Adressen: PDOK Locatieserver

Voor Nederlandse adressen gebruikt Plens de PDOK Locatieserver: een open en gratis zoekdienst op overheidsdata zoals de BAG, zonder API-sleutel en met commercieel gebruik toegestaan. Voor België is dat BeSt Address van de federale overheid (BOSA).

Plens bevraagt één land, en het andere alleen als het eerste niets vond. PDOK kent geen Belgische adressen en BeSt geen Nederlandse, dus een lege lijst betekent echt: verkeerd land. Zo blijft het verkeer naar twee gratis overheidsdiensten laag.

Tikfouten vroegen om een aparte oplossing. Op “Delfseplein 27” geeft de suggest-functie nul resultaten, maar in hetzelfde antwoord stuurt PDOK een spellingcorrectie mee met 14 treffers voor “delftseplein 27”. Plens las dat blok eerst niet, waardoor iemand met één ontbrekende letter hoorde dat zijn adres niet bestond. Nu doet Plens één tweede ronde op die correctie.

Stations zoekt Plens niet via PDOK. Die staan in een eigen index van 2005 trein-, metro- en busstations uit OpenStreetMap, als bestand in de repo: geen verzoek, geen quotum, geen wachttijd.

Grenzen en valkuilen

De grootste valkuil is een mislukt verzoek dat eruitziet als droog weer. Een mislukte weerrequest levert nullen op, en nullen lijken op een droge rit. Daarom draagt elk weermonster een hasForecast-vlag, en zonder verwachting geeft Plens geen advies en geen melding. De documentatie noemt dit de enige faalwijze die het product zich niet kan permitteren. Er staan tests op.

De tweede grens is betrouwbaarheid. Het rekenmodel noemt die hoog tot 35 minuten aanlooptijd, gemiddeld tot twee uur en daarna laag, met verificatiestudies van radarverwachtingen boven Nederland als onderbouwing. Onzekerheid zit niet in de score. Bij lagere betrouwbaarheid ligt de drempel om iets te adviseren hoger, tot 1,6 keer, en verandert de formulering. De KNMI-nowcast zelf is deterministisch, dus een kanspercentage komt er niet uit, en Plens verzint er ook geen.

De derde is het quotum. De app mag het KNMI niet per verzoek bevragen, en het dagquotum van openrouteservice wordt gedeeld tussen de routetekenaar en de ritplanning. Een rondje van twintig punten tekenen kost twintig verzoeken.

De vierde zit in de bron. De radar rekent in grove stappen: de kleinste is 0,12 mm per uur, en lichte regen zakt bij langere aanlooptijden onder die grens. Je kunt dus motregen voelen terwijl het scherm 0,0 zegt. Plens kijkt daarom ook naar de acht cellen rond je punt en meldt “droog op je route, wel regen vlakbij”, zonder dat dit je vertrektijd verschuift.

En de drempels zijn een keuze. Op 11 september 2026 zijn 96 instellingen getoetst op 99.301 ritten uit 2025. De precisie bewoog daarbij nauwelijks, tussen 47 en 57 procent, terwijl het aantal adviezen halveerde. De drempel bepaalt hoeveel van de voorspelling je gelooft. Beter wordt de voorspelling er niet van.

Taal is een apart onderdeel. Een model begrijpt welke bestemming en welke bedoeling iemand bedoelt, maar het rekenen, plannen en de beslisregel blijven code. Hoe dat werkt, staat in waar Jev past in je product. Zo bouwen we vaker: het model krijgt een afgebakende taak, en de rest blijft controleerbare code.

Wil je zien wat dit oplevert: de Plensradar en het vertrekadvies werken zonder account op plensapp.nl, en de stand van het product staat op onze productpagina.

Veelgestelde vragen

Is de KNMI-API gratis?

De dataset radar_forecast valt onder CC BY 4.0 en mag ook commercieel gebruikt worden, met bronvermelding. Je hebt wel een API-sleutel nodig. Een geregistreerde sleutel heeft volgens het KNMI een quotum van 1.000 verzoeken per uur, en voor nieuwe bestanden raadt het KNMI de Notification Service aan.

Mag je Open-Meteo commercieel gebruiken?

Niet met de gratis API. Volgens de voorwaarden van Open-Meteo is die alleen voor niet-commercieel gebruik, en apps met abonnementen of advertenties tellen als commercieel. Daarvoor zijn er betaalde API-abonnementen.

Wat is PDOK?

PDOK (Publieke Dienstverlening Op de Kaart) is het platform waarop de Nederlandse overheid geodata publiceert. De Locatieserver is de zoekdienst voor onder meer adressen, postcodes en woonplaatsen, open en gratis.

Waarom draait de app niet rechtstreeks tegen de providers?

Om drie redenen. De quota laten het niet toe, er hoort geen providersleutel in de appbundel, en de server rekent het advies één keer uit volgens dezelfde productregels als de webapp. Zo geven app en website hetzelfde advies.

Bronnen

  1. KNMI Developer Portal: Open Data APIdeveloper.dataplatform.knmi.nl
  2. Plens: bronnen en licentiesplensapp.nl
  3. Open-Meteo: API-documentatieopen-meteo.com
  4. Open-Meteo: gebruiksvoorwaardenopen-meteo.com
  5. openrouteservice voor ontwikkelaarsopenrouteservice.org
  6. PDOK Locatieserverpdok.nl
  7. Creative Commons CC BY 4.0creativecommons.org

Wil je ook iets laten bouwen met agents en controles?

Neem contact op

Lees ook