The Bosch do support a Zigbee Broadcast command to trigger all fire alarms in the same Zigbee network. But I don’t think it’s implemented in Z2M to do that automatically. ZHA only support it with custom commands, Z2M at least has switches to trigger these commands.
The Bosch SHC II can handle that natively and be compliant for that.
tsairo
(Tsairo)
September 3, 2025, 5:57pm
42
Just tried pairing one of these Nedis alarms with ZHA. It took a few attempts to finish, but in the end it still does not show any entities. Not even battery level.
SaschaKP
(Sascha)
September 8, 2025, 8:37pm
43
dev ← SaschaKP:dev
opened 12:45PM - 29 May 25 UTC
# What does this implement/fix?
this pull request implements tuya low-energy … devices that uses wifi modules combined with an MCU (battery powered - aka version 0)
requirements in configuration for this to work: setup priority is essential, below an example
## Types of changes
- [ ] Bugfix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Code quality improvements to existing code or addition of tests
- [ ] Other
**Pull request in [esphome-docs](https://github.com/esphome/esphome-docs) with documentation (if applicable):**
- esphome/esphome-docs#<esphome-docs PR number goes here>
## Test Environment
- [ ] ESP32
- [ ] ESP32 IDF
- [x] ESP8266
- [ ] RP2040
- [x] BK72xx
- [ ] RTL87xx
## Example entry for `config.yaml`:
```yaml
preferences:
flash_write_interval:
seconds: 3
safe_mode:
disabled: True
esphome:
name: heiman-smoke-ws2sa-5
friendly_name: tuya smoke detector
name_add_mac_suffix: false
external_components:
- source: github://pr#8953
components: tuya
refresh: 1h
bk72xx:
board: cbu
logger:
level: WARN #the lower the better for speed sake
baud_rate: 0
mqtt:
username: !secret mqtt_user
password: !secret mqtt_password
broker: [redacted]
#down below we keep the device always available, even in offline, the MCU series exampled updates every 24 hours
will_message:
topic:
payload: online
birth_message:
topic:
payload: online
ota:
platform: esphome
password: !secret ota
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
switch:
- platform: tuya
id: snooze
entity_category: config
device_class: switch
icon: mdi:volume
name: Snooze Alarm
switch_datapoint: 16
retain: True
binary_sensor:
- platform: template
device_class: smoke
name: Smoke Alarm
id: smokealarm
retain: True
time:
- platform: sntp
timezone: Europe/Rome
servers: [redacted]
text_sensor:
- platform: template
name: "Last Restart"
id: last_restart_mqtt
update_interval: never
device_class: timestamp
icon: "mdi:clock"
entity_category: diagnostic
lambda: |-
char result[32];
time_t ts_uptime = id(last_restart).state;
strftime(result, sizeof(result), "%Y-%m-%dT%H:%M:%S+00:00", gmtime(&ts_uptime));
return { result };
sensor:
- platform: wifi_signal
name: Signal strength
id: sensor_rssi
update_interval: 500ms
entity_category: diagnostic
- platform: uptime
type: timestamp
id: last_restart
entity_category: diagnostic
internal: True
on_value:
- component.update: last_restart_mqtt
- platform: tuya
sensor_datapoint: 1
name: Smoke Data
id: smokedata
internal: True
on_value:
then:
- lambda: |-
if(x > 0)
id(smokealarm).publish_state(false);
else
id(smokealarm).publish_state(true);
- platform: tuya
sensor_datapoint: 9
name: Autotest
id: autotest
internal: True
- platform: tuya
sensor_datapoint: 14
name: Battery Status
id: battstate
internal: True
- platform: tuya
sensor_datapoint: 15
name: Battery Level
state_class: measurement
device_class: battery
entity_category: diagnostic
unit_of_measurement: "%"
accuracy_decimals: 0
id: battlevel
retain: True
uart:
- id: tuya_uart
rx_pin: RX1
tx_pin: TX1
baud_rate: 9600
parity: NONE
stop_bits: 1
#this is ABSOLUTELY REQUIRED for it to work, uart and tuya have precedence, in 2 seconds without response the device will deactivate itself
setup_priority: 790
tuya:
#required for this kind of devices
low_energy: true
#this is ABSOLUTELY REQUIRED for it to work, uart and tuya have precedence, in 2 seconds without response the device will deactivate itself
setup_priority: 780
#USING API mode is not suggested, since it takes too much time for the CBU
#using API on esp32 is okay, just avoid it and use mqtt if you're on a less performing chipset
#this template is for the Heiman smoke ws2sa-5 that is exactly equivalent to shelly plus smoke
```
## Checklist:
- [x] The code change is tested and works locally.
- [ ] Tests have been added to verify that the new code works (under `tests/` folder).
If user exposed functionality or configuration variables are added/changed:
- [ ] Documentation added/updated in [esphome-docs](https://github.com/esphome/esphome-docs).
heiman smoke ws2sa-5, it’s not zigbee but wifi, but it seems pretty good to me (with esphome you could make it BLE)
Available on amazon and other places, it can be reprogrammed with esphome and is pretty good, see my pull request, I have it working for a pretty good amount of time, it works and with proper mods to software (don’t enable API! it’s damn slow!) it will do what you want it to do.
EDIT: this heiman thing is exactly similar in everything (except shelly uses esp32) to the shelly plus smoke. I have both of them, but wasn’t able to reprogram with esphome the shelly one, since the pinout is hidden for the GPIO0 and I don’t want to unsolder something, since shelly can do also mqtt
wigster
September 28, 2025, 4:31am
44
I picked up the Frient smoke alarms a couple of months ago. Well supported in z2m. No false positives inside our apartment including about 4 metres from the stove. But also so far — no positives.