Aqara smoke detector linkage alarm

This is what I get when pressing the Mute button

<small>2023-11-13 09:18:12</small>`MQTT publish: topic
 'zigbee2mqtt/Rauchmelder Gast', payload 
'{"battery":100,"buzzer_manual_alarm":false,"buzzer_manual_mute":false,"heartbeat_indicator":false,"linkage_alarm":true,"linkage_alarm_state":null,"linkquality":123,"power_outage_count":19,"smoke":false,"smoke_density":0,"smoke_density_dbm":0,"test":false,"update":{"installed_version":17,"latest_version":17,"state":"idle"},"update_available":false,"voltage":3015}'`

And now the complete flow:

info 2023-11-13 09:39:45MQTT publish: topic 'zigbee2mqtt/Wassermelder', payload '{"battery":100,"battery_low":false,"linkquality":163,"tamper":false,"water_leak":true}'
info 2023-11-13 09:40:17MQTT publish: topic 'zigbee2mqtt/Rauchmelder Gast', payload '{"battery":100,"buzzer_manual_alarm":true,"buzzer_manual_mute":false,"heartbeat_indicator":false,"linkage_alarm":true,"linkage_alarm_state":null,"linkquality":69,"power_outage_count":19,"smoke":false,"smoke_density":0,"smoke_density_dbm":0,"test":false,"update":{"installed_version":17,"latest_version":17,"state":"idle"},"update_available":false,"voltage":3015}'
info 2023-11-13 09:40:24MQTT publish: topic 'zigbee2mqtt/Wassermelder', payload '{"battery":100,"battery_low":false,"linkquality":160,"tamper":false,"water_leak":false}'
info 2023-11-13 09:40:33MQTT publish: topic 'zigbee2mqtt/Rauchmelder Gast', payload '{"battery":100,"buzzer_manual_alarm":true,"buzzer_manual_mute":false,"heartbeat_indicator":false,"linkage_alarm":true,"linkage_alarm_state":null,"linkquality":72,"power_outage_count":19,"smoke":false,"smoke_density":0,"smoke_density_dbm":0,"test":false,"update":{"installed_version":17,"latest_version":17,"state":"idle"},"update_available":false,"voltage":3015}'
info 2023-11-13 09:40:34MQTT publish: topic 'zigbee2mqtt/Rauchmelder Gast', payload '{"battery":100,"buzzer_manual_alarm":false,"buzzer_manual_mute":false,"heartbeat_indicator":false,"linkage_alarm":true,"linkage_alarm_state":null,"linkquality":76,"power_outage_count":19,"smoke":false,"smoke_density":0,"smoke_density_dbm":0,"test":false,"update":{"installed_version":17,"latest_version":17,"state":"idle"},"update_available":false,"voltage":3015}'

The 9:40:33 is the initial pressing of the Mute button at the smoke detector. One second later I get the confirmation that the manual alarm is switched off. To me it seems like pressing the Mute button only send the current status.

One proposal, but I am unsure if this proposal is good, bad or ugly - you could misuse the selftest function to mute all sirens:

info 2023-11-13 15:59:32MQTT publish: topic 'zigbee2mqtt/Rauchmelder Gast', payload '{"battery":100,"buzzer_manual_alarm":true,"buzzer_manual_mute":false,"heartbeat_indicator":false,"linkage_alarm":true,"linkage_alarm_state":null,"linkquality":47,"power_outage_count":19,"smoke":false,"smoke_density":0,"smoke_density_dbm":0,"test":false,"update":{"installed_version":17,"latest_version":17,"state":"idle"},"update_available":false,"voltage":3013}'
info 2023-11-13 15:59:32MQTT publish: topic 'zigbee2mqtt/Rauchmelder Gast', payload '{"battery":100,"buzzer_manual_alarm":false,"buzzer_manual_mute":false,"heartbeat_indicator":false,"linkage_alarm":true,"linkage_alarm_state":null,"linkquality":43,"power_outage_count":19,"smoke":false,"smoke_density":0,"smoke_density_dbm":0,"test":false,"update":{"installed_version":17,"latest_version":17,"state":"idle"},"update_available":false,"voltage":3013}'
info 2023-11-13 15:59:38MQTT publish: topic 'zigbee2mqtt/Rauchmelder Gast', payload '{"battery":100,"buzzer_manual_alarm":false,"buzzer_manual_mute":false,"heartbeat_indicator":false,"linkage_alarm":true,"linkage_alarm_state":null,"linkquality":58,"power_outage_count":19,"smoke":false,"smoke_density":0,"smoke_density_dbm":0,"test":true,"update":{"installed_version":17,"latest_version":17,"state":"idle"},"update_available":false,"voltage":3013}'
info 2023-11-13 15:59:42MQTT publish: topic 'zigbee2mqtt/Rauchmelder Gast', payload '{"battery":100,"buzzer_manual_alarm":false,"buzzer_manual_mute":false,"heartbeat_indicator":false,"linkage_alarm":true,"linkage_alarm_state":null,"linkquality":69,"power_outage_count":19,"smoke":false,"smoke_density":0,"smoke_density_dbm":0,"test":false,"update":{"installed_version":17,"latest_version":17,"state":"idle"},"update_available":false,"voltage":3013}'

