First Alert ZCOMBO vs ZCOMBO-G ... missing "Test Button" Channel

Running:
openHAB 3.4.0 Build #3029
Using the Ember EM35x Coordinator on a Dual USB Nortek stick

I recently got a 2nd Smoke Detector (ZCOMBO-G First Alert) … The two are almost identical but the newer one does not implement the “Test Button” Channel. I have found that in fact the device does differentiate between a real Smoke Alarm and the Test Button. I am wondering if a Test Button Channel can be added?

For reference, the Test Button channel is used to indicate that the Test Button has been pressed. A user could implement a rule to make sure the Test Button is pressed periodically or they will get a notification (this is what I have done and why I want the feature :slight_smile: )

Here are the details and the logs that show the Notification Type and Event:

The older ZCOMBO is:

and the newer ZCOMBO-G is:

I turned on zwave DEBUG and watched the log between a “Test Button” event and a “Smoke Alarm” event (i burned a kleenex near the device)

I’ve filtered the DEBUG for just NODE 21 (the newer device). Here is the case where I pushed Test:

2023-01-20 15:24:14.834 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Application Command Request (ALIVE:DONE)
2023-01-20 15:24:14.835 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: resetResendCount initComplete=true isDead=false
2023-01-20 15:24:14.837 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: Incoming command class COMMAND_CLASS_ALARM, endpoint 0
2023-01-20 15:24:14.838 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: SECURITY not supported
2023-01-20 15:24:14.840 [DEBUG] [tocol.commandclass.ZWaveCommandClass] - NODE 21: Received COMMAND_CLASS_ALARM V8 NOTIFICATION_REPORT
2023-01-20 15:24:14.841 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 21: NOTIFICATION report - 0 = 0, event=3, status=255, plen=0
2023-01-20 15:24:14.843 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 21: Alarm Type = SMOKE (0)
2023-01-20 15:24:14.845 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Got an event from Z-Wave network: ZWaveAlarmValueEvent
2023-01-20 15:24:14.847 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Got a value event from Z-Wave network, endpoint=0, command class=COMMAND_CLASS_ALARM, value=255
2023-01-20 15:24:14.848 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter processing NOTIFICATION
**2023-01-20 15:24:14.850 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 3, type OnOffType**
2023-01-20 15:24:14.852 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter processing NOTIFICATION
2023-01-20 15:24:14.853 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 3, type OnOffType
2023-01-20 15:24:14.855 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter processing NOTIFICATION
2023-01-20 15:24:14.857 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 3, type OnOffType
**2023-01-20 15:24:14.858 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Updating channel state zwave:device:0d28f614c7:node21:alarm_smoke to ON [OnOffType]**
2023-01-20 15:24:14.861 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Commands processed 1.
2023-01-20 15:24:14.863 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Checking command org.openhab.binding.zwave.internal.protocol.ZWaveCommandClassPayload@14ad7b.
2023-01-20 15:24:31.452 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Application Command Request (ALIVE:DONE)
2023-01-20 15:24:31.453 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: resetResendCount initComplete=true isDead=false
2023-01-20 15:24:31.453 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: Incoming command class COMMAND_CLASS_ALARM, endpoint 0
2023-01-20 15:24:31.454 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: SECURITY not supported
2023-01-20 15:24:31.454 [DEBUG] [tocol.commandclass.ZWaveCommandClass] - NODE 21: Received COMMAND_CLASS_ALARM V8 NOTIFICATION_REPORT
2023-01-20 15:24:31.455 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 21: NOTIFICATION report - 0 = 0, event=0, status=255, plen=1
2023-01-20 15:24:31.456 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 21: Alarm Type = SMOKE (0)
2023-01-20 15:24:31.456 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Got an event from Z-Wave network: ZWaveAlarmValueEvent
2023-01-20 15:24:31.457 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Got a value event from Z-Wave network, endpoint=0, command class=COMMAND_CLASS_ALARM, value=255
2023-01-20 15:24:31.458 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter processing NOTIFICATION
**2023-01-20 15:24:31.459 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 0, type OnOffType**
2023-01-20 15:24:31.459 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter processing NOTIFICATION
2023-01-20 15:24:31.460 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 0, type OnOffType
2023-01-20 15:24:31.461 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter processing NOTIFICATION
2023-01-20 15:24:31.461 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 0, type OnOffType
**2023-01-20 15:24:31.462 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Updating channel state zwave:device:0d28f614c7:node21:alarm_smoke to OFF [OnOffType]**
2023-01-20 15:24:31.463 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Commands processed 1.
2023-01-20 15:24:31.464 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Checking command org.openhab.binding.zwave.internal.protocol.ZWaveCommandClassPayload@3a2e3c.
2023-01-20 15:24:31.807 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Application Command Request (ALIVE:DONE)
2023-01-20 15:24:31.808 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: resetResendCount initComplete=true isDead=false
2023-01-20 15:24:31.809 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: Incoming command class COMMAND_CLASS_BATTERY, endpoint 0
2023-01-20 15:24:31.810 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: SECURITY not supported
2023-01-20 15:24:31.810 [DEBUG] [tocol.commandclass.ZWaveCommandClass] - NODE 21: Received COMMAND_CLASS_BATTERY V1 BATTERY_REPORT
2023-01-20 15:24:31.811 [DEBUG] [ommandclass.ZWaveBatteryCommandClass] - NODE 21: Battery report value = 100
2023-01-20 15:24:31.812 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Got an event from Z-Wave network: ZWaveCommandClassValueEvent
2023-01-20 15:24:31.812 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Got a value event from Z-Wave network, endpoint=0, command class=COMMAND_CLASS_BATTERY, value=100
2023-01-20 15:24:31.813 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Updating channel state zwave:device:0d28f614c7:node21:battery-level to 100 [DecimalType]
2023-01-20 15:24:31.814 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Commands processed 1.
2023-01-20 15:24:31.815 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Checking command org.openhab.binding.zwave.internal.protocol.ZWaveCommandClassPayload@1cfba5e.
2023-01-20 15:29:18.896 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Application Command Request (ALIVE:DONE)
2023-01-20 15:29:18.898 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: resetResendCount initComplete=true isDead=false
2023-01-20 15:29:18.899 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: Incoming command class COMMAND_CLASS_ALARM, endpoint 0
2023-01-20 15:29:18.900 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: SECURITY not supported
2023-01-20 15:29:18.902 [DEBUG] [tocol.commandclass.ZWaveCommandClass] - NODE 21: Received COMMAND_CLASS_ALARM V8 NOTIFICATION_REPORT
2023-01-20 15:29:18.903 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 21: NOTIFICATION report - 0 = 0, event=2, status=255, plen=0
2023-01-20 15:29:18.905 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 21: Alarm Type = SMOKE (0)
2023-01-20 15:29:18.906 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Got an event from Z-Wave network: ZWaveAlarmValueEvent
2023-01-20 15:29:18.907 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Got a value event from Z-Wave network, endpoint=0, command class=COMMAND_CLASS_ALARM, value=255
2023-01-20 15:29:18.909 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter processing NOTIFICATION
**2023-01-20 15:29:18.910 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 2, type OnOffType**
2023-01-20 15:29:18.911 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter processing NOTIFICATION
2023-01-20 15:29:18.913 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 2, type OnOffType
2023-01-20 15:29:18.914 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter processing NOTIFICATION
2023-01-20 15:29:18.915 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 2, type OnOffType
**2023-01-20 15:29:18.917 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Updating channel state zwave:device:0d28f614c7:node21:alarm_smoke to ON [OnOffType]**
2023-01-20 15:29:18.919 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Commands processed 1.
2023-01-20 15:29:18.922 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Checking command org.openhab.binding.zwave.internal.protocol.ZWaveCommandClassPayload@1c7bc21.
2023-01-20 15:29:34.056 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Application Command Request (ALIVE:DONE)
2023-01-20 15:29:34.057 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: resetResendCount initComplete=true isDead=false
2023-01-20 15:29:34.059 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: Incoming command class COMMAND_CLASS_ALARM, endpoint 0
2023-01-20 15:29:34.061 [DEBUG] [ng.zwave.internal.protocol.ZWaveNode] - NODE 21: SECURITY not supported
2023-01-20 15:29:34.062 [DEBUG] [tocol.commandclass.ZWaveCommandClass] - NODE 21: Received COMMAND_CLASS_ALARM V8 NOTIFICATION_REPORT
2023-01-20 15:29:34.063 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 21: NOTIFICATION report - 0 = 0, event=0, status=255, plen=1
2023-01-20 15:29:34.064 [DEBUG] [.commandclass.ZWaveAlarmCommandClass] - NODE 21: Alarm Type = SMOKE (0)
2023-01-20 15:29:34.065 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Got an event from Z-Wave network: ZWaveAlarmValueEvent
2023-01-20 15:29:34.066 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Got a value event from Z-Wave network, endpoint=0, command class=COMMAND_CLASS_ALARM, value=255
2023-01-20 15:29:34.067 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter processing NOTIFICATION
**2023-01-20 15:29:34.069 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 0, type OnOffType**
2023-01-20 15:29:34.070 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter processing NOTIFICATION
2023-01-20 15:29:34.071 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 0, type OnOffType
2023-01-20 15:29:34.072 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter processing NOTIFICATION
2023-01-20 15:29:34.073 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 0, type OnOffType
**2023-01-20 15:29:34.074 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Updating channel state zwave:device:0d28f614c7:node21:alarm_smoke to OFF [OnOffType]**
2023-01-20 15:29:34.075 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Commands processed 1.
2023-01-20 15:29:34.077 [DEBUG] [nal.protocol.ZWaveTransactionManager] - NODE 21: Checking command org.openhab.binding.zwave.internal.protocol.ZWaveCommandClassPayload@7fa642.
openhabian@openhabian:~ $ 

