summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2024-09-23 15:53:46 +0200
committerYuval Adam <_@yuv.al>2024-09-23 15:53:46 +0200
commit021f1a48f71b16449ed499099e894d23b7f45a99 (patch)
tree4b80ffb6338c0e211b020ef404190e716c8e8d9f
parent356fee40992fbb47bd2813a241033cd8f1b3ee48 (diff)
Formatting and cleanup lints
-rw-r--r--BME280.py299
-rw-r--r--SI1132.py199
-rw-r--r--poetry.lock19
-rw-r--r--pyproject.toml1
4 files changed, 291 insertions, 227 deletions
diff --git a/BME280.py b/BME280.py
index 2988a5d..4c9c7e1 100644
--- a/BME280.py
+++ b/BME280.py
@@ -1,86 +1,93 @@
import time
import smbus
-to_s16 = lambda x: (x + 2**15) % 2**16 - 2**15
-to_u16 = lambda x: x % 2**16
+
+def to_s16(x):
+ return (x + 2**15) % 2**16 - 2**15
+
+
+def to_u16(x):
+ return x % 2**16
+
BME280_I2C_ADDR = 0x76
BME280_CHIP_ID = 0x60
power_mode = {
- "BME280_SLEEP_MODE" : 0x00,
- "BME280_FORCED_MODE" : 0x01,
- "BME280_NORMAL_MODE" : 0x03,
- "BME280_SOFT_RESET_CODE" : 0xB6,
+ "BME280_SLEEP_MODE": 0x00,
+ "BME280_FORCED_MODE": 0x01,
+ "BME280_NORMAL_MODE": 0x03,
+ "BME280_SOFT_RESET_CODE": 0xB6,
}
oversampl = {
- "BME280_OVERSAMP_SKIPPED" : 0x00,
- "BME280_OVERSAMP_1X" : 0x01,
- "BME280_OVERSAMP_2X" : 0x02,
- "BME280_OVERSAMP_4X" : 0x03,
- "BME280_OVERSAMP_8X" : 0x04,
- "BME280_OVERSAMP_16X" : 0x05,
+ "BME280_OVERSAMP_SKIPPED": 0x00,
+ "BME280_OVERSAMP_1X": 0x01,
+ "BME280_OVERSAMP_2X": 0x02,
+ "BME280_OVERSAMP_4X": 0x03,
+ "BME280_OVERSAMP_8X": 0x04,
+ "BME280_OVERSAMP_16X": 0x05,
}
regs = {
- "BME280_CHIP_ID_REG" : 0xD0,
- "BME280_RST_REG" : 0xE0,
- "BME280_STAT_REG" : 0xF3,
- "BME280_CTRL_MEAS_REG" : 0xF4,
- "BME280_CTRL_HUMIDITY_REG" : 0xF2,
- "BME280_CONFIG_REG" : 0xF5,
- "BME280_PRESSURE_MSB_REG" : 0xF7,
- "BME280_PRESSURE_LSB_REG" : 0xF8,
- "BME280_PRESSURE_XLSB_REG" : 0xF9,
- "BME280_TEMPERATURE_MSB_REG" : 0xFA,
- "BME280_TEMPERATURE_LSB_REG" : 0xFB,
- "BME280_TEMPERATURE_XLSB_REG" : 0xFC,
- "BME280_HUMIDITY_MSB_REG" : 0xFD,
- "BME280_HUMIDITY_LSB_REG" : 0xFE,
+ "BME280_CHIP_ID_REG": 0xD0,
+ "BME280_RST_REG": 0xE0,
+ "BME280_STAT_REG": 0xF3,
+ "BME280_CTRL_MEAS_REG": 0xF4,
+ "BME280_CTRL_HUMIDITY_REG": 0xF2,
+ "BME280_CONFIG_REG": 0xF5,
+ "BME280_PRESSURE_MSB_REG": 0xF7,
+ "BME280_PRESSURE_LSB_REG": 0xF8,
+ "BME280_PRESSURE_XLSB_REG": 0xF9,
+ "BME280_TEMPERATURE_MSB_REG": 0xFA,
+ "BME280_TEMPERATURE_LSB_REG": 0xFB,
+ "BME280_TEMPERATURE_XLSB_REG": 0xFC,
+ "BME280_HUMIDITY_MSB_REG": 0xFD,
+ "BME280_HUMIDITY_LSB_REG": 0xFE,
}
cali_regs = {
- "BME280_TEMPERATURE_CALIB_DIG_T1_LSB_REG" : 0x88,
- "BME280_TEMPERATURE_CALIB_DIG_T1_MSB_REG" : 0x89,
- "BME280_TEMPERATURE_CALIB_DIG_T2_LSB_REG" : 0x8A,
- "BME280_TEMPERATURE_CALIB_DIG_T2_MSB_REG" : 0x8B,
- "BME280_TEMPERATURE_CALIB_DIG_T3_LSB_REG" : 0x8C,
- "BME280_TEMPERATURE_CALIB_DIG_T3_MSB_REG" : 0x8D,
- "BME280_PRESSURE_CALIB_DIG_P1_LSB_REG" : 0x8E,
- "BME280_PRESSURE_CALIB_DIG_P1_MSB_REG" : 0x8F,
- "BME280_PRESSURE_CALIB_DIG_P2_LSB_REG" : 0x90,
- "BME280_PRESSURE_CALIB_DIG_P2_MSB_REG" : 0x91,
- "BME280_PRESSURE_CALIB_DIG_P3_LSB_REG" : 0x92,
- "BME280_PRESSURE_CALIB_DIG_P3_MSB_REG" : 0x93,
- "BME280_PRESSURE_CALIB_DIG_P4_LSB_REG" : 0x94,
- "BME280_PRESSURE_CALIB_DIG_P4_MSB_REG" : 0x95,
- "BME280_PRESSURE_CALIB_DIG_P5_LSB_REG" : 0x96,
- "BME280_PRESSURE_CALIB_DIG_P5_MSB_REG" : 0x97,
- "BME280_PRESSURE_CALIB_DIG_P6_LSB_REG" : 0x98,
- "BME280_PRESSURE_CALIB_DIG_P6_MSB_REG" : 0x99,
- "BME280_PRESSURE_CALIB_DIG_P7_LSB_REG" : 0x9A,
- "BME280_PRESSURE_CALIB_DIG_P7_MSB_REG" : 0x9B,
- "BME280_PRESSURE_CALIB_DIG_P8_LSB_REG" : 0x9C,
- "BME280_PRESSURE_CALIB_DIG_P8_MSB_REG" : 0x9D,
- "BME280_PRESSURE_CALIB_DIG_P9_LSB_REG" : 0x9E,
- "BME280_PRESSURE_CALIB_DIG_P9_MSB_REG" : 0x9F,
- "BME280_HUMIDITY_CALIB_DIG_H1_REG" : 0xA1,
- "BME280_HUMIDITY_CALIB_DIG_H2_LSB_REG" : 0xE1,
- "BME280_HUMIDITY_CALIB_DIG_H2_MSB_REG" : 0xE2,
- "BME280_HUMIDITY_CALIB_DIG_H3_REG" : 0xE3,
- "BME280_HUMIDITY_CALIB_DIG_H4_MSB_REG" : 0xE4,
- "BME280_HUMIDITY_CALIB_DIG_H4_LSB_REG" : 0xE5,
- "BME280_HUMIDITY_CALIB_DIG_H5_MSB_REG" : 0xE6,
- "BME280_HUMIDITY_CALIB_DIG_H6_REG" : 0xE7,
+ "BME280_TEMPERATURE_CALIB_DIG_T1_LSB_REG": 0x88,
+ "BME280_TEMPERATURE_CALIB_DIG_T1_MSB_REG": 0x89,
+ "BME280_TEMPERATURE_CALIB_DIG_T2_LSB_REG": 0x8A,
+ "BME280_TEMPERATURE_CALIB_DIG_T2_MSB_REG": 0x8B,
+ "BME280_TEMPERATURE_CALIB_DIG_T3_LSB_REG": 0x8C,
+ "BME280_TEMPERATURE_CALIB_DIG_T3_MSB_REG": 0x8D,
+ "BME280_PRESSURE_CALIB_DIG_P1_LSB_REG": 0x8E,
+ "BME280_PRESSURE_CALIB_DIG_P1_MSB_REG": 0x8F,
+ "BME280_PRESSURE_CALIB_DIG_P2_LSB_REG": 0x90,
+ "BME280_PRESSURE_CALIB_DIG_P2_MSB_REG": 0x91,
+ "BME280_PRESSURE_CALIB_DIG_P3_LSB_REG": 0x92,
+ "BME280_PRESSURE_CALIB_DIG_P3_MSB_REG": 0x93,
+ "BME280_PRESSURE_CALIB_DIG_P4_LSB_REG": 0x94,
+ "BME280_PRESSURE_CALIB_DIG_P4_MSB_REG": 0x95,
+ "BME280_PRESSURE_CALIB_DIG_P5_LSB_REG": 0x96,
+ "BME280_PRESSURE_CALIB_DIG_P5_MSB_REG": 0x97,
+ "BME280_PRESSURE_CALIB_DIG_P6_LSB_REG": 0x98,
+ "BME280_PRESSURE_CALIB_DIG_P6_MSB_REG": 0x99,
+ "BME280_PRESSURE_CALIB_DIG_P7_LSB_REG": 0x9A,
+ "BME280_PRESSURE_CALIB_DIG_P7_MSB_REG": 0x9B,
+ "BME280_PRESSURE_CALIB_DIG_P8_LSB_REG": 0x9C,
+ "BME280_PRESSURE_CALIB_DIG_P8_MSB_REG": 0x9D,
+ "BME280_PRESSURE_CALIB_DIG_P9_LSB_REG": 0x9E,
+ "BME280_PRESSURE_CALIB_DIG_P9_MSB_REG": 0x9F,
+ "BME280_HUMIDITY_CALIB_DIG_H1_REG": 0xA1,
+ "BME280_HUMIDITY_CALIB_DIG_H2_LSB_REG": 0xE1,
+ "BME280_HUMIDITY_CALIB_DIG_H2_MSB_REG": 0xE2,
+ "BME280_HUMIDITY_CALIB_DIG_H3_REG": 0xE3,
+ "BME280_HUMIDITY_CALIB_DIG_H4_MSB_REG": 0xE4,
+ "BME280_HUMIDITY_CALIB_DIG_H4_LSB_REG": 0xE5,
+ "BME280_HUMIDITY_CALIB_DIG_H5_MSB_REG": 0xE6,
+ "BME280_HUMIDITY_CALIB_DIG_H6_REG": 0xE7,
}
+
class BME280:
param = {}
def __init__(self, i2c_dev, p_mode, h_samp, p_samp, t_samp):
- self.bus = smbus.SMBus(int(i2c_dev.split('-')[-1]))
- self.chip_id = self.read(regs['BME280_CHIP_ID_REG'], 1)[0]
+ self.bus = smbus.SMBus(int(i2c_dev.split("-")[-1]))
+ self.chip_id = self.read(regs["BME280_CHIP_ID_REG"], 1)[0]
if self.chip_id != BME280_CHIP_ID:
print("Wrong Device ID [", hex(self.chip_id), "]")
exit()
@@ -110,108 +117,108 @@ class BME280:
self.bus.write_byte_data(BME280_I2C_ADDR, reg + i, val[i])
def get_cal_param(self):
- params = self.read(cali_regs['BME280_TEMPERATURE_CALIB_DIG_T1_LSB_REG'], 26)
- self.param['dig_T1'] = to_u16((params[1] << 8) | params[0])
- self.param['dig_T2'] = to_s16((params[3] << 8) | params[2])
- self.param['dig_T3'] = to_s16((params[5] << 8) | params[4])
- self.param['dig_P1'] = to_u16((params[7] << 8) | params[6])
- self.param['dig_P2'] = to_s16((params[9] << 8) | params[8])
- self.param['dig_P3'] = to_s16((params[11] << 8) | params[10])
- self.param['dig_P4'] = to_s16((params[13] << 8) | params[12])
- self.param['dig_P5'] = to_s16((params[15] << 8) | params[14])
- self.param['dig_P6'] = to_s16((params[17] << 8) | params[16])
- self.param['dig_P7'] = to_s16((params[19] << 8) | params[18])
- self.param['dig_P8'] = to_s16((params[21] << 8) | params[20])
- self.param['dig_P9'] = to_s16((params[23] << 8) | params[22])
- self.param['dig_H1'] = params[25]
+ params = self.read(cali_regs["BME280_TEMPERATURE_CALIB_DIG_T1_LSB_REG"], 26)
+ self.param["dig_T1"] = to_u16((params[1] << 8) | params[0])
+ self.param["dig_T2"] = to_s16((params[3] << 8) | params[2])
+ self.param["dig_T3"] = to_s16((params[5] << 8) | params[4])
+ self.param["dig_P1"] = to_u16((params[7] << 8) | params[6])
+ self.param["dig_P2"] = to_s16((params[9] << 8) | params[8])
+ self.param["dig_P3"] = to_s16((params[11] << 8) | params[10])
+ self.param["dig_P4"] = to_s16((params[13] << 8) | params[12])
+ self.param["dig_P5"] = to_s16((params[15] << 8) | params[14])
+ self.param["dig_P6"] = to_s16((params[17] << 8) | params[16])
+ self.param["dig_P7"] = to_s16((params[19] << 8) | params[18])
+ self.param["dig_P8"] = to_s16((params[21] << 8) | params[20])
+ self.param["dig_P9"] = to_s16((params[23] << 8) | params[22])
+ self.param["dig_H1"] = params[25]
- params = self.read(cali_regs['BME280_HUMIDITY_CALIB_DIG_H2_LSB_REG'], 7)
- self.param['dig_H2'] = to_s16((params[1] << 8) | params[0])
- self.param['dig_H3'] = params[2]
- self.param['dig_H4'] = to_s16((params[3] << 4) | (params[4] & 0x0f))
- self.param['dig_H5'] = to_s16((params[5] << 4) | (params[4] >> 4))
- self.param['dig_H6'] = params[6]
+ params = self.read(cali_regs["BME280_HUMIDITY_CALIB_DIG_H2_LSB_REG"], 7)
+ self.param["dig_H2"] = to_s16((params[1] << 8) | params[0])
+ self.param["dig_H3"] = params[2]
+ self.param["dig_H4"] = to_s16((params[3] << 4) | (params[4] & 0x0F))
+ self.param["dig_H5"] = to_s16((params[5] << 4) | (params[4] >> 4))
+ self.param["dig_H6"] = params[6]
def get_power_mode(self):
- return self.read(regs['BME280_CTRL_MEAS_REG'], 1)[0] & 0x03
+ return self.read(regs["BME280_CTRL_MEAS_REG"], 1)[0] & 0x03
def set_power_mode(self, p_mode):
- if p_mode <= power_mode['BME280_NORMAL_MODE']:
+ if p_mode <= power_mode["BME280_NORMAL_MODE"]:
v_mode = (self.ctrl_meas_reg & ~0x03) | (p_mode & 0x03)
- if self.get_power_mode() != power_mode['BME280_SLEEP_MODE']:
+ if self.get_power_mode() != power_mode["BME280_SLEEP_MODE"]:
self.soft_rst()
time.sleep(0.003)
- self.write(regs['BME280_CONFIG_REG'], [self.config_reg])
- self.write(regs['BME280_CTRL_HUMIDITY_REG'], [self.ctrl_hum_reg])
- self.write(regs['BME280_CTRL_MEAS_REG'], [v_mode])
+ self.write(regs["BME280_CONFIG_REG"], [self.config_reg])
+ self.write(regs["BME280_CTRL_HUMIDITY_REG"], [self.ctrl_hum_reg])
+ self.write(regs["BME280_CTRL_MEAS_REG"], [v_mode])
else:
- self.write(regs['BME280_CTRL_MEAS_REG'], [v_mode])
+ self.write(regs["BME280_CTRL_MEAS_REG"], [v_mode])
- self.ctrl_meas_reg = self.read(regs['BME280_CTRL_MEAS_REG'], 1)[0]
- self.ctrl_hum_reg = self.read(regs['BME280_CTRL_HUMIDITY_REG'], 1)[0]
- self.config_reg = self.read(regs['BME280_CONFIG_REG'], 1)[0]
+ self.ctrl_meas_reg = self.read(regs["BME280_CTRL_MEAS_REG"], 1)[0]
+ self.ctrl_hum_reg = self.read(regs["BME280_CTRL_HUMIDITY_REG"], 1)[0]
+ self.config_reg = self.read(regs["BME280_CONFIG_REG"], 1)[0]
else:
print("Wrong Power Mode [", hex(p_mode), "]")
exit()
def soft_rst(self):
- self.write(regs['BME280_RST_REG'], [power_mode['BME280_SOFT_RESET_CODE']])
+ self.write(regs["BME280_RST_REG"], [power_mode["BME280_SOFT_RESET_CODE"]])
def set_oversamp_humidity(self, sampling):
v_data = (self.ctrl_hum_reg & ~0x07) | (sampling & 0x07)
- if self.get_power_mode() != power_mode['BME280_SLEEP_MODE']:
+ if self.get_power_mode() != power_mode["BME280_SLEEP_MODE"]:
self.soft_rst()
time.sleep(0.003)
- self.write(regs['BME280_CONFIG_REG'], [self.config_reg])
- self.write(regs['BME280_CTRL_HUMIDITY_REG'], [v_data])
- self.write(regs['BME280_CTRL_MEAS_REG'], [self.ctrl_meas_reg])
+ self.write(regs["BME280_CONFIG_REG"], [self.config_reg])
+ self.write(regs["BME280_CTRL_HUMIDITY_REG"], [v_data])
+ self.write(regs["BME280_CTRL_MEAS_REG"], [self.ctrl_meas_reg])
else:
- self.write(regs['BME280_CTRL_HUMIDITY_REG'], [v_data])
- self.write(regs['BME280_CTRL_MEAS_REG'], [self.ctrl_hum_reg])
+ self.write(regs["BME280_CTRL_HUMIDITY_REG"], [v_data])
+ self.write(regs["BME280_CTRL_MEAS_REG"], [self.ctrl_hum_reg])
self.oversamp_humidity = sampling
- self.ctrl_meas_reg = self.read(regs['BME280_CTRL_MEAS_REG'], 1)[0]
- self.ctrl_hum_reg = self.read(regs['BME280_CTRL_HUMIDITY_REG'], 1)[0]
- self.config_reg = self.read(regs['BME280_CONFIG_REG'], 1)[0]
+ self.ctrl_meas_reg = self.read(regs["BME280_CTRL_MEAS_REG"], 1)[0]
+ self.ctrl_hum_reg = self.read(regs["BME280_CTRL_HUMIDITY_REG"], 1)[0]
+ self.config_reg = self.read(regs["BME280_CONFIG_REG"], 1)[0]
def set_oversamp_pressure(self, sampling):
- v_data = (self.ctrl_meas_reg & ~0x1c) | ((sampling << 2) & 0x1c)
+ v_data = (self.ctrl_meas_reg & ~0x1C) | ((sampling << 2) & 0x1C)
- if self.get_power_mode != power_mode['BME280_SLEEP_MODE']:
+ if self.get_power_mode != power_mode["BME280_SLEEP_MODE"]:
self.soft_rst()
time.sleep(0.003)
- self.write(regs['BME280_CONFIG_REG'], [self.config_reg])
- self.write(regs['BME280_CTRL_HUMIDITY_REG'], [self.ctrl_hum_reg])
- self.write(regs['BME280_CTRL_MEAS_REG'], [v_data])
+ self.write(regs["BME280_CONFIG_REG"], [self.config_reg])
+ self.write(regs["BME280_CTRL_HUMIDITY_REG"], [self.ctrl_hum_reg])
+ self.write(regs["BME280_CTRL_MEAS_REG"], [v_data])
else:
- self.write(regs['BME280_CTRL_MEAS_REG'], [v_data])
+ self.write(regs["BME280_CTRL_MEAS_REG"], [v_data])
self.oversamp_pressure = sampling
- self.ctrl_meas_reg = self.read(regs['BME280_CTRL_MEAS_REG'], 1)[0]
- self.ctrl_hum_reg = self.read(regs['BME280_CTRL_HUMIDITY_REG'], 1)[0]
- self.config_reg = self.read(regs['BME280_CONFIG_REG'], 1)[0]
+ self.ctrl_meas_reg = self.read(regs["BME280_CTRL_MEAS_REG"], 1)[0]
+ self.ctrl_hum_reg = self.read(regs["BME280_CTRL_HUMIDITY_REG"], 1)[0]
+ self.config_reg = self.read(regs["BME280_CONFIG_REG"], 1)[0]
def set_oversamp_temperature(self, sampling):
- v_data = (self.ctrl_meas_reg & ~0xe0) | ((sampling << 5) & 0xe0)
+ v_data = (self.ctrl_meas_reg & ~0xE0) | ((sampling << 5) & 0xE0)
- if self.get_power_mode != power_mode['BME280_SLEEP_MODE']:
+ if self.get_power_mode != power_mode["BME280_SLEEP_MODE"]:
self.soft_rst()
time.sleep(0.003)
- self.write(regs['BME280_CONFIG_REG'], [self.config_reg])
- self.write(regs['BME280_CTRL_HUMIDITY_REG'], [self.ctrl_hum_reg])
- self.write(regs['BME280_CTRL_MEAS_REG'], [v_data])
+ self.write(regs["BME280_CONFIG_REG"], [self.config_reg])
+ self.write(regs["BME280_CTRL_HUMIDITY_REG"], [self.ctrl_hum_reg])
+ self.write(regs["BME280_CTRL_MEAS_REG"], [v_data])
else:
- self.write(regs['BME280_CTRL_MEAS_REG'], [v_data])
+ self.write(regs["BME280_CTRL_MEAS_REG"], [v_data])
self.oversamp_temperature = sampling
- self.ctrl_meas_reg = self.read(regs['BME280_CTRL_MEAS_REG'], 1)[0]
- self.ctrl_hum_reg = self.read(regs['BME280_CTRL_HUMIDITY_REG'], 1)[0]
- self.config_reg = self.read(regs['BME280_CONFIG_REG'], 1)[0]
+ self.ctrl_meas_reg = self.read(regs["BME280_CTRL_MEAS_REG"], 1)[0]
+ self.ctrl_hum_reg = self.read(regs["BME280_CTRL_HUMIDITY_REG"], 1)[0]
+ self.config_reg = self.read(regs["BME280_CONFIG_REG"], 1)[0]
def read_humidity(self):
- vals = self.read(regs['BME280_PRESSURE_MSB_REG'], 8)
+ vals = self.read(regs["BME280_PRESSURE_MSB_REG"], 8)
raw_val = float((vals[6] << 8) | vals[7])
"""
x1 = self.t_fine - 76800
@@ -227,10 +234,24 @@ class BME280:
return (x1 >> 12) / 1024.0
"""
h = float(self.t_fine) - 76800.0
- h = (raw_val - (float(self.param['dig_H4']) * 64.0 + float(self.param['dig_H5']) / 16384.0 * h)) * (
- float(self.param['dig_H2']) / 65536.0 * (1.0 + float(self.param['dig_H6']) / 67108864.0 * h * (
- 1.0 + float(self.param['dig_H3']) / 67108864.0 * h)))
- h = h * (1.0 - float(self.param['dig_H1']) * h / 524288.0)
+ h = (
+ raw_val
+ - (
+ float(self.param["dig_H4"]) * 64.0
+ + float(self.param["dig_H5"]) / 16384.0 * h
+ )
+ ) * (
+ float(self.param["dig_H2"])
+ / 65536.0
+ * (
+ 1.0
+ + float(self.param["dig_H6"])
+ / 67108864.0
+ * h
+ * (1.0 + float(self.param["dig_H3"]) / 67108864.0 * h)
+ )
+ )
+ h = h * (1.0 - float(self.param["dig_H1"]) * h / 524288.0)
if h > 100:
h = 100
elif h < 0:
@@ -238,7 +259,7 @@ class BME280:
return h
def read_pressure(self):
- vals = self.read(regs['BME280_PRESSURE_MSB_REG'], 8)
+ vals = self.read(regs["BME280_PRESSURE_MSB_REG"], 8)
raw_val = float((vals[0] << 12) | (vals[1] << 4) | (vals[2] >> 4))
"""
x1 = (self.t_fine >> 1) - 64000
@@ -262,23 +283,25 @@ class BME280:
return p / 100.0
"""
var1 = float(self.t_fine) / 2.0 - 64000.0
- var2 = var1 * var1 * float(self.param['dig_P6']) / 32768.0
- var2 = var2 + var1 * float(self.param['dig_P5']) * 2.0
- var2 = var2 / 4.0 + float(self.param['dig_P4']) * 65536.0
+ var2 = var1 * var1 * float(self.param["dig_P6"]) / 32768.0
+ var2 = var2 + var1 * float(self.param["dig_P5"]) * 2.0
+ var2 = var2 / 4.0 + float(self.param["dig_P4"]) * 65536.0
var1 = (
- float(self.param['dig_P3']) * var1 * var1 / 524288.0 + float(self.param['dig_P2']) * var1) / 524288.0
- var1 = (1.0 + var1 / 32768.0) * float(self.param['dig_P1'])
+ float(self.param["dig_P3"]) * var1 * var1 / 524288.0
+ + float(self.param["dig_P2"]) * var1
+ ) / 524288.0
+ var1 = (1.0 + var1 / 32768.0) * float(self.param["dig_P1"])
if var1 == 0:
return 0
p = 1048576.0 - raw_val
p = ((p - var2 / 4096.0) * 6250.0) / var1
- var1 = float(self.param['dig_P9']) * p * p / 2147483648.0
- var2 = p * float(self.param['dig_P8']) / 32768.0
- p = p + (var1 + var2 + float(self.param['dig_P7'])) / 16.0
+ var1 = float(self.param["dig_P9"]) * p * p / 2147483648.0
+ var2 = p * float(self.param["dig_P8"]) / 32768.0
+ p = p + (var1 + var2 + float(self.param["dig_P7"])) / 16.0
return p
def read_temperature(self):
- vals = self.read(regs['BME280_PRESSURE_MSB_REG'], 8)
+ vals = self.read(regs["BME280_PRESSURE_MSB_REG"], 8)
raw_val = float((vals[3] << 12) | (vals[4] << 4) | (vals[5] >> 4))
"""
x1 = (((raw_val >> 3) - (self.param['dig_T1'] << 1)) * self.param['dig_T2']) >> 11
@@ -288,9 +311,13 @@ class BME280:
return temp / 100.0
"""
- var1 = (raw_val / 16384.0 - float(self.param['dig_T1']) / 1024.0) * float(self.param['dig_T2'])
- var2 = ((raw_val / 131072.0 - float(self.param['dig_T1']) / 8192.0) * (
- raw_val / 131072.0 - float(self.param['dig_T1']) / 8192.0)) * float(self.param['dig_T3'])
+ var1 = (raw_val / 16384.0 - float(self.param["dig_T1"]) / 1024.0) * float(
+ self.param["dig_T2"]
+ )
+ var2 = (
+ (raw_val / 131072.0 - float(self.param["dig_T1"]) / 8192.0)
+ * (raw_val / 131072.0 - float(self.param["dig_T1"]) / 8192.0)
+ ) * float(self.param["dig_T3"])
self.t_fine = int(var1 + var2)
temp = (var1 + var2) / 5120.0
return temp
diff --git a/SI1132.py b/SI1132.py
index e22d7e9..6cf02a6 100644
--- a/SI1132.py
+++ b/SI1132.py
@@ -5,78 +5,75 @@ SI1132_I2C_ADDR = 0x60
SI1132_PARTID = 0x32
cmds = {
- 'Si1132_PARAM_QUERY' : 0x80,
- 'Si1132_PARAM_SET' : 0xA0,
- 'Si1132_NOP' : 0x00,
- 'Si1132_RESET' : 0x01,
- 'Si1132_BUSADDR' : 0x02,
- 'Si1132_GET_CAL' : 0x12,
- 'Si1132_ALS_FORCE' : 0x06,
- 'Si1132_ALS_PAUSE' : 0x0A,
- 'Si1132_ALS_AUTO' : 0x0E,
+ "Si1132_PARAM_QUERY": 0x80,
+ "Si1132_PARAM_SET": 0xA0,
+ "Si1132_NOP": 0x00,
+ "Si1132_RESET": 0x01,
+ "Si1132_BUSADDR": 0x02,
+ "Si1132_GET_CAL": 0x12,
+ "Si1132_ALS_FORCE": 0x06,
+ "Si1132_ALS_PAUSE": 0x0A,
+ "Si1132_ALS_AUTO": 0x0E,
}
params = {
- 'Si1132_PARAM_I2CADDR' : 0x00,
- 'Si1132_PARAM_CHLIST' : 0x01,
- 'Si1132_PARAM_CHLIST_ENUV' : 0x80,
- 'Si1132_PARAM_CHLIST_ENAUX' : 0x40,
- 'Si1132_PARAM_CHLIST_ENALSIR' : 0x20,
- 'Si1132_PARAM_CHLIST_ENALSVIS' : 0x10,
- 'Si1132_PARAM_ALSENCODING' : 0x06,
- 'Si1132_PARAM_ALSIRADCMUX' : 0x0E,
- 'Si1132_PARAM_AUXADCMUX' : 0x0F,
- 'Si1132_PARAM_ALSVISADCCOUNTER' : 0x10,
- 'Si1132_PARAM_ALSENCODING' : 0x06,
- 'Si1132_PARAM_ALSIRADCMUX' : 0x0E,
- 'Si1132_PARAM_AUXADCMUX' : 0x0F,
- 'Si1132_PARAM_ALSVISADCCOUNTER' : 0x10,
- 'Si1132_PARAM_ALSVISADCGAIN' : 0x11,
- 'Si1132_PARAM_ALSVISADCMISC' : 0x12,
- 'Si1132_PARAM_ALSVISADCMISC_VISRANGE' : 0x20,
- 'Si1132_PARAM_ALSIRADCCOUNTER' : 0x1D,
- 'Si1132_PARAM_ALSIRADCGAIN' : 0x1E,
- 'Si1132_PARAM_ALSIRADCMISC' : 0x1F,
- 'Si1132_PARAM_ALSIRADCMISC_RANGE' : 0x20,
- 'Si1132_PARAM_ADCCOUNTER_511CLK' : 0x70,
- 'Si1132_PARAM_ADCMUX_SMALLIR' : 0x00,
- 'Si1132_PARAM_ADCMUX_LARGEIR' : 0x03,
+ "Si1132_PARAM_I2CADDR": 0x00,
+ "Si1132_PARAM_CHLIST": 0x01,
+ "Si1132_PARAM_CHLIST_ENUV": 0x80,
+ "Si1132_PARAM_CHLIST_ENAUX": 0x40,
+ "Si1132_PARAM_CHLIST_ENALSIR": 0x20,
+ "Si1132_PARAM_CHLIST_ENALSVIS": 0x10,
+ "Si1132_PARAM_ALSENCODING": 0x06,
+ "Si1132_PARAM_ALSIRADCMUX": 0x0E,
+ "Si1132_PARAM_AUXADCMUX": 0x0F,
+ "Si1132_PARAM_ALSVISADCCOUNTER": 0x10,
+ "Si1132_PARAM_ALSVISADCGAIN": 0x11,
+ "Si1132_PARAM_ALSVISADCMISC": 0x12,
+ "Si1132_PARAM_ALSVISADCMISC_VISRANGE": 0x20,
+ "Si1132_PARAM_ALSIRADCCOUNTER": 0x1D,
+ "Si1132_PARAM_ALSIRADCGAIN": 0x1E,
+ "Si1132_PARAM_ALSIRADCMISC": 0x1F,
+ "Si1132_PARAM_ALSIRADCMISC_RANGE": 0x20,
+ "Si1132_PARAM_ADCCOUNTER_511CLK": 0x70,
+ "Si1132_PARAM_ADCMUX_SMALLIR": 0x00,
+ "Si1132_PARAM_ADCMUX_LARGEIR": 0x03,
}
regs = {
- 'Si1132_REG_PARTID' : 0x00,
- 'Si1132_REG_REVID' : 0x01,
- 'Si1132_REG_SEQID' : 0x02,
- 'Si1132_REG_INTCFG' : 0x03,
- 'Si1132_REG_INTCFG_INTOE' : 0x01,
- 'Si1132_REG_IRQEN' : 0x04,
- 'Si1132_REG_IRQEN_ALSEVERYSAMPLE' : 0x01,
- 'Si1132_REG_IRQMODE1' : 0x05,
- 'Si1132_REG_IRQMODE2' : 0x06,
- 'Si1132_REG_HWKEY' : 0x07,
- 'Si1132_REG_MEASRATE0' : 0x08,
- 'Si1132_REG_MEASRATE1' : 0x09,
- 'Si1132_REG_UCOEF0' : 0x13,
- 'Si1132_REG_UCOEF1' : 0x14,
- 'Si1132_REG_UCOEF2' : 0x15,
- 'Si1132_REG_UCOEF3' : 0x16,
- 'Si1132_REG_PARAMWR' : 0x17,
- 'Si1132_REG_COMMAND' : 0x18,
- 'Si1132_REG_RESPONSE' : 0x20,
- 'Si1132_REG_IRQSTAT' : 0x21,
- 'Si1132_REG_ALSVISDATA0' : 0x22,
- 'Si1132_REG_ALSVISDATA1' : 0x23,
- 'Si1132_REG_ALSIRDATA0' : 0x24,
- 'Si1132_REG_ALSIRDATA1' : 0x25,
- 'Si1132_REG_UVINDEX0' : 0x2C,
- 'Si1132_REG_UVINDEX1' : 0x2D,
- 'Si1132_REG_PARAMRD' : 0x2E,
- 'Si1132_REG_CHIPSTAT' : 0x30,
+ "Si1132_REG_PARTID": 0x00,
+ "Si1132_REG_REVID": 0x01,
+ "Si1132_REG_SEQID": 0x02,
+ "Si1132_REG_INTCFG": 0x03,
+ "Si1132_REG_INTCFG_INTOE": 0x01,
+ "Si1132_REG_IRQEN": 0x04,
+ "Si1132_REG_IRQEN_ALSEVERYSAMPLE": 0x01,
+ "Si1132_REG_IRQMODE1": 0x05,
+ "Si1132_REG_IRQMODE2": 0x06,
+ "Si1132_REG_HWKEY": 0x07,
+ "Si1132_REG_MEASRATE0": 0x08,
+ "Si1132_REG_MEASRATE1": 0x09,
+ "Si1132_REG_UCOEF0": 0x13,
+ "Si1132_REG_UCOEF1": 0x14,
+ "Si1132_REG_UCOEF2": 0x15,
+ "Si1132_REG_UCOEF3": 0x16,
+ "Si1132_REG_PARAMWR": 0x17,
+ "Si1132_REG_COMMAND": 0x18,
+ "Si1132_REG_RESPONSE": 0x20,
+ "Si1132_REG_IRQSTAT": 0x21,
+ "Si1132_REG_ALSVISDATA0": 0x22,
+ "Si1132_REG_ALSVISDATA1": 0x23,
+ "Si1132_REG_ALSIRDATA0": 0x24,
+ "Si1132_REG_ALSIRDATA1": 0x25,
+ "Si1132_REG_UVINDEX0": 0x2C,
+ "Si1132_REG_UVINDEX1": 0x2D,
+ "Si1132_REG_PARAMRD": 0x2E,
+ "Si1132_REG_CHIPSTAT": 0x30,
}
+
class SI1132:
def __init__(self, i2c_dev):
- self.bus = smbus.SMBus(int(i2c_dev.split('-')[-1]))
+ self.bus = smbus.SMBus(int(i2c_dev.split("-")[-1]))
self.id = self.read_reg8(0x00)
if self.id != SI1132_PARTID:
print("Wrong Device ID [", hex(self.id), "]")
@@ -84,43 +81,63 @@ class SI1132:
self.reset()
- self.write_reg8(regs['Si1132_REG_UCOEF0'], 0x7B)
- self.write_reg8(regs['Si1132_REG_UCOEF1'], 0x6B)
- self.write_reg8(regs['Si1132_REG_UCOEF2'], 0x01)
- self.write_reg8(regs['Si1132_REG_UCOEF3'], 0x00)
+ self.write_reg8(regs["Si1132_REG_UCOEF0"], 0x7B)
+ self.write_reg8(regs["Si1132_REG_UCOEF1"], 0x6B)
+ self.write_reg8(regs["Si1132_REG_UCOEF2"], 0x01)
+ self.write_reg8(regs["Si1132_REG_UCOEF3"], 0x00)
- param = params['Si1132_PARAM_CHLIST_ENUV'] | params['Si1132_PARAM_CHLIST_ENALSIR'] | params['Si1132_PARAM_CHLIST_ENALSVIS']
- self.writeParam(params['Si1132_PARAM_CHLIST'], param)
+ param = (
+ params["Si1132_PARAM_CHLIST_ENUV"]
+ | params["Si1132_PARAM_CHLIST_ENALSIR"]
+ | params["Si1132_PARAM_CHLIST_ENALSVIS"]
+ )
+ self.writeParam(params["Si1132_PARAM_CHLIST"], param)
- self.write_reg8(regs['Si1132_REG_INTCFG'], regs['Si1132_REG_INTCFG_INTOE'])
- self.write_reg8(regs['Si1132_REG_IRQEN'], regs['Si1132_REG_IRQEN_ALSEVERYSAMPLE'])
+ self.write_reg8(regs["Si1132_REG_INTCFG"], regs["Si1132_REG_INTCFG_INTOE"])
+ self.write_reg8(
+ regs["Si1132_REG_IRQEN"], regs["Si1132_REG_IRQEN_ALSEVERYSAMPLE"]
+ )
- self.writeParam(params['Si1132_PARAM_ALSIRADCMUX'], params['Si1132_PARAM_ADCMUX_SMALLIR'])
+ self.writeParam(
+ params["Si1132_PARAM_ALSIRADCMUX"], params["Si1132_PARAM_ADCMUX_SMALLIR"]
+ )
time.sleep(0.01)
- self.writeParam(params['Si1132_PARAM_ALSIRADCGAIN'], 0)
+ self.writeParam(params["Si1132_PARAM_ALSIRADCGAIN"], 0)
time.sleep(0.01)
- self.writeParam(params['Si1132_PARAM_ALSIRADCCOUNTER'], params['Si1132_PARAM_ADCCOUNTER_511CLK'])
- self.writeParam(params['Si1132_PARAM_ALSIRADCMISC'], params['Si1132_PARAM_ALSIRADCMISC_RANGE'])
+ self.writeParam(
+ params["Si1132_PARAM_ALSIRADCCOUNTER"],
+ params["Si1132_PARAM_ADCCOUNTER_511CLK"],
+ )
+ self.writeParam(
+ params["Si1132_PARAM_ALSIRADCMISC"],
+ params["Si1132_PARAM_ALSIRADCMISC_RANGE"],
+ )
time.sleep(0.01)
- self.writeParam(params['Si1132_PARAM_ALSIRADCGAIN'], 0)
+ self.writeParam(params["Si1132_PARAM_ALSIRADCGAIN"], 0)
time.sleep(0.01)
- self.writeParam(params['Si1132_PARAM_ALSIRADCCOUNTER'], params['Si1132_PARAM_ADCCOUNTER_511CLK'])
- self.writeParam(params['Si1132_PARAM_ALSVISADCMISC'], params['Si1132_PARAM_ALSVISADCMISC_VISRANGE'])
+ self.writeParam(
+ params["Si1132_PARAM_ALSIRADCCOUNTER"],
+ params["Si1132_PARAM_ADCCOUNTER_511CLK"],
+ )
+ self.writeParam(
+ params["Si1132_PARAM_ALSVISADCMISC"],
+ params["Si1132_PARAM_ALSVISADCMISC_VISRANGE"],
+ )
time.sleep(0.01)
- self.write_reg8(regs['Si1132_REG_MEASRATE0'], 0xFF)
- self.write_reg8(regs['Si1132_REG_COMMAND'], cmds['Si1132_ALS_AUTO'])
+ self.write_reg8(regs["Si1132_REG_MEASRATE0"], 0xFF)
+ self.write_reg8(regs["Si1132_REG_COMMAND"], cmds["Si1132_ALS_AUTO"])
def reset(self):
- self.write_reg8(regs['Si1132_REG_MEASRATE0'], 0)
- self.write_reg8(regs['Si1132_REG_MEASRATE1'], 0)
- self.write_reg8(regs['Si1132_REG_IRQEN'], 0)
- self.write_reg8(regs['Si1132_REG_IRQMODE1'], 0)
- self.write_reg8(regs['Si1132_REG_IRQMODE2'], 0)
- self.write_reg8(regs['Si1132_REG_INTCFG'], 0)
- self.write_reg8(regs['Si1132_REG_IRQSTAT'], 0xFF)
- self.write_reg8(regs['Si1132_REG_COMMAND'], cmds['Si1132_RESET'])
+ self.write_reg8(regs["Si1132_REG_MEASRATE0"], 0)
+ self.write_reg8(regs["Si1132_REG_MEASRATE1"], 0)
+ self.write_reg8(regs["Si1132_REG_IRQEN"], 0)
+ self.write_reg8(regs["Si1132_REG_IRQMODE1"], 0)
+ self.write_reg8(regs["Si1132_REG_IRQMODE2"], 0)
+ self.write_reg8(regs["Si1132_REG_INTCFG"], 0)
+ self.write_reg8(regs["Si1132_REG_IRQSTAT"], 0xFF)
+ self.write_reg8(regs["Si1132_REG_COMMAND"], cmds["Si1132_RESET"])
time.sleep(0.01)
- self.write_reg8(regs['Si1132_REG_HWKEY'], 0x17)
+ self.write_reg8(regs["Si1132_REG_HWKEY"], 0x17)
time.sleep(0.01)
def read_reg8(self, reg):
@@ -136,8 +153,8 @@ class SI1132:
self.bus.write_word_data(SI1132_I2C_ADDR, reg, val)
def writeParam(self, param, val):
- self.write_reg8(regs['Si1132_REG_PARAMWR'], val)
- self.write_reg8(regs['Si1132_REG_COMMAND'], param | cmds['Si1132_PARAM_SET'])
+ self.write_reg8(regs["Si1132_REG_PARAMWR"], val)
+ self.write_reg8(regs["Si1132_REG_COMMAND"], param | cmds["Si1132_PARAM_SET"])
def readVisible(self):
time.sleep(0.01)
@@ -149,4 +166,4 @@ class SI1132:
def readUV(self):
time.sleep(0.01)
- return self.read_reg16(0x2c)
+ return self.read_reg16(0x2C)
diff --git a/poetry.lock b/poetry.lock
new file mode 100644
index 0000000..7080765
--- /dev/null
+++ b/poetry.lock
@@ -0,0 +1,19 @@
+# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
+
+[[package]]
+name = "smbus"
+version = "1.1.post2"
+description = "Python bindings for Linux SMBus access through i2c-dev"
+optional = false
+python-versions = "*"
+files = [
+ {file = "smbus-1.1.post2-cp27-cp27mu-linux_armv7l.whl", hash = "sha256:529f9effc383b6381534d1d845eaf1078bdd2d4e625c945b23cf274d5cf1c306"},
+ {file = "smbus-1.1.post2-cp34-cp34m-linux_armv7l.whl", hash = "sha256:39923448455a41c6bbe823de62b191103dd711917056362d9e4b1d2c6ec0f06d"},
+ {file = "smbus-1.1.post2-cp35-cp35m-linux_armv7l.whl", hash = "sha256:b467235734ae5c147c4ec0eff1afb9dba189d9d3cc086ed7e0d3dbf0ae485230"},
+ {file = "smbus-1.1.post2.tar.gz", hash = "sha256:f96d345e0aa10053a8a4917634f1dc37ba1f656fa5cace7629b71777e90855c6"},
+]
+
+[metadata]
+lock-version = "2.0"
+python-versions = "^3.12"
+content-hash = "d101aa09a8e1a2affec8c5cb6d8c2721f9dcda82d35b00211aa9f95ba77d0e3f"
diff --git a/pyproject.toml b/pyproject.toml
index 2049ef7..115522d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -7,6 +7,7 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.12"
+smbus = "^1.1.post2"
[build-system]