One of the first devices I disassembled and reviewed on our AliExpress Reviews channel was the Neo Tuya ZigBee Alarm Siren. It had a 90db siren loudspeaker, a built in temperature and humidity sensor and 18 different sound types. It is a solid device, but many people reported issues when integrated in Home Assistant through ZHA. It was a hit and miss for different users with different ZigBee coordinators, but it still performed good for me in ZigBee2MQTT.
This time I’m writing about a similar device, the Heiman ZigBee Alarm Siren model HS2WD-E. I’ve read great things about this device so, as usual, I’m going to pry it open, integrate it in Home Assistant and do some testing.
AliExpress | AliExpress | AliExpress | AliExpress (Z-Wave)
Amazon.com | Amazon.co.uk | Amazon.de
Amazon.ca | Amazon.nl | Amazon.es
Amazon.it | Amazon.fr
*If links fail to open, try disabling your AdBlocker.
Technical Specification
- Working Voltage: AC110-240V
- Backup Battery: 3.8V/700mA
- Alarm Sound Level: 95db(1m away)
- Working Temperature: -15C-50C
- Working Humidity: <95% RH
- Communication: ZigBee 3.0
- Dimensions: Ф80mm* 32mm
Disassembly
The Heiman ZigBee Smart Siren and Strobe comes in a package containing the strobe itself, a plug (EU, US or UK), a user manual and a small pin for resetting/pairing the device.
The body shell is made out of some ABS derivative, it feels smooth yet sturdy. The device is reasonably heavy to hold. Once the plug is removed from the backside by using the quick release button, two pins are revealed which power the device. If for some reason you mistakenly order a different plug, you can use these to wire a cable with the appropriate plug. It’s mains powered, 100-240 VAC.
The top cap was glued together and had to be pried open with a screwdriver. I damaged the bottom case while doing so, but it didn’t matter I was taking a peak one way or another. Once opened, you can see the siren is connected to the PCB with a two wire JST connector, same as the battery.
The communications module is model TYZS11 [Datasheet] manufactured by Tuya, with low power-consumption 32-bit ARM Cortex-M4 core, 512 KB flash, 64 KB RAM data memory and a built-in 802.15.4 PHY/MAC Zigbee network protocol stack. I’ve not encountered this chip before, but it’s datasheet tells me it’s part of the TYZS series modules which are used in many cheap home automation hardware. [Like the Moes BHT-002 Thermostat]
Considering this is a mains powered device, a bunch of capacitors, current transformers and resistors are scatter on the main PCB. A total of 6 LEDs are soldered onto the board, which flash when the siren is triggered. This represents the strobe function of the device.
The battery remained glued to the back cover of the case when I removed the main PCB. It’s a 3.7v 700mah battery which can be replaced when needed [Amazon, AliExpress].
Home Assistant Integration
The Heiman ZigBee Siren and Strobe Alarm is compatible with ZHA, ZigBee2MQTT and Deconz. To pair it, you need to push the included pin in the small hole on the case of the device and hold for ~5 seconds until the LED starts flashing.
IMPORTANT: Before you test your Heiman siren and trigger the alarm, be warned: This thing is LOUD. If you are testing it inside, make sure you cover your ears and keep any children away. I accidentally hit the “Apply” button in ZigBee2MQTT when testing and it started blaring scaring my wife half to death. I instinctively ran towards the wall to unplug it. Fun conversation afterwards.
ZHA
Once the device is paired with ZHA, it is identified as WarningDevice-EF-3.0 by HEIMAN with device type correctly set to Router. I did not have any trouble pairing it with Sonoff ZBDongle-E as my coordinator, it was discovered instantly.
Once added, It exposes the following entities in Home Assistant:
- binary_sensor: Iaszone extra attributes sensor (battery % etc.). Not in use currently
- button: Used to identify the Siren in the ZigBee network, make sure it’s available
- select:
- siren_level: Siren volume level: low, medium, high, very_high
- siren_tone: Siren melody type: stop, burglar, fire, emergency, police_panic, fire_panic, emergency_panic
- strobe: Strobe flash or no
- strobe_level: Level of the strobe light: low, medium, high, very_high
- siren: Switch for toggling the siren On/Off
Triggering the alarm
To trigger the alarm when the Heiman Siren is paired through ZHA, first you need to set the default values of the select entities (siren_level, siren_tone, strobe, strobe_level). The siren is activated through the master entity from the siren domain, which acts as a simple switch on/off.
To use it in a simple automation:
alias: Trigger Heiman Alarm
description: "Trigger Heiman Siren Alarm When Someone Opens Terrace Door"
trigger:
- platform: state
entity_id:
- binary_sensor.front_terrace_door_contact
to: "on"
condition: []
action:
- service: siren.turn_on
data: {}
target:
entity_id: siren.heiman_warningdevice_ef_3_0_siren
mode: single
You can also create a more complex automation for triggering the siren alarm with specific payload:
alias: Trigger Heiman Alarm
description: "Trigger Heiman Siren Alarm When Someone Opens Terrace Door"
trigger:
- platform: state
entity_id:
- binary_sensor.front_terrace_door_contact
to: "on"
condition: []
action:
- service: zha.warning_device_warn
data:
ieee: 84:71:27:ff:fe:a8:36:c2
mode: 3
strobe: 1
level: 1
duration: 1
mode: single
You must change the IEEE to yours, and adjust mode, strobe level and duration if you need to. You can create different automations with different siren volume levels or tones and activate them based on what triggered the alarm (motion sensor, door sensor etc.). This is easily done with Alarmo.
ZigBee2MQTT
Pairing was a breeze, and the interview completed instantly. The Heiman Siren HS2WD-E is identified as ZigBee model WarningDevice-EF-3.0 and manufacturer HEIMAN in ZigBee2MQTT. The device is also a router in ZigBee2MQTT, so it’s capable of extending your ZigBee mesh network.
Once paired, it exposes the following entities in ZigBee2MQTT:
- Battery: Remaining battery in %
- Warning: Composite entity for triggering the alarm with various options
- mode: Sound Type of the siren: stop, burglar, fire, emergency, police_panic, fire_panic, emergency_panic
- level: Sound Level of the siren: low, medium, high, very_high
- strobe_level: Intensity of the strobe light low, medium, high, very_high
- strobe: Turn off/on the strobe light during alarm
- strobe_duty_cycle: Length of the flash cycle in seconds
- duration: Duration of the alarm in seconds
- Linkquality: Signal strength in LQI
Only the battery entity is directly exposed to Home Assistant, the linkquality is disabled by default and the composite warning entity is used to trigger the siren.
Triggering the alarm
To trigger the alarm in ZigBee2MQTT, you cannot just press a button (yet). You have to configure the variables available, such as mode, level, strobe and duration and than hit Apply. This will send a ZigBee payload to the Heiman Siren activating it with the options you have set.
I’m going to create 3 entities to control the Heiman ZigBee Siren more easily through Home Assistant: 2 scripts (for turning on and off the alarm) and a master switch with the same functionality to be used as a toggle in a dashboard:
#Turn ON the Heiman Siren Alarm
alias: Heiman Siren Turn On
sequence:
- service: mqtt.publish
data:
topic: 'zigbee2mqtt/Heiman Siren HS2WD-E/set'
payload: '{"warning": {"mode": burglar, "level": very_high, "strobe_level": high, "strobe": true, "strobe_duty_cycle": 10, "duration": 1800}}'
mode: single
icon: mdi:alarm-light-off
#Turn OFF the Heiman Siren Alarm
alias: Heiman Siren Turn OFF
sequence:
- service: mqtt.publish
data:
topic: 'zigbee2mqtt/Heiman Siren HS2WD-E/set'
payload: '{"warning": {"duration": 0, "mode": "stop", "strobe": false}}'
mode: single
icon: mdi:alarm-light
Create a new template switch and add the following:
switch:
- platform: "mqtt"
name: Heiman Siren
state_topic: "zigbee2mqtt/Heiman Siren HS2WD-E/set"
availability_topic: "zigbee2mqtt/bridge/state"
payload_off: '{"warning": {"duration": 0, "mode": "stop", "strobe": false}}'
payload_on: '{"warning": {"mode": burglar, "level": very_high, "strobe_level": high, "strobe": true, "strobe_duty_cycle": 10, "duration": 1800}}'
command_topic: "zigbee2mqtt/Heiman Siren HS2WD-E/set"
You need to replace Heiman Siren HS2WD-E with your friendly name of the siren in ZigBee2MQTT. The other variables can be tweaked to achieve a desired result:
- duration: anything from 1 to 1800 seconds
- mode: stop, burglar, fire, emergency, police_panic, fire_panic, emergency_panic
- level: low, medium, high, very_high
- strobe_level: low, medium, high, very_high
- strobe_duty_cycle: anything from 1 to 10 seconds
We can use the same payload as an Action in an automation, for example:
alias: Trigger Heiman Alarm
description: "Trigger Heiman Siren Alarm When Someone Opens Terrace Door"
trigger:
- platform: state
entity_id:
- binary_sensor.front_terrace_door_contact
to: "on"
condition: []
action:
- service: mqtt.publish
data:
topic: "zigbee2mqtt/Heiman Siren HS2WD-E/set"
payload: >-
'{"warning": {"mode": burglar, "level": very_high, "strobe_level": high, "strobe": true, "strobe_duty_cycle": 10, "duration": 1800}}'
mode: single
Verdict
I really liked the Heiman ZigBee Siren and Strobe Alarm, this is an excellent device. Compared to the Neo Tuya ZigBee Alarm Siren, this is miles ahead in terms of build quality, loudness and integration compatibility. At 95db, It’s significantly louder than the 90db Tuya siren. Considering decibels (dB) is a logarithmic unit used to measure sound level, those 5dB count for a lot (increase by a factor of 5).
Disclaimer: I will add, I do not own professional equipment to able to verify whether the volume is ACTUALLY 95db. All I can tell you this thing is LOUD.
As with anything ZigBee related, a solidified mesh network is a must to ensure stable operation. You don’t want your alarm device failing because of slow or bad connectivity. Consider adding some routers, such as the Sonoff Plugs [AliExpress, Amazon] to increase network stability.
I suggest using the Heiman ZigBee Siren with Alarmo and pairing it with some triggers, such as motion and door sensors. Alarmo is very easy to use, supports multiple users, multiple areas, push notifications and custom automations. You could activate the Heiman siren with different modes and duration depending on trigger.
The price tag of ~$30 makes this device an instant purchase for me. I’ve replaced the Neo TuYa Siren with this Heiman Model in my personal alarm setup. You can find it on Amazon and AliExpress, here are some more links:
AliExpress | AliExpress | AliExpress | AliExpress (Z-Wave)
Amazon.com | Amazon.co.uk | Amazon.de
Amazon.ca | Amazon.nl | Amazon.es
Amazon.it | Amazon.fr
*If links fail to open, try disabling your AdBlocker.
UPDATE 20.02.2023: After many users reported the Siren is partially working, I decided to take a second look. When the siren is triggered via ZHA or Zigbee2MQTT in any mode, it outputs the same “melody” at the same volume level, ignoring the “level” and “strobe” parameters. At the time of testing, I didn’t know how “burglar” or “fire” are supposed to sound, so I assumed they are correct, when in reality it was the same tone. You can still toggle it as usual, it responds to “start/stop” commands. The siren is configurable via their Heiman Mini Hub, so the issue is a misconfiguration of exposed clusters in ZHA/Z2M. There is an ongoing Z2M issue on github.
Snagged it (with your affiliate link) … now I need to figure out where to stick it once it arrives from China! Thinking at the plug closest to my front door/windows, as that’s the most likely point of entry.
Hey Ben,
Thanks for the support.
I would like to offer some additional advice:
If you are placing it outside, plug it somewhere where it can’t be seen. Otherwise, potential burglars can just unplug it.
Otherwise, that thing is loud as hell, it will scare away any potential burglars as a pro alarm would.
P.S. Your email is on my to-do list 🙂
Cheers!
Sadly, my condo has no outdoor outlets (thus why my outdoor Christmas lights are battery operated and on a timer!) in the front.
And no worries! I know it was quite a lengthy email. I’ve been thinking about the logic I want to employ to “arm” everything automatically with a few different triggers (time, the eufy keyless entry being set to “lock”). I think it can be done, automations are still very much a work in progress for me!
I did buy this after reading your review. However, have you found any differences in either the set volume, or the set modes/melodies?
This thing only seems to work as on or off with me – the volume can’t be adjusted, nor the mode.
I also can’t set it off using the exposed options in Z2M, only by sending a payload.
Hi Dan,
Setting the exposed options in Z2M and clicking Apply is the same as sending an MQTT payload, so it should work?
I don’t know why you are having trouble, maybe repair it and try again. If you want to create a template siren entity, you must adhere to the new MQTT rules which were a breaking change recently. Take a look here: https://www.home-assistant.io/integrations/siren.mqtt/
Regarding the modes, I was able to distinguish two different modes only, no idea why it lists 7. The strobe part of the payload does nothing, but is necessary for triggering the siren. I will do some more digging and edit my review accordingly
Hello!
I bought also this siren and I also can not change the volume level with zha and z2m. Could you please share the firmware of your siren and the version of your HA (core and OS version)?
Thank you.
Br,
FG
I also tried to change the volume level and siren mode with Z2M and ZHA, but It didnt work.
Br
G
I bought this siren and it doesn’t work as it supposes to. The siren only works for 10 seconds and then stop. It doesnt siren continuously. Not sure if you all facing the same problem. I cant change the volume level or tone of sound.
When I raise the issue with the seller, he asked to share a video and images, after that no response. Bought from Aliexpress so difficult chasing him. Is there any way to flash or fix this?
Hello,
Users reporting this issue prompted me examine it further. I’ve updated the article.
Hello,
Same for me. I setup this with ZHA and there is no way the options for volume, melodies and light work accordingly. I also do not get any information on the % of battery. As you said in the article, the siren is extremely loud and it is really annoying to test it. Since this device it is not working 100% with ZHA, I would not recommend it on your website. I didn’t try it with Z2mqtt because all my devices are with ZHA. I’ve read some forums stating that it works better with z2mqtt though.
The siren looks like reallt well made powerful but I am quite dissapointed at the integration level.
Hello Victor,
You are right, there are maybe two instances sold of this siren with slight differences in hardware that would cause these kind of issues. ZHA is flaky in any case, I will have to retest again and verify.
It worked fine in my initial test, It’s really weird.
I will post an update.
Cheers
Great product!
If only it would have a chime sound, so it could also act as a doorbell notifier…..
It’s not what the device is intended for, but I agree, would be nice to be able to target the siren or chime.
I’m having some odd behavior notided by one of the other commenters. When I turn the siren on using ZHA it runs until I turn it off. However, when Alarmo fires it with turn_on action, it only sounds off for 10 seconds then turns off. (I have other Zigby devices that I also trigger with the same Alarmo action and they behave as they should – they sound until Alarmo is disarmed). Any help or insights appreciated.
Alarmo action/event: Alarm is triggered
Task yaml:
– service: siren.turn_on # only runs for 10 seconds…
entity_id: siren.heiman_warningdevice_ef_3_0_siren
data: {}
– service: switch.turn_on # works…
entity_id: switch.sonoff_s31_lite_zb_switch_3
data: {}
– service: switch.turn_on # works…
entity_id: switch.sonoff_s31_lite_zb_switch_5
data: {}
Alarmo action/event: Alarm is disarmed
Task yaml:
– service: siren.turn_off # it’s already off after 10 seconds…
entity_id: siren.heiman_warningdevice_ef_3_0_siren
data: {}
– service: switch.turn_off # works…
entity_id: switch.sonoff_s31_lite_zb_switch_5
data: {}
– service: switch.turn_off # works…
entity_id: switch.sonoff_s31_lite_zb_switch_3
data: {}
i had the same problem, it works for 10 sekunden with alarmo;(