Hoe combineer je KNMI-data met lokale IoT-sensoren? Stappenplan

Een praktisch stappenplan voor het opzetten van een hybride weerdata-architectuur: KNMI EDR API-integratie, schema-mapping, kwaliteitscontrole en een live dashboard dat beide bronnen combineert.

Kort antwoord

KNMI-data is beschikbaar via de gratis EDR API (OGC-standaard, 10-minuut resolutie). Lokale IoT-sensoren (bijv. Ecowitt) leveren data via een eigen cloud-API. De combinatie vereist vijf stappen: (1) beide APIs aanroepen, (2) data normaliseren naar een gedeeld schema, (3) tijdstempels uitlijnen, (4) ruimtelijke en temporele kwaliteitscontrole uitvoeren, en (5) gecombineerde data opslaan en visualiseren. MeteoA voert dit volledig geautomatiseerd uit in een 10-minuut GitHub Actions pipeline.

Stap 1 — KNMI EDR API aanroepen

KNMI biedt weerdata aan via de Environmental Data Retrieval (EDR) API, een OGC-standaard REST API. Toegang is gratis via een API-sleutel van het KNMI Data Platform.

GegevenWaarde
Basis-URLhttps://api.dataplatform.knmi.nl/edr/
AuthenticatieAPI-sleutel via header Authorization: Bearer <key>
Resolutie10 minuten (automatische stations)
Vertraging5–20 minuten (verwerkingslag)
FormaatCoverageJSON, GeoJSON
Registratiedataplatform.knmi.nl

Aandachtspunt: KNMI heeft een verwerkingsachterstand van 5–20 minuten. Implementeer retry-logica: als het meest recente tijdstip nog niet beschikbaar is, wacht dan 5 minuten en probeer opnieuw (maximaal 3 pogingen).

Stap 2 — Lokale IoT-sensor API aanroepen

Ecowitt-stations leveren historische data via de Ecowitt historische API. MeteoA gebruikt bewust de historische API (dag-voor-dag requests) in plaats van de real-time push-API, omdat deze robuuster is bij tijdelijke verbindingsuitval.

GegevenWaarde (Ecowitt)
Endpointhttps://api.ecowitt.net/api/v3/device/history
Authenticatieapplication_key + api_key parameters
AanroepstrategieDag-voor-dag requests (max. 30-daags bereik per request)
EenhedenMetrisch (stel unit_system=metric in)
Rate limitingFout 40015 = rate limit; exponentiële backoff toepassen

Stap 3 — Schema-normalisatie

KNMI en Ecowitt gebruiken verschillende veldnamen en eenheden. Normaliseer beide bronnen naar een gedeeld intern schema vóór verdere verwerking:

Intern veldKNMI veldnaamEcowitt veldnaamEenheid
temp_outta (luchttemperatuur)outdoor.temperature.list°C
humidity_outrh (relatieve vochtigheid)outdoor.humidity.list%
wind_speedff (windsnelheid 10 min gem.)wind.wind_speed.listm/s
wind_dirdd (windrichting)wind.wind_direction.list°
precip_dailyrn (dagsom neerslag)rainfall.daily.listmm
pressure_relpp (luchtdruk zeeniveau)pressure.relative.listhPa

Ontbrekende waarden: sla op als null, nooit als 0 of als placeholder (“—”). Dit voorkomt analysefouten bij optelling of middeling.

Stap 4 — Tijdstempel-uitlijning

KNMI levert timestamps in UTC. Ecowitt levert in de door u ingestelde tijdzone. Converteer alles naar UTC vóór samenvoeging. Gebruik pandas pd.to_datetime(..., utc=True) of een equivalente aanpak in uw taal naar keuze.

Bij 10-minuut data kunnen tijdstempels 1–2 minuten verschuiven door afrondingsverschillen. Gebruik een tolerantie van ±1 minuut bij het samenvoegen (merge with tolerance).

Stap 5 — Kwaliteitscontrole (3 lagen)

LaagMethodeQC-vlag bij fout
1. Fysische plausibiliteitWaarde buiten fysisch haalbaar bereikQC_FAIL_RANGE
2. Temporele consistentieStap > drempelwaarde t.o.v. vorige metingQC_FAIL_STEP
3. Ruimtelijke vergelijkingAfwijking lokaal vs. KNMI > configureerbare drempelQC_FLAG_SPATIAL

QC-geflagde waarden worden opgeslagen met de vlag maar niet verwijderd. Dit maakt auditing mogelijk en laat de gebruiker zien wanneer een sensor mogelijk stoort.

Stap 6 — Opslag en visualisatie

MeteoA slaat gecombineerde data op in maandelijkse Apache Parquet-bestanden per station. Dit formaat is snel leesbaar, sterk gecomprimeerd en compatibel met pandas, DuckDB en Polars.

Het dashboard wordt aangestuurd door een stations_summary.json dat elke 10 minuten wordt bijgewerkt via een GitHub Actions cron-workflow. Het Leaflet.js-dashboard laadt dit bestand direct — geen databaseserver nodig.

Wanneer adviseren wij de MeteoA beheerde pipeline?

Wilt u de technische implementatie niet zelf bouwen en beheren? MeteoA biedt een volledig beheerde datafusie-pipeline die KNMI-data en uw lokale station(s) combineert, inclusief:

Veelgestelde vragen

Welke API gebruikt KNMI voor het delen van weerdata?

KNMI gebruikt de Environmental Data Retrieval (EDR) API (OGC-standaard). Via het KNMI Data Platform (dataplatform.knmi.nl) registreert u gratis voor een API-sleutel.

Welk formaat levert de KNMI EDR API?

CoverageJSON en GeoJSON. Tijdreeksdata wordt geleverd als arrays van tijdstempels en parameterwaarden. MeteoA normaliseert dit naar een intern schema.

Hoe vaak wordt KNMI automatische weerdata bijgewerkt?

10-minuut resolutie, met een verwerkingsachterstand van 5–20 minuten. Implementeer retry-logica om deze achterstand te overbruggen.

Wat is het beste opslagformaat voor gecombineerde weerdata?

Apache Parquet (maandelijkse bestanden per station) voor batch-analyse. InfluxDB voor realtime toepassingen met hoge schrijffrequentie.

Kan ik KNMI-data gebruiken als kwaliteitscontrole voor mijn eigen sensor?

Ja — dit is de kern van de MeteoA-aanpak. Per tijdstap wordt de lokale meting vergeleken met de KNMI-referentie. Een structurele afwijking boven een configureerbare drempel genereert een QC-vlag en sensoralarm.

Plan een demo

Bekijk de MeteoA datafusie-pipeline in werking: live vergelijking lokaal station vs. KNMI-referentie, kwaliteitscontrole en geautomatiseerde sensoralarmen.

Plan een demo