First message is the alarm, second is after mute, third is the selftest and fourth is after the selftest.

Hi, Can someone give me some information about this aqara smoke detectors? I cannot find any reviews and can only buy it from aliexpress so I won’t be able to return it when it’s bad.

Does it work perfectly with HA?
Is the build quality good, can it easily detect smoke?
The linkage alarm works? thanks to this blueprint?
Is it possible to trigger the alarm to use it as home security as well?
Is the battery life good, how much do you need to replace the battery?
Is it possible to silence the detectors via HA?

any other comments?

Thank you

Does it work perfectly with HA? - Paired through Z2M definitely YES and it really exposes WAY more things than my cheapo sensors
Is the build quality good, can it easily detect smoke? - Hard to guess, I am definitely thinking about testing it with a smoke spray
The linkage alarm works? thanks to this blueprint? - No Blueprint needed. Just connect through Z2M, switch on linkage and done.
Is it possible to trigger the alarm to use it as home security as well? - Yes but you have to decide yourself if you want that. Generally you can use the siren for everything you want, e.g. my first automation was an alarm once my basement is flooded.
Is the battery life good, how much do you need to replace the battery? - I ordered it 10 months ago, switched it on and would need to check if there was ANY visible battery drain.
Is it possible to silence the detectors via HA? - Yes, I have built an automation for that if a dedicated button is pressed, all are silenced. Of course also through HA dashboard.

1 Like

thank you for your answers, I was gonna choose between aqara and bosch but i think aqara is much better integrated :slight_smile:

