ZCOMBO Configuration

Additional info that may/may not help…

This is what I see in my logs after pressing the test button on the ZCOMBO.

zcombo_alarm.json (5.7 KB)

Thanks - this is what I was after. It’s just a standard alarm from - I wanted to see if there was any more information in it.

I suspect that it might be a lifeline type of alarm given it comes out every hour (almost exactly) - that’s a guess though :wink:

Lifeline?

Like a network broadcast message, just announcing it is there and alive?

Yep - that sort of thing… If everyone is getting this ‘alarm’ exactly every hour, then either everyone has a common problem, or it’s some sort of notification. For something you rely on, it makes a lot of sense as you could set up a rule to alert you if you don’t get this for longer than (say) 2 or 3 hours.

Again - without any documentation about the device (which I tried to find, but it was far from useful!) I can’t say for sure…

The alert is exactly what I was thinking if it’s a broadcast message.

And yes, information on this device is hard to come by. A couple of days ago I called tech support at First Alert and asked what the message was and was told I would need to call the maker of my zwave stick because that’s where the message is coming from.

Went round and round for an hour while he went thru documents, and the closest he could get to any zwave info was the blurb on this document at BRK Electronics.

Yep - I found almost exactly the same document - not especially useful…

Per another automation forum in which I participate, signal 13 is a heartbeat. Interestingly, some of the posters there have said their signal 13 shows up every 20 minutes while others have said it shows up every 60 minutes. I have one of these units (sending a heartbeat signal every 60 minutes).

Indeed, it would be possible to setup a notification rule if OH does not receive a heartbeat signal every 61 minutes. Prior to switching to OpenHab, I had my previous system doing just that.

I can add that I’m getting them one per hour as well.

Where does one look to see what the signals mean? Presumably there are alarms 1 through 12 as well?

My reading of the zwave wiki page does not list anything in the supported parameters so I assumed, incorrectly, that the Alarm command class would work like a switch and therefore assigned it to a switch which seems to be the wrong choice.

