Aqara TVOC ZHAAirQuality data

Use the tip of @Mimiix that can help you: Aqara TVOC ZHAAirQuality data - #2 by Mimiix to identity your sensor.

Can you see like name “AirQuality 240” or have you a other name?

If the device need it, it can’t work, it’sd probably missing in the DDF.
It this one https://github.com/dresden-elektronik/deconz-rest-plugin/blob/master/devices/xiaomi/xiaomi_airmonitor_acn01.json ?

If yes, the DDF is probably incomplete, it s for that @sirinveen have made the bind itself using the Mimixx tips.

Do you know how to add them in the DDF ? DDF cheat sheet · dresden-elektronik/deconz-rest-plugin Wiki · GitHub

This is what I have:

TVOC 3


Which bindings are missing?

I tried reading the descriptor etc again

Hi @jan666

I think you must delete and renew your sensor because some cluster are missing like Temperature and Analog Input (basic).

And after use the tips from @Mimiix I tell you before (push reset button of the sensor and quickly after Read node descriptor and/or Read simple descriptors) → do this 1-3 times and show after if you have all clusters see below).

Here my screenshot of AirQuality:

Can you also provide screenshots of air quality and airqualityppb?

For example air quality:

Ok, I deleted the sensor, re-added it and read the descriptors. Now I have:





TVOC 1

…and I only have “ZHAHumidity” and “ZHATemperature” sensors - no more ZHAAirQuality

That’s the issue with the Xiaomi’s: Its a bit hard to get everything properly paired.

I paired again w/o deleting first. now I have all 3 sensors. It still looks like on the screenshots

Now be patient 1-2 hours or more and you will see he update temperature humidity and air quality.

And also the battery will be updated at 100%. Begin always with null or zero.

time                           age_secs airquality airqualityppb battery id name          source    type
----                           -------- ---------- ------------- ------- -- ----          ------    ----
2022-03-03T02:55:14.076352126Z 0        excellent  32            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-02T20:59:02.841057587Z 0        excellent  63            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-02T15:00:53.999103509Z 0        good       94            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-02T14:05:57.115774591Z 0        good       126           100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-02T13:14:59.748674597Z 0        good       174           32      60 AirQuality 60 websocket ZHAAirQuality
2022-03-02T13:14:29.781129757Z 0        good       142           32      60 AirQuality 60 websocket ZHAAirQuality
2022-03-02T13:13:59.952462607Z 0        good       106           32      60 AirQuality 60 websocket ZHAAirQuality
2022-03-02T13:12:54.516076922Z 0        good       71            32      60 AirQuality 60 websocket ZHAAirQuality
2022-03-02T13:12:21.155112894Z 0        excellent  39            32      60 AirQuality 60 websocket ZHAAirQuality
2022-03-02T13:10:41.235452774Z 0        excellent  7             32      60 AirQuality 60 websocket ZHAAirQuality

Not really a success :frowning:

What is the issue ?
Value are updated when you read them using the GUI, but not in normal use ? No periodic report ?

Yes, no updates. Temperature (last update: 2022-03-04 07:29:21
) and humidity (last update 2022-03-04 07:23:09
) is updated. Airqualits is not (still last update at 2022-03-03 03:55:14)

From my experience, it only updates TVOC when there is a significant change. I created an automation to push the changes read from HA to telegram and I receive the most 1 notification per day.
If I move the sensor to a different place with very different values it updates right away.

For me it can just be an issue because the binding are missing in the DDF.
You can try to set them yourself using deconz Device Support immax Keyfob-ZB3.0 · Issue #2196 · dresden-elektronik/deconz-rest-plugin · GitHub

Or add them in the DDF.
Just to try you can set one for the temperature

Cluster 0x0402
attribute 0x0000

Value

        min = 10;
        rmax = 300;
        change  = 20;

I did something… dont know really if correct :zipper_mouth_face:



It reports all the time now. Is this good or bad? is it too often?

