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).