[BETA] Tuya Zigbee mmWave Sensors

Hi Petteri,

Try this custom device profile :

{
  "deviceProfiles": {
     "CUSTOM_TS0601_IHSENO_BATTERY": {
      "description": "iHseno 24G MmWave Radar on Battery",
      "device": { "powerSource": "battery" },
      "capabilities": { "MotionSensor": true, "IlluminanceMeasurement": false, "Battery": true },
      "preferences": { 
        "radarSensitivity": "9", 
        "fadingTime": "10"
      },
      "fingerprints": [
        { "profileId": "0104", "endpointId": "01", "inClusters": "0000,0004,0005,EF00", "outClusters": "0019,000A", "model": "TS0601", "manufacturer": "_TZE204_debczeci", "deviceJoinName": "iHseno 24G MmWave Radar on Battery" },
        { "profileId": "0104", "endpointId": "01", "inClusters": "0000,0004,0005,EF00", "outClusters": "0019,000A", "model": "TS0601", "manufacturer": "_TZE284_debczeci", "deviceJoinName": "iHseno 24G MmWave Radar on Battery" },
        { "profileId": "0104", "endpointId": "01", "inClusters": "0000,0004,0005,EF00", "outClusters": "0019,000A", "model": "TS0601", "manufacturer": "_TZE284_1lvln0x6", "deviceJoinName": "iHseno 24G MmWave Radar on Battery" }
      ],
      "tuyaDPs": [
        { "dp": 1, "name": "motion", "type": "enum", "dt": "0x10", "rw": "ro", "min": 0, "max": 1, "defVal": "0", "map": { "0": "inactive", "1": "active" }, "description": "Presence state" },
        { "dp": 4, "name": "battery", "type": "number", "rw": "ro", "scale": 1, "unit": "%", "description": "Battery percentage" },
        { "dp": 9, "name": "radarSensitivity", "type": "enum", "dt": "0x10", "rw": "rw", "min": 0, "max": 2, "map": { "0": "low", "1": "medium", "2": "high"  }, "defVal": "1", "title": "<b>Radar sensitivity</b>", "description": "<i>Select the radar sensitivity</i>" },
        { "dp": 10, "name": "fadingTime", "type": "enum", "rw": "rw", "dt": "0x10", "min": 0, "max": 2, "map": { "0": "15s", "1": "30s", "2": "60s"  }, "defVal": "1", "unit": "seconds", "title": "<b>Fading time</b>", "description": "<i>Motion keep time</i>" }
      ],
      "refresh": ["queryAllTuyaDP"],
      "configuration": { "battery": true },
      "comments": ["CUSTOM_TS0601_IHSENO_BATTERY",
        "https://community.hubitat.com/t/beta-tuya-zigbee-mmwave-sensors/137410/445?u=kkossev"
        ] 
    }
	
  },
  "version": "4.2.0",
  "timestamp": "2025-12-13 8:58 PM",
  "description": "CUSTOM Device profiles for Tuya Zigbee mmWave Sensor",
  "author": "kkossev"
}
  • Save the JSON on your PC, name it as an example "TZE284_debczeci.json"

  • Use HE File Manager to upload it to HE local storage

  • Load the Custom Profile :

image

  • Select it as an active Device Profile :
    image

  • refresh the browser page and check whether the deviceProfile in the State Variables is the correct one :

image

Let me know whether it works, including changing the radarSensitivity and the fadingTime.


P.S. It was a fun time reading the AliExpress seller warnings ... :slight_smile:


:slight_smile:

3 Likes

image
image
image

Did you go through these steps?

Selected again and now it looks better. Motion inactive but motion started shows correct time/date

1 Like

Forced to active and now it works, thanks a lot

1 Like

Please test whether the Preferences are working (changing the radarSensitivity and the fadingTime). If all is working OK, I will move this custom JSON 'device profile' into the standard profiles JSON.

Fading time has no effect I believe. If sensitivity is changed Motion stays for like 25 seconds, no matter the fading setting. Isn't this a presense sensor? It should stay active as long as don't leave the room. Have I understood things wrong?

What it is supposed to do and what it actually does can be very different things, especially with Tuya devices :sweat_smile:

Assuming it's not defective or has some kind of bad design issue, it will likely just take some patience and some trial-&-error with the various settings to get it performing like you want it to.

1 Like


Medium and 15seconds. States say 0 for both.

Can you copy and paste the Zigbee messages that the device sends when you remove the battery for 30 seconds and then power it back on?

Use the 'Hide Details' from the cog wheel drop-down menu in the forum message editor:
image

