Let's start talking about the new Z-wave JS integration

Sure. These are all template binary_sensors.

  - platform: template
    sensors:

#Downstairs Smoke - Z Wave
      smoke_downstairs:
        value_template: >-
          {%- if is_state("sensor.smoke_downstairs_alarm_type", "1") 
              and is_state("sensor.smoke_downstairs_alarm_level", "255") -%}
          true
          {%- else -%}
          false
          {%- endif %}
        device_class: smoke
        friendly_name: 'Downstairs'
        delay_off:
          seconds: 10

#Downstairs CO - Z Wave
      co_downstairs:
        value_template: >-
          {%- if is_state("sensor.smoke_downstairs_alarm_type", "2") 
              and is_state("sensor.smoke_downstairs_alarm_level", "255") -%}
          true
          {%- else -%}
          false
          {%- endif %}
        device_class: gas
        friendly_name: 'Downstairs'
        delay_off:
          seconds: 10

#Downstairs Smoke Test - Z Wave
      smoke_downstairs_test:
        value_template: >-
          {%- if is_state("sensor.smoke_downstairs_alarm_type", "12") 
              and is_state("sensor.smoke_downstairs_alarm_level", "255") -%}
          true
          {%- else -%}
          false
          {%- endif %}
        device_class: smoke
        friendly_name: 'Downstairs'
        delay_off:
          seconds: 10

For reference, I usually see alarm_type = 13 and alarm_level = 255 on these units when nothing is going on.

So far I have only done a test alarm on 1 of 4 of my units and it did trigger OK based on this code. I have, in the past with on OZW, tested the smoke pickup by burning some paper near one of these. I have never seen a CO condition come in (which is a good thing).

2 Likes