Edge Fingerprint problem for Xiaomi devices

it seems like Xiaomi devices do not send a model name while connecting, so it is not possible to use them with Edge drivers.

Tested on several contact sensors, a couple of motion, and a temperature sensor.
None of the devices is displayed in the “Devices nearby” section.
The manufacturer and model names were copied from existing Groovy DHTs.
I can see the ZigbeeIds and the requests in the Hub log, but not in the mobile application. A new device is not created.

I even tested with the cluster fingerprint and still no luck, but I have not found any good documentation on the cluster fingerprinting.

At the same time, Aqara Motion Illuminance sensors work.

1 Like
 - id: "lumi/RTCGQ11LM"                  << can be added
    deviceLabel: Aqara Motion Illuminance Sensor
    manufacturer: LUMI
    model: lumi.sensor_motion.aq2
    deviceProfileName: motion-battery-illuminance
 - id: "lumi/RTCGQ01LM"  << no luck
    deviceLabel: Xiomi Motion Illuminance Sensor
    manufacturer: LUMI
    model: lumi.sensor_motion
    deviceProfileName: motion-battery
 - id: "LUMI/lumi.sensor_motion"  << no luck
    deviceLabel: Xiaomi Motion
    zigbeeProfiles:
      - 0x0104
    deviceIdentifiers:
      - 0x0104
    deviceProfileName: motion-battery

Maybe this post can help you out:

You can include the profileId and deviceId you mentioned here:

nope it’s not related neither to biometrics nor to Android.
it’s about Xiaomi Zigbee response and ST Edge fingerprinting. It would be great to have more documentation / source code of this part.

I can see

catchall: 0104 0000 01 01 0000 00 189B 00 00 0000 0A 01 050042126C756D692E73656E736F725F6D61676E6574

raw:189B0000158D000159C0B8, dni:189B, errorCode:00, ieee:00158D000159C0B8

catchall: 0104 0000 01 01 0000 00 189B 00 00 0000 0A 01 050042126C756D692E73656E736F725F6D61676E6574

on/off: 0

in the (Hub) Events

I’ve tried the wildcards like


zigbeeGeneric:
  - id: "any1234"
    deviceLabel: lumi.any.1234
    deviceIdentifiers:
      - 0x1234
    deviceProfileName: water-temp-tempalarm-battery

  - id: "any"
    deviceLabel: lumi.any
    zigbeeProfiles:
      - 0x0104
    deviceProfileName: water-temp-tempalarm-battery

but none of my fingerprints work for this kind of devices. Could you please give me a clue on how can I fingerprint this?

@veonua ,
If you have a working DTH, why not just copy the fingerprint from there?

Anyway for Aqara, manufacturer almost certainly should be LUMI and model probably be something like lumi.sensor_???, depending on your censor, not sure which one you have an issue with.

For my Xiaomi (not Aqara) contact sensor I have a working profile as follows:

zigbeeManufacturer:
  - id: "Xiaomi Contact Sensor MCCGQ01LM"
    manufacturer: LUMI
    model: lumi.sensor_magnet
    deviceProfileName: Contact sensor with battery voltage
    deviceLabel: Xiaomi Contact Sensor
    zigbeeProfiles:
      - 0x0104
    deviceIdentifiers:
      - 0x0104
      - 0x1234
    clusters:
      server:
        - 0x0000
        - 0x0003
        - 0xFFFF
        - 0x0019

If you have a working DTH, try to fill info according the above template.

Another option (if you don’t have a working DTH) to retrieve the info is to write a small DTH that just prints model/mfg info in installed, updated and/or parse calls

@veonua Another thing, when working with Xiaomi contact sensor it took to me many attempts to pair it and I didn’t have DTH installed.
This is probably because Xiaomi does not send zbjoin.
I would suggest to uninstall DTH, before pairing with edge driver, otherwise there are high chances that DTH will detect your device earlier than the edge driver

I’ve never seen model/mfg for this device even in groovy DTH, probably because Xiaomi does not send zbjoin.

I would suggest to uninstall DTH, before pairing with edge driver,

it will break existing devices.

This is an older post, but it looks like I’m fighting the same problem. Xiaomi-Aqara humidity/thermo and I’m trying to develop the Edge zigbee driver. But it never gets and “added” event in the Edge driver, and will fall back to the DTH most of the time. Apparently there is no way to delete the DTH now that Groovy is sandboxed? I also tried the zigbee-humidity driver in the Edge driver library - it should also have worked based on the zigbeeGeneric fingerprint. I was able to build and test the ST multipurpose zigbee example so I think I’m building and publishing correctly. Any hints on ways to debug zigbee joins? I do see messages in the hub log when the DTH accepts the device, but I thought the Edge drivers were supposed to get first shot.

i believe there are already 2 or 3 drivers for this device , and there are pairing recipes from users somewhere on this forum

Yeah, I wonder if it is because of this statement I just saw from @nayelyz “Is this DTH a custom one registered in your IDE or the stock one? If it’s a custom one, it takes preference over installed drivers.” Since I can’t delete the DTH (which is recommended in this thread) I do wonder if I’m not getting the Edge driver to be selected over the DTH. I swear I’ve seen Edge selected over my custom DTH’s in the past, but things on the server can change without us knowing.

Why are you having issues deleting the custom DTH? In the IDE > Device handlers when you click the button marked in yellow in the picture below, it sends you to a page where you can delete it.
It might take some time to load but I just made a test and I was able to delete a custom DTH. Just make sure you delete all the devices paired to it before deleting it, otherwise, you’ll get an error.

It appeared to act like it was disabled (i.e. did nothing), but now I see it working. So, maybe a Chrome glitch? This isn’t the first time I’ve tried, so I wonder if Chrome and/or the page goes into a “mode” where the button doesn’t work.

Mmm, I don’t think this button could be disabled by the page itself, but, this takes a long time to load, so, there might be an issue where the page isn’t loaded properly, but I haven’t heard about that button being disabled before…

all the interface is read-only for me as well

I suspect the long load time may lead to a time out on the page and that is why is acts a bit random. Lately it’s been working for me - 10 to 20 second wait. Maybe the default timeout is 60 or 120 seconds so if the servers are REALLY SLOW then it just acts like it is disabled since not all of the javascript loaded and/or a REST call timed out.

@veonua

Hi!

do you have any driver for this product??

thank you!