About
Acquire and process live and historical air quality data without efforts.
Filter by station-id, sensor-id and sensor-type, apply reverse geocoding, store into time-series and RDBMS databases (InfluxDB and PostGIS), publish to MQTT, output as JSON, or visualize in Grafana.
Data sources: Sensor.Community (luftdaten.info), IRCELINE, and OpenAQ.
Features
Luftdatenpumpe acquires the measurement readings either from the livedata API of luftdaten.info or from its archived CSV files published to archive.luftdaten.info. To minimize impact on the upstream servers, all data gets reasonably cached.
While iterating the readings, it optionally filters on station-id, sensor-id or sensor-type and restrains information processing to the corresponding stations and sensors.
Then, each station’s location information gets enhanced by
attaching its geospatial position as a Geohash.
attaching a synthetic real-world address resolved using the reverse geocoding service Nominatim by OpenStreetMap.
Information about stations can be
displayed on STDOUT or STDERR in JSON format.
filtered and transformed interactively through jq, the swiss army knife of JSON manipulation.
stored into RDBMS databases like PostgreSQL using the fine dataset package. Being built on top of SQLAlchemy, this supports all major databases.
queried using advanced geospatial features when running PostGIS, please follow up reading the Luftdatenpumpe PostGIS tutorial.
Measurement readings can be
Synopsis
# List networks luftdatenpumpe networks # List LDI stations luftdatenpumpe stations --network=ldi --station=49,1033 --reverse-geocode # Store list of LDI stations and metadata into RDBMS database (PostgreSQL), also display on STDERR luftdatenpumpe stations --network=ldi --station=49,1033 --reverse-geocode --target=postgresql://luftdatenpumpe@localhost/weatherbase # Store LDI readings into InfluxDB luftdatenpumpe readings --network=ldi --station=49,1033 --target=influxdb://luftdatenpumpe@localhost/luftdaten_info # Forward LDI readings to MQTT luftdatenpumpe readings --network=ldi --station=49,1033 --target=mqtt://mqtt.example.org/luftdaten.info
For a full overview about all program options including meaningful examples, you might just want to run luftdatenpumpe --help on your command line, or visit the Luftdatenpumpe usage documentation section.
Screenshots
Luftdaten-Viewer displays stations and measurements from luftdaten.info (LDI) in Grafana.
Map display and filtering
Filter by different synthesized address components and sensor type.
Display measurements from filtered stations on Panodata Map Panel.
Display filtered list of stations with corresponding information in tabular form.
Measurement values are held against configured thresholds so points are colored appropriately.
Map popup labels
Humanized label computed from synthesized OpenStreetMap address.
Numeric station identifier.
Measurement value, unit and field name.
Installation
If you are running Python 3 already, you can installing the program using pip. We recommend to use a Python virtualenv.
pip install luftdatenpumpe --upgrade
At this point, you should be able to conduct simple tests like luftdatenpumpe stations as seen in the synopsis section above. At least, you should verify the installation succeeded by running:
luftdatenpumpe --version
At install Luftdatenpumpe, you will find more detailed installation instructions about how to install and configure auxiliary services, and eventually resolve some prerequisites.
Luftdaten-Viewer
About
Using Luftdatenpumpe, you can build user-friendly interactive GIS systems on top of PostGIS, InfluxDB and Grafana. This setup is called “Luftdaten-Viewer”, and some example scenarios can be inspected at Luftdatenpumpe gallery.
Instructions
These installation instructions outline how to setup the whole system to build similar interactive data visualization compositions of map-, graph- and other panel-widgets like outlined in the “Testimonials” section.
Other projects
Sensor.Community public data aggregator
Visualize recent sensor data on a world map for Sensor.Community and for different other official networks, like EEA, Luchtmeetnet, Atmo AURA/Sud/Occitanie, and Umweltbundesamt.
Project information
Contributions
Any kind of contribution, feedback, or patch, is much welcome. Create an issue or submit a patch if you think we should include a new feature, or to report or fix a bug.
Resources
License
The project is licensed under the terms of the GNU AGPL license, see LICENSE.
Content attributions
The copyright of particular images and pictograms are held by their respective owners, unless otherwise noted.
Water Pump Free Icon from Icon Fonts is licensed by CC BY 3.0.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file luftdatenpumpe-0.22.0.tar.gz.
File metadata
- Download URL: luftdatenpumpe-0.22.0.tar.gz
- Upload date:
- Size: 70.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4aa9b9486b3f9ae262cbf4bad6f12a6d9431030a3287151b2692f078426209fe
|
|
| MD5 |
19c8641832e8c6c7dc7c4296c56d76f0
|
|
| BLAKE2b-256 |
874c6807a62f2d82f3b7cf877cb75b16788e3000b76331cd7a3802967511eacc
|
File details
Details for the file luftdatenpumpe-0.22.0-py3-none-any.whl.
File metadata
- Download URL: luftdatenpumpe-0.22.0-py3-none-any.whl
- Upload date:
- Size: 72.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1654dc5d966998b398f2f45149406a8d187860418b6315093030f0cbbc616041
|
|
| MD5 |
ce60e66be9e70f7c9aac85bf2fa96130
|
|
| BLAKE2b-256 |
ceaa5208841178133a7c3a2065486a974297f65f2097a1718af7583ddc7bfaec
|