Execute measurements with SensorBridge
The following steps show how to use this driver on a Windows system using the Sensirion SEK-SensorBridge to execute a simple measurement.
- Install the STS3X driver and all required packages as described in Installation. 
- Install the driver for the Sensirion SEK-SensorBridge - pip install sensirion-shdlc-sensorbridge 
- Connect the SEK-SensorBridge to your PC over USB 
- Connect the STS3X sensor to the SEK-SensorBridge 
- Run the example script from the root of the repository. - By default the script assumes the SensorBridge is connected to - COM1serial port. If this is different on your system, pass the port in use with the- --serial-portparameter as outlined below.- python examples/example_usage_sensorbridge_sts3x.py --serial-port <your COM port> 
Example script
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# (c) Copyright 2023 Sensirion AG, Switzerland
#
#     THIS FILE IS AUTOMATICALLY GENERATED!
#
# Generator:     sensirion-driver-generator 0.33.0
# Product:       sts3x
# Model-Version: 1.0.0
#
import argparse
import time
from sensirion_i2c_driver import I2cConnection, CrcCalculator
from sensirion_shdlc_driver import ShdlcSerialPort, ShdlcConnection
from sensirion_shdlc_sensorbridge import (SensorBridgePort,
                                          SensorBridgeShdlcDevice,
                                          SensorBridgeI2cProxy)
from sensirion_driver_adapters.i2c_adapter.i2c_channel import I2cChannel
from sensirion_i2c_sts3x.device import Sts3xDevice
from sensirion_i2c_sts3x.commands import (Mps, Repeatability)
parser = argparse.ArgumentParser()
parser.add_argument('--serial-port', '-p', default='COM1')
args = parser.parse_args()
with ShdlcSerialPort(port=args.serial_port, baudrate=460800) as port:
    bridge = SensorBridgeShdlcDevice(ShdlcConnection(port), slave_address=0)
    bridge.set_i2c_frequency(SensorBridgePort.ONE, frequency=100e3)
    bridge.set_supply_voltage(SensorBridgePort.ONE, voltage=3.3)
    bridge.switch_supply_on(SensorBridgePort.ONE)
    i2c_transceiver = SensorBridgeI2cProxy(bridge, port=SensorBridgePort.ONE)
    channel = I2cChannel(I2cConnection(i2c_transceiver),
                         slave_address=0x4A,
                         crc=CrcCalculator(8, 0x31, 0xff, 0x0))
    sensor = Sts3xDevice(channel)
    try:
        sensor.stop_measurement()
        time.sleep(0.001)
    except BaseException:
        ...
    try:
        sensor.soft_reset()
        time.sleep(0.1)
    except BaseException:
        ...
    a_status_register = sensor.read_status_register()
    print(f"a_status_register: {a_status_register}; "
          )
    sensor.start_periodic_measurement(Repeatability.MEDIUM, Mps.ONE_PER_SECOND)
    for i in range(50):
        try:
            a_temperature = sensor.blocking_read_measurement()
            print(f"a_temperature: {a_temperature}; "
                  )
        except BaseException:
            continue
    sensor.stop_measurement()
Execute measurements using internal Linux I²C driver
On Linux systems it is furthermore possible to use the Linux user space I²C driver directly. How this can be done is shown in the following.
- Install the STS3X driver and all required packages as described in Installation. 
- Connect the STS3X sensor to the I²C port of your system (for example to the I²C port 1 of a Raspberry Pi). 
- Run the example script from the root of the repository. - By default the script assumes you have the sensor connected to - /dev/i2c-1. If this is different on your system, pass the port in use with the- --i2c-portparameter as outlined below.- python examples/example_usage_linux_sts3x.py --i2c-port <your I2C port> 
Example script
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# (c) Copyright 2023 Sensirion AG, Switzerland
#
#     THIS FILE IS AUTOMATICALLY GENERATED!
#
# Generator:     sensirion-driver-generator 0.33.0
# Product:       sts3x
# Model-Version: 1.0.0
#
import argparse
import time
from sensirion_i2c_driver import LinuxI2cTransceiver, I2cConnection, CrcCalculator
from sensirion_driver_adapters.i2c_adapter.i2c_channel import I2cChannel
from sensirion_i2c_sts3x.device import Sts3xDevice
from sensirion_i2c_sts3x.commands import (Mps, Repeatability)
parser = argparse.ArgumentParser()
parser.add_argument('--i2c-port', '-p', default='/dev/i2c-1')
args = parser.parse_args()
with LinuxI2cTransceiver(args.i2c_port) as i2c_transceiver:
    channel = I2cChannel(I2cConnection(i2c_transceiver),
                         slave_address=0x4A,
                         crc=CrcCalculator(8, 0x31, 0xff, 0x0))
    sensor = Sts3xDevice(channel)
    try:
        sensor.stop_measurement()
        time.sleep(0.001)
    except BaseException:
        ...
    try:
        sensor.soft_reset()
        time.sleep(0.1)
    except BaseException:
        ...
    a_status_register = sensor.read_status_register()
    print(f"a_status_register: {a_status_register}; "
          )
    sensor.start_periodic_measurement(Repeatability.MEDIUM, Mps.ONE_PER_SECOND)
    for i in range(50):
        try:
            a_temperature = sensor.blocking_read_measurement()
            print(f"a_temperature: {a_temperature}; "
                  )
        except BaseException:
            continue
    sensor.stop_measurement()