# SPDX-FileCopyrightText: Copyright (c) 2025 Liz Clark for Adafruit Industries
#
# SPDX-License-Identifier: MIT

# Simpletest for the SEN6x Driver
# Uncomment the init for your SEN6x sensor
import time

import board

import adafruit_sen6x

# Initialize I2C
i2c = board.I2C()

# Initialize the sensor:
sensor = adafruit_sen6x.SEN66(i2c)  # SEN66 sensors
# sensor = adafruit_sen6x.SEN63C(i2c) # SEN63C sensors

# Read sensor info
print(f"Product: {sensor.product_name}")
print(f"Serial: {sensor.serial_number}")

# Check device status
status = sensor.device_status
print(f"Device {status}")

# Optional: Configure sensor before starting
# sensor.temperature_offset(offset=-2.0, slot=0)  # Apply -2°C offset
# sensor.voc_algorithm_tuning(index_offset=100)   # Adjust VOC baseline
# print(sensor.voc_algorithm) # Print VOC baseline

# CO2 configuration examples:
# sensor.co2_automatic_self_calibration = False  # Disable ASC for greenhouses
# sensor.ambient_pressure = 1020  # Set pressure in hPa
# sensor.sensor_altitude = 500    # Or set altitude in meters

# Start measurements
sensor.start_measurement()

# Wait for first measurement to be ready
print("Waiting for first measurement...")
time.sleep(2)
print("-" * 40)

# Read data continuously
while True:
    if sensor.data_ready:
        # Check for errors before reading
        sensor.check_sensor_errors()

        # Read all measurements
        data = sensor.all_measurements()

        # Display values (None = sensor still initializing)
        print(
            f"Temperature: {data['temperature']:.1f}°C"
            if data["temperature"]
            else "Temperature: initializing..."
        )
        print(
            f"Humidity: {data['humidity']:.1f}%"
            if data["humidity"]
            else "Humidity: initializing..."
        )
        print(f"PM2.5: {data['pm2_5']:.1f} µg/m³" if data["pm2_5"] else "PM2.5: initializing...")
        try:  # if sensor does not have VOC/NOx readings, skip
            print(
                f"VOC Index: {data['voc_index']:.1f}"
                if data["voc_index"]
                else "VOC Index: initializing..."
            )
            print(
                f"NOx Index: {data['nox_index']:.1f}"
                if data["nox_index"]
                else "NOx Index: initializing..."
            )
        except KeyError:
            pass
        print(f"CO2: {data['co2']} ppm" if data["co2"] else "CO2: initializing...")
        print("-" * 40)
    time.sleep(2)
