GE Ventostat CO2 ZigBee Monitor

From Digi Developer

Jump to: navigation, search

Contents

Ventostat® Wall Mount CO2, Humidity and Temperature Transmitters

GE Sensing Telaire Products sells a Ventostat variant with Digi ZigBee - with the S2C SMT Em357 module. You will need to talk to GE sales to obtain this because they have a variety of wireless variants from many sources, yet do not include on their web site to reduce customer-confusion.

In a nutshell, it is like a thermostat which also measures the carbon-dioxide in the room, which allows the ventilation system to increase or decrease energy use based on room occupancy. Why is that important? Easy - consider my office cubical, which is probably much like your own working space. On weekends the CO2 level is about 400PPM, which is nearly outdoor quality. Great ... but in summer, that means my employer is paying too much to suck in fresh (hot) air which it must cooled down - just so that the people who ARE NOT AT WORK can feel better. In contrast, during the week the CO2 level climbs to 800-1000PPM, which perhaps means they do not intake enough fresh air.

The 'VentoStat' allows the ventilation system to increase fresh air intact when more people are 'breathing' inside, and reduce fresh air intact when less (or no) people are 'breathing' inside. Tests by the US DOT have shown this can cut an easy 17% off the energy costs related to ventilation, giving payback in months. Is CO2 dangerous? Not in levels under several tens of thousands of PPM. Some people might complain about 'stuffiness' when it climbs over 1500 or 2000 PPM, but in truth CO2 is more a 'canary gas' used as an indirect measure, in that as CO2 climbs, so does body-odor, humidity, perfume and food smells - all things which make employees feel the room is stuffy and unhealthy.

The GE VentoStat isn't cheap - expect it to be in the $350 range for low volume. And while you can buy 'air quality' sensors for as little as $50, I have been told there are some major difference between the GE Ventostat and such sensors:

  • the $50 sensors tend to measure hydro-carbons, meaning vehicle fumes, new-carpet smells (etc) which is not directly related to human occupancy like CO2 level is.
  • the $50 sensors tend to be catalyst-film based, so wear out or need 'refresh' in a few years, whereas the infrared method used by GE claims a minimum of 10 years maintenance-free use.

Ventostat Python Code

Example Usage

But enough of the sales fluff. Even in a home, one can make use of the Ventostat to manage the low-power fan-only mode in modern furnaces. For example, I have a 3-zone HVAC system at home with a 96% AFUE furnace. The fan-only mode is published as 75-watts - and since I have power monitoring in my home circuit panel, I can confirm that it really is about 75-watts. However, since my home has a fixed-open fresh-air intake, running the fan when not required can make rooms unnecessarily warm or cold in spring or fall. It also is a waste of money to run the fan-only mode when the windows are open.

So one can use a GE ventostat (or similar air-quality product) to feed a CO2 level into the Device/DIA, then use an alarm function to enable/disable the HVAC fan-only mode. The details of this are unfortunately outside the scope of DIA since you also need a DIA-driver for your HVAC system. My own furnace uses RCS TR16 thermostats based on RS-485, which I talk wirelessly to via Robust DataComm Xbee/485 adapters which support the 16vac supplied by my furnace to the thermostats.

Theory

The Ventostat uses a simple ASCII protocol. For example, to query all 3 readings at once, you send the string '$33$88\r\n' and you will receive a response such as '719, 35.3, 23.3\r\n', which is CO2, humidity and temperature respectively. Therefore the Digi XBee is in 'AT Transparent Router' mode, and the core DIA driver is based upon a common XBee serial driver which handles the details for sending and receiving strings.

Note: be careful when reflashing the XBee, for the Ventostat's serial port must be (19200,8,N,1), which is not the Xbee default. GE sells a special USB-serial cable which allows you to use XCTU directly with the internal S2C XBee module.

Actual Code ZIP

This file contains the files which must be merged with the DIA 2.x.x code.

File List
vento_readme.txt

REM These YML samples are the same, just two names
cfg\ventostat_ge.yml
cfg\dia.yml

REM The GE core files including the support for the Min/Max/Average
src\devices\vendors\GE_Energy\__init__.py
src\devices\vendors\GE_Energy\ut_minmaxavg.py
src\devices\vendors\GE_Energy\ventostat.py

REM My own 'DeviceBase' since I find the Digi DIA one to unhelpful & not very object oriented
src\samples\annotated_sample.py
src\devices\vendors\robust\__init__.py
src\devices\vendors\robust\robust_base.py
src\devices\vendors\robust\robust_xbee.py
src\devices\vendors\robust\robust_xserial.py
src\devices\vendors\robust\prodid.py
src\devices\vendors\robust\xserial_util.py
src\devices\vendors\robust\avail_base.py
src\devices\vendors\robust\parse_duration.py
src\devices\vendors\robust\sleep_aids.py diff\src\devices\vendors\robust
Example YML fragment

This shows some of the power of my own device base. It creates a 'description' channel, plus as configured below I get 1 reading every 5 minutes synchronized to the clock, so on the hour, then at 5, 10, 15 (etc) minutes after the hour. Does that clean & fancy timing matter? Does seeing the value in DegF matter? Not in the cosmic sense, but it's what I want!

These settings are better described in the vento_readme.txt file.

  - name: Z1CO2
    driver: devices.vendors.GE_Energy.ventostat:Ventostat
    settings:
        xbee_device_manager: xbee_device_manager
        extended_address: "00:13:a2:00:40:52:94:b2!"
        dev_poll_rate_sec: '5 min'
        dev_poll_cleanly_min: True
        degf: True
        add_statistics: True
        dev_desc: "Living Room Zone CO2 sensor"
Example Channel_Dump
  • The channels basic to the Ventostat class: 'co2', 'humidity', 'temperature', 'error', 'version'
  • The optional Ventostat statistic channels enabled: 'co2_stats', 'hum_stats', 'tmp_stats' (the format is like "CO2, min=917, avg=926, max=1026")
  • The channels from my own device & Xbee Base: 'availability', 'online', 'description' ('availability' and 'online' relate to XBee health and the percentage of lost heartbeat messages - in my Xbee base, all routers send IO data by default every 60 seconds as a heartbeat of mesh health.)

These channels are better described in the vento_readme.txt file.

   Channel                  Value              Unit     Timestamp
   ------------------------ ------------------ -------- -------------------
   availability             99.8               %        2012-07-19 19:07:24
   co2                      947                PPM      2012-07-19 19:11:00
   co2_stats                CO2, min=917, avg=          2012-07-19 19:11:00
   description              Co2 sensor by Desk          1970-01-01 00:00:00
   error                    False                       2012-07-19 19:02:25
   hum_stats                HUM, min=53.4, avg          2012-07-19 19:11:00
   humidity                 53.4               RH       2012-07-19 19:11:00
   online                   True                        2012-07-19 19:02:44
   temperature              74.3               F        2012-07-19 19:11:00
   tmp_stats                TMP, min=73.9, avg          2012-07-19 19:11:00
   version                  104, 2011/08/12 11          2012-07-19 19:02:25
Personal tools
Wiki Editing