co2sensor.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:pmsensor 作者: open-homeautomation 项目源码 文件源码
def read_mh_z19_with_temperature(serial_device):
    """ Read the CO2 PPM concenration and temperature from a MH-Z19 sensor"""

    logger = logging.getLogger(__name__)

    ser = serial.Serial(port=serial_device,
                        baudrate=9600,
                        parity=serial.PARITY_NONE,
                        stopbits=serial.STOPBITS_ONE,
                        bytesize=serial.EIGHTBITS)

    sbuf = bytearray()
    starttime = time.time()
    finished = False
    timeout = 2
    res = None
    ser.write(MZH19_READ)
    while not finished:
        mytime = time.time()
        if mytime - starttime > timeout:
            logger.error("read timeout after %s seconds, read %s bytes",
                         timeout, len(sbuf))
            return None

        if ser.inWaiting() > 0:
            sbuf += ser.read(1)

            if len(sbuf) == MHZ19_SIZE:
                # TODO: check checksum

                res = (sbuf[2]*256 + sbuf[3], sbuf[4] - 40)
                logger.debug("Finished reading data %s", sbuf)
                finished = True

        else:
            time.sleep(.1)
            logger.debug("Serial waiting for data, buffer length=%s",
                         len(sbuf))

    return res
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号