Summary

dev:39342025-12-16 07:30:50.405

debug

Radar ZY-M100 MyRoom skipped illuminance 4, less than delta 10 (lastIllum=11)

dev:39342025-12-16 07:30:50.087

debug

Radar ZY-M100 MyRoom motion is active (raw:1) (no change)

dev:39342025-12-16 07:30:50.084

debug

Radar ZY-M100 MyRoom standardParseTuyaCluster: command=02 dp_id=4 dp=1 (0x01) fncmd=1 fncmd_len=1 (index=0)

dev:39342025-12-16 07:30:50.082

debug

Radar ZY-M100 MyRoom parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 E03B 01 00 0000 02 01 009C0104000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:E03B, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 9C, 01, 04, 00, 01, 01]] description=catchall: 0104 EF00 01 01 0040 00 E03B 01 00 0000 02 01 009C0104000101

dev:39342025-12-16 07:30:48.198

debug

Radar ZY-M100 MyRoom Tuya check-in (AppVersion=1F)

dev:39342025-12-16 07:30:48.196

debug

Radar ZY-M100 MyRoom parse: descMap = [raw:E03B0100001801002046E2FF201FE4FF2000, dni:E03B, endpoint:01, cluster:0000, size:18, attrId:0001, encoding:20, command:0A, value:46, clusterInt:0, attrInt:1, additionalAttrs:[[value:1F, encoding:20, attrId:FFE2, consumedBytes:4, attrInt:65506], [value:00, encoding:20, attrId:FFE4, consumedBytes:4, attrInt:65508]]] description=read attr - raw: E03B0100001801002046E2FF201FE4FF2000, dni: E03B, endpoint: 01, cluster: 0000, size: 18, attrId: 0001, encoding: 20, command: 0A, value: 46E2FF201FE4FF2000

dev:39342025-12-16 07:30:46.548

debug

Radar ZY-M100 MyRoom zigbee private cluster 0xEF00 command 0x00 response: Success

dev:39342025-12-16 07:30:46.545

debug

Radar ZY-M100 MyRoom parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 E03B 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:E03B, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 EF00 01 01 0040 00 E03B 00 00 0000 0B 01 0000

dev:39342025-12-16 07:30:46.498

debug

Radar ZY-M100 MyRoom zigbee private cluster 0xEF00 command 0x00 response: Success

dev:39342025-12-16 07:30:46.495

debug

Radar ZY-M100 MyRoom parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 E03B 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:E03B, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 EF00 01 01 0040 00 E03B 00 00 0000 0B 01 0000

dev:39342025-12-16 07:30:46.484

debug

Radar ZY-M100 MyRoom zigbee private cluster 0xEF00 command 0x00 response: Success

dev:39342025-12-16 07:30:46.482

debug

Radar ZY-M100 MyRoom parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 E03B 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:E03B, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 EF00 01 01 0040 00 E03B 00 00 0000 0B 01 0000

dev:39342025-12-16 07:30:46.469

debug

Radar ZY-M100 MyRoom zigbee private cluster 0xEF00 command 0x00 response: Success

dev:39342025-12-16 07:30:46.466

debug

Radar ZY-M100 MyRoom parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 E03B 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:E03B, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 EF00 01 01 0040 00 E03B 00 00 0000 0B 01 0000

dev:39342025-12-16 07:30:46.443

debug

Radar ZY-M100 MyRoom zigbee private cluster 0xEF00 command 0x00 response: Success

dev:39342025-12-16 07:30:46.440

debug

Radar ZY-M100 MyRoom parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 E03B 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:E03B, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 EF00 01 01 0040 00 E03B 00 00 0000 0B 01 0000

Also, copy/paste the messages that follow saving the Preferences. Make sure the Debug logging was enabled.

Absolutely nothing after adding batteries, but when changed Sensitivity to High then there are debug messages as follows

Summary