From the log I have extracted 4 lines from the first test (Test Button pressed):

**2023-01-20 15:24:14.850 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 3, type OnOffType**
**2023-01-20 15:24:14.858 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Updating channel state zwave:device:0d28f614c7:node21:alarm_smoke to ON [OnOffType]**
**2023-01-20 15:24:31.459 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 0, type OnOffType**
**2023-01-20 15:24:31.462 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Updating channel state zwave:device:0d28f614c7:node21:alarm_smoke to OFF [OnOffType]**

And then 4 lines from the actual Smoke Alarm test:

**2023-01-20 15:29:18.910 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 2, type OnOffType**
**2023-01-20 15:29:18.917 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Updating channel state zwave:device:0d28f614c7:node21:alarm_smoke to ON [OnOffType]**
**2023-01-20 15:29:34.069 [DEBUG] [ternal.converter.ZWaveAlarmConverter] - NODE 21: Alarm converter NOTIFICATION event is 0, type OnOffType**
**2023-01-20 15:29:34.074 [DEBUG] [ding.zwave.handler.ZWaveThingHandler] - NODE 21: Updating channel state zwave:device:0d28f614c7:node21:alarm_smoke to OFF [OnOffType]**

In the “Test Button” case, the Notification Event is 0x03 (Test Detected) followed by 0x00
in the “Smoke Alarm” case, the Notification Event is 0x02 (Smoke Detected) followed by 0x00

