summaryrefslogtreecommitdiff
path: root/src/home/temphum/dht12.py
blob: d495766cf4607ce84ce23061d1653c833f3900ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from .base import I2CTempHumSensor


class DHT12(I2CTempHumSensor):
    i2c_addr = 0x5C
        
    def _measure(self):
        raw = self.bus.read_i2c_block_data(self.i2c_addr, 0, 5)
        if (raw[0] + raw[1] + raw[2] + raw[3]) & 0xff != raw[4]:
            raise ValueError("checksum error")
        return raw

    def temperature(self) -> float:
        raw = self._measure()
        temp = raw[2] + (raw[3] & 0x7f) * 0.1
        if raw[3] & 0x80:
            temp *= -1
        return temp

    def humidity(self) -> float:
        raw = self._measure()
        return raw[0] + raw[1] * 0.1