[Deprecated] Xiaomi / Aqara ZigBee device drivers (possibly may no longer be maintained)

What zigbee channel are you using? And do you have any other line powered zigbee devices (non-ikea) in the same network?

I am on zigbee channel 11.

I did the below troubleshoot and Hubitat is receiving battery, temperature and humidity updates regularly now. I suspect for the initial pairings, the sensor is not choosing the appropriate routing.

  1. Delete sensor from Hubitat
  2. Placed sensor next to Hubitat controller and initiated pairing
  3. Sensor added successfully.
  4. Monitor sensor for half a day; Receiving updates with no irregularity
  5. Moved sensor to midway between Hubitat and original location; Receiving updates with no irregularity for half a day
  6. Moved sensor to original location; Receiving updates with no irregularity for a day so far

While searching around i found this ST repo for aqara devices it has the Aqara B1 curtain motor driver, any chance it can be ported to HE

Besides that fact that (my) life has been / is too busy to allow me to work on any device drivers at the moment...

I see methods used in that SmartThings device handler that I'm not familiar with. In order to port the code to a Hubitat driver, I would need to be able to do fairly extensive testing to get it working. This requires that either a) I own or have an Aqara B1 Curtain motor in my possession, or b) I work with an owner of an Aqara B1 Curtain motor who doesn't mind working with me to do quite a lot of device driver beta testing.

I am a system admin with a little coding skill, I can definitely work along in beta testing. whatever you need am in. at your own base everyone definitely has his own life.

Thank you for reply and I appreciate your efforts.

I have

3 Aqara B1 Motor

All my house is equipped with Aqara light Neutral switches ( double & single ) maybe 50 devices

3 Aqara human sensor

3 Aqara Door and human sensor

all their drivers are from this page and working like a charm.

My Zigbee mesh is rock solid as all those light switches are acting as repeaters.

I put one neutral switch on my HE network and it trashed my zigbee network. Removed it and everything was ok again. I'm interested on how you are using these on HE or have you not paired them to HE yet.
Non neutral ones are fine.

I used the same driver which is available in this thread, I started pairing them to HE starting from the nearest to the Hub, I live in a multifloored house hold with cement structure.

I have never faced any disconnection or delay even with the sensors hence to me the ZigBee network is rock solid.

I have never done a ZigBee Network rebuild but I think being patient is the key to repair your network " its mentioned in the hub it might take 24 hours for everything to settle.

As a follow up to my post #1148 and gavincampbell's where he noticed the same, I'm also getting odd values for temperature and humidity every once in a while. I only use if for temperature, so that's what I noticed, but I see humidity is odd sometimes too (also 654.26% as he noticed).

Here is a screenshot of my logs around the time when this happened:

I didn't change anything with the device or driver, so hub firmware is about the only thing that could have changed since then. I don't know when this would have started, but definitely at least a few months ago.

Hopefully some of this information may be helpful to someone.

I have come to the conclusion that it’s a low battery warning.

We can’t rely on the actual battery reports as it’s just an estimate and not very accurate.

On all 5 of my sensors I had this reading showing up and then they died a few weeks later. I replaced the batteries and all was good again and they no longer have those strange readings.

I’m watching my other devices (motion,vibration and contact) to see if there is anything similar that they may report. I know some of them should have a low battery by now. They have been going for a year or more now.

@veeceeoh @altajer I'm in the process of writing a driver for the Aqara Smart Curtain Motor (ZNCLDJ11LM). It is currently able to open/close and stop the curtain motor, but since I've not yet had time to mount the rails and put it up, that is as far as I've come.
It is my first Zigbee driver (but not first Hubitat driver), so it is far from perfect, I'm sure...
It is based on the commands in the code for xiaomi-curtain-b1, so since those commands work on my curtain motor, I'll probably end up with a driver very close to something which would work with the Xiaomi Curtain B1. @altajer the model you have is ZNCLDJ12LM, right?
@veeceeoh If you want to update your table with the Zigbee model for ZNCLDJ11LM, it is "lumi.curtain".
If anyone is interested, the very much NON-COMPLETE driver can be found here:

