Skip to main content

Serial Air Quality Sensors

Data acquisition and logging for Air Quality Sensors with UART interface

PyPI - Python Version PyPI Build Status GitHub issues GitHub license DOI

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

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
    • add Python 3.11 support and drop Python 3.7 support
    • pre-heat for PMSx003 sensors PR#35
    • open/close methods for granular SensorReader operation PR#33
    • fix HPMA115C0 header #26
  • 0.6.2
    • move logger config to CLI module PR#28
  • 0.6.1
    • fix pms.sensors.sensirion module name and docs
    • reliably recognize SPS30 sensor #25
  • 0.6.0
    • project site
    • reorganize internal modules
      • pms.core: core functionality, such as Sensor and SensorReader
      • pms.sensors: sensor modules grouped by manufacturer
      • pms.extra: extra cli utilities, such as pms influxdb and influxdb mqtt
      • importing from pms.sensor is deprecated, import from pms.core instead
    • plugin architecture
      • load sensor modules from entry points advertized as "pypms.sensors"
      • load extra cli commands from entry points advertized as "pypms.extras"
    • 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_USER sets --mqtt-user on pms mqtt and pms bridge
      • $MQTT_USER sets --mqtt-user on pms mqtt and pms bridge
      • $DB_USER sets --db-user on pms influxdb and pms bridge
      • $DB_PASS sets --db-pass on pms influxdb and pms bridge
  • 0.4.1
    • info about the sensor observations with pms info
    • fix MCU680 obs.pres typo #16
  • 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
  • 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.*
    • widen project scope from PM sensors to AQ sensors in general
    • support BME680 sensor (MCU680 module)
  • 0.1.*

Release files for pypms 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pypms 0.8.1
File Size Uploaded
pypms-0.8.1.tar.gz 22.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pypms 0.8.1
File Interpreter ABI Platform
pypms-0.8.1-py3-none-any.whl Python 3 none any Details

Total release size: 59.0 kB

Release files / pypms-0.8.1.tar.gz

Download URL pypms-0.8.1.tar.gz
Size 22.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7fd00cbc3dd4f684975984b4457ccb41cca14cc22d7fd9d476470e707eb5d57c
BLAKE2b-256 checksum
How to use checksums
a1f47ff5335e0662239b0538cb96f83845ffa2d9aa17618f6f070f833ffc93dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 2, 2026.

Transparency log

Release files / pypms-0.8.1-py3-none-any.whl

Download URL pypms-0.8.1-py3-none-any.whl
Size 37.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
efab803abba5e1f909d3def389f313a0e430f42bf3b5ee4135daa187f082f830
BLAKE2b-256 checksum
How to use checksums
a7b5a4ef395a847bd19c3c27291ad40b2aa67f41f698903587569bb5456c843f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.8.1 This release

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page