# Analytics snippet placeholder — HearthNodes (gatherer.top) # Paste the measurement snippet here (server.js inlines any content that contains # a markup tag into on every page). No GA4 property is assigned to this # site yet, so leave this file as comments only and the build emits no tracking # code.
HearthNodesgatherer.top live 11/28 EN 中文

Smoke and CO alarm: egress lighting, unlock, and silencing the HVAC

When any interconnected alarm sounds, the house lights the egress path to 100 %, unlocks the front door, opens the garage, stops the HVAC fan and silences the boiler — in that order, all within 4 seconds, and independently of any cloud service.

protocol · zwave latency · 4000 ms power · mains published · 2026-09-13 3 devices
Automation YAML safety-smoke-co-egress.yaml
# HearthNodes recipe 25 - smoke and CO egress
alias: "Safety - smoke and CO egress sequence"
id: hn_safety_smoke_co_egress
description: "Egress lighting, unlock, garage, HVAC off, all within 4 seconds"
mode: single
max_exceeded: queued

trigger:
  - platform: state
    entity_id: binary_sensor.smoke_alarm_any
    to: "on"
    id: smoke
  - platform: state
    entity_id: binary_sensor.co_alarm_any
    to: "on"
    id: co

variables:
  egress_lights:
    - light.egress_hall
    - light.egress_stairs
    - light.egress_landing
    - light.porch
  air_handling:
    - climate.hvac_fan
    - climate.boiler

condition:
  - condition: template
    value_template: "{{ is_state_attr(trigger.entity_id, 'sounder_active', true) }}"
  - condition: state
    entity_id: input_boolean.alarm_test_mode
    state: "off"

action:
  - service: light.turn_on
    target:
      entity_id: "{{ egress_lights }}"
    data:
      brightness_pct: 100
  - service: lock.unlock
    target:
      entity_id: lock.front_door
  - service: cover.open_cover
    target:
      entity_id: cover.garage
  - service: climate.turn_off
    target:
      entity_id: "{{ air_handling }}"
  - service: notify.all_devices
    data:
      title: >-
        {{ 'SMOKE' if trigger.id == 'smoke' else 'CARBON MONOXIDE' }} alarm
      message: >-
        {{ trigger.entity_id }} on
        {{ state_attr(trigger.entity_id, 'floor') }}.
        Egress lit, front door unlocked, garage open, air handling stopped.
      priority: high
  - service: timer.start
    target:
      entity_id: timer.egress_relock
    data:
      duration: "00:10:00"

# Every stage runs on the LAN; nothing here needs a cloud service. The alarms'
# own 85 dB sounders and the interconnect wire are the safety device, and they
# keep working with the hub unpowered. Quarterly full test, weekly silent test.
Trigger · state

binary_sensor.smoke_alarm_any · binary_sensor.co_alarm_any

Any interconnected smoke or CO alarm changes to 'active'.

Smoke and CO alarm: egress lighting, unlock, and silencing the HVAC topology

Step-by-step

  1. light.egress_*Light every egress zone to full, including the stairwell and the outside light over the front door; do this first, before anything else in the sequence. turn_on · 100 % · all zones
  2. lock.front_door · cover.garageUnlock the front door and open the garage — an egress path that requires a key is not an egress path. unlock · open
  3. climate.hvac_fan · climate.boilerStop the HVAC fan and the boiler, which is what prevents smoke and CO from being distributed through the house. off
  4. notify.all_devicesSend a high-priority notification naming the triggering sensor and its floor, but never rely on the notification as the primary alert. send · priority high · which sensor · which floor
Step-by-step
Light the path first, then everything else

In a smoke event, visibility is the limiting factor for escape, so the lighting action must be first in the sequence and must not depend on any condition other than the alarm itself. Order matters more than completeness here: a sequence that opens the garage in 10 seconds but lights the stairs in 40 has the order wrong.

Never let the smart layer be the alarm

Interconnected alarms with their own sounders are the safety device; the automation is an enhancement. If the hub is down, every alarm still sounds because the interconnect wire does not route through it. Verify this by cutting the hub's power during a test and confirming all units still sound.

Stop the air handling, not just the heating

A running HVAC fan distributes smoke into bedrooms faster than it would spread on its own. Stopping the fan is more important than stopping the boiler. If the system has a 'fireplace' or 'circulate' mode, make sure it cannot be re-enabled by a scene.

Hardware

ModelProtocolLinkRole in this chain
Z-Wave interconnected smoke and CO alarms zwave wired Mains-powered with battery backup and a Z-Wave radio; the interconnect wire is what makes all of them sound, not the smart layer.
Fail-secure smart lock with a mechanical override zwave wired Must unlock on power loss or on command; a lock that fails locked would trap people in a fire.
Garage door controller with a local radio zwave wired Opens on command even with the internet down, since the automation never leaves the LAN.

When it fails

This recipe is designed to work with the hub offline: the alarm interconnect wire still sounds every unit, and the alarms' own 85 dB sounders are the primary alert. If the hub is unreachable, the egress lighting falls back to its own non-smart emergency circuit driven by a local relay. Nothing in this recipe depends on a cloud service, and a weekly test verifies the whole chain at 11:00 on Sundays with a silent flag set.

Recipes on the same trigger source

Terms Informational only. These recipes control mains electricity, water and physical access. You are responsible for local electrical and plumbing codes, for fusing and isolation, and for testing every fail-safe yourself. Nothing here is professional engineering, legal or safety advice.