2 Likes

I finally have seen instances of out-of-bounds humidity and temperature report values on only one of my numerous Xiaomi & Aqara temperature / humidity sensors, with my hub still running firmware v2.1.7.127. An example:

Time Report Type Value
12:13:20.662 AM Temperature 71.01°F
12:13:20.673 AM Pressure 999.4 mbar
12:38:07.246 AM Temperature 70.75°F
12:38:07.532 AM Humidity 654.4%
12:38:07.538 AM Pressure 999.3 mbar
12:38:07.550 AM Temperature -147.98°F
12:38:17.973 AM Humidity 51.1%
12:38:17.979 AM Temperature 70.77°F
12:38:17.987 AM Pressure 999.6 mbar
01:03:03.961 AM Pressure 999.9 mbar
01:03:03.969 AM Temperature 70.52°F
01:24:28.441 AM Temperature 70.29°F
01:24:28.442 AM Humidity 50.9%

The recent reported battery voltage readings on this particular sensor are rather low - between 2.825 and 2.815 Volts. As I've mentioned previously, there is Aqara documentation stating that the battery should be replaced when the reported voltage is 2.8 Volts.

Given that -147.98°F is -100°C, which is clearly not a coincidental value, I have to agree with @gavincampbell's conclusion that it and the other out-of-bounds humidity value of 654.4% indicates the battery voltage is very low.

I will be releasing a Xiaomi / Aqara Temperature-Humidity Sensor driver update in the next few days which will output a warning log message instead of generating out-of-bounds temperature / humidity value events, along with some other fixes and enhancements.

4 Likes

@veeceeoh You updated the table for the wrong device, mine is the ZNCLDJ11LM, not the ZNGZDJ11LM :stuck_out_tongue:

[UPDATE] v0.9 of Xiaomi/Aqara Temperature Humidity Sensor device driver for Hubitat

This update comes with a fair number of fixes and improvements, and with the exception of generating temperature / humidity / pressure events from the 50-60 minute check-in message, is feature-complete, as far as I'm concerned. Expect to see full parsing of check-in messages in the next version, which I think will deserve to be called a v1.0 release.

The updated driver code can be grabbed from here.

Major Changes

  • Fixed occasional java.lang.NullPointerException errors

  • Fixed out-of-bounds temperature / humidity value events
    Out-of-bounds values received from a sensor now trigger a battery low warning log message

  • Fixed Pressure Measurement capability implementation
    IMPORTANT: If you use Rule Machine or any apps with automations based on pressure readings, you will need to change the custom attribute to the new name pressureMeasurement. Keep in mind that as of Hubitat Hub firmware v2.1.8, Rule Machine does not access the Pressure Measurement capability to use for automations, so it still needs to be accessed as a custom attribute.

  • Added identification of sensor Model Type (Xiaomi or Aqara)
    When a sensor is initially paired, the driver will identify the sensor model type and add it to a modelType entry in the Data area of the Device Details section of the device page as viewed in the Hubitat web UI. Users with already paired sensors should navigate to the device page for each sensor and click Save Preferences.

  • Changed Pressure preferences to appear only for Aqara sensors
    For sensors that have had their modelType identified (see above point for more information), the Pressure Offset and Units preference settings will appear the device page for the sensor if it is Aqara-branded, or if the modelType is unknown. Sensors identified as Xiaomi-branded will not have Pressure preference settings displayed.

  • Added ability to use Hubitat's semi-automated driver import feature
    This will be useful for any future driver updates (See screenshot below)

  • Lowered default minimum voltage used for calculating battery level to 2.8 Volts
    I lowered the minimum based on Aqara documentation stating that the sensor battery should be replaced when it falls to 2.8 Volts. This change to the driver will result in reported battery levels appearing to change (probably higher). Remember that the battery level percentage is merely an estimate, and really the voltage is the best indicator that a battery level is getting low. Consider replacing the battery when the Voltage goes below 2.84.

  • Improved / consolidated debug messages for reported sensor readings
    (See screenshot below)

Screenshots


