From 5ed1eacefdc510ba9ec538dab1a7abae64c85ce6 Mon Sep 17 00:00:00 2001 From: Driver Generator 2 Date: Wed, 27 Nov 2024 07:57:32 +0000 Subject: [PATCH] Generate SEN66 driver from SEN66 model version 1.3.0 --- CHANGELOG.md | 11 +- README.md | 4 +- examples/example_usage_linux_sen66.py | 4 +- examples/example_usage_sensorbridge_sen66.py | 4 +- images/sen6x-pinout.png | Bin 131436 -> 73305 bytes metadata.yml | 4 +- sensirion_i2c_sen66/commands.py | 438 ++++++++++++- sensirion_i2c_sen66/device.py | 611 +++++++++++++++++-- sensirion_i2c_sen66/result_types.py | 28 +- sensirion_i2c_sen66/version.py | 2 +- tests/test_sen66.py | 153 ++++- 11 files changed, 1147 insertions(+), 112 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ee3bce..aaa4ef6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.0.0] - 2024-11-25 + +### Added + +- Add all public interfaces +### Changed + +- Return type of CO2 value in read_measured_values changed from float to uint16 ## [0.1.0] - 2024-10-31 ### Added @@ -13,5 +21,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add interfaces to start, stop and read measurements. - Add interfaces to read product name, serial number and version -[Unreleased]: https://github.com/Sensirion/python-i2c-sen66/compare/0.1.0...HEAD +[Unreleased]: https://github.com/Sensirion/python-i2c-sen66/compare/1.0.0...HEAD +[1.0.0]: https://github.com/Sensirion/python-i2c-sen66/compare/0.1.0...1.0.0 [0.1.0]: https://github.com/Sensirion/python-i2c-sen66/releases/tag/0.1.0 \ No newline at end of file diff --git a/README.md b/README.md index da9e341..c0112f6 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,8 @@ This repository contains the Python driver to communicate with a Sensirion SEN66 Click [here](https://sensirion.com/sen6x-air-quality-sensor-platform) to learn more about the Sensirion SEN66 sensor. -unknown - -The default I²C address of [SEN66](https://www.sensirion.com/products/catalog/SEN6x) is **0x6B**. +The default I²C address of [SEN66](https://www.sensirion.com/products/catalog/SEN66) is **0x6B**. diff --git a/examples/example_usage_linux_sen66.py b/examples/example_usage_linux_sen66.py index 353a615..fe2e980 100644 --- a/examples/example_usage_linux_sen66.py +++ b/examples/example_usage_linux_sen66.py @@ -7,7 +7,7 @@ # # Generator: sensirion-driver-generator 1.0.1 # Product: sen66 -# Model-Version: 1.2.0 +# Model-Version: 1.3.0 # import argparse @@ -31,7 +31,7 @@ print(f"serial_number: {serial_number}; " ) sensor.start_continuous_measurement() - for i in range(50): + for i in range(100): try: time.sleep(1.0) (mass_concentration_pm1p0, mass_concentration_pm2p5, mass_concentration_pm4p0, mass_concentration_pm10p0, humidity, diff --git a/examples/example_usage_sensorbridge_sen66.py b/examples/example_usage_sensorbridge_sen66.py index 3688d71..dca95b6 100644 --- a/examples/example_usage_sensorbridge_sen66.py +++ b/examples/example_usage_sensorbridge_sen66.py @@ -7,7 +7,7 @@ # # Generator: sensirion-driver-generator 1.0.1 # Product: sen66 -# Model-Version: 1.2.0 +# Model-Version: 1.3.0 # import argparse @@ -40,7 +40,7 @@ print(f"serial_number: {serial_number}; " ) sensor.start_continuous_measurement() - for i in range(50): + for i in range(100): try: time.sleep(1.0) (mass_concentration_pm1p0, mass_concentration_pm2p5, mass_concentration_pm4p0, mass_concentration_pm10p0, humidity, diff --git a/images/sen6x-pinout.png b/images/sen6x-pinout.png index 42b5f0a8b64eac389fb5c4e86ae04cf1e42ec35d..a940971e5664525b62770efd29d8f247f04e790b 100644 GIT binary patch literal 73305 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 literal 131436 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 diff --git a/metadata.yml b/metadata.yml index 5a15951..e7f7ddb 100644 --- a/metadata.yml +++ b/metadata.yml @@ -1,7 +1,7 @@ # driver generation metadata generator_version: 1.0.1 -model_version: 1.2.0 +model_version: 1.3.0 dg_status: released is_manually_modified: false first_generated: '2024-10-30 08:14' -last_generated: '2024-10-30 08:14' +last_generated: '2024-11-27 07:57' diff --git a/sensirion_i2c_sen66/commands.py b/sensirion_i2c_sen66/commands.py index 39a4045..ac2cc1e 100644 --- a/sensirion_i2c_sen66/commands.py +++ b/sensirion_i2c_sen66/commands.py @@ -7,7 +7,7 @@ # # Generator: sensirion-driver-generator 1.0.1 # Product: sen66 -# Model-Version: 1.2.0 +# Model-Version: 1.3.0 # """ The transfer classes specify the data that is transferred between host and sensor. The generated transfer classes @@ -16,25 +16,30 @@ from sensirion_driver_adapters.transfer import Transfer from sensirion_driver_adapters.rx_tx_data import TxData, RxData +from sensirion_driver_support_types.bitfield import BitField, BitfieldContainer -class DeviceReset(Transfer): - """Executes a reset on the device. This has the same effect as a power cycle.""" - - CMD_ID = 0xd304 - - def pack(self): - return self.tx_data.pack([]) - - tx = TxData(CMD_ID, '>H', device_busy_delay=1.2, slave_address=None, ignore_ack=False) +class DeviceStatus(BitfieldContainer): + reserved1 = BitField(offset=0, width=4) + fan_error = BitField(offset=4, width=1) + reserved2 = BitField(offset=5, width=1) + rht_error = BitField(offset=6, width=1) + gas_error = BitField(offset=7, width=1) + reserved3 = BitField(offset=8, width=1) + co2_2_error = BitField(offset=9, width=1) + reserved4 = BitField(offset=10, width=1) + pm_error = BitField(offset=11, width=1) + reserved5 = BitField(offset=12, width=1) + reserved6 = BitField(offset=13, width=8) + fan_speed_warning = BitField(offset=21, width=1) class StartContinuousMeasurement(Transfer): """ Starts a continuous measurement. - After power up, wait at least 500 ms before sending this - command. After sending this command, wait at least 1100 ms before - reading measurements. + After starting the measurement, it takes some time (~1.1s) until the + first measurement results are available. You could poll with the command + "Get Data Ready" to check when the results are ready to read. This command is only available in idle mode. If the device is already in any measure mode, this command has no effect. """ @@ -59,7 +64,7 @@ class StopMeasurement(Transfer): def pack(self): return self.tx_data.pack([]) - tx = TxData(CMD_ID, '>H', device_busy_delay=0.16, slave_address=None, ignore_ack=False) + tx = TxData(CMD_ID, '>H', device_busy_delay=1.0, slave_address=None, ignore_ack=False) class GetDataReady(Transfer): @@ -80,12 +85,12 @@ def pack(self): class ReadMeasuredValuesAsIntegers(Transfer): """ Returns the measured values. - The command 0x0202 \"Get Data Ready\" can be used to check if new + The command "Get Data Ready" can be used to check if new data is available since the last read operation. If no new data is available, the previous values will be returned again. If no data is available at all (e.g. measurement not running for at least one - second), all values will be at their upper limit (0xFFFF for `uint16`, - 0x7FFF for `int16`). + second), all values will be at their upper limit (0xFFFF for uint16, + 0x7FFF for int16). """ CMD_ID = 0x300 @@ -97,11 +102,230 @@ def pack(self): rx = RxData('>HHHHhhhhH') +class ReadNumberConcentrationValuesAsIntegers(Transfer): + """ + Returns the measured number concentration values. + The command "Get Data Ready" can be used to check if new + data is available since the last read operation. If no new data is + available, the previous values will be returned again. If no data + is available at all (e.g. measurement not running for at least one + second), all values will be at their upper limit (0xFFFF for uint16). + """ + + CMD_ID = 0x316 + + def pack(self): + return self.tx_data.pack([]) + + tx = TxData(CMD_ID, '>H', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + rx = RxData('>HHHHH') + + +class ReadMeasuredRawValues(Transfer): + """ + Returns the measured raw values. + The command "Get Data Ready" can be used to check if new + data is available since the last read operation. If no new data is + available, the previous values will be returned again. If no data + is available at all (e.g. measurement not running for at least one + second), all values will be at their upper limit (0xFFFF for uint16, + 0x7FFF for int16). + """ + + CMD_ID = 0x405 + + def pack(self): + return self.tx_data.pack([]) + + tx = TxData(CMD_ID, '>H', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + rx = RxData('>hhHHH') + + +class StartFanCleaning(Transfer): + """ + This command triggers fan cleaning. The fan is set to the maximum + speed for 10 seconds and then automatically stopped. Wait at least 10s + after this command before starting a measurement. + """ + + CMD_ID = 0x5607 + + def pack(self): + return self.tx_data.pack([]) + + tx = TxData(CMD_ID, '>H', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + + +class SetTemperatureOffsetParameters(Transfer): + """ + This command allows to compensate temperature effects of the + design-in at customer side by applying custom temperature offsets + to the ambient temperature. The compensated ambient temperature is + calculated as follows: + T_Ambient_Compensated = T_Ambient + (slope * T_Ambient) + offset + Where slope and offset are the values set with this command, + smoothed with the specified time constant. + All temperatures (T_Ambient_Compensated, T_Ambient and offset) + are represented in °C. + There are 5 temperature offset slots available that all contribute + additively to T_Ambient_Compensated. The default values for + the temperature offset parameters are all zero, meaning that + T_Ambient_Compensated is equal to T_Ambient by default. + The parameters can be changed in any state of the device, i.e. both in + idle mode and in measure mode. + """ + + CMD_ID = 0x60b2 + + def __init__(self, offset, slope, time_constant, slot): + self._offset = offset + self._slope = slope + self._time_constant = time_constant + self._slot = slot + + def pack(self): + return self.tx_data.pack([self._offset, self._slope, self._time_constant, self._slot]) + + tx = TxData(CMD_ID, '>HhhHH', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + + +class SetVocAlgorithmTuningParameters(Transfer): + """ + Sets the parameters to customize the VOC algorithm. + This configuration is volatile, i.e. the parameters will be + reverted to their default values after a device reset. + """ + + CMD_ID = 0x60d0 + + def __init__(self, index_offset, learning_time_offset_hours, learning_time_gain_hours, gating_max_duration_minutes, + std_initial, gain_factor): + self._index_offset = index_offset + self._learning_time_offset_hours = learning_time_offset_hours + self._learning_time_gain_hours = learning_time_gain_hours + self._gating_max_duration_minutes = gating_max_duration_minutes + self._std_initial = std_initial + self._gain_factor = gain_factor + + def pack(self): + return self.tx_data.pack([self._index_offset, self._learning_time_offset_hours, self._learning_time_gain_hours, + self._gating_max_duration_minutes, self._std_initial, self._gain_factor]) + + tx = TxData(CMD_ID, '>Hhhhhhh', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + + +class GetVocAlgorithmTuningParameters(Transfer): + """Gets the parameters to customize the VOC algorithm.""" + + CMD_ID = 0x60d0 + + def pack(self): + return self.tx_data.pack([]) + + tx = TxData(CMD_ID, '>H', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + rx = RxData('>hhhhhh') + + +class SetNoxAlgorithmTuningParameters(Transfer): + """ + Sets the parameters to customize the NOx algorithm. + This configuration is volatile, i.e. the parameters will be + reverted to their default values after a device reset. + """ + + CMD_ID = 0x60e1 + + def __init__(self, index_offset, learning_time_offset_hours, learning_time_gain_hours, gating_max_duration_minutes, + std_initial, gain_factor): + self._index_offset = index_offset + self._learning_time_offset_hours = learning_time_offset_hours + self._learning_time_gain_hours = learning_time_gain_hours + self._gating_max_duration_minutes = gating_max_duration_minutes + self._std_initial = std_initial + self._gain_factor = gain_factor + + def pack(self): + return self.tx_data.pack([self._index_offset, self._learning_time_offset_hours, self._learning_time_gain_hours, + self._gating_max_duration_minutes, self._std_initial, self._gain_factor]) + + tx = TxData(CMD_ID, '>Hhhhhhh', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + + +class GetNoxAlgorithmTuningParameters(Transfer): + """Gets the parameters to customize the NOx algorithm.""" + + CMD_ID = 0x60e1 + + def pack(self): + return self.tx_data.pack([]) + + tx = TxData(CMD_ID, '>H', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + rx = RxData('>hhhhhh') + + +class SetTemperatureAccelerationParameters(Transfer): + """ + This command allows to set custom temperature acceleration parameters of the RH/T engine. + It overwrites the default temperature acceleration parameters of the RH/T engine with custom values. This + configuration is volatile, i.e. the parameters will be reverted to their default values after a device reset. + """ + + CMD_ID = 0x6100 + + def __init__(self, k, p, t1, t2): + self._k = k + self._p = p + self._t1 = t1 + self._t2 = t2 + + def pack(self): + return self.tx_data.pack([self._k, self._p, self._t1, self._t2]) + + tx = TxData(CMD_ID, '>HHHHH', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + + +class SetVocAlgorithmState(Transfer): + """ + Sets the VOC algorithm state previously received with "Get VOC Algorithm State" command. + Allows restoration of the VOC algorithm state to resume operation after a power cycle or device + reset, skipping initial learning phase. By default, the VOC Engine is reset, and the algorithm state is retained if + a measurement is stopped and started again. If the VOC algorithm state shall be reset, a device reset, or a + power cycle can be executed. + """ + + CMD_ID = 0x6181 + + def __init__(self, state): + self._state = state + + def pack(self): + return self.tx_data.pack([self._state]) + + tx = TxData(CMD_ID, '>H8B') + + +class GetVocAlgorithmState(Transfer): + """ + Gets the current VOC algorithm state. + Allows to backup and restore the VOC algorithm state to resume operation after a power cycle or + device reset, skipping initial learning phase. By default, the VOC Engine is reset and the algorithm + state is retained if a measurement is stopped and started again. If the VOC algorithm + state shall be reset, a device reset or a power cycle can be executed. + """ + + CMD_ID = 0x6181 + + def pack(self): + return self.tx_data.pack([]) + + tx = TxData(CMD_ID, '>H', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + rx = RxData('>8B') + + class PerformForcedCo2Recalibration(Transfer): """ - Execute the forced recalibration (FRC) of the CO2 signal on the SCD4x - sensor. See the datasheet of the SCD41 sensor for details how the - forced recalibration shall be used. + Execute the forced recalibration (FRC) of the CO₂. See the datasheet of the + SCD4x sensor for details how the forced recalibration shall be used. """ CMD_ID = 0x6707 @@ -116,6 +340,138 @@ def pack(self): rx = RxData('>H') +class SetCo2SensorAutomaticSelfCalibration(Transfer): + """ + Sets the status of the CO₂ sensor automatic self-calibration (ASC). + The CO₂ sensor supports automatic self calibration (ASC) for long-term + stability of the CO₂ output. This feature can be enabled or disabled. + By default it is enabled. + This configuration is volatile, i.e. the parameter will be + reverted to its default value after a device restart. + """ + + CMD_ID = 0x6711 + + def __init__(self, status): + self._status = status + + def pack(self): + return self.tx_data.pack([self._status]) + + tx = TxData(CMD_ID, '>HH', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + + +class GetCo2SensorAutomaticSelfCalibration(Transfer): + """ + The CO₂ sensor supports automatic self calibration (ASC) for long-term + stability of the CO₂ output. This feature can be enabled or disabled. + By default it is enabled. + This configuration is volatile, i.e. the parameter will be + reverted to its default value after a device restart. + """ + + CMD_ID = 0x6711 + + def pack(self): + return self.tx_data.pack([]) + + tx = TxData(CMD_ID, '>H', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + rx = RxData('>B?') + + +class SetAmbientPressure(Transfer): + """ + The ambient pressure can be used for pressure compensation in the CO₂ + sensor. Setting an ambient pressure overrides any pressure compensation + based on a previously set sensor altitude. Use of this command is + recommended for applications experiencing significant ambient pressure + changes to ensure CO₂ sensor accuracy. Valid input values are between + 700 to 1'200 hPa. The default value is 1013 hPa. + This configuration is volatile, i.e. the parameter will be + reverted to its default value after a device restart. + """ + + CMD_ID = 0x6720 + + def __init__(self, ambient_pressure): + self._ambient_pressure = ambient_pressure + + def pack(self): + return self.tx_data.pack([self._ambient_pressure]) + + tx = TxData(CMD_ID, '>HH', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + + +class GetAmbientPressure(Transfer): + """ + Gets the ambient pressure value. + The ambient pressure can be used for pressure compensation in the CO₂ + sensor. + """ + + CMD_ID = 0x6720 + + def pack(self): + return self.tx_data.pack([]) + + tx = TxData(CMD_ID, '>H', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + rx = RxData('>H') + + +class SetSensorAltitude(Transfer): + """ + The sensor altitude can be used for pressure compensation in the CO₂ + sensor. The default sensor altitude value is set to 0 meters above sea + level. Valid input values are between 0 and 3000m. + This configuration is volatile, i.e. the parameter will be + reverted to its default value after a device reset. + """ + + CMD_ID = 0x6736 + + def __init__(self, altitude): + self._altitude = altitude + + def pack(self): + return self.tx_data.pack([self._altitude]) + + tx = TxData(CMD_ID, '>HH', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + + +class GetSensorAltitude(Transfer): + """ + Gets the current sensor altitude. + The sensor altitude can be used for pressure compensation in the CO₂ + sensor. + """ + + CMD_ID = 0x6736 + + def pack(self): + return self.tx_data.pack([]) + + tx = TxData(CMD_ID, '>H', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + rx = RxData('>H') + + +class ActivateShtHeater(Transfer): + """ + This command allows to use the inbuilt heater in SHT sensor + to reverse creep at high humidity. + This command activates the SHT sensor heater with 200mW for 1s. + The heater is then automatically deactivated again. + Wait at least 20s after this command before starting a measurement to get + coherent temperature values (heating consequence to disappear). + """ + + CMD_ID = 0x6765 + + def pack(self): + return self.tx_data.pack([]) + + tx = TxData(CMD_ID, '>H', device_busy_delay=1.3, slave_address=None, ignore_ack=False) + + class GetProductName(Transfer): """Gets the product name from the device.""" @@ -140,13 +496,47 @@ def pack(self): rx = RxData('>32B') -class GetVersion(Transfer): - """Gets the version information for the hardware, firmware and communication protocol.""" +class ReadDeviceStatus(Transfer): + """ + Reads the current device status. + Use this command to get detailed information about the device status. + The device status is encoded in flags. Each device status flag + represents a single bit in a 32-bit integer value. If more than one + error is present, the device status register value is the sum of the + corresponding flag values. For details about the available flags, + refer to the device status flags documentation in the data sheet. + """ + + CMD_ID = 0xd206 + + def pack(self): + return self.tx_data.pack([]) + + tx = TxData(CMD_ID, '>H', device_busy_delay=0.02, slave_address=None, ignore_ack=False) + rx = RxData('>I') + + +class ReadAndClearDeviceStatus(Transfer): + """ + Reads the current device status (like command 0xD206 "Read Device Status") and afterwards clears + all flags. + """ - CMD_ID = 0xd000 + CMD_ID = 0xd210 def pack(self): return self.tx_data.pack([]) tx = TxData(CMD_ID, '>H', device_busy_delay=0.02, slave_address=None, ignore_ack=False) - rx = RxData('>BB?BBBBB') + rx = RxData('>I') + + +class DeviceReset(Transfer): + """Executes a reset on the device. This has the same effect as a power cycle.""" + + CMD_ID = 0xd304 + + def pack(self): + return self.tx_data.pack([]) + + tx = TxData(CMD_ID, '>H', device_busy_delay=1.2, slave_address=None, ignore_ack=False) diff --git a/sensirion_i2c_sen66/device.py b/sensirion_i2c_sen66/device.py index aadb7c2..7b69e0d 100644 --- a/sensirion_i2c_sen66/device.py +++ b/sensirion_i2c_sen66/device.py @@ -7,7 +7,7 @@ # # Generator: sensirion-driver-generator 1.0.1 # Product: sen66 -# Model-Version: 1.2.0 +# Model-Version: 1.3.0 # """ The class Sen66DeviceBase implements the low level interface of the sensor. @@ -17,14 +17,23 @@ from sensirion_driver_adapters.transfer import execute_transfer from sensirion_driver_support_types.mixin_access import MixinAccess -from sensirion_i2c_sen66.commands import (DeviceReset, GetDataReady, GetProductName, GetSerialNumber, GetVersion, - PerformForcedCo2Recalibration, ReadMeasuredValuesAsIntegers, - StartContinuousMeasurement, StopMeasurement) +from sensirion_i2c_sen66.commands import (ActivateShtHeater, DeviceReset, DeviceStatus, GetAmbientPressure, + GetCo2SensorAutomaticSelfCalibration, GetDataReady, + GetNoxAlgorithmTuningParameters, GetProductName, GetSensorAltitude, + GetSerialNumber, GetVocAlgorithmState, GetVocAlgorithmTuningParameters, + PerformForcedCo2Recalibration, ReadAndClearDeviceStatus, ReadDeviceStatus, + ReadMeasuredRawValues, ReadMeasuredValuesAsIntegers, + ReadNumberConcentrationValuesAsIntegers, SetAmbientPressure, + SetCo2SensorAutomaticSelfCalibration, SetNoxAlgorithmTuningParameters, + SetSensorAltitude, SetTemperatureAccelerationParameters, + SetTemperatureOffsetParameters, SetVocAlgorithmState, + SetVocAlgorithmTuningParameters, StartContinuousMeasurement, + StartFanCleaning, StopMeasurement) -from sensirion_i2c_sen66.result_types import (SignalCo2, SignalHumidity, SignalMassConcentrationPm10p0, - SignalMassConcentrationPm1p0, SignalMassConcentrationPm2p5, - SignalMassConcentrationPm4p0, SignalNoxIndex, SignalTemperature, - SignalVocIndex) +from sensirion_i2c_sen66.result_types import (SignalCo2, SignalHumidity, SignalMassConcentrationPm0p5, + SignalMassConcentrationPm10p0, SignalMassConcentrationPm1p0, + SignalMassConcentrationPm2p5, SignalMassConcentrationPm4p0, + SignalNoxIndex, SignalTemperature, SignalVocIndex) class Sen66DeviceBase: @@ -37,17 +46,12 @@ def __init__(self, channel): def channel(self): return self._channel - def device_reset(self): - """Executes a reset on the device. This has the same effect as a power cycle.""" - transfer = DeviceReset() - return execute_transfer(self._channel, transfer) - def start_continuous_measurement(self): """ Starts a continuous measurement. - After power up, wait at least 500 ms before sending this - command. After sending this command, wait at least 1100 ms before - reading measurements. + After starting the measurement, it takes some time (~1.1s) until the + first measurement results are available. You could poll with the command + "Get Data Ready" to check when the results are ready to read. This command is only available in idle mode. If the device is already in any measure mode, this command has no effect. """ @@ -80,12 +84,12 @@ def get_data_ready(self): def read_measured_values_as_integers(self): """ Returns the measured values. - The command 0x0202 \"Get Data Ready\" can be used to check if new + The command "Get Data Ready" can be used to check if new data is available since the last read operation. If no new data is available, the previous values will be returned again. If no data is available at all (e.g. measurement not running for at least one - second), all values will be at their upper limit (0xFFFF for `uint16`, - 0x7FFF for `int16`). + second), all values will be at their upper limit (0xFFFF for uint16, + 0x7FFF for int16). :return mass_concentration_pm1p0: Value is scaled with factor 10: PM1.0 [µg/m³] = value / 10 @@ -114,7 +118,7 @@ def read_measured_values_as_integers(self): the first 10..11 seconds after power-on or device reset, this value will be 0x7FFF as well.* :return co2: - CO2 concentration [ppm] + CO₂ concentration [ppm] *Note: If this value is unknown, 0xFFFF is returned. During the first 5..6 seconds after power-on or device reset, this value will be 0xFFFF as well.* @@ -122,18 +126,343 @@ def read_measured_values_as_integers(self): transfer = ReadMeasuredValuesAsIntegers() return execute_transfer(self._channel, transfer) + def read_number_concentration_values_as_integers(self): + """ + Returns the measured number concentration values. + The command "Get Data Ready" can be used to check if new + data is available since the last read operation. If no new data is + available, the previous values will be returned again. If no data + is available at all (e.g. measurement not running for at least one + second), all values will be at their upper limit (0xFFFF for uint16). + + :return number_concentration_pm0p5: + Value is scaled with factor 10: PM0.5 [particles/cm³] = value / 10 + *Note: If this value is unknown, 0xFFFF is returned.* + :return number_concentration_pm1p0: + Value is scaled with factor 10: PM1.0 [particles/cm³] = value / 10 + *Note: If this value is unknown, 0xFFFF is returned.* + :return number_concentration_pm2p5: + Value is scaled with factor 10: PM2.5 [particles/cm³] = value / 10 + *Note: If this value is unknown, 0xFFFF is returned.* + :return number_concentration_pm4p0: + Value is scaled with factor 10: PM4.0 [particles/cm³] = value / 10 + *Note: If this value is unknown, 0xFFFF is returned.* + :return number_concentration_pm10p0: + Value is scaled with factor 10: PM10.0 [particles/cm³] = value / 10 + *Note: If this value is unknown, 0xFFFF is returned.* + """ + transfer = ReadNumberConcentrationValuesAsIntegers() + return execute_transfer(self._channel, transfer) + + def read_measured_raw_values(self): + """ + Returns the measured raw values. + The command "Get Data Ready" can be used to check if new + data is available since the last read operation. If no new data is + available, the previous values will be returned again. If no data + is available at all (e.g. measurement not running for at least one + second), all values will be at their upper limit (0xFFFF for uint16, + 0x7FFF for int16). + + :return raw_humidity: + Value is scaled with factor 100: RH [%] = value / 100 + *Note: If this value is unknown, 0x7FFF is returned.* + :return raw_temperature: + Value is scaled with factor 200: T [°C] = value / 200 + *Note: If this value is unknown, 0x7FFF is returned.* + :return raw_voc: + Raw measured VOC ticks without scale factor. + *Note: If this value is unknown, 0xFFFF is returned.* + :return raw_nox: + Raw measured NOx ticks without scale factor. + *Note: If this value is unknown, 0xFFFF is returned. During + the first 10..11 seconds after power-on or device reset, this + value will be 0xFFFF as well.* + :return raw_co2: + Not interpolated CO₂ concentration [ppm] updated every five + seconds. + *Note: If this value is unknown, 0xFFFF is returned. During the + first 5..6 seconds after power-on or device reset, this value + will be 0xFFFF as well.* + """ + transfer = ReadMeasuredRawValues() + return execute_transfer(self._channel, transfer) + + def start_fan_cleaning(self): + """ + This command triggers fan cleaning. The fan is set to the maximum + speed for 10 seconds and then automatically stopped. Wait at least 10s + after this command before starting a measurement. + + .. note:: + This command is only available in idle mode. + """ + transfer = StartFanCleaning() + return execute_transfer(self._channel, transfer) + + def set_temperature_offset_parameters(self, offset, slope, time_constant, slot): + """ + This command allows to compensate temperature effects of the + design-in at customer side by applying custom temperature offsets + to the ambient temperature. The compensated ambient temperature is + calculated as follows: + T_Ambient_Compensated = T_Ambient + (slope * T_Ambient) + offset + Where slope and offset are the values set with this command, + smoothed with the specified time constant. + All temperatures (T_Ambient_Compensated, T_Ambient and offset) + are represented in °C. + There are 5 temperature offset slots available that all contribute + additively to T_Ambient_Compensated. The default values for + the temperature offset parameters are all zero, meaning that + T_Ambient_Compensated is equal to T_Ambient by default. + The parameters can be changed in any state of the device, i.e. both in + idle mode and in measure mode. + + :param offset: + Constant temperature offset scaled with factor 200 (T [°C] = value / 200). + :param slope: + Normalized temperature offset slope scaled with factor 10000 (applied factor = value / 10000). + :param time_constant: + The time constant determines how fast the new slope and offset will be applied. + After the specified value in seconds, 63% of the new slope and offset are applied. + A time constant of zero means the new values will be applied immediately + (within the next measure interval of 1 second). + :param slot: + The temperature offset slot to be modified. + Valid values are 0 .. 4. If the value is outside this range, + the parameters will not be applied. + + .. note:: + This configuration is volatile, i.e. the parameters will be reverted to their default value of zero + after a device reset. + + :Example: + .. code-block:: python + + sensor.set_temperature_offset_parameters(1, 10, 1, 0) + + """ + transfer = SetTemperatureOffsetParameters(offset, slope, time_constant, slot) + return execute_transfer(self._channel, transfer) + + def set_voc_algorithm_tuning_parameters(self, index_offset, learning_time_offset_hours, learning_time_gain_hours, + gating_max_duration_minutes, std_initial, gain_factor): + """ + Sets the parameters to customize the VOC algorithm. + This configuration is volatile, i.e. the parameters will be + reverted to their default values after a device reset. + + :param index_offset: + VOC index representing typical (average) conditions. Allowed values are in range 1..250. The default + value is 100. + :param learning_time_offset_hours: + Time constant to estimate the VOC algorithm offset from the history in hours. Past events will be + forgotten after about twice the learning time. Allowed values are in range 1..1000. The default + value is 12 hours. + :param learning_time_gain_hours: + Time constant to estimate the VOC algorithm gain from the history in hours. Past events will be + forgotten after about twice the learning time. Allowed values are in range 1..1000. The default + value is 12 hours. + :param gating_max_duration_minutes: + Maximum duration of gating in minutes (freeze of estimator during high VOC index signal). Set to + zero to disable the gating. Allowed values are in range 0..3000. The default value is 180 minutes + :param std_initial: + Initial estimate for standard deviation. Lower value boosts events during initial learning period, + but may result in larger device-to-device variations. Allowed values are in range 10..5000. The + default value is 50. + :param gain_factor: + Gain factor to amplify or to attenuate the VOC index output. Allowed values are in range 1..1000. + The default value is 230. + + .. note:: + This command is available only in idle mode. In measure mode, this command has no effect. In + addition, it has no effect if at least one parameter is outside the specified range. + + :Example: + .. code-block:: python + + sensor.set_voc_algorithm_tuning_parameters(100, 12, 12, 180, 50, 230) + + """ + transfer = SetVocAlgorithmTuningParameters(index_offset, learning_time_offset_hours, learning_time_gain_hours, + gating_max_duration_minutes, std_initial, gain_factor) + return execute_transfer(self._channel, transfer) + + def get_voc_algorithm_tuning_parameters(self): + """ + Gets the parameters to customize the VOC algorithm. + + :return index_offset: + VOC index representing typical (average) conditions. + :return learning_time_offset_hours: + Time constant to estimate the VOC algorithm offset from the history in hours. Past events will be + forgotten after about twice the learning time. + :return learning_time_gain_hours: + Time constant to estimate the VOC algorithm gain from the history in hours. Past events will be + forgotten after about twice the learning time. + :return gating_max_duration_minutes: + Maximum duration of gating in minutes (freeze of estimator during high VOC index signal). Zero + disables the gating. + :return std_initial: + Initial estimate for standard deviation. Lower value boosts events during initial learning period, + but may result in larger device-to-device variations. + :return gain_factor: + Gain factor to amplify or to attenuate the VOC index output. + + .. note:: + This command is only available in idle mode. + """ + transfer = GetVocAlgorithmTuningParameters() + return execute_transfer(self._channel, transfer) + + def set_nox_algorithm_tuning_parameters(self, index_offset, learning_time_offset_hours, learning_time_gain_hours, + gating_max_duration_minutes, std_initial, gain_factor): + """ + Sets the parameters to customize the NOx algorithm. + This configuration is volatile, i.e. the parameters will be + reverted to their default values after a device reset. + + :param index_offset: + NOx index representing typical (average) conditions. Allowed values are in range 1..250. The default + value is 1. + :param learning_time_offset_hours: + Time constant to estimate the NOx algorithm offset from the history in hours. Past events will be + forgotten after about twice the learning time. Allowed values are in range 1..1000. The default + value is 12 hours. + :param learning_time_gain_hours: + The time constant to estimate the NOx algorithm gain from the history has no impact for NOx. This + parameter is still in place for consistency reasons with the VOC tuning parameters command. This + parameter must always be set to 12 hours. + :param gating_max_duration_minutes: + Maximum duration of gating in minutes (freeze of estimator during high NOx index signal). Set to + zero to disable the gating. Allowed values are in range 0..3000. The default value is 720 minutes. + :param std_initial: + The initial estimate for standard deviation parameter has no impact for NOx. This parameter is still + in place for consistency reasons with the VOC tuning parameters command. This parameter must always + be set to 50. + :param gain_factor: + Gain factor to amplify or to attenuate the NOx index output. Allowed values are in range 1..1000. + The default value is 230. + + .. note:: + This command is available only in idle mode. In measure mode, this command has no effect. In + addition, it has no effect if at least one parameter is outside the specified range. + + :Example: + .. code-block:: python + + sensor.set_nox_algorithm_tuning_parameters(1, 12, 12, 720, 50, 230) + + """ + transfer = SetNoxAlgorithmTuningParameters(index_offset, learning_time_offset_hours, learning_time_gain_hours, + gating_max_duration_minutes, std_initial, gain_factor) + return execute_transfer(self._channel, transfer) + + def get_nox_algorithm_tuning_parameters(self): + """ + Gets the parameters to customize the NOx algorithm. + + :return index_offset: + NOx index representing typical (average) conditions. + :return learning_time_offset_hours: + Time constant to estimate the NOx algorithm offset from the history in hours. Past events will be + forgotten after about twice the learning time. + :return learning_time_gain_hours: + The time constant to estimate the NOx algorithm gain from the history has no impact for NOx. This + parameter is still in place for consistency reasons with the VOC tuning parameters command. + :return gating_max_duration_minutes: + Maximum duration of gating in minutes (freeze of estimator during high NOx index signal). Zero + disables the gating. + :return std_initial: + The initial estimate for standard deviation has no impact for NOx. This parameter is still in place + for consistency reasons with the VOC tuning parameters command. + :return gain_factor: + Gain factor to amplify or to attenuate the NOx index output. + + .. note:: + This command is available only in idle mode. + """ + transfer = GetNoxAlgorithmTuningParameters() + return execute_transfer(self._channel, transfer) + + def set_temperature_acceleration_parameters(self, k, p, t1, t2): + """ + This command allows to set custom temperature acceleration parameters of the RH/T engine. + It overwrites the default temperature acceleration parameters of the RH/T engine with custom values. This + configuration is volatile, i.e. the parameters will be reverted to their default values after a device reset. + + :param k: + Filter constant K scaled with factor 10 (K = value / 10). + :param p: + Filter constant P scaled with factor 10 (P = value / 10). + :param t1: + Time constant T1 scaled with factor 10 (T1 [s] = value / 10). + :param t2: + Time constant T2 scaled with factor 10 (T2 [s] = value / 10). + + .. note:: + The command is only available in idle mode. + + :Example: + .. code-block:: python + + sensor.set_temperature_acceleration_parameters(1, 1, 1, 1) + + """ + transfer = SetTemperatureAccelerationParameters(k, p, t1, t2) + return execute_transfer(self._channel, transfer) + + def set_voc_algorithm_state(self, state): + """ + Sets the VOC algorithm state previously received with "Get VOC Algorithm State" command. + Allows restoration of the VOC algorithm state to resume operation after a power cycle or device + reset, skipping initial learning phase. By default, the VOC Engine is reset, and the algorithm state is retained if + a measurement is stopped and started again. If the VOC algorithm state shall be reset, a device reset, or a + power cycle can be executed. + + :param state: + VOC algorithm state to restore. + + .. note:: + This command is only available in idle mode and the state will be applied only once when starting + the next measurement. In measure mode, this command has no effect. + """ + transfer = SetVocAlgorithmState(state) + return execute_transfer(self._channel, transfer) + + def get_voc_algorithm_state(self): + """ + Gets the current VOC algorithm state. + Allows to backup and restore the VOC algorithm state to resume operation after a power cycle or + device reset, skipping initial learning phase. By default, the VOC Engine is reset and the algorithm + state is retained if a measurement is stopped and started again. If the VOC algorithm + state shall be reset, a device reset or a power cycle can be executed. + + :return state: + Current VOC algorithm state. + + .. note:: + This command can be used either in measure mode or in idle mode (which will then return the state at the + time when the measurement was stopped). In measure mode, the state can be read each measure interval to + always have the latest state available, even in case of a sudden power loss. + """ + transfer = GetVocAlgorithmState() + return execute_transfer(self._channel, transfer)[0] + def perform_forced_co2_recalibration(self, target_co2_concentration): """ - Execute the forced recalibration (FRC) of the CO2 signal on the SCD4x - sensor. See the datasheet of the SCD41 sensor for details how the - forced recalibration shall be used. + Execute the forced recalibration (FRC) of the CO₂. See the datasheet of the + SCD4x sensor for details how the forced recalibration shall be used. :param target_co2_concentration: - Target CO2 concentration [ppm] of the test setup. + Target CO₂ concentration [ppm] of the test setup. :return correction: - Correction value as received from the SCD [ppm CO2]. Offset is 0x8000, if the recalibration has - failed this value is 0xFFFF. + Correction value as received from the SCD [ppm CO₂]. + FRC correction [ppm CO₂] is calculated as follows: + FRC = return_value - 0x8000 + If the recalibration has failed this returned value + is 0xFFFF. .. note:: After power-on wait at least 1000 ms and after stopping a measurement 600 ms before sending this @@ -143,6 +472,144 @@ def perform_forced_co2_recalibration(self, target_co2_concentration): transfer = PerformForcedCo2Recalibration(target_co2_concentration) return execute_transfer(self._channel, transfer)[0] + def set_co2_sensor_automatic_self_calibration(self, status): + """ + Sets the status of the CO₂ sensor automatic self-calibration (ASC). + The CO₂ sensor supports automatic self calibration (ASC) for long-term + stability of the CO₂ output. This feature can be enabled or disabled. + By default it is enabled. + This configuration is volatile, i.e. the parameter will be + reverted to its default value after a device restart. + + :param status: + Set to true (0x0001) to enable or false (0x0000) to disable the automatic CO₂ measurement self + calibration feature. High byte of uint16 is padding and always 0x00. + + .. note:: + This command is only available in idle mode. + + :Example: + .. code-block:: python + + sensor.set_co2_sensor_automatic_self_calibration(0) + + """ + transfer = SetCo2SensorAutomaticSelfCalibration(status) + return execute_transfer(self._channel, transfer) + + def get_co2_sensor_automatic_self_calibration(self): + """ + The CO₂ sensor supports automatic self calibration (ASC) for long-term + stability of the CO₂ output. This feature can be enabled or disabled. + By default it is enabled. + This configuration is volatile, i.e. the parameter will be + reverted to its default value after a device restart. + + :return padding: + Padding byte, always 0x00. + :return status: + Is set true (0x01) if the automatic self calibration is enabled or false (0x00) if the automatic + self calibration is disabled. + + .. note:: + This command is only available in idle mode. + """ + transfer = GetCo2SensorAutomaticSelfCalibration() + return execute_transfer(self._channel, transfer) + + def set_ambient_pressure(self, ambient_pressure): + """ + The ambient pressure can be used for pressure compensation in the CO₂ + sensor. Setting an ambient pressure overrides any pressure compensation + based on a previously set sensor altitude. Use of this command is + recommended for applications experiencing significant ambient pressure + changes to ensure CO₂ sensor accuracy. Valid input values are between + 700 to 1'200 hPa. The default value is 1013 hPa. + This configuration is volatile, i.e. the parameter will be + reverted to its default value after a device restart. + + :param ambient_pressure: + Ambient pressure [hPa] to be used for pressure compensation. + + .. note:: + This command can be used in any state of the device, i.e. both in idle + mode and in measure mode. + + :Example: + .. code-block:: python + + sensor.set_ambient_pressure(1013) + + """ + transfer = SetAmbientPressure(ambient_pressure) + return execute_transfer(self._channel, transfer) + + def get_ambient_pressure(self): + """ + Gets the ambient pressure value. + The ambient pressure can be used for pressure compensation in the CO₂ + sensor. + + :return ambient_pressure: + Currently used ambient pressure [hPa] for pressure compensation. + + .. note:: + This command can be used in any state of the device, i.e. both in idle + mode and in measure mode. + """ + transfer = GetAmbientPressure() + return execute_transfer(self._channel, transfer)[0] + + def set_sensor_altitude(self, altitude): + """ + The sensor altitude can be used for pressure compensation in the CO₂ + sensor. The default sensor altitude value is set to 0 meters above sea + level. Valid input values are between 0 and 3000m. + This configuration is volatile, i.e. the parameter will be + reverted to its default value after a device reset. + + :param altitude: + Sensor altitude [m], valid input between 0 and 3000m. + + :Example: + .. code-block:: python + + sensor.set_sensor_altitude(0) + + """ + transfer = SetSensorAltitude(altitude) + return execute_transfer(self._channel, transfer) + + def get_sensor_altitude(self): + """ + Gets the current sensor altitude. + The sensor altitude can be used for pressure compensation in the CO₂ + sensor. + + :return altitude: + Current sensor altitude [m]. + + .. note:: + This command is only available in idle mode. + """ + transfer = GetSensorAltitude() + return execute_transfer(self._channel, transfer)[0] + + def activate_sht_heater(self): + """ + This command allows to use the inbuilt heater in SHT sensor + to reverse creep at high humidity. + This command activates the SHT sensor heater with 200mW for 1s. + The heater is then automatically deactivated again. + Wait at least 20s after this command before starting a measurement to get + coherent temperature values (heating consequence to disappear). + + .. note:: + This command is only available in idle mode. + """ + transfer = ActivateShtHeater() + return execute_transfer(self._channel, transfer) + def get_product_name(self): """ Gets the product name from the device. @@ -165,28 +632,46 @@ def get_serial_number(self): transfer = GetSerialNumber() return execute_transfer(self._channel, transfer)[0] - def get_version(self): - """ - Gets the version information for the hardware, firmware and communication protocol. - - :return firmware_major: - Firmware major version number. - :return firmware_minor: - Firmware minor version number. - :return firmware_debug: - Firmware debug state. If the debug state is set, the firmware is in development. - :return hardware_major: - Hardware major version number. - :return hardware_minor: - Hardware minor version number. - :return protocol_major: - Protocol major version number. - :return protocol_minor: - Protocol minor version number. - :return padding: - Padding byte, ignore this. + def read_device_status(self): + """ + Reads the current device status. + Use this command to get detailed information about the device status. + The device status is encoded in flags. Each device status flag + represents a single bit in a 32-bit integer value. If more than one + error is present, the device status register value is the sum of the + corresponding flag values. For details about the available flags, + refer to the device status flags documentation in the data sheet. + + :return device_status: + Device status (32 flags as an integer value). For details, please refer to the device status flags + documentation in the datasheet. + + .. note:: + The status flags of type "Error" are sticky, i.e. they are not cleared automatically even if the + error condition no longer exists. So they can only be cleared manually with the command + "Read And Clear Device Status" or with a device reset. All other flags are not sticky, i.e. they + are cleared automatically if the trigger condition disappears. + """ + transfer = ReadDeviceStatus() + res_0 = execute_transfer(self._channel, transfer)[0] + return DeviceStatus(res_0) + + def read_and_clear_device_status(self): + """ + Reads the current device status (like command 0xD206 "Read Device Status") and afterwards clears + all flags. + + :return device_status: + Device status (32 flags as an integer value) **before** clearing it. For details, please refer to + the device status flags documentation. """ - transfer = GetVersion() + transfer = ReadAndClearDeviceStatus() + res_0 = execute_transfer(self._channel, transfer)[0] + return DeviceStatus(res_0) + + def device_reset(self): + """Executes a reset on the device. This has the same effect as a power cycle.""" + transfer = DeviceReset() return execute_transfer(self._channel, transfer) @@ -204,13 +689,13 @@ def read_measured_values(self): Read measured values and apply scaling as defined in datasheet. :return mass_concentration_pm1p0: - Mass concentration for particles smaller than 1.0 um. + Mass concentration for particles smaller than 1.0 μm. :return mass_concentration_pm2p5: - Mass concentration for particles smaller than 2.5 um. + Mass concentration for particles smaller than 2.5 μm. :return mass_concentration_pm4p0: - Mass concentration for particles smaller than 4.0 um. + Mass concentration for particles smaller than 4.0 μm. :return mass_concentration_pm10p0: - Mass concentration for particles smaller than 10.0 um. + Mass concentration for particles smaller than 10.0 μm. :return humidity: Measured humidity in %RH. :return temperature: @@ -232,3 +717,27 @@ def read_measured_values(self): SignalMassConcentrationPm10p0(mass_concentration_pm10p0_raw), SignalHumidity(humidity_raw), SignalTemperature(temperature_raw), SignalVocIndex(voc_index_raw), SignalNoxIndex(nox_index_raw), SignalCo2(co2_raw)) + + def read_number_concentration_values(self): + """ + Read measured number concentration values and apply scaling as defined in datasheet. + + :return mass_concentration_pm0p5: + Mass concentration for particles smaller than 1.0 μm. + :return mass_concentration_pm1p0: + Mass concentration for particles smaller than 1.0 μm. + :return mass_concentration_pm2p5: + Mass concentration for particles smaller than 2.5 μm. + :return mass_concentration_pm4p0: + Mass concentration for particles smaller than 4.0 μm. + :return mass_concentration_pm10p0: + Mass concentration for particles smaller than 10.0 μm. + """ + (mass_concentration_pm0p5_raw, mass_concentration_pm1p0_raw, mass_concentration_pm2p5_raw, + mass_concentration_pm4p0_raw, mass_concentration_pm10p0_raw + ) = self.read_number_concentration_values_as_integers() + return (SignalMassConcentrationPm0p5(mass_concentration_pm0p5_raw), + SignalMassConcentrationPm1p0(mass_concentration_pm1p0_raw), + SignalMassConcentrationPm2p5(mass_concentration_pm2p5_raw), + SignalMassConcentrationPm4p0(mass_concentration_pm4p0_raw), + SignalMassConcentrationPm10p0(mass_concentration_pm10p0_raw)) diff --git a/sensirion_i2c_sen66/result_types.py b/sensirion_i2c_sen66/result_types.py index f16f478..7325c28 100644 --- a/sensirion_i2c_sen66/result_types.py +++ b/sensirion_i2c_sen66/result_types.py @@ -7,7 +7,7 @@ # # Generator: sensirion-driver-generator 1.0.1 # Product: sen66 -# Model-Version: 1.2.0 +# Model-Version: 1.3.0 # """ The signal classes specify transformations of the raw sensor signals into a meaningful units. @@ -17,8 +17,22 @@ from sensirion_driver_support_types.signals import AbstractSignal +class SignalMassConcentrationPm0p5(AbstractSignal): + """Mass concentration for particles smaller than 0.5 μm""" + + def __init__(self, mass_concentration_pm0p5_raw): + self._mass_concentration_pm0p5 = mass_concentration_pm0p5_raw / 10.0 + + @property + def value(self): + return self._mass_concentration_pm0p5 + + def __str__(self): + return '{0:.2f}'.format(self.value) + + class SignalMassConcentrationPm1p0(AbstractSignal): - """Mass concentration for particles smaller than 1.0 um""" + """Mass concentration for particles smaller than 1.0 μm""" def __init__(self, mass_concentration_pm1p0_raw): self._mass_concentration_pm1p0 = mass_concentration_pm1p0_raw / 10.0 @@ -32,7 +46,7 @@ def __str__(self): class SignalMassConcentrationPm2p5(AbstractSignal): - """Mass concentration for particles smaller than 2.5 um""" + """Mass concentration for particles smaller than 2.5 μm""" def __init__(self, mass_concentration_pm2p5_raw): self._mass_concentration_pm2p5 = mass_concentration_pm2p5_raw / 10.0 @@ -46,7 +60,7 @@ def __str__(self): class SignalMassConcentrationPm4p0(AbstractSignal): - """Mass concentration for particles smaller than 4.0 um""" + """Mass concentration for particles smaller than 4.0 μm""" def __init__(self, mass_concentration_pm4p0_raw): self._mass_concentration_pm4p0 = mass_concentration_pm4p0_raw / 10.0 @@ -60,7 +74,7 @@ def __str__(self): class SignalMassConcentrationPm10p0(AbstractSignal): - """Mass concentration for particles smaller than 10.0 um""" + """Mass concentration for particles smaller than 10.0 μm""" def __init__(self, mass_concentration_pm10p0_raw): self._mass_concentration_pm10p0 = mass_concentration_pm10p0_raw / 10.0 @@ -133,12 +147,12 @@ class SignalCo2(AbstractSignal): """Measured CO2 in ppm.""" def __init__(self, co2_raw): - self._co2 = co2_raw / 1.0 + self._co2 = co2_raw @property def value(self): return self._co2 def __str__(self): - return '{0:.2f}'.format(self.value) + return '{0}'.format(self.value) diff --git a/sensirion_i2c_sen66/version.py b/sensirion_i2c_sen66/version.py index 338edf5..e5ed854 100644 --- a/sensirion_i2c_sen66/version.py +++ b/sensirion_i2c_sen66/version.py @@ -2,4 +2,4 @@ # -*- coding: utf-8 -*- from __future__ import absolute_import, division, print_function -version = "0.1.0" +version = "1.0.0" diff --git a/tests/test_sen66.py b/tests/test_sen66.py index 541cf08..798679b 100644 --- a/tests/test_sen66.py +++ b/tests/test_sen66.py @@ -7,7 +7,7 @@ # # Generator: sensirion-driver-generator 1.0.1 # Product: sen66 -# Model-Version: 1.2.0 +# Model-Version: 1.3.0 # import pytest @@ -42,27 +42,117 @@ def test_get_serial_number1(sensor): ) -def test_get_version1(sensor): - (firmware_major, firmware_minor, firmware_debug, hardware_major, hardware_minor, protocol_major, protocol_minor, - padding - ) = sensor.get_version() - print(f"firmware_major: {firmware_major}; " - f"firmware_minor: {firmware_minor}; " - f"firmware_debug: {firmware_debug}; " - f"hardware_major: {hardware_major}; " - f"hardware_minor: {hardware_minor}; " - f"protocol_major: {protocol_major}; " - f"protocol_minor: {protocol_minor}; " - f"padding: {padding}; " +def test_device_reset1(sensor): + sensor.device_reset() + + +def test_start_fan_cleaning1(sensor): + sensor.start_fan_cleaning() + + +def test_set_temperature_offset_parameters1(sensor): + sensor.set_temperature_offset_parameters(1, 10, 1, 0) + + +def test_set_voc_algorithm_tuning_parameters1(sensor): + sensor.set_voc_algorithm_tuning_parameters(100, 12, 12, 180, 50, 230) + + +def test_get_voc_algorithm_tuning_parameters1(sensor): + (index_offset, learning_time_offset_hours, learning_time_gain_hours, gating_max_duration_minutes, std_initial, + gain_factor + ) = sensor.get_voc_algorithm_tuning_parameters() + print(f"index_offset: {index_offset}; " + f"learning_time_offset_hours: {learning_time_offset_hours}; " + f"learning_time_gain_hours: {learning_time_gain_hours}; " + f"gating_max_duration_minutes: {gating_max_duration_minutes}; " + f"std_initial: {std_initial}; " + f"gain_factor: {gain_factor}; " ) -def test_device_reset1(sensor): - sensor.device_reset() +def test_set_nox_algorithm_tuning_parameters1(sensor): + sensor.set_nox_algorithm_tuning_parameters(1, 12, 12, 720, 50, 230) + + +def test_get_nox_algorithm_tuning_parameters1(sensor): + (index_offset, learning_time_offset_hours, learning_time_gain_hours, gating_max_duration_minutes, std_initial, + gain_factor + ) = sensor.get_nox_algorithm_tuning_parameters() + print(f"index_offset: {index_offset}; " + f"learning_time_offset_hours: {learning_time_offset_hours}; " + f"learning_time_gain_hours: {learning_time_gain_hours}; " + f"gating_max_duration_minutes: {gating_max_duration_minutes}; " + f"std_initial: {std_initial}; " + f"gain_factor: {gain_factor}; " + ) + + +def test_set_temperature_acceleration_parameters1(sensor): + sensor.set_temperature_acceleration_parameters(1, 1, 1, 1) + + +def test_get_voc_algorithm_state1(sensor): + state = sensor.get_voc_algorithm_state() + print(f"state: {state}; " + ) + + +def test_set_co2_sensor_automatic_self_calibration1(sensor): + sensor.set_co2_sensor_automatic_self_calibration(0) + + +def test_get_co2_sensor_automatic_self_calibration1(sensor): + (padding, status + ) = sensor.get_co2_sensor_automatic_self_calibration() + print(f"padding: {padding}; " + f"status: {status}; " + ) + + +def test_set_ambient_pressure1(sensor): + sensor.set_ambient_pressure(1013) + + +def test_get_ambient_pressure1(sensor): + ambient_pressure = sensor.get_ambient_pressure() + print(f"ambient_pressure: {ambient_pressure}; " + ) + + +def test_set_sensor_altitude1(sensor): + sensor.set_sensor_altitude(0) + + +def test_get_sensor_altitude1(sensor): + altitude = sensor.get_sensor_altitude() + print(f"altitude: {altitude}; " + ) + + +def test_activate_sht_heater1(sensor): + sensor.activate_sht_heater() + + +def test_read_device_status1(sensor): + device_status = sensor.read_device_status() + print(f"device_status: {device_status}; " + ) + + +def test_read_and_clear_device_status1(sensor): + device_status = sensor.read_and_clear_device_status() + print(f"device_status: {device_status}; " + ) def test_start_continuous_measurement1(sensor): sensor.start_continuous_measurement() + (padding, data_ready + ) = sensor.get_data_ready() + print(f"padding: {padding}; " + f"data_ready: {data_ready}; " + ) (mass_concentration_pm1p0, mass_concentration_pm2p5, mass_concentration_pm4p0, mass_concentration_pm10p0, humidity, temperature, voc_index, nox_index, co2 ) = sensor.read_measured_values() @@ -89,10 +179,35 @@ def test_start_continuous_measurement1(sensor): f"nox_index: {nox_index}; " f"co2: {co2}; " ) - (padding, data_ready - ) = sensor.get_data_ready() - print(f"padding: {padding}; " - f"data_ready: {data_ready}; " + (mass_concentration_pm0p5, mass_concentration_pm1p0, mass_concentration_pm2p5, mass_concentration_pm4p0, + mass_concentration_pm10p0 + ) = sensor.read_number_concentration_values() + print(f"mass_concentration_pm0p5: {mass_concentration_pm0p5}; " + f"mass_concentration_pm1p0: {mass_concentration_pm1p0}; " + f"mass_concentration_pm2p5: {mass_concentration_pm2p5}; " + f"mass_concentration_pm4p0: {mass_concentration_pm4p0}; " + f"mass_concentration_pm10p0: {mass_concentration_pm10p0}; " + ) + (number_concentration_pm0p5, number_concentration_pm1p0, number_concentration_pm2p5, number_concentration_pm4p0, + number_concentration_pm10p0 + ) = sensor.read_number_concentration_values_as_integers() + print(f"number_concentration_pm0p5: {number_concentration_pm0p5}; " + f"number_concentration_pm1p0: {number_concentration_pm1p0}; " + f"number_concentration_pm2p5: {number_concentration_pm2p5}; " + f"number_concentration_pm4p0: {number_concentration_pm4p0}; " + f"number_concentration_pm10p0: {number_concentration_pm10p0}; " + ) + (raw_humidity, raw_temperature, raw_voc, raw_nox, raw_co2 + ) = sensor.read_measured_raw_values() + print(f"raw_humidity: {raw_humidity}; " + f"raw_temperature: {raw_temperature}; " + f"raw_voc: {raw_voc}; " + f"raw_nox: {raw_nox}; " + f"raw_co2: {raw_co2}; " + ) + sensor.set_temperature_offset_parameters(1, 10, 1, 0) + state = sensor.get_voc_algorithm_state() + print(f"state: {state}; " ) sensor.stop_measurement()