Open Air Quality Dashboard with Low-Cost Sensor Correction
A public air quality dashboard for a city that combines official monitoring stations with low-cost community PM2.5 sensors, corrects the cheap readings for humidity against reference stations, and shows honest uncertainty. An intermediate final year project in open data, sustainability and data analysis.
Intermediate
A small team, or one strong student willing to learn something new.1 semester · 2 students
7 to ship
3 optional extrasSuggested stack
What you should ship
- Ingestion from at least one official or reference source and one community sensor network, with scheduled jobs and gap handling
- Calibration model correcting low-cost PM2.5 readings using humidity and temperature, fitted where a sensor sits near a reference station
- Validation on held out days reporting error before and after correction, alongside a published correction such as the US EPA one
- Map and time series interface showing corrected values with an uncertainty band and the raw value on demand
- Health guidance mapping levels to WHO or national advice, clearly attributed and never presented as medical advice
- Sensor health checks that flag sensors which have drifted from their neighbours or stopped changing
- Public API and CSV download of corrected hourly data with a documented method
If you have time left
- Short horizon PM2.5 forecast using weather inputs, evaluated against persistence
- Threshold alerts for a chosen neighbourhood by email or push notification
- A cheap sensor kit guide so schools can add co-located sensors to the network
The problem with air quality numbers in cities
Official monitoring stations are accurate, expensive and sparse: a large city may have only a handful. Low-cost particulate sensors are cheap and numerous, and they read badly, especially in high humidity, when they tend to overestimate PM2.5. During winter smog in cities like Lahore or Delhi, or wildfire smoke elsewhere, people make real decisions (school closures, whether to run outside, whether to buy a purifier) from whichever map they happen to open.
Presenting either source alone gives a misleading picture. A single number on a map also implies precision the data does not have.
What already exists and the gap
- PurpleAir runs a large network of low-cost sensors with a public map that offers correction options.
- AirNow Fire and Smoke Map (US EPA and Forest Service) shows PurpleAir data with the EPA's national correction applied next to regulatory monitors.
- OpenAQ aggregates open air quality data from governments and sensor networks worldwide through an API.
- IQAir publishes city rankings and a consumer app that mixes its own and third party sensors.
The EPA's US-wide correction for PurpleAir (Barkjohn and colleagues) reduced error on raw data substantially, from about 8 to about 3 micrograms per cubic metre RMSE in their evaluation, and later studies found adding temperature and humidity terms helps further in humid regions. But corrections fitted on US data may not transfer to South Asian winter smog or a different sensor model. The gap is a transparent, locally calibrated dashboard that publishes its method, its validation error and its uncertainty.
What you build
- Ingestion service: pulls reference data and community sensor data on a schedule into a time series store.
- Calibration and QA jobs: fit and apply the correction, flag bad sensors.
- Public dashboard: map, per sensor time series, uncertainty band, health guidance, method page.
Users are residents and parents checking today's air, journalists and researchers downloading data, and schools or NGOs deciding where to place new sensors.
The technically interesting part
The calibration is the result. Find sensors within a small distance of a reference station. Fit a model of reference PM2.5 on raw sensor PM2.5, relative humidity and temperature: start with the EPA form, then try a multilinear model and a gradient boosted model. Validate on days not used for fitting, report RMSE and bias for raw, EPA corrected and your corrected values, and show residuals against humidity.
Uncertainty and drift. Derive the uncertainty band from validation residuals, wider for sensors far from any reference station. Detect sensors that diverge from their neighbours or report a flat line, and exclude them from the map with a visible note.
How to evaluate it
- Calibration error: RMSE and bias on held out days for raw, published correction and your model; this table is your main result.
- Transfer: fit on one co-located site, test on another; report how much error rises.
- Drift detection: inject synthetic faults into historical data and report how many are caught and how quickly.
- Usability: five people answer "is it safe to exercise outside now" from the dashboard; record accuracy and time.
Suggested plan
- Weeks 1 to 2: read the EPA correction papers, choose a city and data sources, check co-located pairs exist.
- Weeks 3 to 5: ingestion into TimescaleDB with scheduled jobs.
- Weeks 6 to 8: calibration models and validation notebook.
- Weeks 9 to 11: dashboard, uncertainty, drift checks and method page.
- Weeks 12 to 14: transfer tests, user check, write up.
Path to a product
The first customer is an environmental NGO, a school network or a city office that already has a few sensors and no trustworthy way to publish them. Models that work: a funded deployment through a grant, a paid calibrated data feed for media and researchers, or a per site fee for schools that want their own sensor on the map. Open data and an open method are what earn trust here.
Scope warning
PM2.5 only. Gas sensors have different and harder calibration problems and adding them will cost you depth. Do not build your own hardware in the core scope. Do not give medical advice; link official guidance.
Learn what you need on Sefism
- Data analytics roadmap : cleaning, joining and validating time series data.
- Data analytics cheat sheet : pandas and SQL patterns you will use every week.
- OpenIntro Statistics : regression and error measures for the calibration chapter.
- From Data to Viz : choosing the right chart for uncertainty.
- Our World in Data : good examples of explaining air pollution data honestly.
Get help with this idea
The calibration table is what examiners will remember, so scope everything around it. Tauseef can help you check your data sources, design the validation split, and keep the dashboard honest about uncertainty. If you are new here, create a free account first.
Ideas and guidance, not finished projects
These are project ideas and scoping guidance, published free for students to use as a starting point. I do not build, write, or sell final-year projects, and I do not complete coursework for anyone. Take an idea, make it yours, and build it.
Not sure this one fits you?
I help students pick an idea that matches their skills and their deadline, then scope it down until it is finishable. Guidance only, never done for you.
Stuck on something specific?
Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.
Follow along
New writing, resources and project ideas land here first.