This is what is in the state.json, so I really like the integration:

 "date_code": "20220617",
            "definition": {
                "description": "Aqara smart smoke detector",
                "exposes": [
                    {
                        "access": 5,
                        "description": "Indicates whether the device detected smoke",
                        "label": "Smoke",
                        "name": "smoke",
                        "property": "smoke",
                        "type": "binary",
                        "value_off": false,
                        "value_on": true
                    },
                    {
                        "access": 5,
                        "description": "Value of smoke concentration",
                        "label": "Smoke density",
                        "name": "smoke_density",
                        "property": "smoke_density",
                        "type": "numeric"
                    },
                    {
                        "access": 5,
                        "description": "Value of smoke concentration in dB/m",
                        "label": "Smoke density dbm",
                        "name": "smoke_density_dbm",
                        "property": "smoke_density_dbm",
                        "type": "numeric",
                        "unit": "dB/m"
                    },
                    {
                        "access": 2,
                        "description": "Starts the self-test process (checking the indicator light and buzzer work properly)",
                        "label": "Selftest",
                        "name": "selftest",
                        "property": "selftest",
                        "type": "enum",
                        "values": [
                            "selftest"
                        ]
                    },
                    {
                        "access": 1,
                        "description": "Self-test in progress",
                        "label": "Test",
                        "name": "test",
                        "property": "test",
                        "type": "binary",
                        "value_off": false,
                        "value_on": true
                    },
                    {
                        "access": 2,
                        "description": "The buzzer can be muted and alarmed manually. During a smoke alarm, the buzzer can be manually muted for 80 seconds (\"mute\") and unmuted (\"alarm\"). The buzzer cannot be pre-muted, as this function only works during a smoke alarm. During the absence of a smoke alarm, the buzzer can be manually alarmed (\"alarm\") and disalarmed (\"mute\"), but for this \"linkage_alarm\" option must be enabled",
                        "label": "Buzzer",
                        "name": "buzzer",
                        "property": "buzzer",
                        "type": "enum",
                        "values": [
                            "mute",
                            "alarm"
                        ]
                    },
                    {
                        "access": 5,
                        "description": "Buzzer alarmed (manually)",
                        "label": "Buzzer manual alarm",
                        "name": "buzzer_manual_alarm",
                        "property": "buzzer_manual_alarm",
                        "type": "binary",
                        "value_off": false,
                        "value_on": true
                    },
                    {
                        "access": 5,
                        "description": "Buzzer muted (manually)",
                        "label": "Buzzer manual mute",
                        "name": "buzzer_manual_mute",
                        "property": "buzzer_manual_mute",
                        "type": "binary",
                        "value_off": false,
                        "value_on": true
                    },
                    {
                        "access": 7,
                        "description": "When this option is enabled then in the normal monitoring state, the green indicator light flashes every 60 seconds",
                        "label": "Heartbeat indicator",
                        "name": "heartbeat_indicator",
                        "property": "heartbeat_indicator",
                        "type": "binary",
                        "value_off": false,
                        "value_on": true
                    },
                    {
                        "access": 7,
                        "description": "When this option is enabled and a smoke alarm has occurred, then \"linkage_alarm_state\"=true, and when the smoke alarm has ended or the buzzer has been manually muted, then \"linkage_alarm_state\"=false",
                        "label": "Linkage alarm",
                        "name": "linkage_alarm",
                        "property": "linkage_alarm",
                        "type": "binary",
                        "value_off": false,
                        "value_on": true
                    },
                    {
                        "access": 1,
                        "description": "\"linkage_alarm\" is triggered",
                        "label": "Linkage alarm state",
                        "name": "linkage_alarm_state",
                        "property": "linkage_alarm_state",
                        "type": "binary",
                        "value_off": false,
                        "value_on": true
                    },
                    {
                        "access": 1,
                        "description": "Remaining battery in %, can take up to 24 hours before reported.",
                        "label": "Battery",
                        "name": "battery",
                        "property": "battery",
                        "type": "numeric",
                        "unit": "%",
                        "value_max": 100,
                        "value_min": 0
                    },
                    {
                        "access": 1,
                        "description": "Voltage of the battery in millivolts",
                        "label": "Voltage",
                        "name": "voltage",
                        "property": "voltage",
                        "type": "numeric",
                        "unit": "mV"
                    },
                    {
                        "access": 1,
                        "description": "Number of power outages",
                        "label": "Power outage count",
                        "name": "power_outage_count",
                        "property": "power_outage_count",
                        "type": "numeric"
                    },
                    {
                        "access": 1,
                        "description": "Link quality (signal strength)",
                        "label": "Linkquality",
                        "name": "linkquality",
                        "property": "linkquality",
                        "type": "numeric",
                        "unit": "lqi",
                        "value_max": 255,
                        "value_min": 0
                    }
                ],
                "model": "JY-GZ-01AQ",
                "options": [],
                "supports_ota": true,
                "vendor": "Xiaomi"
            },
            "description": "text",
            "disabled": false,
            "endpoints": {
                "1": {
                    "bindings": [],
                    "clusters": {
                        "input": [
                            "genBasic",
                            "ssIasZone",
                            "genIdentify",
                            "genPowerCfg"
                        ],
                        "output": [
                            "genOta"
                        ]
                    },
                    "configured_reportings": [],
                    "scenes": []
                }
            },
            "friendly_name": "Rauchmelder Gast",
            "ieee_address": "ieeexxx",
            "interview_completed": true,
            "interviewing": false,
            "manufacturer": "LUMI",
            "model_id": "lumi.sensor_smoke.acn03",
            "network_address": 7254,
            "power_source": "Battery",
            "software_build_id": "2019\u0000www.",
            "supported": true,
            "type": "EndDevice"
        },

And this is how it appears in HA without any action from my side. The only thing I did was started pairing to Z2M and giving it a nice name.


The battery still reports 100%

1 Like