time                           age_secs airquality airqualityppb battery id name          source    type
----                           -------- ---------- ------------- ------- -- ----          ------    ----
2022-03-08T12:57:32.199188188Z 0        excellent  57            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:56:51.180549108Z 0        excellent  55            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:56:30.212738199Z 0        excellent  56            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:55:00.333152963Z 0        excellent  55            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:54:30.302050964Z 0        excellent  56            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:54:00.419621671Z 0        excellent  55            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:53:30.388922761Z 0        excellent  56            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:53:00.480589691Z 0        excellent  55            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:52:30.512151039Z 0        excellent  57            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:51:30.653686596Z 0        excellent  55            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:50:30.656761488Z 0        excellent  56            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:50:00.824349153Z 0        excellent  55            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:48:30.924822228Z 0        excellent  56            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:48:00.929227916Z 0        excellent  54            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:47:01.06072491Z  0        excellent  55            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:46:01.106574057Z 0        excellent  56            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:45:31.195672416Z 0        excellent  57            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:45:01.230551374Z 0        excellent  55            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:44:01.327744909Z 0        excellent  56            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:43:31.326759019Z 0        excellent  55            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:41:01.552403773Z 0        excellent  56            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:40:31.641788497Z 0        excellent  55            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:40:01.667589394Z 0        excellent  56            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:39:01.772443559Z 0        excellent  54            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:37:31.877068266Z 0        excellent  55            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:37:02.007319036Z 0        excellent  56            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:36:02.049775282Z 0        excellent  55            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:35:32.082361896Z 0        excellent  54            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:35:02.140094285Z 0        excellent  56            100     60 AirQuality 60 websocket ZHAAirQuality
2022-03-08T12:33:32.299752048Z 0        excellent  55            100     60 AirQuality 60 websocket ZHAAirQuality

How did you achieve that?

I did what @Smanar said: Aqara TVOC ZHAAirQuality data - #53 by Smanar / Aqara TVOC ZHAAirQuality data - #54 by jan666

Depend of what you want, but for me it’s bad, realy bad for battery sensor. It’s a temperature sensor, a report every 30mn is enought for me, but it’s personnal.

Min is the minium delay without report.
Max is the maximum delay without report.
Change is the minimum value to trigger a report.

On my side I would use bigger values than the ones used on the test.

And if it work like that, it mean, I m right, it’s just because you miss the bind configuration on the DDF.

Do you have tried to set them using the DDF editor ? To improve the DDF ?

  • Go on binding tab
  • drag and drop the cluster 0x0402 on the left panal
  • drag and drop the attribute 0x0000 on the right panel
  • set the values you want to use.
  • Save the DDF
  • Hot reload

I feel a little bit supid asking. But whats the correct min/max/change Setting for “every 30 minutes”?

I just tried but saving failes:

the files are owned by “root”:

drwxr-xr-x  2 root root 4.0K Feb  7 06:45 .
drwxr-xr-x 19 root root 4.0K Feb  7 06:45 ..
-rw-r--r--  1 root root 5.0K Feb  6 20:46 aq1_vibration_sensor.json
-rw-r--r--  1 root root  610 Feb  6 20:46 aq1_vibration_sensor_orientation.js
-rw-r--r--  1 root root 5.1K Feb  6 20:46 xiaomi_airmonitor_acn01.json
-rw-r--r--  1 root root  268 Feb  6 20:46 xiaomi_battery.js
-rw-r--r--  1 root root 3.3K Feb  6 20:46 xiaomi_gzcgq01lm_light_sensor.json
-rw-r--r--  1 root root  599 Feb  6 20:46 xiaomi_known_issues1.md
-rw-r--r--  1 root root 1.7K Feb  6 20:46 xiaomi_mccgq14lm_openclose_sensor.json
-rw-r--r--  1 root root 5.9K Feb  6 20:46 xiaomi_zncz04lm_smart_plug.json

I run the GUI as “pi”. Should I really run the gui as root?