class LightBulbAdapter(object): CMD_SWITCH_LIGHT_ON = 0x01 CMD_SWITCH_LIGHT_OFF = 0x02 CMD_READ_LIGHT_BULB_STATE = 0x09 # byte value CMD_READ_ILLUMINANCE = 0x0A # long value (Lux) def __init__(self, bus=1, i2c_addr=0x04): self._adapter = Adapter(bus=bus, i2c_addr=i2c_addr) def switch_on(self): return self._adapter.write_byte(self.CMD_SWITCH_LIGHT_ON) def switch_off(self): return self._adapter.write_byte(self.CMD_SWITCH_LIGHT_OFF) @property def state(self): state = self._adapter.read_byte(self.CMD_READ_LIGHT_BULB_STATE) if state == 1: return "on" elif state == 0: return "off" else: return None @property def illuminance(self): return self._adapter.read_int32(self.CMD_READ_ILLUMINANCE)
class WeatherstationAdapter(object): CMD_READ_TEMPERATURE_1 = 0x01 # float value (Celsius) CMD_READ_TEMPERATURE_2 = 0x02 # float value (Celsius) CMD_READ_PRESSURE = 0x03 # long value (Pascal) CMD_READ_HUMIDITY = 0x04 # float value (Percentage) CMD_READ_ALTITUDE = 0x05 # long value (Meters) CMD_READ_ILLUMINANCE = 0x06 # long value (Lux) CMD_READ_COLOR_TEMPERATURE = 0x07 # long value (Kelvin) CMD_READ_COLOR_ILLUMINANCE = 0x08 # long value (Lux) def __init__(self, bus=1, i2c_addr=0x05): self._adapter = Adapter(bus=bus, i2c_addr=i2c_addr) @property def pressure(self): return self._adapter.read_int32(self.CMD_READ_PRESSURE) @property def altitude(self): return self._adapter.read_int32(self.CMD_READ_ALTITUDE) @property def illuminance(self): return self._adapter.read_int32(self.CMD_READ_ILLUMINANCE) @property def humidity(self): return self._adapter.read_float(self.CMD_READ_HUMIDITY) @property def temperature_1(self): return self._adapter.read_float(self.CMD_READ_TEMPERATURE_1) @property def temperature_2(self): return self._adapter.read_float(self.CMD_READ_TEMPERATURE_2) @property def color_temperature(self): return self._adapter.read_int32(self.CMD_READ_COLOR_TEMPERATURE) @property def color_illuminance(self): return self._adapter.read_int32(self.CMD_READ_COLOR_ILLUMINANCE)