23 Mar 2018

Extech CO250 Protocol Details

Extech CO250 Protocol Title

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.

Connection configuration

9600 baud, 8 databits, No parity, 1 stopbit.

Example data

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

Packet breakdown

Let’s look at this packet:

$CO2:Air:RH:DP:WBTf9
C1115ppm:T26.3C:H52.9%:d15.9C:w19.4C2b

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

Checksum

The checksum is an 8-bit, 2s complement, sum of all bytes in the line (i.e. between line breaks).

Notes

  • 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.

About the Author:

Hardware and software engineer with experience in product development and building automation. Director at Cabot Technologies and Product Manager at NEX Data Management Systems.

4 comments

  1. […] So we have a good idea of the RS-232 signals and cable. Next is to look at the data in more detail. My next post will be a look at the Extech CO250 serial protocol details. […]

  2. […] do the same with this Extech CO250, so in future posts I’ll detail the RS-232 connection and serial protocol, and develop some software. Stay […]

  3. someguy

    Using your cable and serial settings I got the Extech SD700 to spit out:
    41040100000591
    42010100000243
    43910100010183
    Checking this against the live display.
    59.1 %RH
    24.3 °C
    1018.3 hPA
    I can deduce that the first line is %RH the second temp and las barometric pressure.
    However what I am unable to say is what the leading characters really mean.

    Do you have any idea?

    • Sorry, no idea. The second digit seems to be the parameter:

      4 [1] ... rH
      4 [2] ... Tdb
      4 [3] ... P

      But beyond that, I’m not sure. With some tinkering you could confirm that those parameters can be reliably parsed, and you can leave it at that if that satisfies your needs. Good luck!

Leave a Reply

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.