mirror of
https://github.com/supleed2/ELEC60013-ES-CW1.git
synced 2024-11-10 01:35:50 +00:00
Aadi Desai
4076623ef8
Si7201 temperature and relative humidity sensor class, with callable properties
41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
"""Library for interacting with Si7201 Temperature & Humidity Sensor."""
|
|
|
|
import smbus2
|
|
from time import sleep
|
|
|
|
|
|
class Si7201:
|
|
def __init__(self, i2cBus, i2cAddress=0x40):
|
|
self.i2c = i2cBus
|
|
self.addr = i2cAddress
|
|
i2cBus.pec = True # enable smbus2 Packet Error Checking
|
|
|
|
@property
|
|
def temperature(self, decimals=1):
|
|
"""Measured temperature in degrees Celsius, with configurable decimal places, default 1."""
|
|
measure_temp = smbus2.i2c_msg.write(self.addr, [0xF3])
|
|
read_temp = smbus2.i2c_msg.read(self.addr, 2)
|
|
self.i2c.i2c_rdwr(measure_temp)
|
|
sleep(0.1)
|
|
self.i2c.i2c_rdwr(read_temp)
|
|
temp_code = int.from_bytes(read_temp.buf[0] + read_temp.buf[1], "big")
|
|
temp = round(((175.72 * temp_code) / 65536 - 46.85), decimals)
|
|
return temp
|
|
|
|
@property
|
|
def humidity(self, decimals=1):
|
|
"""Measured relative humidity in percent, with configurable decimal places, default 1."""
|
|
measure_hum = smbus2.i2c_msg.write(self.addr, [0xF5])
|
|
read_rh = smbus2.i2c_msg.read(self.addr, 2)
|
|
self.i2c.i2c_rdwr(measure_hum)
|
|
sleep(0.1)
|
|
self.i2c.i2c_rdwr(read_rh)
|
|
rh_code = int.from_bytes(read_rh.buf[0] + read_rh.buf[1], "big")
|
|
hum = round((125 * rh_code) / 65536 - 6.0, decimals)
|
|
return hum
|
|
|
|
def reset(self):
|
|
"""Reset the sensor."""
|
|
resetcmd = smbus2.i2c_msg.write(self.addr, [0xFE])
|
|
self.i2c.i2c_rdwr(resetcmd)
|