Metadata-Version: 2.3
Name: ens160
Version: 0.0.2
Summary: ENS160 Air Quality Sensor driver
Project-URL: Homepage, https://github.com/altera2015/ENS160
Project-URL: Issues, https://github.com/altera2015/ENS160/issues
Author-email: Ron Bessems <rbessems@gmail.com>
License-File: LICENSE
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# ENS160
ENS160 Python library.

[Datasheet](https://www.sciosense.com/wp-content/uploads/2023/12/ENS160-Datasheet.pdf)

This code was tested on a Raspberry Pi 5 at 100kHz I2C clock.

The I2C code is abstracted from the sensor handling and
other communication methods could be added.

Tested with Python 3.12

# Documentation

The detailed API documentation can be [found here](https://altera2015.github.io/ENS160/ens160.html).

# Install

```sh
pip install ens160
```

# Example

See [example.py](https://github.com/altera2015/ENS160/blob/main/tests/example.py)

```python
import sys
from time import sleep

from ens160 import Driver, OpModes

from ens160.i2c import SMBusRetryingI2C
dev = Driver(SMBusRetryingI2C(0x53, 1))

dev.init()
part_id = dev.get_part_id()
if part_id != Driver.PART_ID:
    print(f"Part not found, expected {Driver.PART_ID} got {part_id}.")
    sys.exit(-1)

print(f"Part Id {part_id}")
print(f"Firmware version {dev.get_fw_version()}")

dev.set_rh_compensation(55.0)
dev.set_temp_compensation_fahrenheit(72.5)

print(dev.get_device_status())

dev.set_operating_mode(OpModes.STANDARD)
print("Operating Mode: ", dev.get_operating_mode())

while True:
    status = dev.get_device_status()
    print(status)
    if status.new_data:
        print(
            f"AQI={dev.get_aqi()}, eCO2={dev.get_eco2()}ppm, TVOC={dev.get_tvoc()}ppb"
        )
    else:
        sleep(0.1)

```