dev:9132025-12-16 18:46:29.328debugLäsnäolotunnistin zigbee private cluster 0xEF00 command 0x00 response: Success
dev:9132025-12-16 18:46:29.323debugLäsnäolotunnistin parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 24D1 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:24D1, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 EF00 01 01 0040 00 24D1 00 00 0000 0B 01 0000
dev:9132025-12-16 18:46:29.308debugLäsnäolotunnistin zigbee private cluster 0xEF00 command 0x00 response: Success
dev:9132025-12-16 18:46:29.300debugLäsnäolotunnistin parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 24D1 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:24D1, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 EF00 01 01 0040 00 24D1 00 00 0000 0B 01 0000
dev:9132025-12-16 18:46:24.592debugLäsnäolotunnistin getDeviceProfilesSource: using CUSTOM profiles for device 24D1
dev:9132025-12-16 18:46:24.361infoLäsnäolotunnistin updated
dev:9132025-12-16 18:46:24.360debugLäsnäolotunnistin sendZigbeeCommands: sent cmd=[he cmd 0x24D1 0x01 0xEF00 0x00 {0C32090x10000102} {}, delay 201]
dev:9132025-12-16 18:46:24.354infoLäsnäolotunnistin setPar: (2) sending parameter radarSensitivity (2 (scaledValue=2))
dev:9132025-12-16 18:46:24.352debugLäsnäolotunnistin Läsnäolotunnistin getTuyaCommand (dp=09 fncmd=02 dp_type=0x10) = [he cmd 0x24D1 0x01 0xEF00 0x00 {0C32090x10000102} {}, delay 201]
dev:9132025-12-16 18:46:24.347debugLäsnäolotunnistin sendTuyaParameter: sending parameter radarSensitivity dpValHex 02 (raw=2) Tuya dp=09 dpType=0x10
dev:9132025-12-16 18:46:24.340debugLäsnäolotunnistin setPar(radarSensitivity, 2)
dev:9132025-12-16 18:46:24.337debugLäsnäolotunnistin updateAllPreferences: foundMap = [defVal:1, description:Select the radar sensitivity, dp:9, dt:0x10, map:[0:low, 1:medium, 2:high], max:2, min:0, name:radarSensitivity, rw:rw, title:Radar sensitivity, type:enum]
dev:9132025-12-16 18:46:24.331debugLäsnäolotunnistin sendZigbeeCommands: sent cmd=[he cmd 0x24D1 0x01 0xEF00 0x00 {9C020A0x10000100} {}, delay 201]
dev:9132025-12-16 18:46:24.320infoLäsnäolotunnistin setPar: (2) sending parameter fadingTime (0 (scaledValue=0))
dev:9132025-12-16 18:46:24.318debugLäsnäolotunnistin Läsnäolotunnistin getTuyaCommand (dp=0A fncmd=00 dp_type=0x10) = [he cmd 0x24D1 0x01 0xEF00 0x00 {9C020A0x10000100} {}, delay 201]
dev:9132025-12-16 18:46:24.308debugLäsnäolotunnistin sendTuyaParameter: sending parameter fadingTime dpValHex 00 (raw=0) Tuya dp=0A dpType=0x10
dev:9132025-12-16 18:46:24.295debugLäsnäolotunnistin setPar(fadingTime, 0)
dev:9132025-12-16 18:46:24.292debugLäsnäolotunnistin updateAllPreferences: foundMap = [defVal:1, description:Motion keep time, dp:10, dt:0x10, map:[0:15s, 1:30s, 2:60s], max:2, min:0, name:fadingTime, rw:rw, title:Fading time, type:enum, unit:seconds]
dev:9132025-12-16 18:46:24.284debugLäsnäolotunnistin updateAllPreferences: preferences=[fadingTime:10, radarSensitivity:9]
dev:9132025-12-16 18:46:24.281debugLäsnäolotunnistin getDeviceProfilesSource: using CUSTOM profiles for device 24D1
dev:9132025-12-16 18:46:24.279debugLäsnäolotunnistin current state.deviceProfile=CUSTOM_TS0601_IHSENO_BATTERY, settings.forcedProfile=iHseno 24G MmWave Radar on Battery, getProfileKey()=CUSTOM_TS0601_IHSENO_BATTERY
dev:9132025-12-16 18:46:24.275debugLäsnäolotunnistin getDeviceProfilesSource: using CUSTOM profiles for device 24D1
dev:9132025-12-16 18:46:24.269debugLäsnäolotunnistin customUpdated()
dev:9132025-12-16 18:46:24.267debugLäsnäolotunnistin deviceHealthCheck is scheduled every 60 minutes
dev:9132025-12-16 18:46:24.196infoscheduling health check every 60 minutes by Activity check method
dev:9132025-12-16 18:46:24.133infoLäsnäolotunnistin driver version 4.2.1 2025/10/19 8:26 AM (TS0601 _TZE284_debczeci) (C-8 2.4.3.171)
dev:9132025-12-16 18:46:24.129infoLäsnäolotunnistin updated()...
dev:9132025-12-16 18:43:27.401infoLäsnäolotunnistin is now online!
dev:9132025-12-16 18:43:27.400infoLäsnäolotunnistin healthStatus changed to online