示例#1
0
class Lm75(TemperatureSensor):
    """LM75 I2C temperature sensor, made by Texas Instruments, STMicroelectronics, NXP, and Maxim"""
    def __init__(self, i2c: I2C, a0=False, a1=False, a2=False):
        super().__init__()
        self._dev = SMBusDevice(0x48 | (a0 << 0) | (a1 << 1) | (a2 << 2), i2c)

    def update(self):
        data = sign_extend(self._dev.read_word_data_be(0), 16)
        self._celsius = data / 32 / 8
示例#2
0
class Mcp9808(TemperatureSensor):
    """Microchip MCP9808 I2C temperature sensor"""
    @staticmethod
    def probe(i2c: I2C, rate=100) -> List['Mcp9808']:
        devs = []  # type: List['Mcp9808']
        try:
            dev = SMBusDevice(0x18, i2c, rate)
            who_am_i = dev.read_byte_data(0x07)
            if who_am_i == 0x04:
                devs.append(Mcp9808(i2c, False, False, False))
        except RuntimeError:
            pass

        try:
            dev = SMBusDevice(0x19, i2c, rate)
            who_am_i = dev.read_byte_data(0x07)
            if who_am_i == 0x04:
                devs.append(Mcp9808(i2c, True, False, False))
        except RuntimeError:
            pass

        try:
            dev = SMBusDevice(0x1a, i2c, rate)
            who_am_i = dev.read_byte_data(0x07)
            if who_am_i == 0x04:
                devs.append(Mcp9808(i2c, False, True, False))
        except RuntimeError:
            pass

        try:
            dev = SMBusDevice(0x1b, i2c, rate)
            who_am_i = dev.read_byte_data(0x07)
            if who_am_i == 0x04:
                devs.append(Mcp9808(i2c, True, True, False))
        except RuntimeError:
            pass

        try:
            dev = SMBusDevice(0x1c, i2c, rate)
            who_am_i = dev.read_byte_data(0x07)
            if who_am_i == 0x04:
                devs.append(Mcp9808(i2c, False, False, True))
        except RuntimeError:
            pass

        try:
            dev = SMBusDevice(0x1d, i2c, rate)
            who_am_i = dev.read_byte_data(0x07)
            if who_am_i == 0x04:
                devs.append(Mcp9808(i2c, True, False, True))
        except RuntimeError:
            pass

        try:
            dev = SMBusDevice(0x1e, i2c, rate)
            who_am_i = dev.read_byte_data(0x07)
            if who_am_i == 0x04:
                devs.append(Mcp9808(i2c, False, True, True))
        except RuntimeError:
            pass

        try:
            dev = SMBusDevice(0x1f, i2c, rate)
            who_am_i = dev.read_byte_data(0x07)
            if who_am_i == 0x04:
                devs.append(Mcp9808(i2c, True, True, True))
        except RuntimeError:
            pass

        return devs

    def __init__(self, i2c: I2C, a0=False, a1=False, a2=False):
        super().__init__()
        self._dev = SMBusDevice(0x18 | (a0 << 0) | (a1 << 1) | (a2 << 2), i2c)

    def update(self):
        data = sign_extend(self._dev.read_word_data_be(0x05), 13)
        self._celsius = data / 16