Skip to main content

Python driver for the Sensirion SGP30 multi gas sensor

Project description

sgp30-driver

Easy-to-use python driver for the Sensirion SGP30 multi gas sensor

GitHub Workflow Status PyPI PyPI - License PyPI - Downloads

Installation

The package is available on PyPI. Installation is can be done with your favourite package manager. For example:

pip install sgp30-driver

Usage

In order to initialise the device we need an open SMBus object. Depending on the machine that you are running on you may need to provide another bus number or path:

from sgp30 import SGP30
from smbus2 import SMBus


with SMBus(1) as bus:
    device = SGP30(bus=bus)

The address of the SGP30 defaults to 0x58. This is the (fixed) address of the SGP30 devices, so you should never have to change it. If you do want to change it, you can provide it like SGP30(bus=bus, address=0x59).

Initialisation

After every restart the SGP30 has to be initialised:

device.initialise()

This process can take up to 20 seconds.

This process can be sped up by passing recent values of the baseline compensation algorithm: store the result of device.baseline somewhere in non-volatile memory, and restore it with:

device.initialise(baseline)

Measuring

After initialisation the device is ready for taking measurements. The measure() method returns an SGP30Measurement object which has two attributes: equivalent_co2 which represents the CO2 concentration in ppm (parts-per-million) and tvoc which represents the TVOC (total volatile organic compounds) in ppb (parts-per-billion).

measurement = device.measure()
print(f"{measurement.equivalent_co2} ppm CO2, {measurement.tvoc} ppb TVOC")

In order to ensure the proper working of the baseline compensation algorithm one should call the measure() method in regular intervals of 1 second.

Humidity compensation

The SGP30 has on-chip humidity compensation. In order to enable the compensation, you will need to get a humidity measurement from another sensor, and then set the humidity using set_humidity():

device.set_humidity(15.2)

The accepted humidity value is the absolute humidity in g/m3.

Alternatively, if only the relative humidity is available:

device.set_relative_humidity(
    humidity=0.5,  # 50 %RH
    temperature=20,  # 20°C
)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sgp30-driver-0.2.1.tar.gz (9.2 kB view hashes)

Uploaded source

Built Distribution

sgp30_driver-0.2.1-py3-none-any.whl (10.0 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page