Note: This post is currently just some loose notes during my R&D, and is a continuation of the Extech CO250 project.
Open-source Java library
I have a working Java library that reads all values over serial and provides statistics (minimum, maximum, average, etc). It’s open-source and available here on GitHub.
9600 baud, 8 databits, No parity, 1 stopbit.
Here are five packets of data from the device:
$CO2:Air:RH:DP:WBTf9 C1116ppm:T26.3C:H52.4%:d15.8C:w19.3C31 $CO2:Air:RH:DP:WBTf9 C1119ppm:T26.3C:H52.3%:d15.8C:w19.3C2f $CO2:Air:RH:DP:WBTf9 C1115ppm:T26.3C:H52.6%:d15.8C:w19.3C30 $CO2:Air:RH:DP:WBTf9 C415ppm:T26.2C:H66.2%:d19.4C:w21.5C63 $CO2:Air:RH:DP:WBTf9 C413ppm:T26.2C:H66.1%:d19.3C:w21.4C68
Let’s look at this packet:
It can be broken down as follows:
$ 0x24 - start character CO2:Air:RH:DP:WBT description f9 line checksum 0x0D 0x0A - line break C 1115 ppm : CO2 value T 26.3 C : air temperature value H 52.9 % : relative humidity value d 15.9 C : dew point temperature value w 19.4 C wet bulb temperature value 2b line checksum 0x0D 0x0A - line break
The checksum is an 8-bit, 2s complement, sum of all bytes in the line (i.e. between line breaks).
- Variable packet length (no zero padding on numbers).
- No comms during the initial 30 second warm up after power on.
- Values over serial are always live, even if the device is displaying Min, Max, STEL, or TWA.