Not sure if there were other reasons why this was done this way, but in comparing this device with the older device they have similar Channels but the new one is missing the “Test Button”

Channels of original device:

And Channels of the newer device:

The Heartbeat is implemented but the name is different in the newer device “Alarm (system)” … not a big deal but not sure why they have different names (maybe the equipment user manual?)

Anyway, was wondering if this could be fixed? I would be happy to help generate updates to the zwave files (I forgot what they are called but the ones that define the capabilities etc).

Congratulations you sound like you are ready to get access and make a contribution to the community maintained Zwave DB :wink:. The blog on how to do that is here. Blog Posts (opensmarthouse.org).

You want to add a channel for Test button in the Alarm section of the Endpoints tab. I think alarm_tamper will be channel type Name and the Config should be type=SMOKE

Also you can change the title on the newer device to Heartbeat/Malfunction if you want to match the manual, but the rest of that channel looks good.

1 Like

Thanks Bob … I will take a stab at it :slight_smile: … I believe I did this for a Lock before … :crossed_fingers:

Ok Bob, I made the changes to the database. I can’t find a place to submit a comment about the changes I made … I submitted the changes for review.

Question: Can you explain how my added Channel will get mapped to the correct “Notification Event” as I noted in this thread? Is that a manual process?

You could open a ticket to provide additional information:
grafik

The mapping from Z-Wave notification to openHAB channel is hard coded in org.openhab.binding.zwave/ZWaveAlarmConverter.java at main · openhab/org.openhab.binding.zwave · GitHub.

Edit:

Type must be SMOKE (not APPLIANCE).

1 Like

Ok got it … I used APPLIANCE since that is what the older device used … I’ve changed it to SMOKE.

I will submit a ticket with the relevant info.

Thanks for your help!

@anon71759204 is correct on all counts. I was going to mention that I did not think the test button would work on the older model the way it was setup, but didn’t want to get into that since you only asked about the newer model. Also it was a different alarm class version V1 vs V8, so I wasn’t sure. Also I do not think the “Heatbeat” is correct on the older model either.

The key part in the file he attached is this

        SMOKE__NONE("SMOKE", 0),
        SMOKE__SMOKE_DETECTED("SMOKE", 1),
        SMOKE__SMOKE_DETECTED_UNKNOWN("SMOKE", 2),
        SMOKE__SMOKE_ALARM_TEST("SMOKE", 3),
        SMOKE__REPLACE("SMOKE", 4),

So if you look at your debug you can see the test code is “3” and the other is “2”

Also there are these lines in the Alarm CC

        GENERAL(0),
        SMOKE(1),
        CARBON_MONOXIDE(2),
        CARBON_DIOXIDE(3),
        HEAT(4),
        FLOOD(5),
        ACCESS_CONTROL(6),
        BURGLAR(7),
        POWER_MANAGEMENT(8),
        SYSTEM(9),
        EMERGENCY(10),
        CLOCK(11),
        APPLIANCE(12), -You can see why I do not think this won't work see your table
        HOME_HEALTH(13), -the old device uses this for Heartbeat, again table shows "9"

So comparing to the table the device will send 1,2 or 9 followed by the event. You filtered the debug log (not recommended :wink:) , but if you look at the detail you will see a string of bytes for a received message and part of that string will be (15 01 03) = Node21inhex, Smoke, Event

Probably more than you wanted to know…

But both Heartbeat and Test Button work on the older model … not sure what you mean?

I have all the log save, just wanted to capture the key info. Yes, the “15 01 03” is exactly what I was referring to in my log.

It must be the Alarm version difference allows those to work. No worries if it works. You just can’t use those with the new device based on your table.

Heartbeat, called “Alarm (system)” on the new device, works the same way. I am using it now. The Test Button on the new device currently triggers a Smoke Alarm for about 15 seconds.