# -*- coding: utf-8 -*-
# (c) Copyright 2020 Sensirion AG, Switzerland
from __future__ import absolute_import, division, print_function
from sensirion_i2c_driver import I2cDevice
from .commands import Sht3xI2cCmdMeasHighRes, Sht3xI2cCmdMeasMediumRes, \
Sht3xI2cCmdMeasLowRes, Sht3xI2cCmdEnableART, Sht3xI2cCmdHeaterOn, Sht3xI2cCmdHeaterOff, \
Sht3xI2cCmdReadStatusRegister, Sht3xI2cCmdResetStatusRegister, \
Sht3xI2cCmdSoftReset, Sht3xI2cCmdReadSerial
from .data_types import Sht3xRepeatability
[docs]class Sht3xI2cDevice(I2cDevice):
"""
SHT3x I²C device class to allow executing I²C commands.
"""
[docs] def __init__(self, connection, slave_address=0x44):
"""
Constructs a new SHT3x I²C device.
:param ~sensirion_i2c_driver.connection.I2cConnection connection:
The I²C connection to use for communication.
:param byte slave_address:
The I²C slave address, defaults to 0x44.
"""
super(Sht3xI2cDevice, self).__init__(connection, slave_address)
[docs] def single_shot_measurement(self, repeatability=Sht3xRepeatability.HIGH):
"""
Trigger a measurement and read the temperature and humidity.
:param `~sensirion_i2c_sht.sht3x.data_types.Sht3xRepeatability` repeatability:
Configure the repeatability setting.
:raises ValueError:
If the passed repeatability is not valid.
:return:
The measured temperature and humidity.
- temperature (:py:class:`~sensirion_i2c_sht.sht3x.response_types.Sht3xTemperature`) -
Temperature response object.
- humidity (:py:class:`~sensirion_i2c_sht.sht3x.response_types.Sht3xHumidity`) -
Humidity response object.
:rtype:
tuple
""" # noqa: E501
if repeatability == Sht3xRepeatability.HIGH:
result = self.execute(Sht3xI2cCmdMeasHighRes())
elif repeatability == Sht3xRepeatability.MEDIUM:
result = self.execute(Sht3xI2cCmdMeasMediumRes())
elif repeatability == Sht3xRepeatability.LOW:
result = self.execute(Sht3xI2cCmdMeasLowRes())
else:
raise ValueError('Unknown argument for repeatability.')
return result
[docs] def art_enable(self):
"""
Enable the ART (accelerated response time
"""
return self.execute(Sht3xI2cCmdEnableART())
[docs] def heater_on(self):
"""
Switch on the internal heater.
"""
return self.execute(Sht3xI2cCmdHeaterOn())
[docs] def heater_off(self):
"""
Switch off the internal heater.
"""
return self.execute(Sht3xI2cCmdHeaterOff())
[docs] def read_status_register(self):
"""
Read out the status register.
:return: The status register.
:rtype: :py:class:`~sensirion_i2c_sht.sht3x.response_types.Sht3xStatusRegister`
""" # noqa: E501
return self.execute(Sht3xI2cCmdReadStatusRegister())
[docs] def clear_status_register(self):
"""
Clear the status register. All flags (Bit 15, 11, 10, 4) in the status
register can be cleared (set to zero).
"""
return self.execute(Sht3xI2cCmdResetStatusRegister())
[docs] def soft_reset(self):
"""
Perform a soft reset for the device. This can be used to force the
system into a well-defined state without removing the power supply.
"""
return self.execute(Sht3xI2cCmdSoftReset())
[docs] def read_serial_number(self):
"""
Read the serial number from the device.
:return: The serial number.
:rtype: int
"""
return self.execute(Sht3xI2cCmdReadSerial())