feat: add AirQualityInput plugin with multi-connector pattern (AQICN, PMS5003, BME680)#2437
feat: add AirQualityInput plugin with multi-connector pattern (AQICN, PMS5003, BME680)#2437Wanbogang wants to merge 5 commits into
Conversation
- Add AirQualityInput plugin supporting multiple sensors/APIs - Add connector/base.py: AirQualityData dataclass, AirQualityConnector ABC, get_aqi_level() - Add connector/aqicn.py: AQICN cloud API connector (no hardware needed) - Add connector/pms5003.py: PMS5003/PMS7003 particulate sensor via Serial - Add connector/bme680.py: BME680 environmental sensor via I2C - Add 88 tests covering all connectors and plugin behavior (100% coverage) - Patch inputs/__init__.py auto-discovery to support subpackage plugins - Fix aqi_label/aqi_description unbound variable in _raw_to_text
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
- Fix test_base.py: add type: ignore[abstract] for abstract instantiation - Fix test_bme680.py: assert aqi is not None before comparison - Add tests for subpackage scanning in inputs/__init__.py (100% coverage) - Add tests for load_input error paths (ImportError, AttributeError) - Move inline 'import types' to top-level in test_init.py - Use setattr() for ModuleType attribute assignment (pyright)
|
Hi @Wanbogang |
…nput # Conflicts: # src/inputs/__init__.py
|
Hi @Prachi1615 thanks for the review! Conflicts are now resolved (merged latest I tested the Setup: AirQualityInput plugin with What the screenshot shows:
So the AQICN API → connector → AirQualityInput → LLM path works with real-time data. The AQI level classification (MODERATE) and the WARNING/DANGER threshold logic are applied in the plugin. The Let me know if you'd like anything else. Thanks!
|

Overview
Adds a generic
AirQualityInputplugin that supports multiple air quality sensors and APIs via a connector pattern. This allows OM1 to read real-time air quality data without changing the core plugin when switching sensors. #365Features
AirQualityDataand converts it to human-readable text for the LLMaqicn— AQICN World Air Quality Index cloud API (no hardware needed)pms5003— PMS5003/PMS7003 particulate matter sensor via Serial/UARTbme680— BME680 environmental sensor (temperature, humidity, VOC) via I2CSensors Integrated
aqicnpms5003bme680Configuration Example