Sps30Sensor

class lsst.ts.ess.common.sensor.Sps30Sensor(log: Any)

Bases: BaseSensor

Sensirion SPS30 Particulate Matter Sensor.

Perform protocol conversion for a Sensirion SPS30 particulate matter sensor which measures: - Particle size concentrations (PM1.0, PM2.5, PM4.0, PM10) - Particle number concentrations - Typical particle size

Attributes Summary

DEFAULT_CONCENTRATION

DEFAULT_PARTICLE_SIZE

DEFAULT_TYPICAL_SIZE

END_CHAR

GOOD_STATUS

START_CHAR

TELEMETRY_PATTERN

charset

delimiter

terminator

Methods Summary

extract_telemetry(line)

Extract particle measurement telemetry from sensor data.

Attributes Documentation

DEFAULT_CONCENTRATION: str = '-1.000'
DEFAULT_PARTICLE_SIZE: str = '-1.00'
DEFAULT_TYPICAL_SIZE: str = '-1.00'
END_CHAR: str = '\x03'
GOOD_STATUS: str = '00'
START_CHAR: str = '\x02'
TELEMETRY_PATTERN = re.compile('^\x02(?P<sensor_name>[^,]+),(?P<timestamp>\\d+\\.\\d+),(?P<size1>\\d+\\.\\d+),(?P<size2>\\d+\\.\\d+),(?P<size3>\\d+\\.\\d+),(?P<size4>\\d+\\.\\d+),(?P<size5>\\d+\\.\\d+),(?P<conc1>\\d+\\.\\d+),(?P<co)
charset = 'ASCII'
delimiter = ','
terminator = '\r\n'

Methods Documentation

async extract_telemetry(line: str) list[float | int | str]

Extract particle measurement telemetry from sensor data.

Parameters:
linestr

A line of SPS30 telemetry data.

Returns:
list

A list containing all telemetry fields in the order specified by the XML definition. Invalid values are replaced with np.nan for numeric fields and empty strings for text fields.

Raises:
ValueError

If the line cannot be parsed or checksum validation fails.