Data acquisition and logging for Air Quality Sensors with UART interface
Project description
Serial Air Quality Sensors
Data acquisition and logging for Air Quality Sensors with UART interface
Installation
This package can be pip installed. Please visit project site for detailed instructions.
Command Line Tools
This package provides tools for requesting new measurements from the sensors and print them on different formats, save them to a CSV file, or push them to an external service such as an MQTT or InfluxDB server. MQTT or InfluxDB server support requires additional packages. Please visit project site for details.
Particulate Matter Sensors
| Sensor | --sensor-model |
PM1 | PM2.5 | PM4 | PM10 | size bins | Other | Tested |
|---|---|---|---|---|---|---|---|---|
| Plantower | ||||||||
| PMS1003 (aka G1) | PMSx003 | ✔️ | ✔️ | ✔️ | 6 | |||
| PMS3003 (aka G3) | PMS3003 | ✔️ | ✔️ | ✔️ | ✔️ | |||
| PMS5003 (aka G5) | PMSx003 | ✔️ | ✔️ | ✔️ | 6 | |||
| PMS5003T | PMS5003T | ✔️ | ✔️ | ✔️ | 4 | temp. & rel.hum. | ✔️ | |
| PMS5003S | PMS5003S | ✔️ | ✔️ | ✔️ | 6 | HCHO concentration | ||
| PMS5003ST | PMS5003ST | ✔️ | ✔️ | ✔️ | 6 | HCHO, temp. & rel.hum. | ||
| PMS7003 (aka G7) | PMSx003 | ✔️ | ✔️ | ✔️ | 6 | ✔️ | ||
| PMSA003 (aka G10) | PMSx003 | ✔️ | ✔️ | ✔️ | 6 | ✔️ | ||
| NovaFitness | ||||||||
| SDS011 | SDS01x | ✔️ | ✔️ | ✔️ | ||||
| SDS018 | SDS01x | ✔️ | ✔️ | |||||
| SDS021 | SDS01x | ✔️ | ✔️ | |||||
| SDS198 | SDS198 | PM100 | ✔️ | |||||
| Honeywell | ||||||||
| HPMA115S0 | HPMA115S0 | ✔️ | ✔️ | |||||
| HPMA115C0 | HPMA115C0 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
| Sensirion | ||||||||
| SPS30 | SPS30 | ✔️ | ✔️ | ✔️ | ✔️ | 5 | typical particle size | ✔️ |
| Winsen | ||||||||
| ZH03B | ZH0xx | ✔️ | ✔️ | ✔️ | ||||
| ZH06-I | ZH0xx | ✔️ | ✔️ | ✔️ |
Other Sensors
- MCU680: chinese module with a BME680 sensor, a mirocontroller (μC) and 3.3V low-dropout regulator (LDO). The μC acts as I2C/UART bridge, providing outputs from the closed source integration library.
- MHZ19B: infrared CO2 sensor module from Winsen.
Want More Sensors
For more Air Quality sensors open an issue.
Use as a library
PyPMS/pms is meant as a command line application. The project site contain some help for those brave enough to use its internals as a library.
Changelog
- 0.8.1
- add Python 3.14 support, drop Python 3.9 support
- 0.8.0
- add Python 3.12 and 3.13 support, drop Python 3.8 support
- require typer-slim instead of full typer
- require (optional) paho-mqtt v2+
- tidy up annotations
- 0.7.1
- disable logging unless CLI is running PR#37
- 0.7.0
- 0.6.2
- move logger config to CLI module PR#28
- 0.6.1
- fix
pms.sensors.sensirionmodule name and docs - reliably recognize SPS30 sensor #25
- fix
- 0.6.0
- project site
- reorganize internal modules
pms.core: core functionality, such asSensorandSensorReaderpms.sensors: sensor modules grouped by manufacturerpms.extra: extra cli utilities, such aspms influxdbandinfluxdb mqtt- importing from
pms.sensoris deprecated, import frompms.coreinstead
- plugin architecture
- load sensor modules from entry points advertized as
"pypms.sensors" - load extra cli commands from entry points advertized as
"pypms.extras"
- load sensor modules from entry points advertized as
- support Winsen PM sensors and MHZ19B infrared CO2 sensor.
- pm1/pm4/raw2_5/pm2_5 properties, #17
- 0.5.0
- set username/password with environment variables:
$MQTT_USERsets--mqtt-useronpms mqttandpms bridge$MQTT_USERsets--mqtt-useronpms mqttandpms bridge$DB_USERsets--db-useronpms influxdbandpms bridge$DB_PASSsets--db-passonpms influxdbandpms bridge
- set username/password with environment variables:
- 0.4.1
- 0.4.0
- capture raw messages with
pms csv --capture - decode captured messages with
pms serial --capture - hexdump format with
pms serial --format hexdump - deprecate subset observation method
- capture raw messages with
- 0.3.1
- fix influxdb default tags
- 0.3.0
- option for a fix number of samples
- PMSx003 consistency check after sleep/wake
- 0.2.*
- 0.1.*
- widen project scope beyond Plantower PM sensors
- support NovaFitness, Honeywell and Sensirion PM sensors
- cli for logging to csv file, InfluxDB server or MQTT server
Project details
Release history Release notifications | RSS feed
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 pypms-0.8.1.tar.gz.
File metadata
- Download URL: pypms-0.8.1.tar.gz
- Upload date:
- Size: 22.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fd00cbc3dd4f684975984b4457ccb41cca14cc22d7fd9d476470e707eb5d57c
|
|
| MD5 |
6d686c0ad05239f0f11fc8b1367116a9
|
|
| BLAKE2b-256 |
a1f47ff5335e0662239b0538cb96f83845ffa2d9aa17618f6f070f833ffc93dc
|
Provenance
The following attestation bundles were made for pypms-0.8.1.tar.gz:
Publisher:
publish.yml on avaldebe/PyPMS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypms-0.8.1.tar.gz -
Subject digest:
7fd00cbc3dd4f684975984b4457ccb41cca14cc22d7fd9d476470e707eb5d57c - Sigstore transparency entry: 788228196
- Sigstore integration time:
-
Permalink:
avaldebe/PyPMS@f54bc10f0d4c5fa01a8cf3a56ab9a62298e3cb06 -
Branch / Tag:
refs/tags/0.8.1 - Owner: https://github.com/avaldebe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f54bc10f0d4c5fa01a8cf3a56ab9a62298e3cb06 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pypms-0.8.1-py3-none-any.whl.
File metadata
- Download URL: pypms-0.8.1-py3-none-any.whl
- Upload date:
- Size: 37.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
efab803abba5e1f909d3def389f313a0e430f42bf3b5ee4135daa187f082f830
|
|
| MD5 |
52a7257e0255fc40bdd0d03d90738696
|
|
| BLAKE2b-256 |
a7b5a4ef395a847bd19c3c27291ad40b2aa67f41f698903587569bb5456c843f
|
Provenance
The following attestation bundles were made for pypms-0.8.1-py3-none-any.whl:
Publisher:
publish.yml on avaldebe/PyPMS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypms-0.8.1-py3-none-any.whl -
Subject digest:
efab803abba5e1f909d3def389f313a0e430f42bf3b5ee4135daa187f082f830 - Sigstore transparency entry: 788228220
- Sigstore integration time:
-
Permalink:
avaldebe/PyPMS@f54bc10f0d4c5fa01a8cf3a56ab9a62298e3cb06 -
Branch / Tag:
refs/tags/0.8.1 - Owner: https://github.com/avaldebe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f54bc10f0d4c5fa01a8cf3a56ab9a62298e3cb06 -
Trigger Event:
release
-
Statement type: