đŸ”„ Smart Smoke System – The Ultimate Fire Alarm Linker

:police_car_light: Smart Smoke System

The ultimate safety suite for interoperable Zigbee smoke detectors in Home Assistant.

Turn your individual Zigbee smoke detectors into a professional, interconnected fire alarm system without buying an expensive hub.

Home Assistant
Devices
Author

:glowing_star: Why this blueprint?

Most Zigbee smoke detectors are “dumb” isolated devices. If a fire starts in the attic, you won’t hear it in the bedroom. This blueprint fixes that.

Key Features

  • :link: Interconnected Alarms: If one detector triggers, ALL detectors in your home will sound their sirens.
  • :warning: Pre-Alarm Verification: Prevents panic from burnt toast. You get a phone notification first (“Is this real?”). If you don’t answer, the main alarm triggers.
  • :speaker_high_volume: Notification Sound Chooser (iOS + Android): Choose default, none, or type your own sound name for pre-alarm and main alarm notifications.
  • :round_pushpin: Room-First Alert Text: Alert titles/messages start with room/area name so it remains visible even when notifications are shortened.
  • :white_check_mark: Guided Self-Test Wizard: A specialized interactive mode. You trigger the test in HA, and your phone guides you room-by-room to physically press the buttons.
  • :fog: Smoke Spray Mode: Optional post-test phase to safely use canned smoke spray without triggering the full evacuation plan.
  • :dog: Watchdog Protection: If a REAL fire is detected during a self-test, the test is immediately aborted, and the full alarm sounds.
  • :high_voltage: Custom Actions: Fully customizable main alarm actions (turn on lights, unlock doors, open blinds, etc.).

:clipboard: Requirements

  1. Home Assistant (2024.10 or newer).
  2. Supported Smoke Detectors connected via Zigbee (ZHA or Zigbee2MQTT), including:
    • Aqara JY-GZ-01AQ
    • Heiman HS1SA-E-PLUS
    • Moes ZSS-HM-SSD01
    • Generic/OEM SMSZB-120
    • Other Zigbee smoke detectors exposed in Home Assistant via ZHA/Zigbee2MQTT
      • Requirement: the detector must provide a binary_sensor with device_class: smoke
      • Check this in Home Assistant: Developer Tools → States (entity attributes)
  3. Home Assistant Mobile App installed on your phone.
  4. Mobile Settings (CRITICAL):
    • iOS: Enable ‘Critical Alerts’ in iOS Settings → Home Assistant → Notifications.
    • Android: Notifications are sent to channel alarm_stream. Configure this channel in Android Settings to “Override Do Not Disturb”, set channel importance to max, and configure your preferred channel sound.

:rocket: Installation

Option 1: Direct Import (Recommended)

  1. Click the badge below to import the blueprint directly into your Home Assistant instance.
    Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint URL.
  2. Click “Preview Blueprint” and then “Import Blueprint”.

Option 2: Manual Installation

  1. Copy the code from the .yaml file.
  2. Go to your Home Assistant config folder: /config/blueprints/automation/xat0x/.
  3. Create a file named xat0x-smoke-linker-ultimate.yaml and paste the code.
  4. Go to Developer Tools → YAML → Reload Automations.

:gear: Configuration Guide

Create a new automation using this blueprint. The settings are organized into collapsible sections:

1. :pager: Devices & Triggers

  • Smoke Detectors: Select ALL your Zigbee smoke detectors here.
  • Test Start Trigger: Create an input_button Helper in Home Assistant (recommended) and select it here. Pressing it starts the Self-Test Wizard. button, switch, input_boolean, sensor, and binary_sensor entities are also supported.
  • Alarm Notification Devices: Phones for the whole family (Critical Alerts).
  • Maintenance Device: The specific phone that will receive the interactive test instructions.

2. :shield: Pre-Alarm

  • Enable Pre-Alarm: Recommended ON.
  • Timeout: Time (default 15s) to confirm “False Alarm” on your phone before the loud sirens and main actions trigger.
  • iOS Sound (Pre-Alarm): Choose default / none or type a custom sound name.
  • Android Sound (Pre-Alarm): Choose default / none or type a custom sound name.

3. :fire: Main Alarm

  • Main Alarm Actions: This is where you define your evacuation plan.
    • Example: Add actions to Turn on all lights 100%, Unlock Nuki/Yale locks, Turn off HVAC/Gas.
  • Mute Duration: How long sirens stay silent when you press “Mute”.
  • iOS Sound (Main Alarm): Choose default / none or type a custom sound name.
  • Android Sound (Main Alarm): Choose default / none or type a custom sound name.

4. :white_check_mark: Self-Test & Spray

  • Enable Self-Test: Required for the wizard.
  • Enable Smoke Spray Test: If enabled, the wizard asks after the physical check if you want to perform a real smoke test.

:shield: How it works

Scenario 1: Burnt Toast (Pre-Alarm)

  1. Smoke is detected in the Kitchen.
  2. NO sirens go off yet (if Pre-Alarm is enabled).
  3. Your phone gets a Critical Notification: “Smoke detected in Kitchen. Confirm Fire?”
  4. You press “False Alarm”.
  5. The system resets. The house stays quiet.

Scenario 2: Real Fire (Main Alarm)

  1. Smoke is detected in the Garage.
  2. You don’t answer the notification within 15 seconds.
  3. FULL ALARM triggers.
  4. ALL supported detectors that expose alarm/siren control are commanded to start sirens.
  5. Main Alarm Actions run (Lights turn on, doors unlock).
  6. Phones receive: “FIRE - EVACUATE!”.

Notification Sound Names (how to find valid names)

  1. In Home Assistant, go to Developer Tools → Actions.
  2. Select the notify.mobile_app_<your_phone> action, enter a test payload in YAML mode, and change the sound / iOS push.sound.name value.
  3. If the phone plays the sound, that name is valid for your device/app setup.
  4. For Android:
    • Android 8+ may use the notification channel sound as highest priority (alarm_stream).
    • If a custom per-message sound is ignored, configure sound directly on the alarm_stream channel in Android notification settings.
    • Example payload keys:
      • Android: data: { sound: "default" }
      • iOS: data: { push: { sound: { name: "alarm.caf" } } }
  5. Use default for system default sound, or none for silent.

Scenario 3: Monthly Maintenance

  1. You press the “Test Start Trigger” (Helper button) in your Dashboard.
  2. Your phone receives: “Smoke Detector Self-Test (1/6)”.
  3. You walk to the indicated room (e.g., Living Room) and press the physical button on the detector.
  4. The system detects the beep, logs it, and notifies you to move to the next room.
  5. (Optional) At the end, you can choose to run a “Smoke Spray Test”.

:red_question_mark: FAQ

Q: How do I start the Self-Test?
A: Unlike older versions, you do not start by pressing a smoke detector button. You must create an input_button helper in Home Assistant, assign it in the Blueprint settings (“Test Start Trigger”), and press that helper in your dashboard to begin the wizard.

Q: I pressed “Mute” on my phone, but the sirens are still going?
A: Zigbee traffic allows limited bandwidth. The blueprint uses an aggressive loop to send the mute command repeatedly. Please wait 5-10 seconds for the network to catch up.

Q: What happens if I am testing and a real fire starts?
A: The “Watchdog” feature is always active. If a detector other than the one you are currently testing reports smoke, the test aborts immediately, and the full alarm triggers.


:warning: Disclaimer

Use at your own risk.

This blueprint is provided “as is”, without warranty of any kind. The author (Xat0X) cannot be held responsible for any failure of the system to operate as expected.

  • This system is NOT a certified fire alarm system.
  • Always ensure you have working, standalone smoke detectors as a primary safety measure.
  • Home Assistant, Zigbee networks, and WiFi can experience downtime; do not rely solely on this software for life-safety.

Created with :heart: by Xat0X

3 Likes

I’m also planning to add smoke detectors from other brands in this config.
Any feedback would be greatly appreciated.

Great work! Last year was very stressful for me, hence I did not have the time to continue work on this blueprint. I see that you implemented many enhancements I wanted to add myself. I will give it a try to see if it is relacing my blueprint for my needs.

Question:
Back than I tried to implement showing the names / areas of the detectors that are not tested yet and have a counter such as “Tested (1/10)” in the notification. This was not possible since variables could not be changed from inside loops. This is possible since some versions of Ha ago. So, it is now possible.

1 Like

Hi Voco, thank you for your reply.

When initiating the self-test using the button helper, the system guides you through the test by announcing the names and locations of the fire alarms. The sequence follows the order in which the devices are added in the blueprint.

If you encounter any bugs or have feedback, I would be happy to further improve and enhance the blueprint.

Your work has been the main source of inspiration, and this blueprint is essentially built upon yours, serving as the core while extending its functionality.

Great blueprint!
Do you think this could work with other zigbee smoke detectors? E.g the frient smoke detector

One question: currently my smoke detectors act as dumb ones and go off no matter if Home Assistant is online or not when they detect smoke. Would your blueprint prevent that? Do the Aqaras need Home Assistant to function at all or do they have some kind of fail save feature?

Thanks! I can certainly look into adding support for other smoke detectors.
Please point me to the correct model from the following list:

A smoke detector always operates independently of Home Assistant.
It sends and receives MQTT signals when an alarm is triggered. With Home Assistant, you can enhance the behavior of otherwise “dumb” detectors by reacting to or sending additional signals. However, the core functionality “detecting smoke and sounding the alarm” always remains active and unaffected.

Hi @Xat0X,

Did you connect the smoke detectors via ZHA or Zigbee2MQTT? I just tried using the automation via ZHA, but it doesn’t seem to trigger when the smoke detectors change their status from Clear to Detected.

Many thanks for this excellent blueprint. Is there anything special that needs to be done for the test button to start sending the notifications to test each smoke alarm ? I have a helper button and the automation does seem to start, but it doesn’t guide me through the rooms, it just sits and waits for the timeout and generates the report at the end
 (i have the latest version of home assistant 2026.1.3)

Sorry for the late reply. Didn‘t get a notification :frowning:

It‘s this one:

Thanks for looking into it

1 Like

is it working with others brands? I have MOES Smoke detector.

1 Like

Hi everyone,

I just wanted to give a quick update, I’ve been a bit short on time lately, so progress has been slower than expected. That said, I’ll be picking this project back up again very soon.

In the meantime, I’ve also received a test unit from another manufacturer. I’ll be evaluating it and adding it, along with other brands, to the compatibility list.

Thanks for your patience and continued interest!

Hi, make sure you enable all notifications for the home assistant app in you settings.

:fire: Huge Update Just Dropped!

I’ve added some powerful new features to take your setup to the next level:

:rocket: What’s New

  • Notification Sound Chooser (iOS + Android)
    Currently in testing — feedback is welcome!
  • Interconnected Fire Alarm Support
    Now compatible with multiple third-party fire alarm brands:
    • Aqara JY-GZ-01AQ — :white_check_mark: Recommended & Approved
    • Heiman HS1SA-E-PLUS — :white_check_mark: Recommended & Approved
    • Moes ZSS-HM-SSD01
    • Generic/OEM SMSZB-120
      • more brands coming soon

:light_bulb: About “Recommended & Approved”
I only give this status after hands-on testing or strong positive feedback from real users. If you’re a supplier or user and want your device verified, feel free to reach out!

1 Like

Made some updates, please delete old blueprint and re-import with button in first post.

that looks awesome!