- Fix "Luftdaten-Viewer Grafana" documentation section about exporting station metadata from PostGIS to JSON file. Thanks, @ohobby.
- Add two new OSM-based synthetic geolocation fields for better
addressing of micro-regions,
district_postcode_city_sensorid
, andsuburb_postcode_city_sensorid
. Thanks, @ohobby. - Add rendered documentation at https://luftdatenpumpe.readthedocs.io/
- Fix acquisition of station list from EEA
- Fix Python sandbox and test infrastructure
- Improve Nominatim reverse geocoding heuristics and corresponding tests
- Fix dependencies. Thanks, @MauritsDescamps.
- LDI: Fix data acquisition
- LDI: Fix forwarding to MQTT
- OpenAQ: Fix acquisition for certain records without geo information
- Improve project tooling, add CI, linter, and code formatter
- Sanitize code and prose with linters
- Don't use caching for live data. Thanks, Matthias.
- Add missing
openaq.py
file
- Add adapter for OpenAQ
- Slightly improve reverse geocoding
- Use improved "Panodata Map Panel" instead of the original "Grafana Worldmap Panel"
- Update documentation
- Fix invalid JSON file export for stations list (#17). Thanks, David.
- Improve EEA station processing
- Update "pflock" command to report if invocation failed
- Use HTTP POST when creating the InfluxDB datasource. Thanks, David.
- Improve memory consumption
- Don't process non-float values
- Mask observation values with magic number
-99.99
representingNaN
values from SOS/IRCELINE, #3.
- Update documentation for installing Grafana Worldmap Plugin
- Add Redis setup documentation re. #7. Thanks, David.
- Add PostgreSQL setup documentation re. #8. Thanks, David.
- Fix LDI historical data import, #10. Thanks, Wetter.
- Update
GRAFANA_URL
in documentation - Improve data wrangling robustness for luftdaten.info
- Acquire and process station list from EEA
- Nothing changed
- Handle incomplete records gracefully when writing to InfluxDB
- Improve egress JSON field conversion
- Fix erroneous dependency package version bump
- Fix silly mixup with "is_active" indicator
- Ignore
--country=BE
when operating on IRCELINE - Add new synthetic database-view fields "road_and_name_and_id" and "sos_feature_and_id"
- Add new
json.flex
output target for flexible fieldname mapping
- Improve IRCELINE request handling robustness
- Add "sensor_first_date" and "sensor_last_date" fields for IRCELINE to indicate <= 7 days of data freshness by synthesized field "is_active".
- Improve IRCELINE ingest with
--timespan
option vs.batch_size
- Always fetch last 12 hours worth of data to reduce gaps when API is offline.
- Update documentation
- Distinguish between "sensor_type_name" and "sensor_type_id"
- Tune map panel default settings
- Push architecture towards ingesting of data from multiple sensor networks
- Integrate data from the SOS REST API of the IRCELINE network
- Improve RDBMS subsystem
- Improve robustness, logging and error handling
- Add resources and documentation for running as cron job
- Allow customizing the Grafana panels from the command line
- Add GIS capabilities through PostGIS
- Set default format for "stream://" targets to "json"
- Fix published messages getting lost when not starting the MQTT main loop after connecting to MQTT broker
- Refactor station list filter
- Filter stations by country code
- Add missing sensor DS18B20
- Fix PostgreSQL version in Grafana datasource JSON
- Add station id to "multiple stations" chooser on trend dashboard
- Don't try to enrich incomplete station information
- Make dashboards not editable
- Refactor and improve Grafana datasource- and dashboard JSON files
- Add
luftdatenpumpe grafana
subcommand for accessing Grafana datasource- and dashboard JSON files - Improve documentation significantly
- Rename OSM data field "country_name" back to "country"
- Add sanity checks for protecting against unqualified responses from Nominatim service with DE-only dataset loaded
- Use country code for routing to different Nominatim services, one of them having the DE-only dataset loaded
- Improve RDBMS database schema
- Naming things
- Show cardinality in sensor type chooser
- Fix renaming OSM field "country" to "country_name"
- Add InfluxDB egress handler
- Improve HTTP response caching
- Probe Redis before starting and croak if connection fails
- Add "geohash" field when writing into InfluxDB
- Use nominatim.hiveeyes.org as primary reverse geocoder, fall back to nominatim.openstreetmap.org
- Add option to disable the Nominatim cache
- Add configuration and documentation about Grafana Worldmap
- Unlock CSV data acquisition from archive.luftdaten.info
- Add Grafana Graph dashboard
- Add User-Agent for requests to api.luftdaten.info
- Improve globbing when selecting path for CSV import
- Compensate empty values (nan) when importing from CSV
- Add output formatter for Grafana Worldmap Panel JSON file
- Add RDBMS database (PostgreSQL) as station data source
- Add
--sensor-type
filter option - Improve CSV file reading
- Flush each 50 records when talking to InfluxDB with UDP
- Introduce quick mode for importing just the first few records
- Add new option "--create-database-view"
- Rename OSM data field "country" to "country_name"
- Fix setup.py
- Add MANIFEST.in file
- Use "geohash2" package from PyPI for Python3 compatibility
- Fix twine. Just works outside of virtualenv.
- Remove unknown Trove classifiers from setup.py
- Refactoring, Python2/3 compatibility, Add setup.py
- Add "sensor_type" information to station list
- Use Redis-based caching through dogpile.cache, ditch Beaker
- Refactor data munging
- Always cache full response from Nominatim
- Cache responses from the luftdaten.info API for five minutes
- Add basic RDBMS adapter for storing station list and associated information to Postgres and other SQL databases supported by SQLAlchemy
- Streamline station data schema
- Add test harness for reverse geocoder subsystem
- Improve robustness and quality of reverse geocoder
- Make "sensors" data substructure an array
- Refactor target machinery and redesign command line interface
- Add release tooling
- Add option "--dry-run"
- Fix filtering by station id
- Fix access to Nominatim reverse geocoder API
- Use "appdirs" module for computing cache location. Report about cache location at startup.
- Improve OSM address formatter: Honor "footway" as another fieldname choice for encoding the "road"
- Improve OSM address formatter: Honor "suburb" field
- Improve filtering by sensor- and/or location-identifiers
- Implement "stations" subcommand to acquire, display and export list of stations
- Prevent duplicate segments in formatted address
- Use station id as label when name is not available
- Add filtering by sensor id. Thanks, Panzki.
- Add commandline interface
- Add caching for Nominatim responses
- Appropriate timestamp mungling
- Improve Documentation
- Basic implementation to request data from live API of luftdaten.info, enrich geospatial information and publish to MQTT bus
- Add "sensor_type" field
- Improve OSM address formatter