import struct
[docs]def parse_co2(data):
"""Return float on valid co2.
None, on measurement error (INVALID_VALUE).
"""
if len(data) != 2:
raise ValueError
if data == b'\xFF\xFF':
return None
co2, = struct.unpack('<H', data)
return float(co2)
[docs]def parse_temperature(data):
"""Return float on valid temperature.
None, on measurement error (INVALID_VALUE).
"""
if len(data) != 2:
raise ValueError
if data == b'\xFF\xFF':
return None
temp, = struct.unpack('<h', data)
return temp / 100
[docs]def parse_analog_uint10(data):
"""Return float in range 0-1 if data are valid.
None if value is invalid. Raises value error if data are invalid.
"""
if len(data) != 2:
raise ValueError
if data == b'\xFF\xFF':
return None
value, = struct.unpack('<H', data)
return value / 0x3FF
[docs]def parse_humidity(data):
if len(data) != 2:
raise ValueError
if data == b'\xFF\xFF':
return None
value, = struct.unpack('<H', data)
return value / 100