So from what I’m seeing here it may make more sense to assign it to a Number Item but then question becomes what number would represent the actual alarm? How does one discover this short of lighting a fire under one to actually set it off (manually triggering a test doesn’t seem to do much.

Also, is it possible with the Alarm command class to send a command to one (e.g. the upstairs unit goes off, so trigger the alarms on the other floors)?

Thanks

I’m not sure how to translate this from their system to here exactly, but here’s what I’m seeing:

0 = no notification
1 = alarm smoke silenced
1.255 = alarm smoke
2 = alarm CO silenced
2.255 = alarm CO
9 = alarm malfunctioned
9.255 = alarm malfunction silenced
12 = alarm test silenced
12.255 = alarm test
13.255 = alarm heartbeat
14 = alarm CO sensor end-of-life silenced
14.255 = alarm CO sense end-of-life

I’m not sure how they discover these signals - though I do know their bread and butter is ZWave.

I am not aware of a way to trigger other alarm units in the house. I would love that too!

Thanks! I can work with this.

Great info @Brian!

Well, I took a stab at trying to catch alarm 13 but am doing it wrong. This is what I have:

Items:

Contact Hallway_ZCOMBO “ZCOMBO - Hallway [MAP(zcombo.map):%s]” {zwave=“2:0:command=alarm”}
Number Hallway_ZCOMBO_Heartbeat “Heartbeat [%s]” {zwave=“2:0:command=alarm=13”}
DateTime Hallway_ZCOMBO_Last “Last contact [%1$tm-%1$td %1$tH:%1$tM]”

Rules:

rule “ZCOMBO Heartbeat”
when
Item Hallway_ZCOMBO_Heartbeat received update
then
postUpdate(Hallway_ZCOMBO_Last, new DateTimeType())
end

rule “Smoke Alarm”
when
Item Hallway_ZCOMBO received update
then
if (Hallway_ZCOMBO.state == OPEN) {
sendMail('xxxxxxxxxxx",“Hallway”,“SMOKE ALARM is sounding!”)
sendMail('xxxxxxxxxxx",“Hallway”,“SMOKE ALARM is sounding!”)
}
if (Hallway_ZCOMBO.state == CLOSED) {
sendMail('xxxxxxxxxxx",“Hallway”,“SMOKE ALARM stopped!”)
sendMail(“xxxxxxxxxxx”,“Hallway”,“SMOKE ALARM stopped!”)
}
end

The rule to update the time to display in my sitemap does update if I press the test button on the smoke detector, but not when alarm 13 triggers.

And the 2nd rule does send me an email and text when the alarm is triggered and then stops.

I’m assuming that my item is wrong.

Thoughts?

Can you do a zwave binding like that (I.e. alarm=13)?

I haven’t tried it yet but I would create a Number item to receive the alarm number and rules to update dummy switches, contacts, etc. as well as the the logic to send alertsband such.

For alarm 13 I would set a timer for 70 minutes and keep rescheduling it when I receive alarm 13. The body of the timer will have an alert to tell me there is a problem.

Well, I’ve struck out on reading alarm 13…

I’ve tried the following number bindings without success:

//doesn’t compile - could not be parsed - not a valid argument
//Number Hallway_ZCOMBO_Heartbeat “Heartbeat [%s]” {zwave=“2:0:command=13”}

//doesn’t compile - could not be parsed - not a valid argument
//Number Hallway_ZCOMBO_Heartbeat “Heartbeat [%s]” {zwave=“2:0:command=alarm_type=13”}

//compiles ok - doesn’t work
//Number Hallway_ZCOMBO_Heartbeat “Heartbeat [%s]” {zwave=“2:0:command=alarm=13”}

//compiles ok - doesn’t work
//Number Hallway_ZCOMBO_Heartbeat “Heartbeat [%s]” {zwave=“2:0:command=alarm, alarm_type=13”}

I’ve also tried modifying the rule that works for catching the alarm like this, and it doesn’t update hourly.

rule "Smoke Alarm"
when
   Item Hallway_ZCOMBO received update
then
   if (Hallway_ZCOMBO.state == OPEN) {
      sendMail("xxxx","Hallway","ALARM is sounding!")	
      sendMail("xxxx","Hallway","ALARM is sounding!")	
   }
   if (Hallway_ZCOMBO.state == CLOSED) {
      sendMail("xxxx","Hallway","ALARM stopped!")	
      sendMail("xxxx","Hallway","ALARM stopped!")	
   }

   //update last contact
   postUpdate(Hallway_ZCOMBO_Last, new DateTimeType())
end

What about:

Number Hallway_ZCOMBO "Last Alarm [%d]" {zwave="2:command=alarm"}

Then have a rule to catch updates and switch other Items appropriately:

Contact Hallway_ZCOMBO_Heartbeat "Heartbeat [%s]"
rule "ZCOMBO Alarm Signal"
when
    Item Hallway_ZCOMBO received update
then 
    if((Hallway_ZCOMBO.state as DecimalType) == 13) HAllway_ZCOMBO_Heartbeat.sendCommand(OPEN)
   // process other states
end

Given that there is nothing in the “Supported Parameters” column for ALARM on the command class table in the wiki I don’t think this command class will support any of the things you tried. I’m going to try the above myself and see what happens but it will probably be much later today before I see if it worked.

EDIT: Well, that didn’t seem to work. I still get the “NODE 5: Unknown Alarm Type = 13, ignoring report.” and my Number Item is not updated.

Is that a typo? HA…

I’ve configured mine this way as a test too, setup about 45 minutes ago. And I should be getting the heartbeat in the next 10 minutes.

Yes, its a typo. I actually have different names for my Items.

Same as you, error 13 and no update…

A quick update. I did some cooking and managed to set one of the smoke alarms off. When the alarm went off it sent 255. When I reset the alarm it sent 0. While I was there I tested the alarm and at the start it sent 255 and when done testing it sent 0.

So, despite the table of values @Brian posted above it does not appear that the Alarm is making any distinction between alarm types.

I’ve also found no way thus far to receive the 13 - alarm heartbeat. It looks like the binding is blocking it as unknown.

I’m not sure how to trigger the CO alarm to generate a real test as opposed to the manual test by pressing the button to see if it sends something different. I suspect the answer is no.

But for now I have the following that appears to work:

#Items

Group:Number:MIN gCOSmoke_Battery "Minimum CO/Smoke Battery Level [%d]"    <temperature>
Number N_V_Main_COSmoke_Battery   "Main Floor Smoke/CO Alarm Battery [%d]" <temperature> (gCOSmoke_Battery) {zwave="5:command=battery"}
Number N_V_Main_COSmoke_Alarm     "Main Floor Smoke/CO [%d]"               <siren>       {zwave="5:command=alarm"}
Number N_V_Top_CO2moke_Battery    "Top Floor Smoke/CO Alarm Battry [%d]"   <temperature> (gCOSmoke_Battery) {zwave="9:command=battery"}
Number N_V_Top_COSmoke_Alarm      "Top Floor Smoke/CO [%d]"                <siren>       {zwave="9:command=alarm"}

#Rules

rule "Process Main Floor Alarm"
when
    Item N_V_Main_COSmoke_Alarm received update or
    Item N_V_Top_COSmoke_Alarm received update
then
    logInfo("CO/Smoke", "Main floor CO/Smoke Alarm sent " + N_V_Main_COSmoke_Alarm.state.toString)

    switch (N_V_Main_COSmoke_Alarm.state as DecimalType) {
        case 255: Notification_Proxy_Alarm.postUpdate("Main floor CO/Smoke Alarm has gone off!")
        case 0:   Notification_Proxy_Alarm.postUpdate("Main floor CO/Alarm has been reset.")
        default:  Notification_Proxy_Info.postUpdate("Main floor sent an unknown alarm status: " + N_V_Main_COSmoke_Alarm.state.toString)
    }
    switch (N_V_Top_COSmoke_Alarm.state as DecimalType) {
        case 255: Notification_Proxy_Alarm.postUpdate("Top floor CO/Smoke Alarm has gone off!")
        case 0:   Notification_Proxy_Alarm.postUpdate("Top floor CO/Alarm has been reset.")
        default:  Notification_Proxy_Info.postUpdate("Top floor sent an unknown alarm status: " + N_V_Main_COSmoke_Alarm.state.toString)
    }
end

rule "Process Alarm Battery"
when
        Item N_V_Main_COSmoke_Battery received update or
        Item N_V_Top_CO2moke_Battery received update
then
        if((N_V_Main_COSmoke_Battery.state as DecimalType) < 10) {
                Notification_Proxy_Alarm.postUpdate("Replace the main floor CO/Alarm's battery")
        }
        else if ((N_V_Top_CO2moke_Battery.state as DecimalType) < 10) {
                Notification_Proxy_Alarm.postUpdate("Replace the top floor CO/Alarm's battery")
        }
end

Thanks for the follow up.

Looked thru my logs and see the same things as you. Adapting your rules now!

Just a quick note: If one alarm goes off, that rule will send a separate alert for both. That is what I wanted but may not be what everyone wants.