WZ-M100 Radar Sensor in ZHA - Not detecting entities

Hi folks

So I picked up a (Tuya) WZ-M100 mm presence sensor from AliExpress branded under WENZHI. It was a reasonable price (AU$20) and it was detected fine in ZHA … except there were no entities discovered beyond the diagnostic LQI and RSSI ones (not sure that they are actually).

I haven’t tried using the Tuya app (simply because I don’t have a Tuya Zigbee hub). Normally these things just detect under ZHA. This is the first time I’ve really had one that hasn’t.

Does anyone have any advice on how I can get this thing working?

Edit: All good now. Followed the process highlighted here … New ZY-M100 mmWave Radar Sensor with USB type C in Home Assistant | fixtSE. All working now.

Hi @Tovrin,
Could you share what you did exactly, from the link it wont get clear for me what i need to do/add/change.

Awesome! Have this same sensor, haven’t been able to get it to show more than those same 2 entities you mentioned, going to try the tutorial …

EDIT hmm the first problem I have is that my specific model doesn’t appear in any of the lists, I have the _TZE200_clrdrnya TS0601. Going to do some researching …

Found this thread: ZY-M100 tuya mmwave sensor - new version... anyone got this working with ZHA?

It looks like that the same as _TZE200_clrdrnya, you should be able to use the mainline quirk and just add your device with an .applies_to. See: Add Tuya motion _TZE200_clrdrnya by prairiesnpr · Pull Request #3807 · zigpy/zha-device-handlers

1 Like

Awesome!!! Thanks!! This will automatically be merged into HA ?

Yes, probably in 2025.3.

1 Like

I’m pulling my hairs out, can’t get it working. What I did:

  1. Created dir /config/zha_quirks
  2. Copied the tuya_motion.py into it, renamed it to tuya_motion_new.py
  3. added that line like in your patch
  4. Added to /config/configuration.yaml:
zha:
  database_path: /config/zigbee.db
  enable_quirks: true
  custom_quirks_path: /config/zha_quirks/

Reboot … Removed the device, added it again and … Doesnt seem to work, I dont think it even loads the quirk … Any ideas?
I understand it should show here that it loaded the quirk, it doesnt:

That looks right, admittedly I’ve never actually configured custom quirks, so probably the wrong person to ask. I’d put ZHA in debug mode, reload it and look at the logs, it should give you an idea of why it didn’t match.

It does try to load it, but fails with an error that I dont understand:

2025-01-29 14:45:04.707 DEBUG (SyncWorker_1) [zhaquirks] Loading custom quirks from PosixPath(‘/config/z’)
2025-01-29 14:45:04.708 DEBUG (SyncWorker_1) [zhaquirks] Loading custom quirk module ‘tuya_motion2’
2025-01-29 14:45:04.724 ERROR (SyncWorker_1) [zhaquirks] Unexpected exception importing custom quirk ‘tuya_motion2’
Traceback (most recent call last):
File “/usr/local/lib/python3.13/site-packages/zhaquirks/init.py”, line 479, in setup
spec.loader.exec_module(module)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File “”, line 1026, in exec_module
File “”, line 488, in _call_with_frames_removed
File “/config/z/tuya_motion2.py”, line 238, in
.tuya_illuminance(dp_id=103)
^^^^^^^^^^^^^^^^
AttributeError: ‘TuyaQuirkBuilder’ object has no attribute ‘tuya_illuminance’

Hmm I just deleted all those lines with that attribute ‘tuya_illuminance’ and it seems to load and work now!! Going to check if evertyhing indeed works like expected …

Yeah it does seem to works!! Thanks @PrairieSnpr !!

Ah, yeah tuya_illuminance will be part of 2025.2.

1 Like

@PrairieSnpr actually I was missing some important settings like the “breaker mode”. I had found the datapoints for my sensor in this zigbee2mqtt thread:

So I then searched through that quirk you modded and saw that actually all of the datapoints are there! So it seems that this device actually is compatible with quite a lot of other devices. So it should be added here:

.applies_to("_TZE204_sbyx0lm6", "TS0601")
.applies_to("_TZE204_clrdrnya", "TS0601")
.applies_to("_TZE204_dtzziy1e", "TS0601")
.applies_to("_TZE204_iaeejhvf", "TS0601")
.applies_to("_TZE204_mtoaryre", "TS0601")
.applies_to("_TZE200_mp902om5", "TS0601")
.applies_to("_TZE204_pfayrzcw", "TS0601")
.applies_to("_TZE284_4qznlkbu", "TS0601")
.applies_to("_TZE200_sbyx0lm6", "TS0601")
.applies_to("_TZE200_clrdrnya", "TS0601")

(line 675 in tuya_motion.py)

Everything works now! And I can now indeed change the breaker mode succesfully. Also the other options seem to work just fine!

I was hoping you could merge this please!

Thanks again for your help, wouldn’t have found this without your help!