thanks! I’ve ordered the smoke detectors on aliexpress thanks to black friday it was 25€ a piece :slight_smile:

Doesn’t seems to work for me, i put one in a pot with smoke, it went into alarm, got no notification and the others didn’t go off?

Did you enable the linkage alarm on all the devices? Can you check the debug of the automation and see what happened and post it here?

i did, ill make debug tomorrow

Can someone confirm to me that I have a wrong type of the smoke sensor? :frowning:

Yes, that’s a different type of smoke detector.

There seems to be an issue with the smoke detectors where they go unavailable after a while (only a few hours/days) in z2mqtt. Once they are unavailable, they have to be repaired. Obviously the automation does not work when they are unavailable.

This unavailability was running me mad. I think aqara default pings are longer than the zigbee standards and hence this disconnection. I just thought of a “ping” solution, here it is:

alias: Patrol - Smoke Sensor Pings
description: ""
trigger:
  - platform: time_pattern
    hours: /4
condition: []
action:
  - parallel:
      - service: switch.turn_on
        target:
          entity_id:
            - switch.lumi_lumi_sensor_smoke_acn03_heartbeat_indicator
        data: {}
      - service: switch.turn_on
        target:
          entity_id:
            - switch.lumi_lumi_sensor_smoke_acn03_heartbeat_indicator_2
        data: {}
      - service: switch.turn_on
        target:
          entity_id:
            - switch.lumi_lumi_sensor_smoke_acn03_heartbeat_indicator_3
        data: {}
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
  - parallel:
      - service: switch.turn_off
        target:
          entity_id:
            - switch.lumi_lumi_sensor_smoke_acn03_heartbeat_indicator
        data: {}
      - service: switch.turn_off
        target:
          entity_id:
            - switch.lumi_lumi_sensor_smoke_acn03_heartbeat_indicator_2
        data: {}
      - service: switch.turn_off
        target:
          entity_id:
            - switch.lumi_lumi_sensor_smoke_acn03_heartbeat_indicator_3
        data: {}
mode: restart

I don’t think there is much danger with turning the heartbeat indicator on/off (please let me know if this has a super crucial function).

However, even with this the success of pings are kinda random. Running it every 4 hours seem to work though (some fail but 4 hours is way faster than the ping standard so even if I have a 50+% fail rate it should still be OK).

Hi, I tried using the blueprint but the selector wasnt working for me. When I checked my devices I see that the models were being shown differently then expected:
image

I changed the blueprint locally to “Smart smoke detector (JY-GZ-01AQ)”, with this I could find the smokedetectors, and it seems to work for me.
Not sure I should do this?
Also, it seems that the model naming of the smoke detectors changed in MQTT? Can someone verify that?

Hey guys,

I have the Aqara smoke detector linked with my HA via MQTT. However, when I try to create an automation based on this blueprint, it cannot find my smoke detectors.

I dont have them connector to an area yet, so I did that for one smoke detector to see if that changes anything but it doesnt.

Any idea where to look?


Update: seems like I (we?) have the same issue as @ piewarrior, after changing the blueprint locally they can be found.

1 Like

Hi, I have this smoke detector paired thorgh ZHA, my device page looks like this:

It only shows battery level and binary for smoke/no smoke… Why do I not have options Linkage alarm, self test and buzzer etc?

hello.
do you know if this problem was solved?

Hi mate,

What did you exactly change in the yaml config?
I have the same problem, but i cannot seem to get it to work…
I’ve edited the.yaml locally with the following:
smoke_detectors:
name: DET_Z2M_01
description: The smoke detectors you want to link.
selector:
device:
model: ‘JY-GZ-01AQ’
multiple: true

But i still can’t find it in the drop down menu…
(can’t upload a picture cause new user)

1 Like

@DunkeDrengen, I did the same and changed the yaml locally as follows:

input:
    smoke_detectors:
      name: Smoke detectors
      description: The smoke detectors you want to link.
      selector:
        device:
          model: (JY-GZ-01AQ)
          multiple: true

(just the line with the “model”) and I was able to select all my smoke detectors.

Would be great, if this was updated in the official blueprint, @ciB :wink:

Thanks for the blueprint, will test it now.

Update:
I created a fork of the blueprint and added the updated selector and also the ability to select actions on_alarm and on_mute. - Needs testing.