Not seeing CO alarm with First Alert ZCOMBO detector



I am able to pair my First Alert ZCOMBO detector but it only shows up as a smoke detector, nothing about carbon monoxide. I pushed the test button but the activity still only shows as smoke test. Am I missing something?
The device type is just Z-Wave Smoke Detector, but it looks like there is code in there to handle Carbon Monoxide as well.


Nope, you’re good. I have 12 of these, and they will report CO2 separately from smoke. I test mine with this:


It shows up as Z-Wave Smoke Detector only for me when I added it and just says State: “Clear”. Not as Smoke and CO detector. Bit annoying UX/usability, Hope it actually sends both signals without having to buy $9 can of CO tester.


It does. If you really want to get geeky, you can look through the DH code and you can see where it checks for the condition when it’s triggered:

ST probably kept the UI pretty basic with wording, plus this code works for just the smoke detector and the smoke/CO2 detector. The “fingerprint” that devices use to say “what” they are to any type of hub is probably the same for both types of detectors, at least that’s my best guess right now without doing a little more digging. That’s why the name is pretty basic too.


Wow thanks for the thorough reply. I just got this today so it’s nice to know so much code is on github. Easier to figure out what was going on.


In Canada, that $9 can of CO2 test costs $44!!!

(Impact Vector) #7

This may be a bit old…
I used the code above and noticed that I still only have 1 icon (Says clear - and shows a battery level)
listed under the device.

Does anyone else have this happen or do most people see the 3-4 icons?
This is the 3+ icons that I would like to have if possible


Hi @impact,

Version 2 of the mobile app changed all that now.

SmartApps is a tab.
Activity is a tab called Recently.
Preferences is now the gear in the upper right corner.
Remove is now within Preferences.

(fireheadman) #9

it would present a more “polished” look and feel if ST would put a little more into the DHL to show a separate Smoke and CO tile.


If this is seeing the zcombo as a CO detector, then why can’t I select it as a sensor for the “CO2 Vent” SmartApp under the Safety and Security section? And did they mean “CO2” or “CO”?


I’m sure the developer meant CO. I made the same mistake too.

ST’s device type for the zcombo has “capability "Carbon Monoxide Detector"” defined, so if the smartapp is properly looking for that capability it should find it. Here’s more information on the capabilities the app should be using:

I tried finding the ST source code for that app on Github, which looks like @Dianoga may have originally wrote (perhaps before joining ST?). I was hoping to dig into the code, but no luck.

@Dianoga, is that code anywhere where we can see it?

(Brian Steere) #12

CO2 vent was probably one of mine from long ago. And it was specifically for Carbon Dioxide (CO2). I was using it with the Netatmo.

I’m not sure where the code is. I don’t see it in any of the usual places.


Thanks @Dianoga. So much for assuming it was CO!


Thanks @Dianoga for the clarification, I thought I was going crazy. If you happen to find that code would you mind sharing? I’d like to adapt that to a CO detector to have it function similarly. Thanks!

(Brian Steere) #15

Found it. I have no idea if it still works, but you’re welcome to play with it.

 *  CO2 Vent
 *  Copyright 2014 Brian Steere
 *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 *  in compliance with the License. You may obtain a copy of the License at:
 *  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
 *  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
 *  for the specific language governing permissions and limitations under the License.
    name: "CO2 Vent",
    namespace: "dianoga",
    author: "Brian Steere",
    description: "Turn on a switch when CO2 levels are too high",
    category: "Health & Wellness",
    iconUrl: "",
    iconX2Url: ""

preferences {
	section("CO2 Sensor") {
		input "sensor", "device.netatmoBasestation", title: "Sensor", required: true
        input "level", "number", title: "CO2 Level", required: true
    section("Ventilation Fan") {
    	input "switches", "capability.switch", title: "Switches", required: true, multiple: true

def installed() {
	log.debug "Installed with settings: ${settings}"


def updated() {
	log.debug "Updated with settings: ${settings}"


def initialize() { = false;
    subscribe(sensor, "carbonDioxide", 'handleLevel')    

def handleLevel(evt) {
	def co2 = sensor.currentValue("carbonDioxide").toInteger()
    log.debug "CO2 Level: ${co2} / ${settings.level} Active: ${}"
	if(co2 >= settings.level && ! {
    	log.debug "Turning on"
    	switches.each { it.on(); } = true;
    } else if(co2 < settings.level && {
    	log.debug "Turning off" = false;
        switches.each {; }


Thanks @Dianoga!