Detailed Change List

  • rewrote and refactored message parser
  • added parser handling of non-useful catchall messages that were causing java.lang.NullPointerException log errors; catchall message contents can now be found in debug log output
  • added filter to produce a low battery log warning message instead of generating events for out-of-bounds temperature and humidity report values
  • fixed implementation of the Pressure Measurement capability to match Hubitat's required attribute name of pressureMeasurement
  • added check of sensor model type (Xiaomi or Aqara) during pairing or when updating preferences, which adds modelType to the device's data values (viewable in the Device Details section of the device page in the Hubitat hub web UI)
  • changed pressure offset / pressure units preference setting options to be conditional, based on modelType; to determine modelType and correctly display preference setting options, click "Save Preferences" for any already paired sensor
  • added import URL to device definition to allow use of Hubitat's semi-automated device driver code Import feature
  • edited fingerprint lines to help match device during pairing
  • removed firmware compatibility fix preference setting (it is assumed that all users' hubs are running Hubitat firmware 2.0.5 or newer)
  • minimum voltage used to calculate battery percentage lowered to 2.8
  • removed range limitations for Min / Max Volts preference setting values
  • improved debug message output for raw / converted / offset values on all types of readings
18 Likes

As before, a very BIG THANK YOU for doing all this work.... it's much appreciated...

3 Likes

Hi @markus Big Thanks for the driver, I have installed the driver and Paired the Master bedroom curtains to hubitat .

I am unable to set the position of the curtains nor open it although when i open it manually from the button and close it from hubitat driver it actually closes.

My curtain split open style

here is the log

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:46.353 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:46.171 pm [info](http://10.5.1.235/device/edit/355)Set Position: 0%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:40.762 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:40.593 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:36.901 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 0102 01 01 0040 00 A63A 00 00 0000 0B 01 0200, parseMap:[raw:catchall: 0104 0102 01 01 0040 00 A63A 00 00 0000 0B 01 0200, profileId:0104, clusterId:0102, clusterInt:258, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[02, 00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:34.646 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 0102 01 01 0040 00 A63A 00 00 0000 0B 01 0200, parseMap:[raw:catchall: 0104 0102 01 01 0040 00 A63A 00 00 0000 0B 01 0200, profileId:0104, clusterId:0102, clusterInt:258, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[02, 00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:28.077 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:read attr - raw: A63A0100000A07003003, dni: A63A, endpoint: 01, cluster: 0000, size: 0A, attrId: 0007, encoding: 30, command: 01, value: 03, parseMap:[raw:A63A0100000A07003003, dni:A63A, endpoint:01, cluster:0000, size:0A, attrId:0007, encoding:30, command:01, value:03, clusterInt:0, attrInt:7]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:23.855 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:23.757 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:19.833 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:19.543 pm [info](http://10.5.1.235/device/edit/355)Set Position: 0%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:12.170 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:12.005 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:04.193 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-16 08:01:03.368 pm [info](http://10.5.1.235/device/edit/355)Set Position: 0%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:52:22.646 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:52:21.551 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:51:04.066 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:51:03.837 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:50:32.664 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:50:32.534 pm [info](http://10.5.1.235/device/edit/355)Set Position: 30%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:50:16.149 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:50:15.724 pm [info](http://10.5.1.235/device/edit/355)Set Position: 30%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:46:50.783 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:46:50.512 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:46:45.648 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:read attr - raw: A63A0100000A07003003, dni: A63A, endpoint: 01, cluster: 0000, size: 0A, attrId: 0007, encoding: 30, command: 01, value: 03, parseMap:[raw:A63A0100000A07003003, dni:A63A, endpoint:01, cluster:0000, size:0A, attrId:0007, encoding:30, command:01, value:03, clusterInt:0, attrInt:7]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:46:44.601 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 0102 01 01 0040 00 A63A 00 00 0000 0B 01 0200, parseMap:[raw:catchall: 0104 0102 01 01 0040 00 A63A 00 00 0000 0B 01 0200, profileId:0104, clusterId:0102, clusterInt:258, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[02, 00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:46:43.139 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:read attr - raw: A63A0100000A07003003, dni: A63A, endpoint: 01, cluster: 0000, size: 0A, attrId: 0007, encoding: 30, command: 01, value: 03, parseMap:[raw:A63A0100000A07003003, dni:A63A, endpoint:01, cluster:0000, size:0A, attrId:0007, encoding:30, command:01, value:03, clusterInt:0, attrInt:7]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:46:40.136 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 0102 01 01 0040 00 A63A 00 00 0000 0B 01 0200, parseMap:[raw:catchall: 0104 0102 01 01 0040 00 A63A 00 00 0000 0B 01 0200, profileId:0104, clusterId:0102, clusterInt:258, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[02, 00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:46:24.639 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:read attr - raw: A63A0100000A07003003, dni: A63A, endpoint: 01, cluster: 0000, size: 0A, attrId: 0007, encoding: 30, command: 01, value: 03, parseMap:[raw:A63A0100000A07003003, dni:A63A, endpoint:01, cluster:0000, size:0A, attrId:0007, encoding:30, command:01, value:03, clusterInt:0, attrInt:7]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:46:14.957 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:46:14.222 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:45:03.383 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:45:03.214 pm [info](http://10.5.1.235/device/edit/355)Set Position: 0%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:44:57.517 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:44:57.244 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:44:48.119 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:read attr - raw: A63A0100000A07003003, dni: A63A, endpoint: 01, cluster: 0000, size: 0A, attrId: 0007, encoding: 30, command: 01, value: 03, parseMap:[raw:A63A0100000A07003003, dni:A63A, endpoint:01, cluster:0000, size:0A, attrId:0007, encoding:30, command:01, value:03, clusterInt:0, attrInt:7]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:44:33.984 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:44:33.256 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:41:01.444 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:41:01.295 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:40:50.877 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:40:50.299 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:40:20.852 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:40:20.590 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:40:15.168 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:40:14.991 pm [info](http://10.5.1.235/device/edit/355)Set Position: 0%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:40:05.863 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:40:05.755 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:39:53.618 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:read attr - raw: A63A0100000A07003003, dni: A63A, endpoint: 01, cluster: 0000, size: 0A, attrId: 0007, encoding: 30, command: 01, value: 03, parseMap:[raw:A63A0100000A07003003, dni:A63A, endpoint:01, cluster:0000, size:0A, attrId:0007, encoding:30, command:01, value:03, clusterInt:0, attrInt:7]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:39:38.306 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:read attr - raw: A63A0100000A07003003, dni: A63A, endpoint: 01, cluster: 0000, size: 0A, attrId: 0007, encoding: 30, command: 01, value: 03, parseMap:[raw:A63A0100000A07003003, dni:A63A, endpoint:01, cluster:0000, size:0A, attrId:0007, encoding:30, command:01, value:03, clusterInt:0, attrInt:7]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:39:28.974 pm [info](http://10.5.1.235/device/edit/355)Set Position: 0%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:39:24.541 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:39:24.320 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:39:11.248 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:39:10.981 pm [info](http://10.5.1.235/device/edit/355)Set Position: 0%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:39:03.513 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:39:03.314 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:38:54.352 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:38:53.385 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:37:16.003 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:37:15.750 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:37:08.083 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:37:07.950 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:37:07.659 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:37:06.569 pm [info](http://10.5.1.235/device/edit/355)Set Position: 0%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:36:44.947 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:36:44.786 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:36:37.548 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:36:37.361 pm [info](http://10.5.1.235/device/edit/355)Set Position: 100%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:36:00.491 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:36:00.205 pm [info](http://10.5.1.235/device/edit/355)Set Position: 0%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:35:26.760 pm [warn](http://10.5.1.235/device/edit/355)Unhandled Event - description:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, parseMap:[raw:catchall: 0104 000D 01 01 0040 00 A63A 00 00 0000 04 01 00, profileId:0104, clusterId:000D, clusterInt:13, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A63A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:35:25.679 pm [info](http://10.5.1.235/device/edit/355)Set Position: 0%

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:34:28.749 pm [info](http://10.5.1.235/device/edit/355)Zigbee parsed:[raw:catchall: 0104 0003 01 FF 0040 00 A63A 01 00 0000 01 00 , profileId:0104, clusterId:0003, clusterInt:3, sourceEndpoint:01, destinationEndpoint:FF, options:0040, messageType:00, dni:A63A, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:00, data:[]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:34:17.755 pm [info](http://10.5.1.235/device/edit/355)Zigbee parsed:[raw:catchall: 0104 0003 01 FF 0040 00 A63A 01 00 0000 01 00 , profileId:0104, clusterId:0003, clusterInt:3, sourceEndpoint:01, destinationEndpoint:FF, options:0040, messageType:00, dni:A63A, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:00, data:[]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:34:06.796 pm [info](http://10.5.1.235/device/edit/355)Zigbee parsed:[raw:catchall: 0104 0003 01 FF 0040 00 A63A 01 00 0000 01 00 , profileId:0104, clusterId:0003, clusterInt:3, sourceEndpoint:01, destinationEndpoint:FF, options:0040, messageType:00, dni:A63A, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:00, data:[]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:33:56.624 pm [info](http://10.5.1.235/device/edit/355)fingerprint profileId:"0104", endpointId:"01", inClusters:"0000,0003,0102,000D,0013,0001", outClusters:"0003,000A", model:"lumi.curtain.hagl04", manufacturer:"LUMI"

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:33:56.453 pm [trace](http://10.5.1.235/device/edit/355)ZCL version:03

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:33:56.445 pm [trace](http://10.5.1.235/device/edit/355)Software Build Id:2019www.

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:33:56.444 pm [trace](http://10.5.1.235/device/edit/355)Model:lumi.curtain.hagl04

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:33:56.438 pm [trace](http://10.5.1.235/device/edit/355)Manufacturer:LUMI

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:33:56.248 pm [info](http://10.5.1.235/device/edit/355)Zigbee parsed:[raw:catchall: 0104 0003 01 FF 0040 00 A63A 01 00 0000 01 00 , profileId:0104, clusterId:0003, clusterInt:3, sourceEndpoint:01, destinationEndpoint:FF, options:0040, messageType:00, dni:A63A, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:00, data:[]]

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:33:56.131 pm [debug](http://10.5.1.235/device/edit/355)getting info for unknown Zigbee device...

[dev:355](http://10.5.1.235/logs/past#dev355)2020-01-15 09:33:54.096 pm [debug](http://10.5.1.235/device/edit/355)configure() called...

You're welcome, though it is FAR from ready...

As I said, it is very much incomplete, I will look at your log and I will compare it with my own, will see if I get to have time to install the curtain tomorrow. With it just laying on the table it is a bit hard to get it right since there's supposed to be some calibration and other things which can't run when not fully mounted.
The battery readings are correct? Mine is the version without battery.
I'll get it to work soon...
I've not looked, but maybe there's a more complete documentation on the commands somewhere, don't know if Xiaomi has released that, officially or unofficially?

Thanks for your efforts @markus , let me know if your require any help in testing i have mine already fixed.

calibration should be made through software for aqara b1 i don't think hardware manual calibration is possible.

I assume the battery level is correct, it shows only after i press the reboot and refresh commands.

I am not able to find any documentation for it but Aqara B1 is officially released in china market.

When I have it more functional, definitely :slight_smile:

I think it's sending values I need to parse and do the calibration in the driver with, but don't know what is what fully yet.

Yes, I know, I've seen it here. I'm in China... :stuck_out_tongue: I'm more wondering if there are communication specs released for some reason, I've seen it before from Xiaomi (could have been just an employee and unofficial), but not sure if they've ever done it for any of their Zigbee devices.

I see that you also get the preassure readings with the driver. Is it the small round one, or the square Xiaomi one that you have?
I have the round one, and do not get preassure readings.
Maybe I use a driver that does not check for this? Hmmm...
RogerThat

This one does not give pressure readings. The square one does. I have both connected up to the Mi Home hub and that is what I get from this hub as well.

1 Like